为什么 \begin{align} &&&\cr \end{align} 给出“缺失数字”?

为什么 \begin{align} &&&\cr \end{align} 给出“缺失数字”?

考虑以下 MWE:

\documentclass{article}
\usepackage{amsmath,bbm}

\begin{document}

\begin{align}
  &&&\cr
\end{align}

\end{document}

它会产生“缺失数字,视为零”和“非法计量单位(插入 pt)”错误消息。为什么?

(我的目标是在一行上有 2 个间隔的方程,但该行没有方程编号。我意识到我可以用类似的方法来实现这一点,\begin{align} \nonumber a&=1 & b&=2\\ c\end{align}但为什么这是必要的?)

答案1

\cr不是 LaTeX 命令(它是 TeX 原语),并且在 AMS 对齐的中间使用它会导致省略一大块对齐代码,因为正确的代码在内部调用以完成行\\之前设置了大量内部测量数据。\cr

如果您添加\tracingall并比较日志\cr,然后\\您将看到错误的具体原因是\cr未按预期终止单元格,因此\maxcolumn@widths宏未正确更新列宽。

随之\cr而来的是

\maxcolumn@widths -> \or 0.0pt \or 0.0pt

\\与此同时

\maxcolumn@widths -> \or 0.0pt \or 0.0pt \or 0.0pt \or 0.0pt \or 0.0pt

align使用\ifcase提取相关长度,因为它考虑每一列

但由于它太短,一旦到达第 3 列,它就会使用,\ifcase3这意味着它会尝试读取这个\or列表,你会得到:

\maxcolumn@widths -> \or 0.0pt \or 0.0pt
{case 3}
! Missing number, treated as zero.
<to be read again> 
                   \relax 

不要在复杂的 LaTeX 代码中使用 TeX 原语 :-)

相关内容