进行源外编译时,include/input 的相对路径错误

进行源外编译时,include/input 的相对路径错误

我有一个文档,编译得很好。我试图将其重构为单独的文件,但input命令似乎将其路径建立在相对于构建目录而不是源目录

我的目录结构:

project/src/main.tex
project/build/

main.tex 最初看起来像这样,简化了

\documentclass[a4paper,12pt]{book}
\renewcommand{\thesection}{\thechapter.\arabic{section}}
\begin{document}
...
\end{document}

如果我这样做

$> cd project/build
$> pdflatex ../src/main.tex

然后我得到了所需的输出,project/build/并且没有添加任何垃圾project/src,太好了。

现在进入\renewcommand...project/src/commands.tex编辑main.tex

\documentclass[a4paper,12pt]{book}
\input{commmands}
\begin{document}
...
\end{document}

现在,当我运行时,pdflatex它在第二行停止:

! LaTeX Error: File `commands.tex' not found.

如果我main.tex这样编辑:

\documentclass[a4paper,12pt]{book}
\input{../src/commands}
\begin{document}
...
\end{document}

然后它就可以编译成功。

这显然是愚蠢的。源代码不应该关心编译器调用的工作目录。

我该如何编写main.tex才能包含所有其他文件相对于其自身路径(并且这种行为适用于包含的包含等等)以便我可以在源代码外编译文档?

答案1

只需使用

\documentclass[a4paper,12pt]{book}
\input{commands}
\begin{document}
...
\end{document}

或者更好地调用文件而commands.sty不是commands.tex使用

\documentclass[a4paper,12pt]{book}
\usepackage{commands}
\begin{document}
...
\end{document}

调用顺序为

cd project/build
TEXINPUTS=../src//:
pdflatex main.tex

相关内容