如何在 Sublime Text 2 中在 pdflatex 和 xelatex 转换之间切换?

如何在 Sublime Text 2 中在 pdflatex 和 xelatex 转换之间切换?

我经常在编译“经典” LaTeX 和 XeTeX 文档之间切换。

Sublime Text 2 有一个包叫做LaTeX工具它允许您通过简单的 .Neat 构建 LaTeX 文档CmdB

构建文件LaTeX.sublime-build显然存在于标准包文件夹中,您可以将其复制到您的User文件夹中以对其进行自定义。在这里,它允许您更改传递给 的参数latexmk,即将 切换pdflatexxelatex,例如像这样:

"cmd": ["latexmk", "-cd",
  //"-e", "\\$pdflatex = 'pdflatex %O -interaction=nonstopmode -synctex=1 %S'",
  "-e", "\\$pdflatex = 'xelatex %O -interaction=nonstopmode -synctex=1 %S'",
  //"-silent",
  "-f", "-pdf"],

现在,每次我打开另一个文档时都必须这样做,这非常繁琐 - 打开我的构建首选项,注释掉一行,保存等。

理想情况下,我希望能够切换引擎

  • … 自动地– 例如,TextMate 以某种方式做到了这一点,我可以用一个简单的 编译 LaTeX 文档和 XeTeX 文档CmdR,尽管 TextMate 配置设置为pdflatex。也许是一些latexmk.pl-fu,我不知道。

  • …使用简单的键盘快捷键或设置– 可以按CmdLCmdX类似键。这将在pdflatexxelatex构建之间切换。

我该如何进行设置?

答案1

笔记:如果您的文件以 开头,LaTeXTools for Sublime Text 现在支持自动引擎检测%!TEX program = <program>,其中是或中<program>的任何一个。仅当您出于某种原因需要手动切换引擎时,以下说明才是必要的。pdflatexxelatexlualatex


将文件夹LaTeX.sublime-build中的文件复制到,重复两次并为这些文件赋予以下名称:LaTeXTools~/Library/Application Support/Sublime Text 2/Packages~/Library/Application Support/Sublime Text 2/Packages/User/

  • LaTeX.sublime-build.latex
  • LaTeX.sublime-build.xetex

分别将文件更改为使用pdflatexLaTeX 和xelatexXeTeX 引擎(如问题所示)。

然后通过创建一个新插件工具»新插件…(将其保存至switch.py上述位置):

import sublime, sublime_plugin, os, shutil, filecmp

class SwitchCommand(sublime_plugin.ApplicationCommand):
  def run(self):
    folder = os.path.expanduser( \
        '~/Library/Application Support/Sublime Text 2/Packages/User/')
    latex_src = folder + 'LaTeX.sublime-build.latex'
    xetex_src = folder + 'LaTeX.sublime-build.xetex'
    dest = folder + 'LaTeX.sublime-build'

    if filecmp.cmp(dest, latex_src):
      sublime.status_message("Switching to XeTeX")
      shutil.copy(xetex_src, dest)
    else:
      sublime.status_message("Switching to LaTeX")
      shutil.copy(latex_src, dest)

并为其创建键盘快捷键偏好设置 » 按键绑定 – 用户

[ {
  "keys": ["super+shift+x"], "command": "switch"
} ]

您还可以通过将Main.sublime-menu文件添加到您的User包中来将其添加到菜单中:

[ {
    "id":"tools", "children":
    [ {
        "command": "switch",
        "caption": "Switch between LaTeX/XeTeX"
      }
    ]
} ]

现在将把当前活动的构建文件与 XeTeX 和 LaTeX 所需的构建设置进行比较,并在必要时切换它们。

这肯定还需要一些改进,但目前它是有效的。

相关内容