以编程方式获取输出目录

以编程方式获取输出目录

为了解决这个问题,我需要-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_latexlatexmk)

但是从 TeXLive 2024 开始,应该定义一个新的环境变量:

${TEXMF_OUTPUT_DIRECTORY}

这有助于-shell-escape正确运行命令。

相关内容