在 l2tabu 中显示数学致命罪

在 l2tabu 中显示数学致命罪

作为后续行动为什么 \[ ... \] 比 $$ ... $$ 更可取?, 什么真的l2tabu中所述的使用$$...$$而不是引入的垂直间距有误吗\[...\]

由于除了垂直间距被修改并且变得不一致的评论之外似乎没有对此进行详细l2tabu说明,因此将不胜感激比较不同输出的说明性示例。

答案1

应避免在显示的方程式前后出现空行。比较:

\documentclass[twocolumn,a5paper,12pt]{article}
\begin{document}

Equation using \LaTeX\ notation
%
\[ y = x^{2} \]
%
Equation using \TeX\ notation
%
$$ y = x^{2} $$
%
end of the part without empty lines\newpage

Equation using \LaTeX\ notation

\[ y = x^{2} \]

Equation using \TeX\ notation

$$ y = x^{2} $$

end of the part with empty lines
\end{document}

...

答案2

就间距而言,唯一的区别是,如果数学显示以垂直模式启动,\[...\]将使用\abovedisplayskip\belowdisplayskip而不是和\abovedisplayshortskip。代码\belowdisplayshortskip$$...$$

\setbox0=\vbox{\hrule height 0pt % to avoid gobbling vskips
\[a=b\]
A word.}
\showthe\ht0

\setbox0=\vbox{\hrule height 0pt % to avoid gobbling vskips
$$a=b$$
A word.}
\showthe\ht0
\showthe\abovedisplayskip
\showthe\belowdisplayskip
\showthe\abovedisplayshortskip
\showthe\belowdisplayshortskip

将提供以下信息:

?
> 44.0pt.
l.27 \showthe\ht0

? 
> 30.0pt.
l.32 \showthe\ht0

? 
> 10.0pt plus 2.0pt minus 5.0pt.
l.33 \showthe\abovedisplayskip

? 
> 10.0pt plus 2.0pt minus 5.0pt.
l.34 \showthe\belowdisplayskip

? 
> 0.0pt plus 3.0pt.
l.35 \showthe\abovedisplayshortskip

? 
> 6.0pt plus 3.0pt minus 3.0pt.
l.36 \showthe\belowdisplayshortskip

14pt 的差异恰好是 (10+10)-(0+6) 的结果。实际上,\hrule height 0pt由于 ,这里的 几乎没有任何作用\abovedisplayshortskip=0pt

这不会发生在数学已加载(在这种情况下使用“短”跳过)。

\[LaTeX 内核中的定义是

\def\[{%
\relax\ifmmode
  \@badmath
\else
  \ifvmode
    \nointerlineskip\makebox[.6\linewidth]{}
  \fi
  $$
\fi}

这解释了为什么在段落开头使用“非短”跳过:LaTeX 内核以足够长的空行开始段落,以防止使用“短”跳过。我相信这是 Lamport 添加的,以应对在之前留下空行的作者\[

相关内容