我經常使用以下組代碼來減少一些方程式(使用方程式、對齊、聚集和其他數學環境)與其上方的文字之間的垂直空間:
\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,則使用短顯示跳過,以確保仍然存在視覺間隙。
您的情況 (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}