我正在使用 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
您在显示前添加的空白行,即段落的空白水平行。这不是垂直空间,也不会被放在页面顶部。
绝不在显示数学环境之前留一个空行。
如果你删除输入中的虚假空白行,你会得到