有可能存在“真正的” \belowdisplayshortskip 吗?

有可能存在“真正的” \belowdisplayshortskip 吗?

我认为这是一个难题。你有没有想过为什么 TeX 有时会在方程式周围产生不令人满意的垂直间距?举个例子:

\documentclass{article}
\setlength{\textheight}{2.93cm}
\begin{document}
A short line,
\[ a = b_{11}^2 b_{12}^2 b_{13}^2 b_{14}^2, \]
a long line containing superscripts $\delta^{22}\beta^{22}$,
almost touching the above formula,
\[ c = d, \]
and another short line,
\[ e = f. \]
\end{document}

生产

替代文本

在我看来,第一个显示器后的垂直空间太小,而第二个显示器后的垂直空间又太大。

在提问之前,我想先解释一下这种行为:第一行文本很短,不会与后面的显示重叠,因此 TeX 只在中间留出很小的垂直空间,即\abovedisplayshortskip。这很好。现在还有\belowdisplayshortskip,但这并不符合您的预期:它确实控制了垂直空间显示屏,但如果行多于显示屏很短(我觉得很奇怪)。这也解释了为什么第二个显示屏后的空间很大。

\belowdisplayshortskip现在我的问题是:如果没有重叠,有没有办法获得变短的显示?我担心在 TeX/LaTeX 中答案是否定的,但也许使用 XeTeX 或 LuaTeX 可以做些什么?

(我确实有一个针对该问题的解决方案,但是这个解决方案也远远不能令人满意。我设置了\belowdisplayshortskip=9pt plus 3pt minus 5pt,然后在每个与下一行没有重叠的显示之后,我放置了一个使垂直空间更短的宏。如果有人在文本中进行更改,这真的很麻烦。)

答案1

寻找更好的方法来处理显示的数学运算(包括(子)公式数字)是 luatex 的待办事项清单之一,但在当前情况下,即使在 luatex 中这样做也绝非易事。

问题在于引擎将显示作为全宽线放在页面上,即使使用 luatex 节点处理,也需要花费相当大的精力才能从中提取实际宽度。

答案2

编辑将这个问题推到了头版,因此我的看法如下:

\documentclass{article}
\begin{document}
A short line,
\[ a = b_{11}^2 b_{12}^2 b_{13}^2 b_{14}^2, \]
a long line containing superscripts $\delta^{22}\beta^{22}$,
almost touching the above formula,
\[ c = d, \]
and another short line,
\[ e = f \]
followed by a longer line that we want to go beyond the limit so it wraps.

\bigskip\hrule\bigskip

\belowdisplayshortskip=\belowdisplayskip

A short line,
\[ a = b_{11}^2 b_{12}^2 b_{13}^2 b_{14}^2, \]
a long line containing superscripts $\delta^{22}\beta^{22}$,
almost touching the above formula,
\[ c = d, \]
and another short line,
\[ e = f \]
followed by a longer line that we want to go beyond the limit so it wraps.
\end{document}

在此处输入图片描述

TeX 使用在显示之前\belowdisplayshortskip使用的参数\abovedisplayshortskip,但参数是独立的:没有强制执行的法律

\belowdisplayshortskip=\abovedisplayshortskip

并且该参数可以设置为任意值。\belowdisplayskip不过,将其设置为似乎有点过分。

进行自动调整可能确实很困难;人们可以考虑在本地改变参数。

\documentclass{article}
\begin{document}
A short line,
\begingroup\belowdisplayshortskip=\belowdisplayskip
\[
  a = b_{11}^2 b_{12}^2 b_{13}^2 b_{14}^2,
\]\endgroup
a long line containing superscripts $\delta^{22}\beta^{22}$,
almost touching the above formula,
\[ c = d, \]
and another short line,
\[ e = f \]
followed by a longer line that we want to go beyond the limit so it wraps.
\end{document}

在此处输入图片描述

相关内容