
Um es zu lösendieses Problem, ich müsste das programmgesteuert abrufen, -output-directory
wenn ich Befehle wie diese ausführe:
$ pdflatex -shell-escape -output-directory=build test.tex
\write18
Der Grund dafür ist, dass ich die ausgeführten Befehle je nach Speicherort des Build-Ordners ändern müsste .
(Ich habe auch versucht, direkt von der Befehlszeile zu lesen ${TEXMF_OUTPUT_DIRECTORY}
, aber diese Umgebungsvariable ist ebenfalls leer:BEARBEITEN(nach Überprüfung der Quelle scheint dies ab TexLive 2024 verfügbar zu sein)
Antwort1
--output-directory
macht sicherlich mehr Ärger als es wert ist, aber da es da ist, muss man es wohl unterstützen.
Vorausgesetzt, das Ausgabeverzeichnis liegt unterhalb des aktuellen Verzeichnisses und ein Unix find
ist verfügbar, dann können Sie beispielsweise
\input{|find . -name \jobname.log}
\bye
Dadurch wird der Pfad zur Protokolldatei gedruckt. output-directory
Sie können dies auch \input
in eine Definition einfügen, um den Pfad für die weitere Verarbeitung abzurufen.
Antwort2
Schließlich habe ich den Benutzer gebeten, die Kompilierung mit etwas wie Folgendem durchzuführen:
$ pdflatex -shell-escape -output-directory=build "\def\outputDirectory{build}\input{test.tex}"
(siehe auch pre_latex
in latexmk)
Ab TeXLive 2024 sollte jedoch eine neue Umgebungsvariable definiert werden:
${TEXMF_OUTPUT_DIRECTORY}
Dies sollte dabei helfen, Befehle korrekt auszuführen -shell-escape
.