
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-directory
geändert wird und \VerbatimOut
die 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, wasminted
sagt:
Antwort1
Unter Linux kann man mit dem Befehl die Liste der aktuell laufenden Prozesse durchsuchen ps aux
. Bei mir sieht ein Eintrag von pdflatex
so --output-dir
aus:
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 latex
und 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-dir
Flag 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.