如何從這個分組製作一個簡單的巨集?

如何從這個分組製作一個簡單的巨集?

我經常使用以下組代碼來減少一些方程式(使用方程式、對齊、聚集和其他數學環境)與其上方的文字之間的垂直空間:

\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}

相關內容