即使在 \setlength{\a​​bovedisplayskip}{0pt} 之后,列表内的 flalign 仍有额外空间

即使在 \setlength{\a​​bovedisplayskip}{0pt} 之后,列表内的 flalign 仍有额外空间

我已经定义了这个环境:

\newenvironment{proofln}{\par \textbf{Proof}\list{}{\leftmargin=10pt\rightmargin=0pt\topsep=0pt}\item\relax}{\endlist\textbf{Q.E.D}}

现在我这样使用它:

\begin{proofln}
    \setlength{\abovedisplayskip}{0pt}
    \setlength{\belowdisplayskip}{0pt}
\begin{flalign*}
    &am + bn + (K-K) = d&\\
    &= am + K + bn - K&\\
    &= am + Kab + bn - Kab&\\
    &= a(m + Kb) + b(n - Ka)&
\end{flalign*}
\end{proofln}
\begin{proofln}
    abcd
\end{proofln}

而且出于某种原因,flaign 仍然在上方插入空格。
底部 proofln 也表现得很奇怪 - 内容和“Proof”以及内容和“QED”之间的间距不相等。

在此处输入图片描述

我该如何解决这些问题?

答案1

由于某些原因,amsmath环境会在此处插入额外的垂直空间\baselineskip。因此,一种解决方法是备份这个数量。下面,我在新环境中捕获了调整,您可以将其放置在等式周围。

示例输出

\documentclass{amsart}

\newenvironment{proofln}{\par\noindent\textbf{Proof}\list{}{\leftmargin=10pt\rightmargin=0pt\topsep=0pt}\item\relax}{\endlist\noindent\textbf{Q.E.D}}

\newenvironment{fixmathspace}{\abovedisplayskip=0pt\abovedisplayshortskip=0pt\belowdisplayskip=0pt\belowdisplayshortskip=0pt\vspace{-\baselineskip}}{}

\begin{document}

\begin{proofln}
  \begin{fixmathspace}
    \begin{flalign*}
      &am + bn + (K-K) = d&\\
      &= am + K + bn - K\\
      &= am + Kab + bn - Kab\\
      &= a(m + Kb) + b(n - Ka)
    \end{flalign*}
  \end{fixmathspace}
\end{proofln}

\begin{proofln}
  \begin{fixmathspace}
    \begin{equation*}
      x = y
    \end{equation*}
  \end{fixmathspace}
\end{proofln}

\begin{proofln}
  abcd
\end{proofln}

\end{document}

请注意,displayskips 有简短版本,通常为零加一些胶水,在上面的代码中我也将其设置为零。它们适用于上面的第二个等式。

相关内容