在我的文档中,comment
环境运行良好,但是\comment
停止\endcomment
处理文档中的接下来内容:
\documentclass{article}
\usepackage{verbatim}
\begin{document}
X
\begin{comment}
1
\end{comment}
Y
\comment
2
\endcomment
Z
\end{document}
为什么?这是否类似于结束 \verbatim 命令?
答案1
该comment
环境由包定义verbatim
为的变体verbatim
:它不会打印每一行,而是简单地将其丢弃。
该包通过执行一些步骤来定义其逐字类似的环境。
首先,所有特殊字符(好吧,几乎所有)都变成非特殊字符;然后指示 TeX 一次吸收一行,检查它是否包含细绳 \end
(使用非特殊反斜杠)。如果是,则进行进一步检查,以查看其后是否跟有细绳 {foo}
,其中foo
是当前环境的名称。如果未找到此字符串,则该行将被视为不包含 的行\end
。否则,该行将被丢弃,并且逐字环境将完成,执行宏 \endfoo
并结束由 发起的小组\begin{foo}
。
因此,当看到 时\endcomment
,该行被识别为包含\end
,但没有{comment}
后面的字符串,因此 TeX 继续逐行处理直到找到\end{document}
,这做满足要求,因为当前环境确实是document
。
作为基本规则,绝不\foo...\endfoo
在文档正文中使用。你会遇到麻烦。举个简单的例子,试试
\documentclass{article}
\begin{document}
\quote
Some text that should wrap around, let's type something long
enough. Hope this will suffice.
\endquote
\quote
Some text that should wrap around, let's type something long
enough. Hope this will suffice.
\endquote
\end{document}
以下是(也许令人惊讶的)输出:
使用\foo
和\endfoo
何时定义环境是可以的,在某些情况下是强制性的。但要谨慎使用。