在命令内部、数学内部嵌套对齐?

在命令内部、数学内部嵌套对齐?

我得到了一些嵌套的命令,其中两个有效,但最后一个无效。

\newcommand{\trine}[3]
{
    {#1} \times {#2} \times {#3}
}
\newcommand{\MchainSub}[9]
{
    k &= {#2} &\to M[{#1},{#2}] &+& M[{#3},{#4}] &+& {#5} \\[-1em]
      &       &    {#6} &+& {#7} &+& {#8} &=& {#9}\\
}
\newcommand{\Mchain}[2]
{
    \begin{aligned}
        \begin{aligned}
            {#1}
        \end{aligned} &=\left\{
        \begin{aligned}
            {#2}
        \end{aligned} \right.
    \end{aligned}
}

不起作用:

\[
\begin{array}{l}
    \Mchain{
        M[i, j] \\[-1em]
        A, k=i
    }{
        \MchainSub{i}{k}{l}{j}{ \trine{a}{b}{c} }{x}{y}{z}{w}
        \MchainSub{i}{k}{l}{j}{ \trine{a}{b}{c} }{x}{y}{z}{w}
    } %<- here is error
\end{array}
\]

是否有效:

\[
\begin{array}{l}
    \begin{aligned}
    \begin{aligned}
        M[i, j] \\[-1em]
        A, k=i
    \end{aligned} &=\left\{
    \begin{aligned}
        \MchainSub{i}{k}{l}{j}{ \trine{a}{b}{c} }{x}{y}{z}{w}
        \MchainSub{i}{k}{l}{j}{ \trine{a}{b}{c} }{x}{y}{z}{w}
    \end{aligned} \right.
    \end{aligned}
\end{array}
\]

在此处输入图片描述

为什么第一个不起作用?由于我将多次重复使用嵌套的 \MchainSub 和 \trine,因此使用我的宏方法会快得多。

我不断收到错误 missing }. missing { ...

答案1

{#2}使用了不需要的括号,因此在插入之后#2\MchainSub会在第一个单元格中看到错误,而&在最后一个单元格中则会出现错误。{}

您可能应该删除等周围的所有括号#2,因为即使没有产生错误,数学模式中的额外括号也会影响间距。

相关内容