En el proceso de depurar un problema con FiXme (informado por Lars Madsen), me encontré con este problema que me temo está más allá de mi experiencia. Considere el siguiente 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}
La llamada a \write
produce un espacio vertical falso en el documento (comenta esta línea o llama a una macro que no hace nada para ver la diferencia). Me gustaría entender qué está pasando y si esto debería considerarse un error en alguna parte o no (¿en el entorno del teorema?).
¡Gracias!
Respuesta1
Los entornos de visualización como prueba/teorema, etc., y los encabezados de las secciones agregan espacio antes y después del texto visible. Usando \addvspace
este comando, se intenta ver si se acaba de agregar un espacio a la lista vertical y, de ser así, no agregue el nuevo espacio si el espacio existente es mayor que. Esto significa que, digamos, dos teoremas adyacentes no tienen un doble espacio entre ellos que forme el final de uno y el comienzo del otro. (La acción con una visualización matemática primitiva es básicamente similar)
un whatsit de \write
(o \color
tiene problemas similares) significa que es imposible ver el espacio anterior y, por lo tanto, el entorno posterior siempre agrega el espacio solicitado completo al principio.
No hay mucho que puedas hacer al respecto aparte de no agregar el whatsit allí, por ejemplo, si lo agregas después de la P en Prueba, estaría bien.
El código expl3 xgalley
aborda esto pero es enormemente invasivo y tiene que atraparcadaComando que intenta agregar cualquier cosa en modo vertical y hacer que retrase su acción y reordenar las cosas para que todos los espacios puedan fusionarse.