O comando \write do TeX às vezes induz um espaço vertical espúrio

O comando \write do TeX às vezes induz um espaço vertical espúrio

no processo de depuração de um problema com o FiXme (relatado por Lars Madsen), me deparei com esse problema que, infelizmente, está além da minha experiência. Considere o seguinte 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}

A chamada para \writeproduz um espaço vertical espúrio no documento (comente esta linha ou chame uma macro que não faz nada para ver a diferença). Gostaria de entender o que está acontecendo e se isso deve ser considerado um bug em algum lugar ou não (no ambiente do teorema?).

Obrigado!

Responder1

Exibir ambientes como prova/teorema, etc, e títulos de seção adicionam espaço antes e depois do texto visível usando \addvspaceeste comando tenta verificar se um espaço acabou de ser adicionado à lista vertical e, em caso afirmativo, não adicione o novo espaço se o espaço existente for maior. Isso significa que, digamos, dois teoremas adjacentes não recebem um espaço duplo entre eles no final de um e no início do outro. (A ação com uma matemática de exibição primitiva é basicamente semelhante)

um whatsit from \write(ou \colortem problemas semelhantes) significa que é impossível ver o espaço anterior e, portanto, o ambiente posterior sempre adiciona todo o espaço solicitado no início.

Não há muito que você possa fazer sobre isso além de não adicionar o que está lá, por exemplo, se você adicionou após o P na Prova, tudo bem.

O código expl3 xgalleyaborda isso, mas é extremamente invasivo e precisa capturartodocomando tentando adicionar qualquer coisa no modo vertical e fazer com que ele atrase sua ação e reordene as coisas para que todo o espaçamento possa ser unido.

informação relacionada