
Parece que o align
ambiente adiciona espaço vertical adicional se começar no topo de uma página ou minipage
. Abaixo estão duas páginas e dois minipage
s (na página 1), onde a primeira página/ minipage
tem texto seguido de um align*
ambiente, e a segunda página/ minipage
começa com um align*
ambiente, e observe que as equações ainda estão alinhadas.
Tentativa de solução:
A pergunta relacionada mais próxima que encontrei foi:
Eu tentei usar osolução de Gonzalo Medinaacima, adicionando \setlength\abovedisplayskip{0pt}
(após o preâmbulo conformeEspaço vertical antes e depois de alinhar o ambiente). Embora isso tenha movido as equações verticalmente, elas ainda estavam alinhadas verticalmente:
E como o problema também ocorre no topo da página, não acho que isso esteja relacionado aCompreendendo as minipáginas - alinhando na parte superior
Pergunta:
- Como posso ajustar o
align
ambiente para não ter espaço adicional automaticamente na parte superior de uma página ouminipage
? - Existe uma razão para esse comportamento e talvez não deva ser alterado?
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}
Responder1
Os ambientes de alinhamento deamsmathnão foram projetados para estar no início de um parágrafo. Embora isso possa ser aceitável em situações normais, tem efeitos negativos quando usamos um minipage
para compor um alinhamento com largura reduzida.
O minipage
problema pode ser resolvido corrigindo o \start@align
comando (e também \start@gather
e \start@multline
) com
\usepackage{etoolbox}
\makeatletter
\pretocmd\start@align{%
\if@minipage\kern-\topskip\kern-\abovedisplayskip\fi
}{}{}
\makeatother
Isso explora o fato de que no início de uma minipage
condicional \if@minipage
é verdadeira, mas ao iniciar um parágrafo ela se torna falsa, de modo que align
os ambientes subsequentes na mesma minipage
não serão afetados.
Existe um patch semelhante para "curar" os ambientes no início do parágrafo, mas estou um pouco relutante em mostrá-lo, pois acredito que um parágrafo deverianuncacomece com uma equação exibida (com a exceção mencionada acima).