
Primero estoy intentando guardar un archivo, usando \VerbatimOut
. Luego, estoy usando este archivo en \ShellEscape
, donde necesito saber su nombre de ruta absoluta. Todo funciona bien, hasta que --output-directory
se cambia y \VerbatimOut
guarda el archivo en una ubicación diferente al directorio actual. ¿Cómo puedo obtener el valor de --output-directory
?
PD Supongo que no es posible, ya que esto es lo queminted
dice:
Respuesta1
En Linux puedes buscar en la lista de procesos actualmente en ejecución usando el comando ps aux
. Para mí, una entrada de pdflatex
with --output-dir
se ve así:
marijn 94217 0.0 0.2 119940 40784 pts/1 S+ 18:22 0:00 pdflatex --shell-escape --output-dir=diffout chkoutdir.tex
Luego puede hacer coincidir el patrón para una entrada que contenga latex
y --output-dir
y luego capturar lo que viene después del signo 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}
Guion:
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
Al compilar el documento LaTeX ahora se mostrará el contenido del archivo en la terminal tanto en situaciones donde --output-dir
se usa la bandera como en situaciones donde no se usa.
Esto no funciona si el directorio de salida contiene espacios. Es posible que tampoco funcione si el directorio de salida especificado es en sí mismo una llamada a un script o variable de algún tipo. Además, es posible que no funcione si hay más de una instancia de LaTeX ejecutándose. Así que no lo recomiendo para uso real, sólo como prueba de concepto.