我使用 Emacs+AUCTeX 编写 *-tex。使用 PDF 模式,我可以使用命令自动运行 pdfTeX C-c C-c
。但是,我没有看到自动运行 XeTeX 的方法,甚至没有在下拉窗口中设置命令选项。我的 LISP 技能非常生疏,我想知道是否有人有补丁tex.el
来启用 XeTeX 支持?
答案1
如果您使用的是 AUCTeX 版本 11.86,则可以将局部变量设置TeX-engine
为xetex
。这是我使用的:
%%% Local Variables:
%%% coding: utf-8
%%% mode: latex
%%% TeX-engine: xetex
%%% End:
您必须再次打开该文件才能实现效果(C-x C-v
)。
您可以使用以下方式检查您的版本
C-h v AUCTeX-version <RET>
答案2
您可以将其添加到您的 emacs.el:
(setq-default TeX-engine 'xetex)
如果您希望默认输出 PDF,请添加以下代码:
(setq-default TeX-PDF-mode t)
答案3
对于 11.86 及更高版本¹,还有
M-x TeX-engine-set RET xetex RET
这将使 AUCTeX 使用 XeTeX 编译该特定文件(或者xelatex
如果该文件被视为 LaTeX 文件)。请注意,此“设置”仅在emacs
访问该文件时才会继续有效。如果您忘记设置局部变量,或者想要快速比较不同引擎如何编译同一文档,这通常很有用。由于 PDFTeX 比其他引擎(尤其是 LuaTeX)快得多,我经常在编写文档时使用它,并且只在最后阶段切换到 LuaTeX。一直重置局部变量并不理想。
¹ 实际上,我不确定这个命令是什么时候添加的......
答案4
您可以自定义 Tex 命令列表:
M-x customize-variable TeX-command-list
您可以在那里向 AUCTeX 添加新命令。或者,您可以直接修改 emacs 初始化文件:
;; set XeTeX mode in TeX/LaTeX
(add-hook 'LaTeX-mode-hook
(lambda()
(add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex%(mode)%' %t" TeX-run-TeX nil t))
(setq TeX-command-default "XeLaTeX")
(setq TeX-save-query nil)
(setq TeX-show-compilation t)))