Come posso passare dalla conversione pdflatex a quella xelatex in Sublime Text 2?


9

Passo spesso tra la compilazione di documenti "classici" LaTeX e XeTeX.

Sublime Text 2 ha un pacchetto chiamato LaTeXTools che ti permette di creare documenti LaTeX in modo semplice CmdB. Neat.

Il file di build LaTeX.sublime-buildesiste ovviamente nella cartella del pacchetto standard e puoi copiarlo nella Usercartella per personalizzarlo. Qui, ti permette di cambiare gli argomenti dati latexmk, vale a dire passare da pdflatexa xelatex, ad esempio in questo modo:

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

Ora, è molto noioso doverlo fare ogni volta che apro un altro documento: apro le mie preferenze di costruzione, commento una riga, salva, ecc.

Idealmente, vorrei poter cambiare il motore

  • ... automaticamente - TextMate, ad esempio, lo fa in qualche modo, e posso compilare sia documenti LaTeX che documenti XeTeX in modo semplice CmdR, sebbene la configurazione di TextMate sia impostata su pdflatex. Forse è un po ' latexmk.pl-fu, non lo so.

  • ... con una semplice scorciatoia da tastiera o impostazione - Forse premendo CmdL, CmdXo simili. Ciò si alternerebbe tra pdflatexe la xelatexcostruzione.

Come ho potuto configurarlo?

Risposte:


12

Nota: LaTeXTools per Sublime Text supporta ora il rilevamento automatico del motore se il file inizia con %!TEX program = <program>, dove <program>è una delle pdflatex, xelatexo lualatex. Le istruzioni seguenti sono necessarie solo se è necessario cambiare manualmente i motori per qualsiasi motivo.


Prendi il LaTeX.sublime-buildfile nella LaTeXToolscartella in ~/Library/Application Support/Sublime Text 2/Packagese copialo in ~/Library/Application Support/Sublime Text 2/Packages/User/, ma fallo due volte e dai a questi file il seguente nome:

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

Modificare i file per utilizzare rispettivamente pdflatexper LaTeX e i xelatexmotori per XeTeX (come mostrato nella domanda).

Quindi, crea un nuovo plug-in tramite Strumenti »Nuovo plug-in ... (salvandolo switch.pynella posizione sopra):

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)

E crea una scorciatoia da tastiera in Preferenze »Associazioni dei tasti - Utente :

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

Puoi anche aggiungere questo al tuo menu aggiungendo il Main.sublime-menufile al tuo Userpacchetto:

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

Questo ora confronterà il file di build attualmente attivo con le impostazioni di build necessarie per XeTeX e LaTeX e li cambierà se necessario.

Questo potrebbe sicuramente usare qualche miglioramento, ma per il momento funziona.


Funziona come un incantesimo, tranne per il fatto che LaTeXTools non sembra dare la precedenza alla LaTeX.sublime-buildcartella dei pacchetti utente. Abbastanza strano ...
fgb

Realizzi una copia completa del valore predefinito LaTeX.sublime-build, che successivamente modifichi o includi solo la osxparte pertinente ?
fgb

1
Innanzitutto grazie per le modifiche. Ho fatto una copia completa del file predefinito e li ho modificati di conseguenza. Quello che ho scoperto è che XeLaTeX compila bene tutte le fonti LaTeX, almeno su tutti i file che ho testato. Forse c'è un fallback da qualche parte in background?
slhck

La copia e la modifica del file predefinito completo ha risolto il mio problema. È interessante notare che usare solo XeLaTeX è sufficiente per entrambi. Lo controllerò in futuro perché sarà sicuramente meglio che dover cambiare compilatore. Grazie per la pronta risposta!
fgb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.