使用 \(end)comment 代替 \begin/\end{comment}

使用 \(end)comment 代替 \begin/\end{comment}

在我的文档中,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何时定义环境是可以的,在某些情况下是强制性的。但要谨慎使用。

相关内容