如果没有绝对路径,相对路径就不起作用

如果没有绝对路径,相对路径就不起作用

我正在尝试自动化 pdftex 来生成文档。我陷入了某种困境,TeX 认为人们想要使用绝对路径或工作目录。

我有文件 main.tex。它从子目录导入几个文件:

\include{one/one}
\include{two/two}

pdftex /path/to/main.tex从另一个目录调用,并且 tex 始终尝试导入相对于调用“pdftex”的目录而不是 main.tex 的目录。

我无法预测在不同机器上使用的绝对路径是什么。只有当前工作目录中还有另一个 TeX 文件,并且知道 main.tex 的绝对路径是什么时,“导入”包才会起作用。有没有办法让 main.tex 使用相对路径,而不必在 TeX 文件中包含绝对路径?我只希望文件使用相对于该文件所在位置的路径,而不是相对于工作目录或月相的路径。

(作为一个小小的好处,至少这些包含的 TeX 文件都不需要包含其他文件或图形,因为那会是它自己的问题。)

答案1

.tex请注意,使用时不应包含扩展名,与使用\include不同,它与使用默认值不同,它会找到相同的 tex 文件,但生成不同的 aux 文件(如果文件系统允许)而不是。\input.texone.tex.auxone.aux

通常情况下,使用本地文件名而不是路径效果最好。

只要

\include{one}
\include{two}

然后使用命令行

TEXINPUTS=/path/to//: pdftex main

(或其他命令行中的等效命令,以上命令在 bash 中有效)

如上所述设置 TEXINPUTS 会将 TeX 输入路径设置为/path/to及其所有子目录(尾随的//和标准搜索路径(因为最后的:),然后main在命令行上查找/path/to/main.tex\include{one}查找/path/to/main/one/one.tex\include{two}查找,/path/to/main/two/two.tex而不管运行命令的当前目录如何。

答案2

您可以尝试常见问题解答中提到的其中一个套餐https://texfaq.org/FAQ-docotherdir

但我的建议是:不要从其他目录启动 pdflatex。编写脚本或任何要“自动”生成文档的操作,以便它首先切换到主文件的目录。您显然知道从当前目录到主文件的路径,那么为什么不先使用它呢cd

相关内容