Ist es möglich, den Wert von --output-directory programmgesteuert aus LaTeX-Code abzurufen?

Ist es möglich, den Wert von --output-directory programmgesteuert aus LaTeX-Code abzurufen?

Ich versuche zunächst, eine Datei zu speichern, indem ich verwende \VerbatimOut. Dann verwende ich diese Datei in \ShellEscape, wobei ich ihren absoluten Pfadnamen kennen muss. Alles funktioniert gut, bis --output-directorygeändert wird und \VerbatimOutdie Datei an einem anderen Ort als dem aktuellen Verzeichnis gespeichert wird. Wie kann ich den Wert von erhalten --output-directory?

ps Ich denke, es ist nicht möglich, denn das ist, wasmintedsagt:

Bildbeschreibung hier eingeben

Antwort1

Unter Linux kann man mit dem Befehl die Liste der aktuell laufenden Prozesse durchsuchen ps aux. Bei mir sieht ein Eintrag von pdflatexso --output-diraus:

marijn     94217  0.0  0.2 119940 40784 pts/1    S+   18:22   0:00 pdflatex --shell-escape --output-dir=diffout chkoutdir.tex

Anschließend können Sie ein Mustervergleich für einen Eintrag durchführen, der latexund enthält --output-dir, und anschließend erfassen, was nach dem Gleichheitszeichen kommt.

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}

Skript:

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

Beim Kompilieren des LaTeX-Dokuments wird nun der Inhalt der Datei im Terminal angezeigt, sowohl in Situationen, in denen das --output-dirFlag verwendet wird, als auch in Situationen, in denen es nicht verwendet wird.

Dies funktioniert nicht, wenn das Ausgabeverzeichnis Leerzeichen enthält. Es funktioniert möglicherweise auch nicht, wenn das angegebene Ausgabeverzeichnis selbst ein Aufruf eines Skripts oder einer Variable irgendeiner Art ist. Darüber hinaus funktioniert es möglicherweise nicht, wenn mehr als eine Instanz von LaTeX ausgeführt wird. Ich empfehle es daher nicht für den tatsächlichen Gebrauch, sondern nur als Proof of Concept.

verwandte Informationen