何时使用哪种对齐环境?

何时使用哪种对齐环境?

似乎有多达、、、、、align和/ -有些也在带星号的版本中。alignedalignedatalignatxalignatxxalignatfalignamsmathmathtools

我只是发现了一些像这样的草率的言论:

我何时使用哪种对齐环境(最佳实践)?

它们之间究竟有哪些区别?

这个环境为什么会存在(如果适用的话,示例用例)?

我应该避免哪些以及为什么?

不同的对齐环境

具体来说,

  • alignxalignat
  • xxalignatflalign*
  • alignat*alignedat

不同的对齐环境 2

align*和之间的语义差异 / 不同用例是什么aligned? 什么时候使用哪个?

不同的对齐环境 3

在我看来,它似乎是align为了打印独立的列,而alignat旨在对齐受抚养人列(例如,方程式 [行] 按其运算符 [列] 对齐)。

多谢!


附录

来源:

\documentclass{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{mathtools,onlyamsmath}

\newlength{\Short}
\newlength{\LShort}
\newlength{\Long}
\setlength{\Short}{.05\columnwidth}
\setlength{\LShort}{.08\columnwidth}

\newcommand{\env}[2][]{\begin{#2}#1
    \framebox[\Short]{} &= \framebox[\LShort]{} & \framebox[\LShort]{} &= \framebox[\LShort]{} & \framebox[\LShort]{} &= \framebox[\LShort]{}\\
    \framebox[\Short]{} &= \framebox[\Short]{}  & \framebox[\Short]{}  &= \framebox[\Short]{}  & \framebox[\Short]{}  &= \framebox[\Short]{}
\end{#2}}

\newcommand{\Align}[2][]{\paragraph{#2}\env[#1]{#2}}
\newcommand{\mAlign}[2][]{\paragraph{#2}\[\env[#1]{#2}\]}


\begin{document}

\thispagestyle{empty}
\enlargethispage{\baselineskip}

\Align{align*}
\Align{align}

\Align[{3}]{alignat*}
\Align[{3}]{alignat}

\mAlign{aligned}

\mAlign[{3}]{alignedat}

\Align[{3}]{xalignat}
\Align[{3}]{xxalignat}

\Align{flalign*}
\Align{flalign}

\newpage

\Align{align}
\Align[{3}]{xalignat}

\Align[{3}]{xxalignat}
\Align{flalign*}

\Align[{3}]{alignat*}
\mAlign[{3}]{alignedat}

\Align{align*}
\mAlign{aligned}

\end{document}

答案1

amsmath源自 AMSTeX ( amstex.tex),它没有*形式,但其他方面命名大体相似,包括x-变体。启动数学显示的环境记录amsmath.pdf

%    \begin{environment}{align}
%    \begin{environment}{align*}
%    \begin{environment}{flalign}
%    \begin{environment}{flalign*}
%    \begin{environment}{alignat}
%    \begin{environment}{alignat*}
%    \begin{environment}{xalignat}
%    \begin{environment}{xalignat*}
%    \begin{environment}{xxalignat}
%    The definitions of the various \env{align} environments are quite
%    straight-forward.
%
%    \begin{macrocode}
\newenvironment{alignat}{%
  \start@align\z@\st@rredfalse
}{%
  \endalign
}
\newenvironment{alignat*}{%
  \start@align\z@\st@rredtrue
}{%
  \endalign
}
\newenvironment{xalignat}{%
  \start@align\@ne\st@rredfalse
}{%
  \endalign
}
\newenvironment{xalignat*}{%
  \start@align\@ne\st@rredtrue
}{%
  \endalign
}
\newenvironment{xxalignat}{%
  \start@align\tw@\st@rredtrue
}{%
  \endalign
}
\newenvironment{align}{%
  \start@align\@ne\st@rredfalse\m@ne
}{%
  \math@cr \black@\totwidth@
  \egroup
  \ifingather@
    \restorealignstate@
    \egroup
    \nonumber
    \ifnum0=`{\fi\iffalse}\fi
  \else
    $$%
  \fi
  \ignorespacesafterend
}
\newenvironment{align*}{%
  \start@align\@ne\st@rredtrue\m@ne
}{%
  \endalign
}
\newenvironment{flalign}{%
  \start@align\tw@\st@rredfalse\m@ne
}{%
  \endalign
}
\newenvironment{flalign*}{%
  \start@align\tw@\st@rredtrue\m@ne
}{%
  \endalign
}

您可以看到它们都是相同底层代码的变体。

比较,说xalignat*align*你看

\start@align\@ne\st@rredtrue
\start@align\@ne\st@rredtrue\m@ne

所以align*只是\xalignat*提供了 -1 作为列对的数量,这使得环境不需要{3}在您的示例中为 3 个列对提供参数,它只是做了正确的事情。因此,版本x...并不是真正需要的,并且根本没有记录在用户级amslguide.pdf文档中。

根据文档,命名环境不会启动数学显示,必须在外部数学环境中启动。它们与或-ed有更多共同之处,只是它们设置条目为左对齐和右对齐,而不是居中对齐,并使用 displaystyle 而不是 textstyle。arraymatrix

相关内容