我有以下项目结构:
./main.tex
./ch1/ch1.tex
./ch1/tikz1/tikz1.tex
main.tex 如下所示:
\documentclass{book}
\begin{document}
\subfile{./ch1/ch1.tex}
\end{document}
ch1.tex 如下所示:
\documentclass[../main.tex]{subfiles}
\begin{document}
\begin{figure}[H]
\centering
\subfile{./tikz1/tikz1.tex}
\end{figure}
\end{document}
当我运行 ch1.tex 时一切正常,它找到了 tikz1.tex,但是当我运行 main.tex 时它找不到 tikz1.tex。
答案1
除了@MarcoDaniel 的观察结果显示文件\usepackage{subfiles}
中缺少该信息之外main.tex
,由于相对路径的存在,编译文档的方式也存在问题。
编译时 main.tex
,在latex
中查找,在 中查找。编译时(可能从其包含目录 中查找),在中查找。显然,这两者都不可能正确,除非您维护 的两个副本,但这有点违背了目的。<maindir>/ch1/
ch1.tex
<maindir>/tikz1/
tikz1.tex
ch1.tex
<maindir>/ch1/
latex
<maindir>/ch1/tikz/
tikz1.tex
tikz1.tex
有多种方法可以解决这个问题:
- 扁平化目录结构(根据文件数量可能没问题)
- 使用绝对路径(出于可移植性原因不推荐)
- 编译时
./ch1/ch1.tex
要pdflatex
运行的输入。根据您使用的编辑器,可能还有其他方法可以设置主文件以外的文件。<maindir>
ch1.tex
答案2
我遇到了类似的问题。它以前可以编译,但在新系统上却不行。
我有一个main.tex
和一个Subfolder/firstChapter/subDoc.tex
。该文件subDoc.tex
有一个包含在路径中的 tikz 子文件Subfolder/anotherFolder/tikz.tex
。
为了编译,main.tex
我必须使用相对路径 from subDoc.tex
to tikz.tex
:../anotherFolder/tikz
而不是 from main.tex
to tikz.tex
: Subfolder/anotherFolder/tikz
。
仔细想想,这完全有道理。也许这个解决方案可以帮到你。