每行 Eqnarray 多个等号

每行 Eqnarray 多个等号

我想要生成以下对齐方程数组:

\begin{eqnarray*}
    \operatorname{Cov}\left(u^{\prime} X, v^{\prime} Y\right) &=& u^{\prime} \Sigma_{xy} v &=& \alpha^{\prime} M \beta \\
    \operatorname{Cov}\left(u^{\prime} X, u_{j}^{\prime} X\right)&=& u^{\prime} \Sigma_{xx} u_{j} &=& \alpha^\prime \alpha_j \\
    \operatorname{Cov}\left(v^{\prime} Y, v_{j}^{\prime} Y\right)&=& v^{\prime} \Sigma_{yy} v_{j} &=& \beta^\prime  \beta_j
\end{eqnarray*}

但上面给出了在此处输入图片描述

问题在于最右边的列不在正确的位置。我尝试谷歌搜索了一段时间,并不断找到类似这样的帖子eqnarray 与 align告诉我改用 align。但是,align 似乎也没有提供很好的间距;现有的 align 教程每行只有一个等号,而我想要两个。

我该怎么办?谢谢!

答案1

在任何情况下都不要使用eqnarray:它有缺陷并且不灵活。

你需要的是alignat

\documentclass{article}
\usepackage{amsmath}

\DeclareMathOperator{\Cov}{Cov}

\begin{document}

\begin{alignat*}{2}
\Cov(u' X, v' Y)     &= u' \Sigma_{xy} v      &&= \alpha' M \beta \\
\Cov(u' X, u_{j}' X) &= u' \Sigma_{xx} u_{j}' &&= \alpha' \alpha_j \\
\Cov(v' Y, v_{j}' Y) &= v' \Sigma_{yy} v_{j}' &&= \beta'  \beta_j
\end{alignat*}

\end{document}

请注意,我将其缩写\operatorname{Cov}为 into\Cov和 also ^{\prime}into '(更清晰,更易于输入)。我还删除了\leftand,\right除了添加不必要的空格外,没有任何作用。

在此处输入图片描述

答案2

对于您的用例,没有现成的解决方案可以很好地工作。相反,我们必须手动构建它array。获取方程式编号会有点棘手,但幸运的是,您不需要这些。我还会进行设置,使其看起来像eqnarray输入(但间距有所改善)

\NewDocumentEnvironment{eqnarray3*}{}
   {
     \displaymath % ❶
       \begin{array}
          {
            @{} % ❷
             r % Left hand column
            @{\;} % ❸
             c % first equals sign
            @{\;} % ❸
             c % middle column
            @{\;} % ❸
             c % second equals sign
            @{\;} % ❸
             l % last column
            @{} % ❷
          }
   }
   {
       \end{array}
     \enddisplaymath % ❶
   }

我们使用\displaymath... \enddisplaymath❶ 进入和退出显示数学模式。这样做的好处是,它还会自动产生忽略空格的效果\end{displaymath}(如果我们使用\[...\]\begin{displaymath}... \end{displaymath}¹,我们会在显示数学之后的段落第一行开头得到一个虚假的空格)。

我们在开始和结束列中放置了@{}❷,以避免正常的列间距出现在行的开始/结束处。虽然它有可能让你免于overfull \hbox在边缘情况下显示警告,但它应该没有什么区别。

最后,对于带有等号的列,我们用 包围它们,@{\;}这样我们就可以在关系周围形成正常的间距,而不是 的巨大间隙eqnarray。值得注意的是,由于您想要进行对齐的方式,将关系保留在自己的列中是有意义的,因为无法保证中间列的宽度一致。

根据上述定义,你可以写:

\begin{eqnarray3*}
    \operatorname{Cov}\left(u^{\prime} X, v^{\prime} Y\right) &=& u^{\prime} \Sigma_{xy} v &=& \alpha^{\prime} M \beta \\
    \operatorname{Cov}\left(u^{\prime} X, u_{j}^{\prime} X\right)&=& u^{\prime} \Sigma_{xx} u_{j}^{\prime} &=& \alpha^\prime \alpha_j \\
    \operatorname{Cov}\left(v^{\prime} Y, v_{j}^{\prime} Y\right)&=& v^{\prime} \Sigma_{yy} v_{j}^{\prime} &=& \beta^\prime  \beta_j
\end{eqnarray3*}

您应该获得所需的输出。²


  1. 也许后者会起作用,但我还没费心去检查。
  2. 但就像我的典型答案一样,我是凭着头脑把这个问题打出来的,并没有费心去测试。

相关内容