![对 \include 命令使用相对路径](https://linux22.com/image/239667/%E5%AF%B9%20%5Cinclude%20%E5%91%BD%E4%BB%A4%E4%BD%BF%E7%94%A8%E7%9B%B8%E5%AF%B9%E8%B7%AF%E5%BE%84.png)
我有一个顶层乳胶文件:/thesis.tex
以及包含章节的子文件夹:/chap1/ch1.tex
我thesis.tex
使用\include
如下命令:
\include{chap1/ch1}
并且ch1.tex
我在本章的各个部分中还包含了更多内容:
\include{introduction}
该ch1.tex
文件及其包含的所有部分都使用如上所述的相对路径(这是一个独立文档,现在是更大的 thesis.tex 文档的一章)。我意识到我必须修复包含语句中的所有路径ch1.tex
及其部分,以将主文档目录视为根目录:
\include{chap1/introduction}
还有其他方法吗?我是否必须以这种方式浏览并更改所有包含和图形引用,或者有没有办法告诉所有此类链接在 ch1 中使用相对路径?
答案1
最好使用相对路径,这样即使你移动整个目录树,一切仍能正常工作。因此使用
\newcommand*{\MyPath}{../thesis}%
\input{\MyPath/chap1/ch1.tex}
假设您的文件如下:
<some path>/thesis/thesis.tex
<some path>/thesis/chap1/ch1.tex
<some path>/thesis/chap2/ch2.tex
所有文件都是相对于它们相对于论文目录。
我非常确定您需要更新所有\input
语句,但这样,如果您决定更改顶级目录或将其移动到某处,它就会变得灵活。
答案2
我知道这个问题已经很老了,但由于这篇文章是 tex.sx 上的第一篇,我发现它可能会有所帮助。
正如 Martin 所建议的,解决问题的方法是使用导入包,如如何使用导入包?。
答案3
像我一样将此添加为单独的答案不是建议使用此方法,因为它可能比它值得做的还要多,即修改输入宏以在目录列表中搜索文件并包含该文件。这样做的好处是您不需要更改每个单独的文件,并且允许您移动文件而它们仍能正常工作。
如果你决定采用这种方法,这个问题如何迭代文件夹中文件的名称可能会有帮助。