Obtenga programáticamente el directorio de salida

Obtenga programáticamente el directorio de salida

Para poder resolvereste problema, necesitaría obtenerlo mediante programación -output-directoryal ejecutar comandos como:

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

La razón es que necesitaría cambiar los comandos que se ejecutan \write18según la ubicación de la carpeta de compilación.

(También intenté leer directamente ${TEXMF_OUTPUT_DIRECTORY}desde la línea de comando, pero esta variable de entorno también está vacía:EDITARdespués de verificar la fuente, parece estar disponible a partir de TexLive 2024)

Respuesta1

--output-directoryCiertamente es más problemático que útil, pero como está ahí, supongo que debes apoyarlo.

Suponiendo que el directorio de salida está debajo del directorio actual y find hay un Unix disponible, entonces puede hacerlo, por ejemplo


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

\bye

que imprimirá la ruta al archivo de registro, incluida una definición output-directorysimilar \inputpara obtener la ruta para su posterior procesamiento.

Respuesta2

Terminé pidiéndole al usuario que compilara con algo como:

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

(ver también pre_latexen látexmk)

Pero a partir de TeXLive 2024, se debe definir una nueva variable de entorno:

${TEXMF_OUTPUT_DIRECTORY}

lo que debería ayudar a ejecutar comandos -shell-escapecorrectamente.

información relacionada