我已经定义了这个环境:
\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 有简短版本,通常为零加一些胶水,在上面的代码中我也将其设置为零。它们适用于上面的第二个等式。