Wie kann ich in Sublime Text 2 zwischen der Konvertierung von pdflatex und xelatex wechseln?

7894
slhck

Ich wechsle oft zwischen "klassischen" LaTeX- und XeTeX-Dokumenten.

Sublime Text 2 hat ein Paket namens LaTeXTools, mit dem Sie LaTeX-Dokumente über ein einfaches Dokument erstellen können CmdB. Ordentlich.

Die Erstellungsdatei ist LaTeX.sublime-buildoffensichtlich im Standardpaketordner vorhanden, und Sie können sie in Ihren UserOrdner kopieren, um sie anzupassen. Hier ermöglicht es Ihnen, die Argumente gegeben zu ändern latexmk, nämlich von wechseln, pdflatexum xelatexzum Beispiel wie folgt aus :

"cmd": ["latexmk", "-cd", //"-e", "\\$pdflatex = 'pdflatex %O -interaction=nonstopmode -synctex=1 %S'", "-e", "\\$pdflatex = 'xelatex %O -interaction=nonstopmode -synctex=1 %S'", //"-silent", "-f", "-pdf"], 

Nun, es ist sehr langwierig, dies jedes Mal tun zu müssen, wenn ich ein anderes Dokument öffne - meine Build-Präferenzen öffnen, die eine Zeile auskommentieren, speichern usw.

Im Idealfall möchte ich den Motor wechseln können

  • … Automatisch - TextMate zum Beispiel macht das irgendwie, und ich kann sowohl LaTeX-Dokumente als auch XeTeX-Dokumente mit einer einfachen CmdRVersion erstellen, obwohl die TextMate-Konfiguration auf festgelegt ist pdflatex. Vielleicht ist es etwas latexmk.pl, ich weiß es nicht.

  • ... mit einer einfachen Tastenkombination oder Einstellung - Vielleicht drücken CmdL, CmdXoder ähnlichem. Dies würde dann zwischen pdflatexund xelatexGebäude wechseln .

Wie könnte ich das einrichten?

9

1 Antwort auf die Frage

12
slhck

Hinweis: LaTeXTools für Sublime Text jetzt automatische Motorerkennung unterstützt, wenn Sie Ihre Datei mit beginnt %!TEX program = <program>, wo <program>ist jeder pdflatex, xelatexoder lualatex. Die folgenden Anweisungen sind nur erforderlich, wenn Sie den Motor aus irgendeinem Grund manuell wechseln müssen.


Nehmen Sie die LaTeX.sublime-buildDatei in den LaTeXToolsOrdner unter ~/Library/Application Support/Sublime Text 2/Packagesund kopieren Sie sie in ~/Library/Application Support/Sublime Text 2/Packages/User/, tun Sie es jedoch zweimal und geben Sie den Dateien den folgenden Namen:

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

Ändern Sie die Dateien, um die pdflatexfür LaTeX bzw. xelatexEngines für XeTeX zu verwenden (wie in der Frage dargestellt).

Dann erstellen Sie ein neues Plugin über Extras »Neues Plugin… (speichern Sie es wie switch.pyoben).

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) 

Und erstellen Sie eine Tastenkombination dafür in Einstellungen » Tastaturbelegung - Benutzer :

[ { "keys": ["super+shift+x"], "command": "switch" } ] 

Sie können dies auch zu Ihrem Menü hinzufügen, indem Sie die Main.sublime-menuDatei Ihrem UserPaket hinzufügen :

[ { "id":"tools", "children": [ { "command": "switch", "caption": "Switch between LaTeX/XeTeX" } ] } ] 

Jetzt wird die derzeit aktive Build-Datei mit den für XeTeX und LaTeX erforderlichen Build-Einstellungen verglichen und bei Bedarf umgestellt.

Dies könnte sicherlich einige Verbesserungen erfordern, funktioniert aber im Moment.

Funktioniert wie ein Zauber, mit der Ausnahme, dass LaTeXTools 'LaTeX.sublime-build' im Ordner mit den Benutzerpaketen keinen Vorrang zu geben scheint. Ziemlich seltsam ... fgb vor 11 Jahren 0
Erstellen Sie eine vollständige Kopie der Standardeinstellung "LaTeX.sublime-build", die Sie dann modifizieren, oder fügen Sie einfach den relevanten `osx'-Teil hinzu? fgb vor 11 Jahren 0
Erstmal danke für die Änderungen. Ich habe eine vollständige Kopie der Standarddatei erstellt und sie entsprechend geändert. Ich fand jedoch heraus, dass XeLaTeX alle LaTeX-Quellen gut kompiliert, zumindest in allen Dateien, die ich getestet habe. Vielleicht gibt es irgendwo im Hintergrund einen Fallback? slhck vor 11 Jahren 1
Das Kopieren und Ändern der vollständigen Standarddatei hat mein Problem behoben. Interessanterweise ist die Verwendung von XeLaTeX für beide ausreichend. Ich werde das in Zukunft überprüfen, da es definitiv besser ist, als den Compiler wechseln zu müssen. Danke für die prompte Antwort! fgb vor 11 Jahren 0