使用子文件包会导致编译错误,因为编译器错误地解析了注释掉的“\end{document}”

使用子文件包会导致编译错误,因为编译器错误地解析了注释掉的“\end{document}”

我的文件夹中有以下两个文件:

mymainfile.tex

\documentclass{article}
\usepackage{subfiles}
\begin{document}
%\end{document}
\subfile{mysubfile.tex}
\end{document}

mysubfile.tex

\documentclass[mymainfile.tex]{subfiles}
\begin{document}
hello
\end{document}

编译mymainfile.tex(使用 pdflatex)工作正常,并包含了 的内容mysubfile.tex,这是应该的。但是,mysubfile.tex单独编译会导致以下错误描述:

! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.3 h
     ello
? 

即编译器的行为就像下面这行代码一样

%\end{document}

未被注释掉。如果删除此行,则两个文件都可以编译。

编译器读取注释掉的行时,好像它根本不是注释一样,这让我很不安,我以为编译器始终忽略注释是我能一直指望的事情!原因可能是什么?

答案1

对我来说,这似乎是subfiles软件包中的一个错误。我只能假设子文件软件包有自己的代码来解析主文档,而主文档没有完整、正确的 latex 解析功能。

事实上,我认为即使它正确解析了\end{document},它也应该能够编译成功,因为它实际上只需要来自的标题mymainfile.tex,因此应该在第一行(未注释的)处停止\begin{document}

相关内容