如何通过 = 对齐方程式并通过索引对齐项?

如何通过 = 对齐方程式并通过索引对齐项?

我需要写一些大致类似这样的内容。

S = a(1) + a(2) + a(3) + a(4) + a(5) + a(6) + a(7) + a(8) + ...
  +        b(2)        + b(4)        + b(6)        + b(8) + ...
  +               c(3)               + c(6)               + ...
  +                      d(4)                      + d(8) + ...
  + ...

S = 

S =

那是几个在 = 处对齐的方程式,我习惯使用 align 和 &= 来实现这一点。这次的不同之处在于我想按索引对齐项,即 a(4)、b(4) 和 d(4) 在同一“列”中对齐。

您对如何干净地实现这种布局有什么建议吗?

答案1

必须对齐操作和关系符号;而且字母不需要具有相同的宽度,因此为了获得对齐,(n)我们需要对这些条目进行右对齐。

您所需要的是一个具有 19 列的数组:奇数列右对齐,偶数列居中对齐(对于符号而言),但项目周围有空原子,因此 TeX 将自行提供正确的间距。

该语法>{{}}c<{{}}意味着列居中对齐,但列中的每个项目前面{}和后面都有{}。因此,您可以得到,${}+{}$这就是获得自动间距所需的内容。

列之间的分隔(本地)设置为零,因此只会插入那些自动空格。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}

\begin{document}

\[
\renewcommand*{\arraystretch}{1.5}
\setlength{\arraycolsep}{0pt}
\begin{array}{
 r
 *{9}{ >{{}}c<{{}} r }
}
S &=& a(1) &+& a(2) &+& a(3) &+& a(4) &+& a(5) &+& a(6) &+& a(7) &+& a(8) &+& \dotsb \\
  & &      &+& b(2) & &      &+& b(4) & &      &+& b(6) & &      &+& b(8) &+& \dotsb \\
  & &      & &      &+& c(3) & &      & &      &+& c(6) & &      & &      &+& \dotsb \\
  & &      & &      & &      &+& d(4) & &      & &      & &      &+& d(8) &+& \dotsb \\
S &=& \\
S &=& \\
\end{array}
\]

\end{document}

在此处输入图片描述

答案2

我不得不同意 campa 的观点:array确实需要更少的打字。

但仅用于文档:您可以使用 AMS 的环境执行相同的操作alignat。(alignat不插入空格,因此您必须自己添加空格)

\documentclass{amsart}
\usepackage{amsmath}
\begin{document}
\begin{alignat*}{10}
S =& a(1) &+& a(2) &+& a(3) &+& a(4) &+& a(5)& +& a(6)& +& a(7) &+& a(8) &+ &\ldots\\
  +&    &&    b(2)  &&      &+& b(4)    &&    &+& b(6)&&        &+& b(8) &+& \ldots \\
  +&    &&      &&     c(3) &&      &&        &+& c(6)               && &&  &+& \dots\\
  +&    &&      &&      &&      d(4)    &&  &&  &&              &+& d(8) &+& \dots\\
  +& ...
\end{alignat*}
\end{document}

在此处输入图片描述

编辑正如评论中指出的那样,上面的间距相当糟糕。这主要是因为需要将+每行的符号直接对齐在等号下方,而不是与术语对齐b(2)c(3)等等(这也可以通过一些幻像来解决,但对我来说似乎工作量太大)。

如果人们乐意将运算符与术语分组,而不要求符号+在左侧排列,那么以下是一种更自然的方式(至少对我[以及下面的评论者]来说)来输入和格式化相同的信息:

\begin{alignat*}{10}
S &= a(1) &&+ a(2) &&+ a(3) &&+ a(4) &&+ a(5)&& + a(6)&& + a(7) &&+ a(8) &&+ \ldots\\
  &    && +   b(2)  &&      &&+ b(4)    &&    &&+ b(6)&&        &&+ b(8) && + \ldots \\
  &    &&      &&    + c(3) &&      &&        &&+ c(6)               && &&  &&+ \dots\\
  &    &&      &&      && +     d(4)    &&  &&  &&              && + d(8) && + \dots\\
  & && && && &&+ \ldots
\end{alignat*}

在此处输入图片描述

相关内容