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?

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.