关于 \xxxdisplayskip 的一个问题

关于 \xxxdisplayskip 的一个问题

我尝试将\abovedisplayskip和减小\belowdisplayskip到 3pt 以节省纸张,而包含“大型”数学公式的公式与周围文本之间的分隔比“普通”数学公式之间的分隔要小,见图。是否无法将垂直分隔设置为相等?

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\setlength\abovedisplayskip{3pt}
\setlength\belowdisplayskip{3pt}
Some text some text some text some text some text
some text some text some text some text some text
some text some text some text some text
\begin{euqation*}
\sum_{n=1}^{\infty}a_n+\sum_{n=1}^{\infty}b_n=\sum_{n=1}^{\infty}c_n
\end{euqation*}
some text some text some text some text some text some text some text
\begin{euqation*}a_n+b_n=c_n\end{euqation*}
some text some text some text some text some text
\end{document}

可能与...有关方程跳过问题 --- amsmath 包和 \above/belowdisplayskip

例子

答案1

\constskip之后每次都使用我的宏\end{equation*}

\def\constskip{\par\hrule height 0pt \vskip -\ht\strutbox \vskip 1ex \noindent\strut}


\hsize = .7\textwidth
Some text some text some text some text some text
some text some text some text some text some text
some text some text some text some text
\begin{equation*}
\sum_{n=1}^{\infty}a_n+\sum_{n=1}^{\infty}b_n=\sum_{n=1}^{\infty}c_n
\end{equation*}\constskip
some text some text some text some text some text
\begin{equation*}
a_n+b_n=c_n
\end{equation*}\constskip
some text some text some text some text some text
\begin{equation*}
a + b + w + e + t + u = c
\end{equation*}\constskip
some text some text some text some text some text

常量跳过

编辑:double const skip

在等式前任意位置添加\aconstskip

\def\constskip{\par\hrule height 0pt \vskip -\ht\strutbox \vskip 1ex 
    \noindent\vrule width 0pt height \ht\strutbox}

\def\aconstskip{\par\hrule height 0pt \nobreak\vskip -\baselineskip
   \noindent \hbox to \hsize{\hfill \vrule width 0pt depth \baselineskip}}

\abovedisplayskip = 4pt
\belowdisplayskip = 5pt


\hsize = .7\textwidth
Some text some text some text some text some text
some text some text some text some text some text
some text some text some text some text
\aconstskip\begin{equation*}
\sum_{n=1}^{\infty}a_n+\sum_{n=1}^{\infty}b_n=\sum_{n=1}^{\infty}c_n
\end{equation*}\constskip
some text some text some text some text some text
\aconstskip\begin{equation*}
a_n+b_n=c_n
\end{equation*}\constskip
some text some text some text some text some text
\aconstskip\begin{equation*}
a + c + w + e + s + u = c
\end{equation*}\constskip
some text some text some text some text some text

在此处输入图片描述

答案2

在这种情况下,如果你使用\showboxbreadth=\maxdimen \showboxdepth=3 \tracingoutput=1 \tracingonline=1并查看 LaTeX 的输出,你会看到

\vbox(633.0+0.0)x407.0
    ........elided.............
..\glue(\lineskip) 0.0
..\vbox(550.0+0.0)x345.0, glue set 453.92645fil
...\write-{}
    .........elided............
...\glue(\abovedisplayskip) 0.0
...\glue(\lineskip) 1.0
...\hbox(16.51393+12.67783)x105.99545, shifted 119.50227, display [] **first equation**
...\penalty 0
...\glue(\belowdisplayskip) 0.0
...\glue(\lineskip) 1.0
     .............elided.........
...\glue(\abovedisplayskip) 0.0
...\glue(\baselineskip) 1.49994
...\hbox(10.50006+5.50006)x71.90155, shifted 136.54922, display [] **second equation**
...\penalty 0
...\glue(\belowdisplayskip) 0.0
...\glue(\baselineskip) 0.34915
     .........elided...........

你可以看到,对于第一个方程,TeX 在\lineskip方程前后插入了一个 ,但对于第二个方程,它插入了一个\baselineskip。我不太清楚\lineskip和之间的区别\baselineskip,但是这条信息

如果 TeX 确定一行的底部和下一行的顶部距离小于\lineskiplimit(Plain TeX 中的默认值:0pt),那么它会放弃\baselineskip并插入\lineskip 之间相邻的线(不是它们的基线,而是一条线的底部与下一条线的顶部之间的线)。

由于第一个方程包含一个\sum高于 的\baselineskip,方程的顶部和前一行的底部将接触,因此 TeX 插入一个\lineskip。在方程下方,下一行文本的顶部和方程的底部将接触,因此 TeX 再次插入一个\lineskip

由于第二个等式很短,其内容的顶部和上一行的底部不接触,因此 TeX 插入\baselineskip。同样,在等式下方,下一行的顶部和等式的底部不接触,因此 TeX 再次插入\baselineskip

我不太确定如何稳健地解决这个问题(@Alexey 的回答是一个开始),但它有助于解释为什么你会看到两个方程式之间的不同行为。

相关内容