使用短文本后的对齐环境来垂直排列方程式

使用短文本后的对齐环境来垂直排列方程式

“align”环境非常棒,我认为它几乎可以取代默认的“equation”和“eqnarray”环境。但是,我发现对齐方程的垂直间距有点困扰我。

我观察到,如果方程式位于一长行文本之后,则“align”和“equation”的间距相同;但是,如果方程式位于一短行文本之后,则“equation”会进行一些压缩,而“align”则不会,因此前者会产生更好看的方程式。

这是一个例子。有没有办法让“align”像“equation”一样调整间距?

\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\begin{document}
\setlength\parindent{0pt}
Using \textit{equation}:
\begin{equation}
x = 1
\end{equation}
Spacing is OK.

\smallskip
(Using \textit{align}):
\begin{align}
x = 1
\end{align}
Spacing is too much.

\bigskip
\textbf{Another Example}

Using \textit{equation}: (long text long text long text)
\begin{equation}
x = 1
\end{equation}
Spacing is OK. (long text long text long text long text)

\smallskip
Using \textit{align}: (long text long text long text long text) 
\begin{align}
x = 1
\end{align}
Spacing is the same. (long text long text long text long text)

\end{document}

在此处输入图片描述

答案1

SwapAboveDisplaySkip来自的命令(mathtools @Gustavo Mezzetti 在他的评论中提到)不适用于multline, 也不适用于equation

from (在环境之前使用,与必须在环境开始时使用的解决方案相反)的工作原理\useshortskipnccmathmathtools

\documentclass[12pt]{article}
\usepackage[english]{babel}
\usepackage{mathtools, nccmath}

\begin{document}

\setlength\parindent{0pt}
Using \textit{equation}:
\begin{equation}
x = 1
\end{equation}
Spacing is OK.

\smallskip
(Using \textit{align}):\useshortskip
\begin{align}
x = 1
\end{align}
Spacing is OK.

\bigskip
(Using \textit{multline}):\useshortskip
\begin{multline}
x =a + b + c + d\\ + f +e +g + h
\end{multline}
Spacing is OK.

\end{document} 

在此处输入图片描述

答案2

最后,我决定扩大我的评论得到答案。

该包为显示数学而定义的许多环境amsmath都没有利用 TeX 在“机器级”实现的“显示短跳过”机制;这是因为,从 TeXnical 的角度来看,这些环境不会排版“显示方程”,而是更类似于环境的东西list。无论如何,该mathtoos包提供了一个部分的解决方法:如果显示环境中的第一个东西是命令\SwapAboveDisplaySkip,则显示前面会有空格\abovedisplayshortskip,而不是\abovedisplayskip。此解决方案只是部分解决方案,因为它不是自动:\SwapAboveDisplaySkip必须手动插入命令,无论需要什么。最后,应该注意的是,不能与和环境\SwapAboveDisplaySkip一起使用——但也不需要!equationmultline

这是一个完整的、可编译的示例:

% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly 
                                 % declare the paper format.

\usepackage[T1]{fontenc}         % Not always necessary, but recommended.
% End of standard header.  What follows pertains to the problem at hand.

\usepackage{mathtools} % also loads "amsmath"



\begin{document}

\setlength\parindent{0pt}

Using \texttt{equation}:
\begin{equation}
    x = 1
\end{equation}
Spacing is OK.

\medskip
Using \texttt{align}:
\begin{align}
    x = 1
\end{align}
Spacing is too much.

\medskip
Using \verb|\SwapAbove...|:
\begin{align}
    \SwapAboveDisplaySkip
    x = 1
\end{align}
Now the spacing is correct.

\bigskip
\textbf{Another Example}

Using \texttt{equation} (long text long text long text):
\begin{equation}
    x = 1
\end{equation}
Spacing is OK.

\smallskip
Using \texttt{align} (long text long text long text long text): 
\begin{align}
    x = 1
\end{align}
Spacing is the same.

\bigskip
\textbf{But Beware:}

Using \verb|\SwapAboveDisplaySkip| (long text long text long text long text):
\begin{align}
    \SwapAboveDisplaySkip
    x = 1
\end{align}
Now the spacing is wrong again (too little)!

\end{document}

以下是我得到的输出:

代码输出

相关内容