FiXme の問題 (Lars Madsen 氏による報告) をデバッグしているときに、この問題に遭遇しましたが、残念ながら私の専門分野を超えています。次の MWE を検討してください。
\documentclass{memoir}
\usepackage{amsmath,amsthm}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}
Theorem
\begin{equation*}
Equation
\end{equation*}
\makeatletter\write\@auxout{\string\relax}\makeatother % spurious vspace
\end{theorem}
\begin{proof}
Proof
\end{proof}
\end{document}
を呼び出すと、\write
ドキュメントに不必要な垂直スペースが生成されます (この行をコメント化するか、何もしないマクロを呼び出して違いを確認してください)。何が起こっているのか、また、これがどこかのバグであるかどうか (theorem 環境内でしょうか) を理解したいと思います。
ありがとう!
答え1
証明/定理などの環境やセクションの見出しを表示し、\addvspace
このコマンドを使用して、表示されるテキストの前後にスペースを追加します。スペースが垂直リストに追加されたかどうかを確認し、追加された場合は、既存のスペースが大きい場合は新しいスペースを追加しません。つまり、2 つの隣接する定理の間に、一方の定理の終わりともう一方の定理の始まりの間に 2 倍のスペースが入らないということです。(プリミティブな表示数式でのアクションは基本的に同様です)
whatsit from \write
(または\color
同様の問題) は、前のスペースを確認することが不可能であることを意味し、そのため、後の環境では常に要求されたスペース全体が開始時に追加されます。
そこに何かを追加しないこと以外、これについてはできることはあまりありません。たとえば、Proof の P の後に追加した場合は問題ありません。
expl3xgalley
コードはこれに対処していますが、非常に侵襲的であるため、トラップする必要があります。毎コマンドは、垂直モードで何かを追加し、そのアクションを遅延させて、すべてのスペースが結合されるように順序を変更しようとします。