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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам