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

9

Я часто переключаюсь между компиляцией «классических» документов 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здание.

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

slhck
источник

Ответы:

12

Примечание: 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, и переключит их при необходимости.

Это, безусловно, может использовать некоторые улучшения, но это работает на данный момент.

slhck
источник
Работает как шарм, за исключением того, что LaTeXTools, похоже, не имеет приоритета LaTeX.sublime-buildв моей папке пользовательских пакетов. Довольно странно ...
ФГБ
Вы делаете полную копию по умолчанию LaTeX.sublime-build, которую затем изменяете, или просто включаете соответствующую osxчасть?
августа
1
Прежде всего, спасибо за правки. Я сделал полную копию файла по умолчанию и изменил их соответственно. Однако я обнаружил, что XeLaTeX прекрасно компилирует все исходники LaTeX, по крайней мере, для всех файлов, которые я тестировал. Может быть, есть запасной вариант где-то на заднем плане?
Slhck
Копирование и изменение полного файла по умолчанию решило мою проблему. Интересно, что использование только XeLaTeX достаточно для обоих. Я проверю это в будущем, так как это определенно будет лучше, чем переключение компиляторов. Спасибо за быстрый ответ!
ФГБ