在 align* 环境中设置顶部和下方的垂直边距

在 align* 环境中设置顶部和下方的垂直边距

我正在使用 amsmathalign*环境来格式化多行公式。不幸的是,该环境在公式的前面和下面添加了很多边距。我成立只有一个解决方案可以消除这个边距,但我担心它有点不安全:

\documentclass[12pt]{memoir}

\usepackage{amsmath}

\makeatletter
    \newenvironment{myalign*}{%
      \setlength{\abovedisplayskip}{-\baselineskip}%
      \setlength{\abovedisplayshortskip}{\abovedisplayskip}%
      \start@align\@ne\st@rredtrue\m@ne
    }%
    {\endalign}
    \makeatother

\begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi et
consequat erat, non malesuada tortor. Phasellus porta cursus risus, eu
rutrum ligula suscipit sed. Proin vestibulum malesuada lacinia.
\begin{myalign*}
x &= 4 \times 5 \\
y &= x
\end{myalign*}
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi et
consequat erat, non malesuada tortor. Phasellus porta cursus risus, eu
rutrum ligula suscipit sed. Proin vestibulum malesuada lacinia.

\end{document}

更新:此外,如果环境前后没有空行,我会得到太多空间。当我将两个长度都设置为时,它可以工作0pt

还有其他方法可以避免边距吗?

答案1

这是你想要的吗?

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath,graphicx}
\newenvironment{smashedalign}
 {\par$\!\aligned}
 {\endaligned$\par}

\begin{document}
\begin{figure}[htp]
\centering
\includegraphics[height=2cm]{example-image-a.pdf}
\begin{smashedalign}
x &= 4 \times 5 \\
y &= x
\end{smashedalign}
\includegraphics[height=2cm]{example-image-b.pdf}
\end{figure}
\end{document}

答案2

不,不要设置负值,因为\abovedisplayskip这会导致数学运算覆盖前面的段落。

虚假的白色区域不是垂直空间,而是align您在显示前添加的空白行,即段落的空白水平行。这不是垂直空间,也不会被放在页面顶部。

绝不在显示数学环境之前留一个空行。

如果你删除输入中的虚假空白行,你会得到

在此处输入图片描述

相关内容