이 그룹화에서 간단한 매크로를 만드는 방법은 무엇입니까?

이 그룹화에서 간단한 매크로를 만드는 방법은 무엇입니까?

저는 일부 방정식(방정식, 정렬, 수집 및 기타 수학 환경 포함)과 그 위의 텍스트 사이의 수직 공간을 줄이기 위해 다음 그룹 코드를 자주 사용합니다.

\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기본적으로 대부분의 클래스에서 이를 더 짧은 길이로 설정하여 방정식이 위의 짧은 줄이 남긴 공간에 "들어갑니다".

shortdisplayskip은 마지막 줄이 방정식 왼쪽으로 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}

관련 정보