以下 BibTeX 文档保存在 中~/TestBib.bib
。
@book{silberstein,
author = {Shel Silverstein},
title = {The Giving Tree},
year = {1964},
langid = {english}
}
@book{goldberg,
author = {Lea Goldberg},
title = {An Apartment for Rent},
year = {1959},
langid = {hebrew}
}
以下 LaTeX 文档保存在 中~/Test.tex
。
\documentclass{article}
%\usepackage[bidi=basic,hebrew,provide=*]{babel}
%\babelfont{rm}[Renderer=HarfBuzz]{FreeSans}
\usepackage{biblatex}
\addbibresource{TestBib.bib}
\begin{document}
\cite{silberstein}\cite{goldberg}
\printbibliography
\end{document}
当在终端中执行以下命令时:
> cd ~
> lualatex 测试
> biber 测试
> lualatex 测试
文件~/Test.pdf
已生成。在 PDF 查看器中打开时,文件显示如下。
如果现在取消注释这两行,并.tex
按照上述方法重新编译文件,则生成的.pdf
文件将显示如下内容。
(请注意,希伯来语是一种从右到左的语言。)
是否可以这样设置:字段langid
为希伯来语的书目条目将与从右到左的文本流右对齐,而字段langid
为英语的书目条目将与从左到右的文本流左对齐?
bidi
为了进行比较,可以使用如下包(需要xelatex
编译器)轻松实现与我想要的类似的效果。
\documentclass{article}
\usepackage[rldocument]{bidi}
\begin{document}
\begin{thebibliography}{99}
\bibitem LLea Goldberg. \emph{An Apartment for Rent}. 1959
\begin{LTRbibitems}
\bibitem SShel Silverstein. \emph{The Giving Tree}. 1964
\end{LTRbibitems}
\end{thebibliography}
\end{document}
这是我的一个类似问题,但是那里给出的答案使用了两个单独的参考书目,而我对一个连续的参考书目感兴趣。
附言
可以假设那些带有langid
等于的书目hebrew
条目是希伯来语,而不是上面例子中的英语。我并不想在英语bidi
如上+示例中的文本xelatex
。
我已经添加了增强请求以便biblatex
能够轻松、灵活且自然地处理本文中描述的问题biblatex
。
答案1
在等待增强功能时,由于 LuaTex 继承了 Omega 的方向性命令,一个潜在的解决方法是在每个 bibitem 上使用luabidi
包的\setLTR
命令来反转项目的段落方向,例如非希伯来语langid
(重新定位 bibitem 标签),然后插入少量的水平空间。
我擅自对希伯来字体的标题应用了负片假倾斜。
数字样式的默认 Bibsorting 似乎是基于 Unicode 的,按第一作者的姓氏进行。
平均能量损失
\begin{filecontents*}[overwrite]{\jobname.bib}
@Book{מישהו1990,
title = {ספר},
publisher = {הוצאה},
date = {1990},
author = {מישהו},
langid = {hebrew}
}
@Book{lg,
title = {דירה להשכיר},
% publisher = {xxx},
date = {1959},
author = { לאה גולדבר},
langid = {hebrew}
}
@book{silberstein,
author = {Shel Silverstein},
title = {The Giving Tree},
year = {1964},
langid = {english}
}
@book{goldberg,
author = {Lea Goldberg},
title = {An Apartment for Rent},
year = {1959},
langid = {english}
}
\end{filecontents*}
\documentclass{article}
\usepackage{xcolor}
\usepackage{luabidi}
\usepackage[bidi=basic,english,hebrew,provide=*]{babel}
\babelfont{rm}[Renderer=HarfBuzz]{FreeSans}
\babelfont[hebrew]{rm}[Renderer=HarfBuzz,Colour=blue,AutoFakeSlant=-0.2]{FreeSans}
\usepackage[autolang=other*]{biblatex}
\addbibresource{\jobname.bib}
%\AtEveryBibitem{\currentlang :: \thefield{langid}}
\AtEveryBibitem{\iffieldequalstr{langid}{hebrew}{}{\setLTR\hspace{\leftmargin}\hspace{\itemsep}}}
\begin{document}
\cite{silberstein} \cite{lg} \cite{goldberg} \cite{מישהו1990}
\printbibliography
\end{document}
答案2
我已经修剪了蝉的密码以便使主要部分清晰可见。
\begin{filecontents*}[overwrite]{\jobname.bib}
@book{silverstein,
author = {Shel Silverstein},
title = {The Giving Tree},
year = {1964},
langid = {english}
}
@Book{goldberg,
author = {לאה גולדברג},
title = {דירה להשכיר},
year = {1959},
langid = {hebrew}
}
\end{filecontents*}
\documentclass{article}
\usepackage[bidi=basic,hebrew,provide=*]{babel}
\babelprovide[import]{english}
\babelfont{rm}[Renderer=HarfBuzz]{FreeSans}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\AtEveryBibitem{%
\savefield{langid}{\langid}%
\selectlanguage{\langid}%
\iffieldequalstr{langid}{hebrew}%
{}%
{%
\hspace{\leftmargin}%
\hspace{\biblabelsep}%
}%
}
\begin{document}
\cite{silverstein}\cite{goldberg}
\printbibliography
\end{document}
如果将上述代码保存在 中~/Test.tex
,则在终端中执行以下命令:
\> cd ~
\> lualatex Test
\> biber Test
\> lualatex Test
然后文件~/Test.pdf
就生成了。在 PDF 查看器中打开时,显示如下。(屏幕截图中只截取了显示的相关部分。)