最小的工作示例再简单不过了:我有一个main.tex
如下文件:
\documentclass{article}
\usepackage{subfiles}
\begin{document}
\subfile{Subfiles/subfile}
\end{document}
以及子目录内的子文件 ( Subfiles/subfile
):
\documentclass[../main]{subfiles}
\begin{document}
Hello, world!
\end{document}
当我使用 LaTeX-Workshop VSCode 扩展进行编译时main.tex
,一切都很顺利,我得到了我期望的结果。但是,对于子文件来说,情况有点复杂:一开始,它确实有效。但在另一次编译之后,它突然找不到../main.tex
。如果我随后将其更改../main.tex
为 just ./main.tex
(这似乎没有意义),它会在一次或几次编译中再次起作用,然后我必须再次改./main.tex
回../main.tex
才能使其工作。我不确定如何看待这种半可靠的行为。这是错误:
Latexmk: Missing input file '../main.tex' (or dependence on it) from following:
! LaTeX Error: File `../main.tex' not found.
答案1
编译时-cd
使用选项。这告诉在编译之前将目录更改为包含的目录。然后该行将被按预期解释:该文件位于相对于的父目录中。latexmk
subfile.tex
latexmk
subfile.tex
\documentclass[../main]{subfiles}
main.tex
subfile.tex
如果您不使用该-cd
选项,并且您(或 VSCode)没有将工作目录设置为subfile.tex
,那么编译将在工作目录的父目录中寻找,main.tex
而不是在正确的位置。