Como posso alternar entre a conversão de pdflatex e xelatex no Sublime Text 2?

9

Frequentemente alterno entre a compilação de documentos LaTeX e XeTeX "clássicos".

O Sublime Text 2 tem um pacote chamado LaTeXTools que permite criar documentos LaTeX através de um simples Cmd B . Puro.

O arquivo de compilação LaTeX.sublime-build obviamente existe na pasta do pacote padrão, e você pode copiá-lo para a pasta User para personalizá-lo. Aqui, ele permite que você altere os argumentos fornecidos para latexmk , ou seja, para alternar de pdflatex para xelatex , por exemplo, assim:

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

Agora, é muito tedioso ter que fazer isso toda vez que eu abro outro documento - abra minhas preferências de construção, comente a linha, salve, etc.

Idealmente, gostaria de poder mudar o motor

  • … automaticamente - O TextMate, por exemplo, faz isso, e eu posso compilar documentos LaTeX e documentos XeTeX com um simples Cmd R , embora a configuração do TextMate esteja definida como pdflatex . Talvez seja algum latexmk.pl -fu, não sei.

  • … com um simples atalho de teclado ou configuração - Talvez pressionando Cmd L , Cmd < kbd> X ou similar. Isso alternaria entre pdflatex e xelatex construção.

Como eu poderia configurar isso?

    
por slhck 23.10.2012 / 22:07

1 resposta

12

Note: LaTeXTools for Sublime Text now supports automatic engine detection if your file starts with %!TEX program = <program>, where <program> is any of pdflatex, xelatex or lualatex. The below instructions are only necessary if you need to manually switch engines for whatever reasons.

Pegue o arquivo LaTeX.sublime-build na pasta LaTeXTools em ~/Library/Application Support/Sublime Text 2/Packages e copie-o para ~/Library/Application Support/Sublime Text 2/Packages/User/ , mas faça isso duas vezes e forneça a eles o seguinte nome:

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

Altere os arquivos para usar os mecanismos pdflatex para LaTeX e xelatex para o XeTeX, respectivamente (conforme visto na pergunta).

Em seguida, crie um novo plug-in através de Ferramentas »Novo plug-in… (salvando-o como switch.py no local acima):

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 crie um atalho de teclado para ele em Preferências »Ligações de teclas - Usuário :

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

Você também pode adicionar isso ao seu menu adicionando o arquivo Main.sublime-menu ao seu pacote User :

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

Isto agora irá comparar o arquivo de compilação atualmente ativo com as configurações de compilação necessárias para o XeTeX e o LaTeX e alterná-los, se necessário.

Isso pode certamente melhorar, mas funciona no momento.

    
por 31.10.2012 / 14:34