在 \newenvironment 定义中拆分命令语法

在 \newenvironment 定义中拆分命令语法

这个问题是这个问题的直接后续问题\newcommand 定义可以包含括号作为替代文本吗?我昨天问过了。

下面的例子又是一个违反直觉的例子,用来说明我想要实现的目标。我试图将语法拆分parbox为 的开始代码和结束代码newenvironment。使用begingroupendgroup似乎在这里不起作用,并且会产生错误。

\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

正如评论中指出的那样,标准minipagelrbox环境是为这种用途而设计的,或者为构建盒子、mdframed包装的特殊情况而设计的。

要注意为什么显示的定义不起作用,您不能用 来分隔宏参数\begingroup

 \fbox \begingroup 

是相同的

 \fbox{\begingroup}

并将\begingroup令牌作为盒子的内容传递。此后,事情肯定会出错。

相似地

\parbox{10cm} \begingroup 

\parbox{10cm}{\begingroup}

作为\begingroup参数传递给\parbox

相关内容