我经常使用以下组代码来减少某些方程式(使用方程式、对齐、收集和其他数学环境)与其上方的文本之间的垂直空间:
\begingroup\abovedisplayskip=0pt
some equations in there
\endgroup
但是,我不用每次都手动输入这组代码,我怎么才能在序言中创建一个简单的宏来做同样的事情呢?我猜这个宏应该像下面这样使用,但它能更简单吗?
\eqlift
some equations in there
\eqdown
下面是一个显示该问题的 MWE 代码,我使用上面的代码解决了该问题(仅在编译后):
\documentclass[11pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage{amsmath}
\begin{document}
Blabla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla blabla bla bla blabla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
\end{document}
我经常会遇到任何类别、任何字体大小或我过去尝试过的其他配置的垂直空间过大的情况(参见预览图中的公式 (3))。我知道解决这个问题的唯一方法是插入我上面显示的组代码。
答案1
通常 TeX 使用\abovedisplayskip
上面的方程式,但如果前一段的最后一行很短,那么它\abovedisplayshortskip
默认使用大多数类将其设置为较短的长度,因此方程式“塞进”上面短线留下的空间。
如果最后一行在等式左侧 2em 处结束,则使用 shortdisplayskip,以确保仍然有视觉间隙。
您的情况 (3) 恰好非常接近截止值,TeX 使用与 (4) 中相同的较长长度,但主观上您希望它像 (1) 和 (2) 那样工作。
我在这里提供两种变体。
等式 5-8 显示了当两个长度具有相同值时的设置,然后您可以避免当 tex 从一种样式切换到另一种样式时出现的不连续性,但 (8) 最终看起来相当紧密。
公式 9-12 的设置与原始公式相同,但第三段最后一行的长度通过插入任意负空间而人为地缩短(对 TeX 而言)。这会导致 TeX 插入与前两段相同的空间。
\documentclass[11pt,letterpaper,twoside]{book}
\usepackage{lmodern}
\usepackage{amsmath}
\begin{document}
\section{Original}
Blabla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla blabla bla bla blabla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
\section{use abovedisplayshortskip everywhere}
{
\setlength\abovedisplayskip{\abovedisplayshortskip}
Blabla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla blabla bla bla blabla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
}
\section{abovedisplayshortskip in (3=11)}
Blabla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla bla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla :\hspace{-2cm}\mbox{}
\begin{equation}
y(x) = a \, x^2.
\end{equation}
Blabla bla blabla bla blabla blabla bla bla blabla :
\begin{equation}
y(x) = a \, x^2.
\end{equation}
\end{document}