¿Cómo puedo cambiar entre la conversión de pdflatex y xelatex en Sublime Text 2?

9

A menudo cambio entre compilar documentos "clásicos" de LaTeX y XeTeX.

Sublime Text 2 tiene un paquete llamado LaTeXTools que le permite crear documentos LaTeX de manera simple CmdB. Ordenado.

El archivo de compilación LaTeX.sublime-buildobviamente existe en la carpeta del paquete estándar, y puede copiarlo a su Usercarpeta para personalizarlo. Aquí, le permite cambiar los argumentos dados latexmk, es decir, cambiar de pdflatexa xelatex, por ejemplo, así:

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

Ahora, es muy tedioso tener que hacer eso cada vez que abro otro documento: abrir mis preferencias de compilación, comentar una línea, guardar, etc.

Idealmente, me gustaría poder cambiar el motor

  • … Automáticamente : TextMate, por ejemplo, lo hace de alguna manera, y puedo compilar tanto documentos LaTeX como XeTeX con un simple CmdR, aunque la configuración de TextMate está establecida en pdflatex. Tal vez sea un latexmk.plpoco, no lo sé.

  • ... con un atajo de teclado simple o configuración - Tal vez presionando CmdL, CmdXo similar. Esto entonces alternaría entre pdflatexy xelatexconstruir.

¿Cómo podría configurar eso?

slhck
fuente

Respuestas:

12

Nota: LaTeXTools para Sublime Text ahora admite la detección automática del motor si su archivo comienza con %!TEX program = <program>, donde <program>es cualquiera de pdflatex, xelatexo lualatex. Las siguientes instrucciones solo son necesarias si necesita cambiar manualmente los motores por cualquier motivo.


Tome el LaTeX.sublime-buildarchivo en la LaTeXToolscarpeta debajo ~/Library/Application Support/Sublime Text 2/Packagesy cópielo ~/Library/Application Support/Sublime Text 2/Packages/User/, pero hágalo dos veces y dé a esos archivos el siguiente nombre:

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

Cambie los archivos para usar pdflatexpara LaTeX y xelatexmotores para XeTeX, respectivamente (como se ve en la pregunta).

Luego, cree un nuevo complemento a través de Herramientas »Nuevo complemento ... (guardándolo switch.pyen la ubicación anterior):

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)

Y cree un atajo de teclado para ello en Preferencias »Vinculaciones de teclas - Usuario :

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

También puede agregar esto a su menú agregando el Main.sublime-menuarchivo a su Userpaquete:

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

Esto ahora comparará el archivo de compilación actualmente activo con la configuración de compilación necesaria para XeTeX y LaTeX y los cambiará si es necesario.

Seguramente esto podría mejorar, pero funciona por el momento.

slhck
fuente
Funciona como un encanto, excepto que LaTeXTools no parece estar dando prioridad LaTeX.sublime-builden mi carpeta de paquetes de usuario. Bastante extraño ...
fgb
¿Hace una copia completa del valor predeterminado LaTeX.sublime-build, que luego modifica, o simplemente incluye la osxparte relevante ?
fgb
1
En primer lugar, gracias por las ediciones. Hice una copia completa del archivo predeterminado y los modifiqué en consecuencia. Sin embargo, lo que descubrí fue que XeLaTeX compila bien todas las fuentes de LaTeX, al menos en todos los archivos que probé. Tal vez hay una reserva en algún lugar en el fondo?
slhck
Copiar y modificar el archivo predeterminado completo resolvió mi problema. Es interesante que usar solo XeLaTeX sea suficiente para ambos. Veré esto en el futuro, ya que definitivamente será mejor que tener que cambiar de compilador. ¡Gracias por la pronta respuesta!
fgb