\parbox 内的 \comment (verbatim-package) 抛出错误 - 问题是什么?

\parbox 内的 \comment (verbatim-package) 抛出错误 - 问题是什么?

我已经定义了自己的环境 - 我们称之为“myenv” - 它根据一些全局设置显示和隐藏其内容。我正在使用包中的\comment和命令,它们对我来说非常有效。\endcommentverbatim

然而,当我用这样的盒子封闭我的环境时,我遇到了一种奇怪的行为(我将 myenv 简化为这个最小的例子):

\documentclass[10pt,a4paper]{article}
\usepackage{verbatim}

%define my environment
\newenvironment{myenv}{%
    Start:
    \comment
}{%
    \endcomment
    :End
}

\begin{document}
    %\parbox{5cm}{                 % <- this is where it gets strange
         \begin{myenv}
             Content
         \end{myenv}    
    %}                             % <- this is where it gets strange
\end{document}

当我启用parbox-lines 时,我收到一串我不太明白的错误:

Argument of \verbatim@ has an extra }. }
Paragraph ended before \verbatim@ was complete. }
Extra }, or forgotten \endgroup. }
You can't use `\end' in internal vertical mode. \end{document}
Missing } inserted. \end{document}
Emergency stop.

begin和点之间似乎有些断裂end……


其他盒子也会发生这种情况:

错误\mbox列表有点不同:

Argument of \verbatim@ has an extra }. }
Paragraph ended before \verbatim@ was complete. }
Extra }, or forgotten \endgroup. }
Emergency stop.

\fbox再次出现了另一个错误签名:

Argument of \verbatim@ has an extra }. }
Paragraph ended before \verbatim@ was complete. }
Extra }, or forgotten \endgroup. }
Extra }, or forgotten \endgroup. }
Emergency stop.

TeX-Primitives\hbox和-environment\vbox运行良好minipage

所以我的问题是:这里出了什么问题以及如何解决?

答案1

不允许将逐字类对象用作其他命令的参数。由于 的comment实现方式与 相同verbatim,因此也存在同样的限制。

因此,您不能comment拥有\parbox\mbox等等\fbox

相反,它可以在中minipage,因为这个环境不将其内容作为参数收集。

\hbox对于原语和 也是一样\vbox。语法与带参数的命令相似这一事实并不重要;事实上,

\hbox\bgroup ... \egroup
\vbox\bgroup ... \egroup

是允许的(普通宏是不允许的);{(显式或隐式)开始收集标记以组成(水平或垂直)列表,最后}(显式或隐式)从迄今为止形成的列表中构建框。

基本上,\parbox{<dimen>}{<tokens>}

\vbox{\hsize=<dimen><tokens>}

但它们<tokens>被吸收为一个论点。相反,

\begin{minipage}{<dimen>}

确实如此\vbox\bgroup\hsize=<dimen>,而

\end{minipage}

提供尾随的\egroup

相关内容