Ложный пробел над выравниванием среды в верхней части страницы/мини-страницы

Ложный пробел над выравниванием среды в верхней части страницы/мини-страницы

Кажется, что alignокружение добавляет дополнительное вертикальное пространство, если оно начинается в верхней части страницы или minipage. Ниже приведены две страницы и два minipages (на странице 1), где на первой странице/ minipageесть текст, за которым следует align*окружение, а вторая страница/ minipageначинается с align*окружения, и обратите внимание, что уравнения по-прежнему выровнены.

введите описание изображения здесь

Попытка решения:

Самый близкий по теме вопрос, который я нашел, был:

Я попытался использоватьрешение Гонсало Мединывыше, добавив \setlength\abovedisplayskip{0pt}(после преамбулы согласноВертикальное пространство до и после выравнивания среды). Хотя это и сдвинуло уравнения вверх по вертикали, они все еще были выровнены по вертикали:

введите описание изображения здесь

И поскольку проблема возникает также и в верхней части страницы, я не думаю, что это связано сПонимание мини-страниц — выравнивание по верху

Вопрос:

  1. Как настроить alignсреду так, чтобы автоматически не было дополнительного пространства вверху страницы или minipage?
  2. Есть ли причина такого поведения и, возможно, не стоит его менять?

Код:

\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}

решение1

Среды выравниванияамсматне предназначены для размещения в начале абзаца. Хотя это может быть приемлемо в обычных ситуациях, это имеет плохие последствия, когда мы используем minipageдля набора выравнивания с уменьшенной шириной.

Проблему minipageможно решить, исправив \start@alignкоманду (а также \start@gatherи \start@multline) с помощью

\usepackage{etoolbox}
\makeatletter
\pretocmd\start@align{%
  \if@minipage\kern-\topskip\kern-\abovedisplayskip\fi
}{}{}
\makeatother

При этом используется тот факт, что в начале minipageусловного предложения \if@minipageоно истинно, но в начале абзаца оно становится ложным, поэтому последующие alignокружения в том же самом контексте minipageне будут затронуты.

Есть аналогичный патч для «лечения» окружений в начале абзаца, но я не хочу его показывать, так как считаю, что абзац долженникогданачните с отображаемого уравнения (за исключением вышеупомянутого).

Связанный контент