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

9

Ich wechsle oft zwischen dem Kompilieren "klassischer" LaTeX- und XeTeX-Dokumente.

Sublime Text 2 enthält ein Paket namens LaTeXTools , mit dem Sie LaTeX-Dokumente auf einfache Weise erstellen können CmdB. Ordentlich.

Die Build-Datei befindet sich LaTeX.sublime-buildoffensichtlich im Standardpaketordner, 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"],

Jetzt ist es sehr mühsam, dies jedes Mal tun zu müssen, wenn ich ein anderes Dokument öffne - meine Build-Einstellungen öffnen, die eine Zeile auskommentieren, speichern usw.

Idealerweise möchte ich den Motor schalten können

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

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

Wie könnte ich das einrichten?

slhck
quelle

Antworten:

12

Hinweis: LaTeXTools für Sublime Text unterstützt jetzt die automatische Motorerkennung , wenn Ihre Datei beginnt mit %!TEX program = <program>, wo <program>ist jeder pdflatex, xelatexoder lualatex. Die folgenden Anweisungen sind nur erforderlich, wenn Sie aus irgendeinem Grund die Motoren 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/, aber machen Sie es zweimal und geben Sie diesen Dateien den folgenden Namen:

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

Ändern Sie die Dateien so, dass sie pdflatexfür LaTeX bzw. xelatexEngines für XeTeX verwendet werden (siehe Frage).

Erstellen Sie dann ein neues Plugin über Extras »Neues Plugin… (speichern Sie es switch.pyan der oben genannten Stelle):

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 den Einstellungen » Tastenkombinationen - Benutzer :

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

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

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

Dadurch wird nun die aktuell aktive Build-Datei mit den für XeTeX und LaTeX erforderlichen Build-Einstellungen verglichen und bei Bedarf umgeschaltet.

Dies könnte sicherlich eine Verbesserung gebrauchen, aber es funktioniert im Moment.

slhck
quelle
Funktioniert wie ein Zauber, außer dass LaTeXTools LaTeX.sublime-buildin meinem Benutzerpaketordner keinen Vorrang zu haben scheint . Ziemlich seltsam ...
fgb
Erstellen Sie eine vollständige Kopie der Standardeinstellung LaTeX.sublime-build, die Sie dann ändern, oder fügen Sie nur den entsprechenden osxTeil hinzu?
FGB
1
Zunächst einmal vielen Dank für die Änderungen. Ich habe eine vollständige Kopie der Standarddatei erstellt und sie entsprechend geändert. Was ich jedoch herausgefunden habe, war, dass XeLaTeX alle LaTeX-Quellen gut kompiliert, zumindest für alle von mir getesteten Dateien. Vielleicht gibt es irgendwo im Hintergrund einen Fallback?
Slhck
Das Kopieren und Ändern der vollständigen Standarddatei hat mein Problem behoben. Interessant, dass die Verwendung von nur XeLaTeX für beide ausreicht. Ich werde dies in Zukunft überprüfen, da es definitiv besser ist, als den Compiler wechseln zu müssen. Danke für die prompte Antwort!
FGB