
Parece que el align
entorno agrega espacio vertical adicional si comienza en la parte superior de una página o minipage
. A continuación se muestran dos páginas y dos minipage
páginas (en la página 1), donde la primera página/ minipage
tiene texto seguido de un align*
entorno, y la segunda página/ minipage
comienza con un align*
entorno, y tenga en cuenta que las ecuaciones todavía están alineadas.
Solución intentada:
La pregunta relacionada más cercana que encontré fue:
Intenté usar elsolución de Gonzalo Medinaa lo anterior agregando \setlength\abovedisplayskip{0pt}
(después del preámbulo segúnEspacio vertical antes y después de alinear el entorno.). Aunque esto movió las ecuaciones verticalmente hacia arriba, todavía estaban alineadas verticalmente:
Y dado que el problema también ocurre en la parte superior de una página, no creo que esto esté relacionado conEntendiendo las minipáginas: alineando en la parte superior
Pregunta:
- ¿Cómo puedo ajustar el
align
entorno para que automáticamente no tenga espacio adicional en la parte superior de una páginaminipage
? - ¿Existe alguna razón para este comportamiento y quizás no debería cambiarse?
Código:
\documentclass{article}
\usepackage[showframe,paperwidth=3.5in,paperheight=2.2in,margin=0.5in]{geometry}
\usepackage{amsmath}
\begin{document}%\setlength\abovedisplayskip{0pt}
Top of Page 1
\begin{align*}% Text above at top of page
e &= m c^2
\end{align*}
\hrule
\begin{minipage}[t]{0.45\linewidth}
Top of minipage 1
\begin{align*}% Text above this minipage
e &= m c^2
\end{align*}
\end{minipage}
\begin{minipage}[t]{0.45\linewidth}
\begin{align*}% No text above in this minipage
e &= m c^2
\end{align*}
\end{minipage}
\newpage
\begin{align*}% No text above at top of page
e &= m c^2
\end{align*}
\end{document}
Respuesta1
Los entornos de alineación dematemáticasno están diseñados para estar al comienzo de un párrafo. Si bien esto puede ser aceptable en situaciones normales, tiene malos efectos cuando usamos a minipage
para componer una alineación con un ancho reducido.
El minipage
problema se puede resolver parcheando el \start@align
comando (y también \start@gather
y \start@multline
) con
\usepackage{etoolbox}
\makeatletter
\pretocmd\start@align{%
\if@minipage\kern-\topskip\kern-\abovedisplayskip\fi
}{}{}
\makeatother
Esto aprovecha el hecho de que al comienzo de un párrafo minipage
el condicional \if@minipage
es verdadero, pero al comenzar un párrafo se vuelve falso, por lo que align
los entornos posteriores del mismo minipage
no se verán afectados.
Hay un parche similar para "curar" los entornos al inicio del párrafo, pero soy algo reacio a mostrarlo, ya que creo que un párrafo deberíanuncacomience con una ecuación mostrada (con la excepción mencionada anteriormente).