
Для того, чтобы решитьЭта проблема, мне нужно будет программно получить -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
.