阅读后$$、[、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