Comment puis-je basculer entre la conversion pdflatex et xelatex dans Sublime Text 2?

9

Je passe souvent de la compilation de documents LaTeX "classiques" à des documents XeTeX.

Sublime Text 2 dispose d'un package appelé LaTeXTools qui vous permet de créer des documents LaTeX via un simple CmdB. Soigné.

Le fichier de construction LaTeX.sublime-buildexiste évidemment dans le dossier du package standard, et vous pouvez le copier dans votre Userdossier pour le personnaliser. Ici, il vous permet de modifier les arguments donnés à latexmk, à savoir de passer de pdflatexà xelatex, par exemple comme ceci:

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

Maintenant, c'est très fastidieux de devoir le faire à chaque fois que j'ouvre un autre document - ouvrez mes préférences de construction, commentez une ligne, enregistrez, etc.

Idéalement, j'aimerais pouvoir changer de moteur

  • … Automatiquement - TextMate, par exemple, le fait en quelque sorte, et je peux compiler des documents LaTeX et des documents XeTeX avec un simple CmdR, bien que la configuration TextMate soit définie sur pdflatex. C'est peut-être un peu latexmk.pl-fu, je ne sais pas.

  • … Avec un raccourci clavier ou un réglage simple - Peut-être en appuyant sur CmdL, CmdXou similaire. Cela basculerait alors entre pdflatexet la xelatexconstruction.

Comment pourrais-je mettre cela en place?

slhck
la source

Réponses:

12

Remarque: LaTeXTools pour Sublime Text prend désormais en charge la détection automatique du moteur si votre fichier commence par %!TEX program = <program>, où <program>est l'un des pdflatex, xelatexou lualatex. Les instructions ci-dessous ne sont nécessaires que si vous devez changer manuellement de moteur pour quelque raison que ce soit.


Prenez le LaTeX.sublime-buildfichier dans le LaTeXToolsdossier sous ~/Library/Application Support/Sublime Text 2/Packageset copiez-le ~/Library/Application Support/Sublime Text 2/Packages/User/, mais faites-le deux fois et donnez à ces fichiers le nom suivant:

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

Modifiez les fichiers pour utiliser respectivement le pdflatexLaTeX et les xelatexmoteurs du XeTeX (comme indiqué dans la question).

Ensuite, créez un nouveau plugin via Outils »Nouveau plugin… (en l'enregistrant switch.pyà l'emplacement ci-dessus):

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)

Et créez un raccourci clavier pour cela dans Préférences » Raccourcis clavier - Utilisateur :

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

Vous pouvez également l'ajouter à votre menu en ajoutant le Main.sublime-menufichier à votre Userpackage:

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

Cela va maintenant comparer le fichier de construction actuellement actif avec les paramètres de construction nécessaires pour XeTeX et LaTeX et les changer si nécessaire.

Cela pourrait certainement être amélioré, mais cela fonctionne pour le moment.

slhck
la source
Fonctionne comme un charme, sauf que LaTeXTools ne semble pas donner la priorité à LaTeX.sublime-buildmon dossier de packages utilisateur. Assez étrange ...
fgb
Faites-vous une copie complète de la valeur par défaut LaTeX.sublime-build, que vous modifiez ensuite, ou incluez-vous simplement la osxpartie pertinente ?
fgb
1
Tout d'abord merci pour les modifications. J'ai fait une copie complète du fichier par défaut et les ai modifiés en conséquence. Ce que j'ai découvert cependant, c'est que XeLaTeX compile correctement toutes les sources LaTeX, au moins sur tous les fichiers que j'ai testés. Peut-être qu'il y a un repli quelque part en arrière-plan?
slhck
La copie et la modification du fichier par défaut complet ont résolu mon problème. Il est intéressant de noter que l'utilisation de XeLaTeX suffit pour les deux. Je vérifierai cela à l'avenir car ce sera certainement mieux que de devoir changer de compilateur. Merci pour la réponse rapide!
fgb