TeXの\writeコマンドは時々不必要な垂直スペースを誘発する

TeXの\writeコマンドは時々不必要な垂直スペースを誘発する

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コードはこれに対処していますが、非常に侵襲的であるため、トラップする必要があります。コマンドは、垂直モードで何かを追加し、そのアクションを遅延させて、すべてのスペースが結合されるように順序を変更しようとします。

関連情報