没有什么大不了的事,但是为什么在同一行后面放置 % 类型的注释会\end{comment}
导致问题?
\documentclass[12pt]{article}
\usepackage{comment}
% \usepackage{thmtools, thm-restate}
\begin{document}
asdfasdf
\begin{comment}
dsdf
\end{comment} %comment begins line 46
\end{document}
答案1
假设调用tex文件main.tex
,输入行
...
\end{comment} %comment begins
...
\end{document}
生成以下有点难以理解的提示:
Runaway argument?
! File ended while scanning use of \next.
<inserted text>
\par
<*> main.tex
?
发生的事情是,LaTeX 已经到达文件末尾,却从未“看到” \end{comment}
,并且通过扩展,\end{document}
。发生了什么事?
通过设计,comment
环境允许包含几乎任何任意材料,包括可以改变含义的代码,即所谓的类别代码,\
(反斜杠)、%
、(空格)、
{
、}
和所有其他字符,无论这些字符是否默认为“TeX 特殊”。因此,为了确定注释材料的结束时间和地点,不能依赖 TeX 的常用输入处理子系统,它确实假设\
、{
、}
、%
等具有某些含义。相反,必须对输入字符串的文字内容施加一些相当严格的形式要求。该包的作者
comment
已决定终止标记必须由文字字符串组成
\end{comment}
仅此而已;即,该输入行上不允许存在任何其他内容,无论是在 之前还是之后\end{comment}
。
我想有人可能会指出,这一要求代表着充分条件决定评论材料的结束位置,并且必要条件可以以不太严格的方式表述,例如,允许%
-type 注释与 出现在同一行\end{comment}
。人们很可能想出这样一个较弱的必要条件。但显然,该comment
包的作者认为这不是必要的(双关语)。
答案2
如果 \end{comment} 位于 \begin{comment} 行上,则视为注释。因此 \begin{comment} 没有结束。