web-dev-qa-db-ja.com

Sublime Text 2でpdflatexとxelatexの変換を切り替えるにはどうすればよいですか?

私はよく「クラシック」な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"],

今では、別のドキュメントを開くたびにそれを行うのは非常に面倒です。ビルド設定を開き、1行をコメントアウトし、保存するなどです。

理想的には、エンジンを切り替えられるようにしたい

  • …自動的に–たとえば、TextMateはどういうわけかそれを行い、LaTeXドキュメントとXeTeXドキュメントの両方を簡単にコンパイルできます。 CmdR、TextMate構成はpdflatexに設定されていますが。多分それはいくつかのlatexmk.pl-fu、わかりません。

  • …簡単なキーボードショートカットまたは設定で–たぶん押す CmdL、 CmdX または類似。これにより、pdflatexxelatexの建物が切り替わります。

どうすれば設定できますか?

9
slhck

注: LaTeXTools for Sublime Textは、ファイルが%!TEX program = <program>で始まる場合、自動エンジン検出をサポートするようになりました。ここで、<program>pdflatexxelatex、またはlualatexのいずれかです。以下の手順は、何らかの理由で手動でエンジンを切り替える必要がある場合にのみ必要です。


LaTeX.sublime-buildの下のLaTeXToolsフォルダーにある~/Library/Application Support/Sublime Text 2/Packagesファイルを取得して~/Library/Application Support/Sublime Text 2/Packages/User/にコピーしますが、2回実行して、これらのファイルに次の名前を付けます。

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

ファイルを変更して、LaTeXの場合はpdflatexを、XeTeXの場合はxelatexエンジンをそれぞれ使用します(質問を参照)。

次に、ツール"新しいプラグイン…を使用して新しいプラグインを作成します(上記の場所に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に必要なビルド設定と比較され、必要に応じて切り替えられます。

これは確かにいくつかの改善を使用することができますが、今のところは機能します。

12
slhck