共享\include 文件..如何智能地解释根目录?

共享\include 文件..如何智能地解释根目录?

我有一个目录,里面有一篇论文。它有各种子目录,里面都有内容。

paper1/
    main.tex
    intro/
        intro.tex
    conclusion/
        conclusion.tex
    static/
        image1.png
        image2.png

paper1 的 main.tex 看起来像:

\documentclass{article}
\begin{document}
\include{intro/intro}
\include{conclusion/conclusion}
\end{document}

paper1 的介绍包括我的静态图像:

\includegraphics{static/image1}

效果很好,很酷。

但是现在,我正在将所有这些论文整合到我的论文中。我希望能够将\include我的论文放在我的文档中。我在论文文件夹中创建了指向 paper1 的符号链接:

dissertation/
    thesis.tex
    paper1/
        ...

并且想在 thesis.tex 中做类似下面的事情:

\begin{document}
\include{paper1/intro/intro}
\end{document}

但是,当我尝试编译它时,paper1/intro/intro.tex 中图形的路径无法解析,因为它们假定根目录为 paper1/。我现在有一个根目录为 dissertation/。我愿意重新设置 paper1/intro/intro.tex 中的路径,但我希望可以按照自己的意愿编译 paper1 或编译 dissertation,而不必来回“切换”路径。可能有一种巧妙的方法来构建目录等。

有没有办法用共享的 \includes 来编译 latex 文件,并根据需要智能地设置根目录?

答案1

这些路径是相对于 tex 进程的工作目录而不是文档的路径,因此您可以使用pdflatex thesis和,pdflatex paper1/paper但通常最好在文档目录中运行 pdflatex,因此不一定推荐这样做/

您可以简单地使用\include{intro}并将其放入/some/path/dissertation//:TEXINPUTS 环境变量中,然后仅通过文件名就可以递归找到该目录下的任何文件。

作为第三种选择使用

\include{\paperone/intro/intro}

在 paper1 文件中有

\providecommand\paperone{.}

但在论文中

\newcommand\paperone{paper1}

所以如果你运行你输入的论文,paper1/intro/intro.tex但是如果你运行你输入的 paper1 文档./intro/intro.tex

相关内容