我为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
,,,,color
xcolor
geometry
无需明确传递驱动程序名称。因为geometry
与一起使用时可能需要传递该名称crop
。
但是(感谢 Ulrike Fischer 指出这一点),xetex
如果使用的引擎是,则选项不会造成任何损害XeTeX
,否则会引发错误。所以在你的情况下,这意味着latexmk
是不是使用 XeLaTeX 处理您的文档。
正如 Brent Longborought 所说,要传递给的论点latexmk
应该是
$pdflatex=q/xelatex $synctexoption %0 %S/
(注意pdflatex
第一个符号后面的内容$
)。