Obtenha programaticamente o diretório de saída

Obtenha programaticamente o diretório de saída

A fim de resolveresse assunto, eu precisaria obter programaticamente o -output-directoryao executar comandos como:

$ pdflatex -shell-escape -output-directory=build test.tex

O motivo é que eu precisaria alterar os comandos executados \write18dependendo da localização da pasta de construção.

(Também tentei ler diretamente ${TEXMF_OUTPUT_DIRECTORY}na linha de comando, mas esta variável de ambiente também está vazia:EDITARdepois de verificar a fonte, parece estar disponível a partir do TexLive 2024)

Responder1

--output-directorycertamente é mais problemático do que vale a pena, mas como está lá, suponho que você tenha que apoiá-lo.

Supondo que o diretório de saída esteja abaixo do diretório atual e um unix find esteja disponível, você pode fazer, por exemplo


\input{|find . -name \jobname.log}

\bye

que imprimirá o caminho para o arquivo de log, incluindo output-directoryvocê poderia similarmente \inputem uma definição para obter o caminho para processamento posterior.

Responder2

Acabei pedindo ao usuário para compilar com algo como:

$ pdflatex -shell-escape -output-directory=build "\def\outputDirectory{build}\input{test.tex}"

(veja também pre_latexem latexmk)

Mas a partir do TeXLive 2024, uma nova variável de ambiente deverá ser definida:

${TEXMF_OUTPUT_DIRECTORY}

o que deve ajudar a executar comandos -shell-escapecorretamente.

informação relacionada