Meu programa produz várias saídas: tenho um arquivo .tex compilado e algumas delas são produzidas na linha de comando. As informações de compilação do pdf-latex são inúteis para mim e gostaria de ocultá-las para tornar minha saída de linha de comando legível.
Eu tenho vistoesseO site menciona que algum espessamento de caixa deve bastar, mas não encontrei um equivalente em linha de comando.
Responder1
Você pode redirecionar toda a pdflatex
saída:
- para sh:
pdflatex ... > /dev/null 2>&1
- para cmd:
pdflatex ... > NUL 2>&1
Ou você pode usar a -quiet
opção:
pdflatex -quiet ...
Responder2
No meu caso, não há -quiet
modo. Então eu tive que usar -interaction=batchmode
o argumento sugerido porAndrédeComente.
Mas então surgiu outro problema - você não verá o que deu errado e por quê, porqueerros também são suprimidos combatchmode
.
O resultado que acabo usando é suprimir pdflatex
a saída de all usando grep
apenas erros de saída:
: | pdflatex -halt-on-error src.tex | grep '^!.*' -A200 --color=always
Eu uso -halt-on-error
porque basicamente você não pode usar o modo interativo em caso de erro ( grep
desativa o diálogo entre programa e usuário). Além disso, para garantir que isso pdflatex
nunca solicite a entrada, vamos inserir o comando sem saída ( :
comando).
Deixe-me também explicar os grep
argumentos:
^!.*
- string para procurar na saída do pdflatex
- corresponde a todas as linhas que começam com
!
, que são consideradas linhas de erro
-A200
- produza 200 linhas após cada partida
- desta forma eu me certifico deimprima também as informações relevantes seguidas após as linhas de erro correspondentes
--color=always
- isso nos fornece resultados coloridos para que possamos ver claramente o que deu errado e por quê -o problema está em negrito vermelho
Script de wrapper
Criei um script wrapper para fornecer uma solução mais conveniente exatamente para esse propósito. Seu uso é quase igual ao pdflatex
/ pdftex
em si. Você pode conferir comoum pacote CTANou comoum repositório GitLab.
Instalação rápida
E aqui está como instalar a versão mais recente usando este oneliner:
curl -s https://gitlab.com/jirislav/pdftex-quiet/raw/latest/pdftex-quiet | \
sudo tee /usr/local/bin/pdftex-quiet >/dev/null \
&& sudo chmod +x /usr/local/bin/pdftex-quiet \
&& sudo ln -sf /usr/local/bin/pdftex-quiet /usr/local/bin/pdflatex-quiet
Aqui está um exemplo de como você executa o script wrapper:
pdftex-quiet compile-me.tex
# You may also provide additional attributes to `pdflatex`
pdflatex-quiet -output-format=dvi -output-directory=/tmp compile-me.tex
Você também pode mostrar a versão ou ajuda do script pdflatex-quiet
/ pdftex-quiet
:
pdflatex-quiet -v # or --version
pdflatex-quiet -h # or --help
Também a diferença entre pdflatex-quiet
e pdftex-quiet
,como explicado aquié respeitado - graças ao comentário de Denis Bitouzé.
Responder3
FWIW,https://ctan.org/pkg/texfotfoi minha tentativa de resolver esse problema - eliminando a saída detalhada dos mecanismos tex e ainda mostrando as mensagens interessantes (aquelas sobre as quais eu realmente quero fazer algo). --karl
Responder4
Atualização 05/02/2023
eu mudei paratectônicoe não use mais a solução abaixo.
função bash do compilador tex-to-pdf
Acabei combinando as respostas de
rubenvb,
Andrée
jirislav
e colocando-o como uma função no meu .bashrc
.
Versão curta
Toda a saída é redirecionada em um .txt
arquivo. As mensagens de erro deste arquivo são exibidas e o .txt
arquivo removido.
Você pode colocar a seguinte função no seu .bashrc
:
function tex-pdf {
pdflatex -halt-on-error -interaction=nonstopmode $1 > $1.txt
grep '^!.*' --color=always $1.txt
rm $1.txt
}
export -f tex-pdf
Você pode usá-lo como
$ tex-pdf report
Versão longa
Se você usa BibTeX ou deseja remover arquivos criados durante a compilação, mas não precisa, você pode estender a função da seguinte maneira:
function tex-pdf {
printf "Step 1/4 - pdflatex\n"
pdflatex -halt-on-error -interaction=nonstopmode $1.tex > $1.txt
grep '^!.*' --color=never $1.txt
printf "Step 2/4 - bibtex\n"
bibtex $1.aux > $1.txt
grep '^!.*' --color=never $1.txt
printf "Step 3/4 - pdflatex\n"
pdflatex -halt-on-error -interaction=nonstopmode $1.tex > $1.txt
grep '^!.*' --color=never $1.txt
printf "Step 4/4 - pdflatex\n"
pdflatex -halt-on-error -interaction=nonstopmode $1.tex > $1.txt
grep '^!.*' --color=never $1.txt
rm -f $1.txt $1.aux $1.bbl $1.blg $1.log $1.out $1.toc
}
export -f tex-pdf
Se não houver erros no seu código, a saída será:
$ tex-pdf report
Step 1/4 - pdflatex
Step 2/4 - bibtex
Step 3/4 - pdflatex
Step 4/4 - pdflatex