考虑以下 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 原语 :-)