amsart 中意外使用了 belowdisplayshortskip

amsart 中意外使用了 belowdisplayshortskip

在下面的 MWE 中,长度abovedisplayshortskipbelowdisplayshortskip被重新定义为非常大的值,以使其显而易见。

我的预期是,这些长度将根据文本是否与方程重叠而独立使用。相反,似乎发生的情况是,前面的短文本将下一个方程设置为“短模式”,其中短长度在两个边界都使用。

问题: 是否可以amsart根据我的预期修补以使用短长度?

\documentclass[reqno]{amsart}

\begin{document}
\setlength{\abovedisplayskip}{8pt plus 8pt}
\setlength{\belowdisplayskip}{8pt plus 8pt}
\setlength{\abovedisplayshortskip}{40pt plus 8pt}
\setlength{\belowdisplayshortskip}{40pt plus 8pt}

This is preceded by a long line of text.
It should use a long skip.
\begin{equation}
    1 + 1 = 2
\end{equation}
but
\begin{equation}
    2 + 1 = 3
\end{equation}
I expect very large spaces above and below the word “but” that is between the equations.
Instead, I got very large spaces around the second equation.\\
abovedisplayskip: \the\abovedisplayskip\\
belowdisplayskip: \the\belowdisplayskip\\
abovedisplayshortskip: \the\abovedisplayshortskip\\
belowdisplayshortskip: \the\belowdisplayshortskip
\end{document}

在此处输入图片描述

答案1

如果显示内容之前的行很短(根据 TeXbook 中描述的规则,很短),TeX 将分别在显示内容之前和之后使用\abovedisplayshortskip和。TeX\belowshortskip没有查看显示后面的行,该行被视为其自己的段落,前面以 表示\postdisplaypenalty

一旦处理完显示结束,就会插入跳过和惩罚并且 TeX 会恢复排版。

您可以使用\intertext\shortintertext(后者需要mathtools)来解决这个问题,但恐怕不是自动的。然而,类似

text
\begin{gather}
a=b\\
\shortintertext{but}
c=d
\end{gather}
text

将使用\abovedisplayskip\belowdisplayskip无论中断显示之前的行的长度是多少。

相关内容