Программное получение выходного каталога

Программное получение выходного каталога

Для того, чтобы решитьЭта проблема, мне нужно будет программно получить -output-directoryпри запуске команд типа:

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

Причина в том, что мне пришлось бы изменить команды, запускаемые \write18в зависимости от расположения папки сборки.

(Я также попытался напрямую прочитать ${TEXMF_OUTPUT_DIRECTORY}из командной строки, но эта переменная среды также пуста:РЕДАКТИРОВАТЬ(После проверки источника выяснилось, что это будет доступно с TexLive 2024)

решение1

--output-directoryКонечно, это приносит больше хлопот, чем пользы, но раз уж он есть, полагаю, его нужно поддерживать.

Предполагая, что выходной каталог находится ниже текущего каталога и find доступен Unix, то вы можете сделать, например,


\input{|find . -name \jobname.log}

\bye

который выведет путь к файлу журнала, включая output-directoryего \inputв определение, чтобы получить путь для дальнейшей обработки.

решение2

В итоге я попросил пользователя скомпилировать что-то вроде:

$ pdflatex -shell-escape -output-directory=build "\def\outputDirectory{build}\input{test.tex}"

(см. также pre_latexв latexmk)

Но начиная с TeXLive 2024 необходимо определить новую переменную окружения:

${TEXMF_OUTPUT_DIRECTORY}

что должно помочь правильно запускать команды -shell-escape.

Связанный контент