Programmgesteuertes Abrufen des Ausgabeverzeichnisses

Programmgesteuertes Abrufen des Ausgabeverzeichnisses

Um es zu lösendieses Problem, ich müsste das programmgesteuert abrufen, -output-directorywenn ich Befehle wie diese ausführe:

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

\write18Der 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-directorymacht 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-directorySie können dies auch \inputin 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_latexin latexmk)

Ab TeXLive 2024 sollte jedoch eine neue Umgebungsvariable definiert werden:

${TEXMF_OUTPUT_DIRECTORY}

Dies sollte dabei helfen, Befehle korrekt auszuführen -shell-escape.

verwandte Informationen