答案1
造成这种行为的主要原因有两个:
这使得错误恢复在技术上更容易,错误信息(希望)更清晰,因为当 TeX 遇到缺失时,
$
你可以确定它至少在抛出错误的段落中。Knuth 在 TeXbook 第 135 页给出了这个原因:\danger Conversely, a blank line or ^|\par| is not permitted in math mode. This gives \TeX\ another way to recover from a missing~|$|; such errors will be confined to the paragraph in which they occur.
另一个原因是为了保持一致性(至少在我看来)。如果
\par
在数学模式下忽略空白行(这是隐式的),这将与在文本模式下开始新段落的情况相矛盾。为了防止这种混淆,抛出错误而不是产生一些不一致的行为是明智的。
如果您使用的是 LuaTeX 而不是 pdfTeX 或 XeTeX,您可以让引擎忽略此错误。只需将其添加\suppressmathparerror=1
到前言中即可。