我正在使用大学提供的使用子文件的模板撰写论文。我被一个问题困扰了几个小时,当subfiles
使用包并subfile
编译时,编译器会解释一些注释。
例如,这是我的主文件,名为Main.tex
:
\documentclass{article}
\usepackage{subfiles}
\begin{document}
%\end{document}
\subfile{Hello}
\end{document}
我的subfile
名字Hello.tex
包含:
\documentclass[Main.tex]{subfiles}
\begin{document}
Hello world!
\end{document}
编译主文件(Main.tex
)时没有问题。但是当我尝试编译文件时Hello.tex
,编译失败并显示错误:
! LaTeX Error: Missing \begin{document}.
当我删除\end{document}
主文件中的注释时,一切又恢复正常。奇怪的是,同一位置的其他注释没有问题。\end{document}
似乎只有一条注释被解释。
有人知道为什么会发生这种情况吗?
答案1
subfiles.cls
通过读取作为文档类选项给出的文件来工作,但让环境document
相当于comment
提供的环境verbatim
。此环境逐字读取其内容,并由字符串分隔\end{verbatim}
(它不完全正确,但并不相关),百分比字符是标准人物。
环境comment
实现非常简单:它的作用与相同verbatim
,但是当后者打印一行时,前者只是将其抛出。
因此,“隐藏”\end{document}
在注释字符后面没有任何意义。
在您的例子中,该%\end{document}
行结束隐式comment
环境并\subfile{Hello}
执行,\skip@preamble
这使得和变为无操作。因此,当对序言中段落的检查仍然有效时,就会发现,因为当\documentclass
\document
\enddocument
Hello world
真实的 \document
命令被执行,但这里从来没有执行过。
因此,没有\end{document}
后面的评论,抱歉。