AUCTeX 和 XeTeX

AUCTeX 和 XeTeX

我使用 Emacs+AUCTeX 编写 *-tex。使用 PDF 模式,我可以使用命令自动运行 pdfTeX C-c C-c。但是,我没有看到自动运行 XeTeX 的方法,甚至没有在下拉窗口中设置命令选项。我的 LISP 技能非常生疏,我想知道是否有人有补丁tex.el来启用 XeTeX 支持?

答案1

如果您使用的是 AUCTeX 版本 11.86,则可以将局部变量设置TeX-enginexetex。这是我使用的:

%%% 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)))

相关内容