Как я могу переключаться между преобразованием pdflatex и xelatex в Sublime Text 2?

7847
slhck

Я часто переключаюсь между компиляцией «классических» документов LaTeX и XeTeX.

Sublime Text 2 имеет пакет под названием LaTeXTools, который позволяет создавать простые документы LaTeX CmdB. Ухоженная.

Файл сборки, LaTeX.sublime-buildочевидно, существует в стандартной папке пакета, и вы можете скопировать его в свою Userпапку, чтобы настроить его. Здесь, она позволяет изменять аргументы, переданные latexmk, а именно перейти от pdflatexк xelatex, например, как это:

"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фу, я не знаю.

  • ... с помощью простого сочетания клавиш или настройки - может быть нажатие CmdL, CmdXили подобное. Это будет затем переключаться между pdflatexи xelatexздание.

Как я мог это настроить?

9

1 ответ на вопрос

12
slhck

Примечание: LaTeXTools для Sublime Text теперь поддерживает автоматическое определение движка, если ваш файл начинается с %!TEX program = <program>, где <program>находится любой из pdflatex, xelatexили lualatex. Приведенные ниже инструкции необходимы только в том случае, если по каким-либо причинам вам нужно вручную переключать двигатели.


Возьмите 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 и xelatexдвижки для XeTeX, соответственно (как видно в вопросе).

Затем создайте новый плагин через Инструменты »Новый плагин… (сохраняя его в 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 11 лет назад 0
Делаете ли вы полную копию `LaTeX.sublime-build` по умолчанию, которую затем модифицируете, или просто включаете соответствующую часть` osx`? fgb 11 лет назад 0
Прежде всего, спасибо за правки. Я сделал полную копию файла по умолчанию и изменил их соответственно. Однако я обнаружил, что XeLaTeX прекрасно компилирует все исходные коды LaTeX, по крайней мере, для всех файлов, которые я тестировал. Может быть, есть запасной вариант где-то на заднем плане? slhck 11 лет назад 1
Копирование и изменение полного файла по умолчанию решило мою проблему. Интересно, что использование только XeLaTeX достаточно для обоих. Я проверю это в будущем, так как это определенно будет лучше, чем переключение компиляторов. Спасибо за быстрый ответ! fgb 11 лет назад 0