LaTeX多文件整合的相对路径问题

最近在整理算法竞赛的模板,每个章节的tex文件独立放在每一个章节的文件夹里,文件中需要插入的代码放在本章节文件夹的代码文件夹下,在多层级相对路径调用的时候出现了一些问题,这里记录一下解决方案。

首先,我的目录结构是这样的:

宿主文件 algo-template.tex 通过 \subfile{chapters/graph/graph.tex} 的方式引用 graph.tex,然后 graph.tex 通过 \lstinputlisting{code/JSK-A1958.cc} 的方式引用JSK-A1958.cc,在编译的时候,graph.tex 可以正常编译,但是algo-template.tex 不能编译,报错的理由是在algo-template.tex 文件目录下找不到 code/JSK-A1958.cc 这个文件;当把\lstinputlisting{code/JSK-A1958.cc}里的路径改成 chapters/graph/code/JSK-A1958.cc 之后,宿主文件可以编译,但是 graph.tex 又编译不了了。

事实上,宿主文件和单个章节文件可以同时可编译的,我参考了stackexchange 的这篇帖子:subfiles inside a subfile using relative paths。大概是我们需要用 \providecommand{\main}{../..} 这样的命令来配合相对路径使用,具体地,在algo-template.tex 中我们如此操作

而在graph.tex中我们这样写:

这样主文件中\main就表示当前目录,章节文件中表示上面两级,这样就都可以编译了。

需要特别注意的是章节文件中 \providecommand{\main}{../..} 一定要写在文档类那句话的前面。

说点什么

avatar
50
  Subscribe  
提醒