如何使希伯来语书目条目右对齐,英语书目条目左对齐?

如何使希伯来语书目条目右对齐,英语书目条目左对齐?

以下 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}

使用 bidi 包正确格式化的双向书目

是我的一个类似问题,但是那里给出的答案使用了两个单独的参考书目,而我对一个连续的参考书目感兴趣。

附言

可以假设那些带有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 查看器中打开时,显示如下。(屏幕截图中只截取了显示的相关部分。)

双向书目

相关内容