这个 alignat 环境中发生了什么?

这个 alignat 环境中发生了什么?

我的理解是,的参数alignat是列数,我们用它&来分隔它们。我尝试了以下代码:

\begin{alignat*}{3}
   \quad    & P_{2}(x) &= (2)(2x-1)(x-1)-20x(x-1)+4x(2x-1)\\
   \implies & \quad    &= \boxed{-8x^{2}+10x+2}
\end{alignat*}

它有三列可见。但是,这不起作用,会产生奇怪的间距。经过一番修改,我发现以下代码实现了我最初想要的外观(唯一的区别是 double &&):

\begin{alignat*}{3}
    \quad    & P_{2}(x) &&= (2)(2x-1)(x-1)-20x(x-1)+4x(2x-1)\\
    \implies & \quad    &&= \boxed{-8x^{2}+10x+2.}
\end{alignat*}

我在这里误解了什么?

答案1

列数如何运作

正如amsmath文档(第 8 页),

变体环境alignat允许明确指定方程之间的水平间距。此环境接受一个参数,即“方程列”的数量(右对齐列和左对齐列的对数;参数是对数):计算&任意行中的最大 s 数,加 1 并除以 2。

对齐的工作原理

每个方程列都与一个 对齐&,并与下一个方程列之间由另一个 分隔&。另一种说法是,如果您将环境视为一个数组,则数组的列交替右对齐和左对齐。这有点难以解释,因为如果您将其视为一个数组,则必须区分“方程列”和环境列。一对这样的数组列构成一个方程列。

回到你的例子

这是alignat您的第一个示例中的环境。

\begin{alignat*}{3}
   \quad    & P_{2}(x) &= (2)(2x-1)(x-1)-20x(x-1)+4x(2x-1)\\
   \implies & \quad    &= \boxed{-8x^{2}+10x+2}
\end{alignat*}

这里指定了三个方程列,但实际上只使用了两个:一个用于\implies,另一个用于放置等式。实际上,您使用了三个&,因此使用从 到文档的计算我们得到了两列。

第一个方程式仅以示意图形式显示,

   \quad P_{2}(x)
\implies \quad

它与 的左侧P_{2}(x)和 的右侧对齐\implies。在每一行中,第二个分隔符&将第一个方程列与下一个方程列分开,后者仅

= (2)(2x-1)(x-1)-20x(x-1)+4x(2x-1)
= \boxed{-8x^{2}+10x+2}

并且其在右侧对齐,因为它是构成方程列的一对元素中的第一个部分。

您的第二个示例完全相同,只是第二个方程列现在在等号上对齐,因为方程放在组成整个方程列的对的第二部分,第一部分为空。对齐看起来不错,但实际上只是因为alignat列之间没有任何空格。

P_{2}(x)我认为将该部分也放在第二个等式列中更有意义,而只将其\implies放在第一个等式列中。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{2}
   &          & P_{2}(x) &= (2)(2x-1)(x-1)-20x(x-1)+4x(2x-1)\\
   & \implies &          &= \boxed{-8x^{2}+10x+2}
\end{alignat*}
\end{document}

输出与您的第二个示例相同,但是代码确实与方程的内容更加一致。

相关内容