以下 LaTeX 代码保存在 中~/Test.tex
。
\begin{filecontents*}[overwrite]{\jobname.bib}
@book{hebook,
author = {אריק and בנץ},
title = {כותרת},
year = {2022}
}
\end{filecontents*}
\begin{filecontents*}[overwrite]{hebrew.lbx}
\ProvidesFile{hebrew.lbx}
[\abx@lbxid]
\DeclareRedundantLanguages{hebrew}{hebrew}
\DeclareBibliographyStrings{and = {{ו}{ו}}}
\endinput
\end{filecontents*}
\documentclass{article}
\usepackage[bidi=basic,hebrew,provide=*]{babel}
\babelfont{rm}[Renderer=HarfBuzz]{FreeSans}
\usepackage{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\cite{hebook}
\printbibliography
\end{document}
代码创建一个名为的文件,Test.bib
其中包含一个由单个条目组成的 BibTex 书目:两位作者撰写的一本书。然后,代码创建一个名为的文件,hebrew.lbx
其中包含该语言环境biblatex
的本地化字符串hebrew
。此文件仅包含一个条目:表示连词的希伯来语单词and
,例如,用于两位作者之间的连词。然后,代码创建一篇简单的文章,通过包确定其主要语言babel
为希伯来语。文章正文包含对书目条目的引用和书目。
然后在终端中执行以下命令。
> cd ~
> lualatex Test
> biber Test
> lualatex Test
因此文件~/Test.pdf
已生成。在 PDF 查看器中打开时,文件显示如下。(我在屏幕截图中仅截取了显示的相关部分。)
(请注意,希伯来语是一种从右到左的语言。)
可以看出,输出符合预期。那么一切都很好,对吧?不完全是。问题是,在希伯来语中,与欧洲语言不同,连词和不是一个独立的词,而是一个作为前缀附加到下一个词(即词的左边,因为希伯来语是从右到左的语言)。但是,如屏幕截图所示,希伯来语连词被视为一个独立的单词,并且与后面的作者姓名之间有一个空格隔开。
如何才能消除这个空间呢?
答案1
在指定的标记之后有一些 biblatex 辅助宏,然后\space
您可以插入一个向前查看并吞噬空间的宏。
\begin{filecontents*}[overwrite]{\jobname.bib}
@book{hebook,
author = {אריק and בנץ},
title = {כותרת},
year = {2022}
}
\end{filecontents*}
\begin{filecontents*}[overwrite]{hebrew.lbx}
\ProvidesFile{hebrew.lbx}
[\abx@lbxid]
\DeclareRedundantLanguages{hebrew}{hebrew}
\DeclareBibliographyStrings{and = {{ו\foo}{ו\foo}}}
\endinput
\end{filecontents*}
\documentclass{article}
\usepackage[bidi=basic,hebrew,provide=*]{babel}
\babelfont{rm}[Renderer=HarfBuzz]{FreeSans}
\usepackage{biblatex}
\def\foo#1\space{#1}
\addbibresource{\jobname.bib}
\begin{document}
\cite{hebook}
\printbibliography
\end{document}