如何创建在宏中嵌入环境的环境?

如何创建在宏中嵌入环境的环境?

假设我有一个环境myenvironment,并且有以下代码:

\makebox[\length][c]{%
\begin{myenvironment}
content
\end{myenvironment}
}

我想创建一个foo可以做同样事情的环境,但只需

\begin{foo}{\length}
content
\end{foo}

我知道如何传递\lengthfoo。问题在于命令makebox(或任何会分隔 的命令myenvironment)。我尝试了这种简单的方法:

\newenvironment{foo}{%
\makebox[\length][c]{
\begin{myenvironment} 
}{%
\end{myenvironment}}
}

这当然是行不通的,因为你不能在一个块中单独拥有{和。}

我发现了类似的问题,但我不确定它是否适用于我的问题:如何定义以节点开始的环境?. 我不太明白这个经过验证的答案。

那么我该如何创建环境foo?我更喜欢不使用包的解决方案environ。如果对解决方案有用,我会使用xparseetoolbox包。

答案1

诀窍在于使用lrbox

\newsavebox{\foobox}

\newenvironment{foo}
 {% start
  \begin{lrbox}{\foobox}%
  \begin{myenvironment}%
 }
 {% end
  \end{myenvironment}%
  \end{lrbox}%
  \makebox[\length][c]{\usebox{\foobox}}%
 }

相关内容