在下面的 MWE 中,长度abovedisplayshortskip
和belowdisplayshortskip
被重新定义为非常大的值,以使其显而易见。
我的预期是,这些长度将根据文本是否与方程重叠而独立使用。相反,似乎发生的情况是,前面的短文本将下一个方程设置为“短模式”,其中短长度在两个边界都使用。
问题:
是否可以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
无论中断显示之前的行的长度是多少。