将等式的不同部分与上方特定位置对齐

将等式的不同部分与上方特定位置对齐

我试图让方程式第二行中的某些部分与第一行中的某些部分对齐。例如,

X=AAA+BBB+CCC

 = a + b + c

在这里,我希望小写字母排列在三个大写字母的中间,并且所有运算符都对齐。我尝试使用align以下方式:

\begin{align}

  X&=A&AA &+ B&BB &+ C&CC \\

  &= &a &+ &b &+ &c

\end{align}

这会导致可怕的间距。我也尝试过使用tabular,但那里的间距也很糟糕。我希望第一行能像正常那样书写,然后第二行能按需要对齐。

答案1

您可以使用alignat来自amsmath 包

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{alignat}{6}
  X&={}& A&AA  &{}+{}& B&B&B &{}+{}& C&C&C \\
   &={}&  &a   &{}+{}&  &b&  &{}+{}&  &c&
\end{alignat}

答案2

请注意,align环境对每个组件都使用rcl对齐。这就是为什么您的输出似乎聚集在“小方程式”中。

这里有几个选项,使用amsmath或不:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\makeatletter
\newcommand{\cmathbox}[2][x]{%
  \settowidth{\@tempdima}{$#1$}%
  \makebox[\@tempdima][c]{$#2$}%
}
\makeatother
\begin{document}
Original using \verb|align*|:
\begin{align*}
  X&=A&AA &+ B&BB &+ C&CC \\
  &= &a &+ &b &+ &c
\end{align*}

Using \verb|alignat*|:
\begin{alignat*}{3}
  X&=AAA &&+ BBB &&+ CCC \\
  &=\cmathbox[AAA]{a} &&+ \cmathbox[BBB]{b} &&+ \cmathbox[CCC]{c}
\end{alignat*}

Using \verb|array|:
\[
  \begin{array}{r@{{}\mathrel{=}{}}c*{2}{@{{}\mathbin{+}{}}c}}
    X & AAA & BBB & CCC \\[\jot]
      &  a  &  b  &  c
  \end{array}
\]
\end{document}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

我的alignat解决方案与@IanThompson 的略有不同。如果您不想水平居中表达式组件,他的解决方案会更通用。该解决方案通过运算符(关系和二进制)周围的正确间距以及表达式之间的垂直间距(使用which is )array来模拟行为。\jot3pt

答案3

我经常使用\makebox[<size>]{<new text>}与 一样宽的盒子<size}来放置<new text>

为了计算,<size>我使用了\withdof{<old text>}calc。默认情况下,这将使居中<new text>,但您也可以指定[l]左对齐、[r]右对齐或[c]居中对齐。在下面的第二个示例中,我将和左对齐ab并将右对齐,c以便于说明(并不是说这样看起来不错)。

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\usepackage{calc}
\begin{document}
\begin{align*}
  X &= AAA + BBB + CCC \\
    &= \makebox[\widthof{$AAA$}]{$a$}   
     + \makebox[\widthof{$BBB$}]{$b$}   
     + \makebox[\widthof{$CCC$}]{$c$}
\end{align*}

\begin{align*}
  X &= AAA + BBB + CCC \\
    &= \makebox[\widthof{$AAA$}][l]{$a$}   
     + \makebox[\widthof{$BBB$}][l]{$b$}   
     + \makebox[\widthof{$CCC$}][r]{$c$}
\end{align*}
\end{document}

相关内容