Espaço falso acima do ambiente de alinhamento no topo da página/minipágina

Espaço falso acima do ambiente de alinhamento no topo da página/minipágina

Parece que o alignambiente adiciona espaço vertical adicional se começar no topo de uma página ou minipage. Abaixo estão duas páginas e dois minipages (na página 1), onde a primeira página/ minipagetem texto seguido de um align*ambiente, e a segunda página/ minipagecomeça com um align*ambiente, e observe que as equações ainda estão alinhadas.

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

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:

  1. Como posso ajustar o alignambiente para não ter espaço adicional automaticamente na parte superior de uma página ou minipage?
  2. 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 minipagepara compor um alinhamento com largura reduzida.

O minipageproblema pode ser resolvido corrigindo o \start@aligncomando (e também \start@gathere \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 minipagecondicional \if@minipageé verdadeira, mas ao iniciar um parágrafo ela se torna falsa, de modo que alignos ambientes subsequentes na mesma minipagenã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).

informação relacionada