在 Windows 上替换 openout_any=a pdflatex myfile.tex?

在 Windows 上替换 openout_any=a pdflatex myfile.tex?

我正在尝试编译一个具有相当复杂文档结构的 LaTeX 项目,显然遇到了问题openout_any。我一直认为,全局更改 LaTeX 的变量不是一个好主意。在 Linux 上,我可以运行openout_any=a pdflatex mydocument.tex以将其仅应用于该运行,但我实际上使用的是 Windows (7),据我所知,这样做不起作用。我已经检查过pdflatex -help,没有发现任何标志会对openout_any运行进行任何更改。有人能告诉我一种真正实现这种短期改变的方法吗?

答案1

我遇到这个问题是因为我想知道如何从命令行设置 openout_any。所以我在这里描述了我的解决方案和实现所需结果的替代方法。所以你的问题是我答案的一部分:

openout_any=a pdflatex ../../../source/latex/file.ins

doc/latex/file可以与文件夹内的以下内容一起使用docstrip.cfg

\BaseDirectory{../../..}
\UseTDS

至少对于 pdfTeX 3.141592653-2.6-1.40.24,可以将其更改为以下命令:

pdflatex --cnf-line=openout_any=a 文件.ins

更好的解决方案是使用指向包含所有生成文件的公共目录的 $TEXMFOUTPUT。它也可以作为参数传递给参数,--cnf-line并完全避免更改openout_any。完整的 shell 脚本可以是

#!/bin/sh -x
TEXMFOUTPUT="$(realpath ../../..)" 
cat >docstrip.cfg << EOF
\BaseDirectory{$TEXMFOUTPUT}
\UseTDS
EOF
pdflatex --cnf-line=TEXMFOUTPUT="${TEXMFOUTPUT}" file.ins 

对于批处理脚本来说,情况类似。

相关内容