为什么在“\end{comment}”之后开始 % 类型的注释会引起问题?

为什么在“\end{comment}”之后开始 % 类型的注释会引起问题?

没有什么大不了的事,但是为什么在同一行后面放置 % 类型的注释会\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} 没有结束。

相关内容