假设我有一个环境myenvironment
,并且有以下代码:
\makebox[\length][c]{%
\begin{myenvironment}
content
\end{myenvironment}
}
我想创建一个foo
可以做同样事情的环境,但只需
\begin{foo}{\length}
content
\end{foo}
我知道如何传递\length
给foo
。问题在于命令makebox
(或任何会分隔 的命令myenvironment
)。我尝试了这种简单的方法:
\newenvironment{foo}{%
\makebox[\length][c]{
\begin{myenvironment}
}{%
\end{myenvironment}}
}
这当然是行不通的,因为你不能在一个块中单独拥有{
和。}
我发现了类似的问题,但我不确定它是否适用于我的问题:如何定义以节点开始的环境?. 我不太明白这个经过验证的答案。
那么我该如何创建环境foo
?我更喜欢不使用包的解决方案environ
。如果对解决方案有用,我会使用xparse
和etoolbox
包。
答案1
诀窍在于使用lrbox
:
\newsavebox{\foobox}
\newenvironment{foo}
{% start
\begin{lrbox}{\foobox}%
\begin{myenvironment}%
}
{% end
\end{myenvironment}%
\end{lrbox}%
\makebox[\length][c]{\usebox{\foobox}}%
}