このグループ化から簡単なマクロを作成する方法は?

このグループ化から簡単なマクロを作成する方法は?

私は、いくつかの数式 (equation、align、gather などの数学環境を使用) とその上のテキストの間の垂直方向のスペースを減らすために、次のグループ コードを頻繁に使用しています。

\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)のように動作することを望んでいます。

ここでは 2 つのバリエーションを紹介します。

式 5 ~ 8 は、両方の長さが同じ値の場合の設定を示しています。この場合は、tex が 1 つのスタイルから別のスタイルに切り替わるときに不連続性が回避されますが、(8) は最終的にかなりタイトに見えます。

式 9 ~ 12 は、元の式と同じようにデフォルト設定で設定されていますが、3 番目の段落の最後の行の長さは、任意の負のスペースを挿入することによって (TeX に対して) 不自然に短く見えるように設定されています。これにより、TeX は最初の 2 つの段落と同じスペースを挿入します。

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

関連情報