我有一个定义如下的环境:
\newenvironment{regularEnumerateEx}[2][0em]
{begin{listSkeleton}[#1]{enumerate}{#2}}
{\end{listSkeleton}}
问题是我需要#2
在将它传递给之前进行扩展listSkeleton
。如果扩展了,那就没问题了#1
(我认为)。我知道我必须\expandafter
以某种方式使用,但不知道具体如何使用。
答案1
如果可以完全扩展它,而不只是一次,您可以使用\edef
临时宏:
\newenvironment{regularEnumerateEx}[2][0em]{%
\edef\temp{%
\noexpand\begin{listSkeleton}[#1]{enumerate}{#2}%
}%
\temp
}{%
\end{listSkeleton}%
}
如果你确实只想扩展它一次,你可以这样做:
\newenvironment{regularEnumerateEx}[2][0em]{%
\def\temp{\begin{listSkeleton}[#1]{enumerate}}%
\expandafter\temp\expandafter{#2}%
}{%
\end{listSkeleton}%
}
宏通常\@tempa
用于此类临时分配,但在用户文档中,它需要\makeatletter ... \makatother
围绕代码。因此,为了简单起见,我只使用了\temp
。无论如何,它只是在组内使用。