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 \write
produz 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 \addvspace
este 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 \color
tem 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 xgalley
aborda 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.