为什么 amsmath 中的 alignat 环境需要强制参数?

为什么 amsmath 中的 alignat 环境需要强制参数?

为什么alignat环境必须amsmath需要一个强制参数?这是一个不必要的设计吗(正如我们所见,不需要align任何强制或可选参数)还是有什么原因使得该参数不可或缺?

答案1

这是从原始 amstex 代码继承而来的。它当然不是实现所必需的,它只是在数量与参数指定的列对数量不匹配时使用它来引发错误。这是一个未记录的秘密,但 -1 的值被用作允许任意数量的列&的标志,并且在这里也可以工作。align

显然,如果可以将其定义为始终工作,而无需检查列数,那么就不需要列数参数了。大概原作者认为语法令人困惑,让文档作者明确说明将有助于发现错误。

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\begin{document}

2/2 no error
\begin{alignat}{2}
 a&=1   \quad & b&=2\\
 aa&=11 \quad & bb&=22
\end{alignat}

-1/2 no error
\begin{alignat}{-1}
 a&=1   \quad & b&=2\\
 aa&=11 \quad & bb&=22
\end{alignat}


-1/3 no error
\begin{alignat}{-1}
 a&=1   \quad & b&=2   &\quad c&=3\\
 aa&=11 \quad & bb&=22
\end{alignat}

2/3 error
\iffalse
\begin{alignat}{2}
 a&=1   \quad & b&=2   &\quad c&=3\\
 aa&=11 \quad & bb&=22
\end{alignat}
\fi
\end{document}

相关内容