我正在尝试用 tufte-book 编写文档。文档的大部分内容应该是英文的,但我希望用希伯来语编写一些文本。我能够成功地编译出具有多语种和更常见文档类别的文档构造其内部使用 XeTeX。但是使用 tufte-book 和这个 MWE:
%! TEX program = xelatex
\documentclass[nols,nobib,bidi]{tufte-book}
% Language
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\begin{document}
Hello World.
\end{document}
我收到这个奇怪的错误:
****************************************************
(biditools.sty) (zref-abspage.sty (zref-base.sty)) (latex-xetex-bidi.def
! LaTeX Error: Command \XeTeX already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.138 ...di@reflect@box{E}}\kern-.1667em \TeX}}$}}
我正在使用 tufte-book 的 Git 存储库。这是 polyglossia 错误还是 tufte 错误?我还想知道bidi
中的选项有什么用处tufte-book
\documentclass
。
最后,这个问题建议使用包biditufte-book
提供的类bidi
,但我不能使用它,因为我想使用biblatex
并且biditufte-book
不支持该nobib
选项我需要。
答案1
这是一个综合问题。
当检测到 XeLaTeX 作为处理引擎时,负载会降低,tufte-book.cls
这在几年前是推荐的,但现在绝对推荐tufte-common.def
\RequirePackage{xltxtra}
不是来加载它。
发生了什么?这将xltxtra
加载metalogo
,它定义命令\XeTeX
和“\XeLaTeX”。
后来,bidi
对这两个命令进行了无条件定义,没有检查它们是否已经定义,这显然是错误的。它应该首先删除命令的可能定义,然后添加自己的双向排版适配。
使固定:
%! TEX program = xelatex
\documentclass[nols,nobib,bidi]{tufte-book}
% fix the bad interaction
\let\XeTeX\undefined
\let\XeLaTeX\undefined
% Language
\usepackage{polyglossia}
\setdefaultlanguage{english}
\setotherlanguage{hebrew}
\begin{document}
Hello World.
\end{document}