为什么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}