带有星号的嵌套环境

带有星号的嵌套环境

我想重新定义一个包含环境 alignat* 的环境。

我发现我不能这样做:

\newenvironment{variables}
{  \paragraph{Variables :}

\begin{alignat*}{2} }
{  \end{endalignat*} }

所以我找到的解决方案是使用命令\alignat,但是这样,方程式就被编号了,而我不会。

\newenvironment{variables}
{  \paragraph{Variables :}

\alignat*{2} }
{  \endalignat* }

那么我该如何做才能\alignat*在新的环境中保留这颗星星呢?

答案1

为什么要定义\foo?我可能漏掉了一些东西,但你可以\csname在定义中包含

\newenvironment{variables}
  {\paragraph{Variables :}
   \csname alignat*\endcsname{2}}
  {\csname endalignat*\endcsname}

答案2

\csname endalignat*\endcsname\endalignat*扩展为通常无法输入的命令。因此\foo,这里有一个辅助宏,它生成您想要的环境定义,只是命令名称作为参数传递#1#2然后\expandafter用于生成命令名称 so,其构造与

\foo{\alignedat*}{\endalignedat*}

但 * 被解释为命令名称的一部分,就好像它是一个字母一样。

\documentclass{article}

\usepackage{amsmath}



\def\foo#1#2{%
\newenvironment{variables}
{\paragraph{Variables :}
#1{2}}
{#2}}
\expandafter\foo
  \csname alignat*\expandafter\endcsname
  \csname endalignat*\endcsname

\begin{document}

\begin{variables}
a&b\\
aaa&bbb
\end{variables}

\end{document}

相关内容