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

9

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

O Sublime Text 2 possui um pacote chamado LaTeXTools que permite criar documentos do LaTeX de maneira simples CmdB. Arrumado.

O arquivo de compilação LaTeX.sublime-buildobviamente existe na pasta do pacote padrão e você pode copiá-lo para sua Userpasta para personalizá-lo. Aqui, ele permite que você altere os argumentos dados latexmk, nomeadamente para alternar de pdflatexpara xelatex, por exemplo:

"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 fazer isso toda vez que abro outro documento - abra minhas preferências de construção, comente uma linha, salve etc.

Idealmente, eu gostaria de poder mudar o motor

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

  • ... com um simples atalho de teclado ou configuração - Talvez pressionando CmdL, CmdXou similar. Isso então alternaria entre pdflatexe xelatexconstruir.

Como eu pude configurar isso?

slhck
fonte

Respostas:

12

Nota: LaTeXTools para Sublime texto agora suporta a detecção automática do motor se o arquivo começa com %!TEX program = <program>, onde <program>é qualquer um pdflatex, xelatexou lualatex. As instruções abaixo são necessárias apenas se você precisar trocar manualmente de mecanismo por qualquer motivo.


Pegue o LaTeX.sublime-buildarquivo na LaTeXToolspasta abaixo ~/Library/Application Support/Sublime Text 2/Packagese copie-o para ~/Library/Application Support/Sublime Text 2/Packages/User/, mas faça-o duas vezes e atribua a esses arquivos o seguinte nome:

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

Altere os arquivos para usar o pdflatexpara o LaTeX e os xelatexmecanismos para o XeTeX, respectivamente (como visto na pergunta).

Em seguida, crie um novo plug-in em Ferramentas »Novo plug-in… (salvando- switch.pyo 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 »Associações de teclas - Usuário :

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

Você também pode adicionar isso ao seu menu adicionando o Main.sublime-menuarquivo ao seu Userpacote:

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

Agora, ele compara o arquivo de compilação atualmente ativo com as configurações de compilação necessárias para o XeTeX e o LaTeX e as alterna, se necessário.

Isso poderia certamente melhorar, mas funciona no momento.

slhck
fonte
Funciona como um encanto, exceto que o LaTeXTools não parece ter precedência LaTeX.sublime-buildna minha pasta de pacotes do usuário. Muito estranho ...
fgb 13/04/2013
Você faz uma cópia completa do padrão LaTeX.sublime-build, que depois modifica ou apenas inclui a osxparte relevante ?
fgb
1
Antes de tudo, obrigado pelas edições. Fiz uma cópia completa do arquivo padrão e os modifiquei de acordo. O que eu descobri foi que o XeLaTeX compila bem todas as fontes do LaTeX, pelo menos em todos os arquivos que testei. Talvez haja um recuo em algum lugar no fundo?
slhck
Copiar e modificar o arquivo padrão completo resolveu meu problema. Interessante que usar apenas XeLaTeX é suficiente para ambos. Vou verificar isso no futuro, pois definitivamente será melhor do que ter que trocar de compilador. Obrigado pela resposta rápida!
fgb