为什么 \[...\] 在页面顶部做了错误的事?

为什么 \[...\] 在页面顶部做了错误的事?

阅读后$$、[、align、equation 和 displaymath 之间有什么区别?之后,我决定真正了解里面发生了什么\[...\],所以我设计了一些测试。我发现的东西让我困惑不已。

为什么\[...\]在页面顶部做错事?

的定义\[不遗余力地通过调用来抑制额外的垂直空间\nointerlineskip,但是添加通过创建一个占行宽 60% 的空框来隐式地保留垂直空间:\makebox[.6\linewidth]{}

我可以理解在某些情况下这样做是可取的,但对于页面顶部显示的公式来说,这样做无疑是错误的,因为它会在顶部产生一整行不必要的空间。无论是强制分页还是段落后自然分页,都会发生这种情况。

这是一个最小的工作示例:

\documentclass{article}
\begin{document}
\newpage $$y=x^2$$
\newpage \[y=x^2\]
\end{document}

请注意,第二个方程在页面上的位置比第一个方程低得多。有人知道这是为什么吗?这是缺陷吗\[...\]?是设计使然吗?

请注意,它也在 内部(顶部)执行此操作\parbox

答案1

amsmath包裹\[重新定义和的显示数学方程定义\],从而纠正此行为。因此,您需要做的就是使用

\usepackage{amsmath}% http://ctan.org/pkg/amsmath

在您的文件序言中。

答案2

简单的答案是不幸的是,整套核心 LaTeX “数学”环境都存在缺陷(如果不是说是损坏的话)。例如,比较\[ a=b \]一下的结果\begin{eqnarray} a&=&b \end{eqnarray}——间距完全错误。

您的示例只是这种情况的另一个例子,但在这种情况下,由于某种原因,Leslie 做出了刻意的设计决定(或者我相信从代码中可以看出)。

无论如何,如果进行任何严肃的数学运算,使用amsmath是可行的方法;应该避免使用核心 LaTeX 中的基本实现。

现在,如果有人问为什么这个问题没有得到解决?答案是文档排版与过去 25 年内使用核心 LaTeX 编写的所有文档兼容。自 1994 年以来,这个修复就一直存在,它被称为

\usepackage{amsmath}

答案3

您已经有两个很好的答案了;我想解释一下为什么您不必真正关心。通常情况下,页面顶部不应该显示公式。摘自 TeXbook,第 189 页:

纯 TeX 集\predisplaypenalty=10000,因为精细打印机传统上不会在页面的最顶部显示公式。

的效果\predisplaypenalty=10000是,在显示的公式之前不允许分页。因此,你的前提是错误的

无论是强制分页的结果还是段落后自然换行的结果,都会发生这种情况。

是的,强制分页符后可能会发生这种情况,但“自然”不会发生这种情况,除非您更改\predisplaypenalty。此外,强制分页符应仅在特殊情况下使用,并且切勿在显示公式之前使用。我也不建议以显示公式:-)开始。\parbox

相关内容