
Estou tentando salvar um arquivo primeiro, usando \VerbatimOut
. Então, estou usando esse arquivo \ShellEscape
, onde preciso saber seu nome de caminho absoluto. Tudo funciona bem, até que --output-directory
seja alterado e \VerbatimOut
salve o arquivo em um local diferente do diretório atual. Como posso obter o valor de --output-directory
?
ps eu acho que não é possível, já que é isso queminted
diz:
Responder1
No Linux você pode pesquisar a lista de processos em execução atualmente usando o comando ps aux
. Para mim, uma entrada pdflatex
with --output-dir
é assim:
marijn 94217 0.0 0.2 119940 40784 pts/1 S+ 18:22 0:00 pdflatex --shell-escape --output-dir=diffout chkoutdir.tex
Em seguida, você pode combinar padrões para uma entrada contendo latex
e --output-dir
e capturar o que vem depois do sinal de igual.
MWE:
\documentclass{article}
\usepackage{fancyvrb}
\usepackage{shellesc}
\begin{document}
\begin{VerbatimOut}{verbfile.txt}
I write that. And that too.
\end{VerbatimOut}
\ShellEscape{bash chkdirscript.sh}
\end{document}
Roteiro:
if ps aux|pcregrep -q "latex.*[-]output-dir=[^ ]+ "; then
OUTDIR=$(ps aux|pcregrep -o1 "latex.*[-]output-dir=([^ ]+) ")
cat $OUTDIR/verbfile.txt
else
cat verbfile.txt
fi
A compilação do documento LaTeX agora mostrará o conteúdo do arquivo no terminal tanto nas situações em que o --output-dir
sinalizador é usado quanto nas situações em que não é usado.
Isto não funciona se o diretório de saída contiver espaços. Também pode não funcionar se o diretório de saída especificado for uma chamada para um script ou variável de algum tipo. Além disso, pode não funcionar se houver mais de uma instância do LaTeX em execução. Portanto, não o recomendo para uso real, apenas uma prova de conceito.