为了解决这个问题,我需要-output-directory
在运行以下命令时以编程方式获取:
$ pdflatex -shell-escape -output-directory=build test.tex
原因是我需要\write18
根据构建文件夹的位置更改通过其运行的命令。
(我也尝试过直接从命令行读取${TEXMF_OUTPUT_DIRECTORY}
,但是这个环境变量也是空的:编辑检查来源后,似乎从 TexLive 2024 开始可用)
答案1
--output-directory
肯定比它本身的价值更麻烦,但既然它存在,我想你就必须支持它。
假设输出目录位于当前目录下方,并且 unixfind
可用,那么您可以执行例如
\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
正确运行命令。