SublimeText LaTeXTools传统构建器无法识别XeLaTeX

SublimeText LaTeXTools传统构建器无法识别XeLaTeX

我读过了这个问题,但我正在使用traditionalLaTeXTools 中的构建器,并且我有

%!TEX program = xelatex

在我的 .tex 文件的开头,但构建器仍然使用pdflatex而不是编译我的文件xelatex,并且我得到了输出

TraditionalBuilder: Engine: pdflatex. Invoking latexmk... done.

我怎样才能强制构建器进行编译xelatex

答案1

在 SublimeText 中,您可以使用快捷方式选择不同的构建器Ctrl-Shift-B

答案2

我也曾对此感到困惑,但我想我终于解开了这个谜题。

我终于在 LaTeXTools 文档的“选择构建变体“:

注意:构建变体提供的设置将覆盖使用 TeX 指令或在您的设置中指定的设置。这意味着,例如,如果您选择更改程序的构建变体,%!TEX 程序指令或程序设置将被忽略。如果您想将 LaTeXTools 恢复为其默认行为,请选择 LaTeX 构建变体。

LaTeX当我使用(not LaTeX - Traditionalor )构建时LaTeX - PDFLaTeX,该指令确实被正确处理。例如,如果我的文件!TEX program顶部有以下内容:.tex

%!TEX program = xelatex

我使用cmd- shift-进行编译b(在 Mac 上),然后选择LaTeX,Sublime 确实使用 进行编译XeLaTeX。一旦我将构建系统默认设置为LaTeX(不是LaTeX - TraditionalLaTeX - PDFLaTeX),在工具>用...构建,那么即使使用cmd-也可以b

在搜索此问题时有很多困惑。

  • 这为什么重要?在我的典型工作流程中,我会编写多个文档,每个文档都需要不同的构建器(通常PDFLaTeX是 或XeLaTeX)。我想使用%!TeX指令来指定这一点,这样我就可以使用一个快捷方式cmd-b进行编译,而不是使用cmd- shift-b然后选择构建程序。这是一件小事,我最终会一遍又一遍地做,但它可以帮助我专注于写作,而不是花一秒钟来提醒自己我正在编译什么类型的文档。
  • 为什么事情变得复杂了?我认为在某个时候我将其设置PDFLaTeX为我的默认构建引擎。这取代了%!TeX指令。其他地方有很多 StackExchange 响应说“只需起诉指令”,并且当该解决方案不适用于所有人时会感到困惑。可能(像我一样)有些人没有意识到更改默认构建引擎设置会“破坏”指令。

我希望这能有所帮助。

相关内容