如何从该分组创建一个简单的宏?

如何从该分组创建一个简单的宏?

我经常使用以下组代码来减少某些方程式(使用方程式、对齐、收集和其他数学环境)与其上方的文本之间的垂直空间:

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

相关内容