当使用 XeLaTeX 和 fontspec 与 LaTeXmk 时出现 hyperref 错误

当使用 XeLaTeX 和 fontspec 与 LaTeXmk 时出现 hyperref 错误

我为TeXWorks定义了一个编译工具,如下:

Program: latexmk
Arguments: -e
           $xelatex=q/xelatex $synctexoption %0 %S/
           -pdf
           $fullname

在大多数情况下,它都能正常工作,但我在导入包的一个文件中遇到了问题hyperref。这是一个最简单的例子:

\documentclass{article}
\usepackage{fontspec}
\usepackage[xetex,bookmarks=true,colorlinks=true,linkcolor=headernfooter,urlcolor=headernfooter,linktoc=section,]{hyperref}
\begin{document}
hello, paper!
\end{document}

如果我改用(预定义的)XeLaTeX 编译工具,它就可以正常工作。如果我注释掉 importing 行hyperref,它就可以正常工作。但如果我尝试将它们组合起来,我会收到以下错误消息:

! 软件包 hyperref 错误:错误的驱动程序选项“xetex”,
(hyperref),因为未检测到 XeTeX。

如果我删除该xetex选项并导入fontspec,两者都可以工作,但我无法在实际文档中选择我想要的字体。

我该如何结合这些要求?

答案1

有一个xetex选项hyperref,但建议不要使用它。在某些情况下,需要传递hyperref显式驱动程序选项,但不是使用时

• LaTeX+ dvips
• pdfLaTeX
• XeLaTeX
• LuaLaTeX

因为在这些情况下hyperref能够自动检测驾驶员。驾驶员的指示对于

• LaTeX+dvipdfmx

或一些其他不太常见的引擎(例如VTeX)。

请注意,其他常用包也是如此,它们的行为会根据所使用的引擎和驱动程序而变化:

graphicx,,,,colorxcolorgeometry

无需明确传递驱动程序名称。因为geometry与一起使用时可能需要传递该名称crop

但是(感谢 Ulrike Fischer 指出这一点),xetex如果使用的引擎是,则选项不会造成任何损害XeTeX,否则会引发错误。所以在你的情况下,这意味着latexmk不是使用 XeLaTeX 处理您的文档。

正如 Brent Longborought 所说,要传递给的论点latexmk应该是

$pdflatex=q/xelatex $synctexoption %0 %S/

(注意pdflatex第一个符号后面的内容$)。

相关内容