使用子文件时某些注释被解释吗?

使用子文件时某些注释被解释吗?

我正在使用大学提供的使用子文件的模板撰写论文。我被一个问题困扰了几个小时,当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\enddocumentHello world真实的 \document命令被执行,但这里从来没有执行过。

因此,没有\end{document}后面的评论,抱歉。

相关内容