这个问题是这个问题的直接后续问题\newcommand 定义可以包含括号作为替代文本吗?我昨天问过了。
下面的例子又是一个违反直觉的例子,用来说明我想要实现的目标。我试图将语法拆分parbox
为 的开始代码和结束代码newenvironment
。使用begingroup
和endgroup
似乎在这里不起作用,并且会产生错误。
\newenvironment{mybox}{\parbox{10cm}\begingroup}{\endgroup}
这在 LaTeX 中可能吗?
稍微阐述一下我的具体需求,我需要很多居中,框架框来突出显示一些“警告”和“最佳实践”。为此,我想到以下环境:
\newenvironment{mybox}[2]%
{%
\begingroup \centering \fbox \begingroup \parbox{10cm} \begingroup #1 \hspace{5pt}
{\large \textbf{\textsf{#2}}} \hfill \\
}%
{%
\endgroup \endgroup \\ \endgroup \vspace{5pt} %
}
其中一个参数是在文本“警告”和“最佳实践”之间切换,另一个参数是为每种类型提供一个特殊符号(如星号或阴影框)
答案1
正如评论中指出的那样,标准minipage
和lrbox
环境是为这种用途而设计的,或者为构建盒子、mdframed
包装的特殊情况而设计的。
要注意为什么显示的定义不起作用,您不能用 来分隔宏参数\begingroup
。
\fbox \begingroup
是相同的
\fbox{\begingroup}
并将\begingroup
令牌作为盒子的内容传递。此后,事情肯定会出错。
相似地
\parbox{10cm} \begingroup
是
\parbox{10cm}{\begingroup}
作为\begingroup
参数传递给\parbox
。