我正在用希伯来语写一本书,其中的参考书目是用英文写的。
我在用 正确打印参考书目时遇到了一些麻烦\printbibliography
。
我想要三样东西:
- 的标题为
\printbibliography
,רשימת המקורות
从右到左对齐 - 目录中出现相同的希伯来语字符串
- 书目条目从左到右对齐
(我只有英文的bib条目,没有希伯来语)
我的 MWE 如下:
\documentclass[openany,a5paper]{memoir}
\usepackage{hyperref}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\newfontfamily\hebrewfont{Arial}[Script=Hebrew]
\newfontfamily\englishfont{Latin Modern Roman}[Script=Latin, Language=English]
\usepackage[language=english,style=alphabetic]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{einstein,
author = "Albert Einstein",
title = "{Zur Elektrodynamik bewegter K{\"o}rper}. ({German})
[{On} the electrodynamics of moving bodies]",
journal = "Annalen der Physik",
volume = "322",
number = "10",
pages = "891--921",
year = "1905",
DOI = "http://dx.doi.org/10.1002/andp.19053221004",
keywords = "physics"
}
@book{dirac,
title = {The Principles of Quantum Mechanics},
author = {Paul Adrien Maurice Dirac},
isbn = {9780198520115},
series = {International series of monographs on physics},
year = {1981},
publisher = {Clarendon Press},
keywords = {physics}
}
\end{filecontents}
\addbibresource{\jobname.bib}
%\addbibresource{biblio.bib}
\begin{document}
\tableofcontents
\chapter{הקדמה}
להלן כמה ציטוטים: \cite{dirac} וגם \cite{einstein}.
\begin{english}
\printbibliography[title={רשימת המקורות}]
\end{english}
\end{document}
输出为
在我看来,解决这个问题的方法是,\begin{english}
在 TeX 输入 之后以某种方式包含一个heading
,然后列出所有引用的作品,最后以 结束\end{english}
。
我怎样才能指示 TeX 按照我想要的方式给出输出?
答案1
更新:
在我看来,使用您选择的字体,LuaLaTeX 中的以下内容是可行的。(我很高兴看到这些字体似乎不是您将在最终文档中使用的字体。)
\documentclass[openany,a5paper]{memoir}
\tracinglostchars=3
\usepackage[nil,
bidi=basic,
layout=sectioning.tabular
]{babel}
\usepackage{fontspec}
\babelprovide[import=en, onchar=fonts ids]{english}
\babelprovide[import=he, main, onchar=fonts ids]{hebrew}
\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
\babelfont{rm}
[Scale=1.0]{Arial}
\babelfont[english]{rm}
{Latin Modern Roman}
\babeltags{hebrew=hebrew}
\babeltags{english=english}
\usepackage[style=alphabetic, backend=biber]{biblatex}
\usepackage{filecontents}
\usepackage[unicode]{hyperref}
\begin{filecontents}{\jobname.bib}
@article{einstein,
author = "Albert Einstein",
title = "{Zur Elektrodynamik bewegter K{\"o}rper}. ({German})
[{On} the electrodynamics of moving bodies]",
journal = "Annalen der Physik",
volume = "322",
number = "10",
pages = "891--921",
year = "1905",
DOI = "http://dx.doi.org/10.1002/andp.19053221004",
keywords = "physics",
langid = {english}
}
@book{dirac,
title = {The Principles of Quantum Mechanics},
author = {Paul Adrien Maurice Dirac},
isbn = {9780198520115},
series = {International series of monographs on physics},
year = {1981},
publisher = {Clarendon Press},
keywords = {physics},
langid={english}
}
\end{filecontents}
\addbibresource{\jobname.bib}
%\addbibresource{biblio.bib}
\begin{document}
\tableofcontents
\chapter{הקדמה}
להלן כמה ציטוטים:
\textenglish{\cite{dirac}} וגם \textenglish{\cite{einstein}}
\begin{english}
\printbibliography[title={\texthebrew{רשימת המקורות}}]
\end{english}
\end{document}
在大多数情况下,此版本会检测您何时输入拉丁文字并切换语言,从而无需在段落中标记单个单词和短语,但您仍需要使用类似的东西\textenglish{\cite{Einstein}}
以及参考书目页面周围的环境。如果您采用这种方式,您可能希望将其定义为命令,例如
\newcommand\ENcite[1]{\foreignlanguage{english}{\cite{#1}}}
我向我的 MWE 添加了一些内容。 \tracinglostchars=3
当您使用的字体不支持您尝试使用的语言时,就会出现错误,而不是在日志文件中隐藏警告并静默失败。 该\defaultfontfeatures
命令(来自fontspec
)可以进行一些调整,包括使参考书目条目中的引号起作用并自动缩放字体的 x 高度。(您可能更喜欢Scale=MatchUppercase
,或每种字体的自定义值。)该onchar=fonts ids
选项会自动检测您输入的语言并相应地更改字体、方向和连字符。(但是,它不适用于\cite
。)此版本还修复了多种语言中的\texttt
和。\textsf
如果您确实想添加希伯来语的参考书目条目,您可能还想添加该autolang
选项。biblatex
你似乎正在使用 XeLaTeX,如果你将babel
设置更改为
\usepackage[english,
bidi=default,
layout=sectioning.tabular
]{babel}
\usepackage{fontspec}
\babelprovide[import=he, main]{hebrew}
但是,这会将标题居中,而不是右对齐。如果采用这种方式,您可能需要更改样式(手册第 6.5 节memoir
)。
如果您想继续使用polyglossia
,解决参考书目引文无法显示拉丁字母的问题的方法是\setmainfont
除了 和 之外再使用\hebrewfont
。\englishfont
参考书目alphabetic
样式似乎需要一个。
XeTeX 和 Polyglossia
在评论中,您澄清说您需要使用这两个包。这对我来说有用:
\documentclass[openany,a5paper]{memoir}
\tracinglostchars=3
\usepackage[unicode]{hyperref}
\usepackage{polyglossia}
\setdefaultlanguage{hebrew}
\setotherlanguage{english}
\defaultfontfeatures{Scale=MatchUppercase, Ligatures=TeX}
\setmainfont[Scale=1.0]{Latin Modern Roman}
\newfontfamily\hebrewfont{Arial}[Script=Hebrew]
\usepackage[style=alphabetic, backend=biber, autolang=other]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{einstein,
author = "Albert Einstein",
title = "{Zur Elektrodynamik bewegter K{\"o}rper}. ({German})
[{On} the electrodynamics of moving bodies]",
journal = "Annalen der Physik",
volume = "322",
number = "10",
pages = "891--921",
year = "1905",
DOI = "http://dx.doi.org/10.1002/andp.19053221004",
keywords = "physics",
langid = {english}
}
@book{dirac,
title = {The Principles of Quantum Mechanics},
author = {Paul Adrien Maurice Dirac},
isbn = {9780198520115},
series = {International series of monographs on physics},
year = {1981},
publisher = {Clarendon Press},
keywords = {physics},
langid={english}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\tableofcontents
\chapter{הקדמה}
להלן כמה ציטוטים:
\textenglish{\cite{dirac}} וגם \textenglish{\cite{einstein}}
\printbibliography[title={רשימת המקורות}]
\end{document}
您可能最好选择一种支持两种语言的字体(例如 New Computer Modern Book、Arial 或 DejaVu Sans),并将其声明为您的主字体和希伯来语字体。如果您不这样做,并且参考书目标题中的错误再次出现,请尝试
\begin{english}
\printbibliography[title={\hfill\texthebrew{רשימת המקורות}}]
\end{english}
如果您遇到标题左对齐而不是右对齐的其他问题,一个快速而简单的解决方法是\hfill
在文本前面放置一个。