É possível obter o valor de --output-directory programaticamente a partir do código LaTeX?

É possível obter o valor de --output-directory programaticamente a partir do código LaTeX?

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-directoryseja alterado e \VerbatimOutsalve 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 queminteddiz:

insira a descrição da imagem aqui

Responder1

No Linux você pode pesquisar a lista de processos em execução atualmente usando o comando ps aux. Para mim, uma entrada pdflatexwith --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 latexe --output-dire 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-dirsinalizador é 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.

informação relacionada