Formatação automática de código LaTeX (semelhante ao formato clang)

Formatação automática de código LaTeX (semelhante ao formato clang)

Existem ferramentas comoformato clangque pegam, por exemplo, um arquivo de código-fonte C++ "feio" (não formatado) e aplicam recuo específico e outras regras para tornar o código mais legível.

Existe uma ferramenta que pode formatar automaticamente o código-fonte do LaTeX? Quero de alguma forma manter meus arquivos LaTeX limpos e consistentes entre os colaboradores.

Responder1

A ferramentalátexisso foi sugerido por @muzimuzhi-Z em um comentário que funcionou para mim. Este script Perl parece ser muito poderoso, mas começar é fácil:

Instalação

Eu já tinha uma versão mais antiga (provavelmente através do texlive-full), mas como este projeto está sendo bastante desenvolvido, decidi adquirir a versão mais recente:

  1. Eu peguei a fonte deseu repositório oficial GitHub
  2. Eu instalei todas as dependências ausentes comsudo ./helper-scripts/latexindent-module-installer.pl
  3. Eu adicionei ao meu caminho no meu ~/.bashrc:export PATH="/path/to/latexindent.pl:$PATH"

Uso

Opções padrão, sobrescrevendo o arquivo ( -w), sem gravar uma cópia no terminal ( -s):

latexindent.pl -w -s myfile.tex

Isso manterá um backup do arquivo original .bak0(ou .bak1etc). Se você tiver isso em um repositório, você pode adicionar *.bak?em seu arquivo .gitignore.

Você também pode especificar seu próprio estilo de formatação em um ymlarquivo, assim: latexindent.pl -l mysettings.yml myfile.tex.

Responder2

emacs (surpresa!) vem com suporte LaTeX pronto para uso, muito,muitosuporte mais sofisticado oferece AUC-TeX (e RefTeX para referências cruzadas e citações de bibliografias). Todos os pacotes padrão, verifique o índice de pacotes.

De qualquer forma, eu formato meus arquivos fonte LaTeX para conter uma frase em cada linha, terminando com pontuação, ... Dessa forma (sugeriu umlongoenquanto escrevia troff (!) para minha tese, usando vi...) as alterações geralmente significam excluir/inserir ou mover uma linha/linhas, verificando se há boo-boos como "uma tese" ou "um elefante" ou "o o caso" pode ser feito com ferramentas orientadas a linha (corrigir até mesmo de forma automatizada com uma simples substituição de regex). Hoje eu o escondo no git, o formato tem o benefício adicional de adicionar/excluir, por exemplo, uma palavra, não reflui o parágrafo, então as diferenças de versão destacam mudanças reais.

Sim, reformatar dessa forma é uma tarefa que precisa ser feita manualmente... mas é necessária uma vez (e continue assim mais tarde).

informação relacionada