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


9

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

Sublime Text 2有一个名为LaTeXTools的软件包,它使您可以通过简单的来构建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以某种方式做到了这一点CmdR,尽管TextMate配置设置为,但我可以用一个简单的方法编译LaTeX文档和XeTeX文档pdflatex。也许是latexmk.pl-fu,我不知道。

  • ......用一个简单的键盘快捷键或设置 -也许压制CmdLCmdX或类似的。然后将在pdflatexxelatex构建之间切换。

我该如何设置?

Answers:


12

注: LaTeXTools的崇高文本现在支持发动机自动检测,如果你的文件开头%!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

将文件更改为分别pdflatex用于LaTeX和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所需的构建设置进行比较,并在必要时进行切换。

这肯定可以使用一些改进,但是暂时有效。


除了LaTeXTools LaTeX.sublime-build在我的用户包文件夹中似乎没有优先考虑之外,它的工作原理很吸引人。非常奇怪...
fgb

您是否制作了default的完整副本,LaTeX.sublime-build然后对其进行了修改,或者仅包括相关osx部分?
fgb

1
首先,感谢您的修改。我做了默认文件的完整副本,并进行了相应的修改。但是我发现XeLaTeX至少可以在我测试的所有文件上都能很好地编译所有LaTeX源。也许在后台某处有一个回退?
slhck

复制和修改完整的默认文件解决了我的问题。有趣的是,仅使用XeLaTeX就足够了。我将在以后进行检查,因为它肯定比不得不切换编译器要好。感谢您的及时回复!
fgb
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.