
Кажется, что align
окружение добавляет дополнительное вертикальное пространство, если оно начинается в верхней части страницы или minipage
. Ниже приведены две страницы и два minipage
s (на странице 1), где на первой странице/ minipage
есть текст, за которым следует align*
окружение, а вторая страница/ minipage
начинается с align*
окружения, и обратите внимание, что уравнения по-прежнему выровнены.
Попытка решения:
Самый близкий по теме вопрос, который я нашел, был:
Я попытался использоватьрешение Гонсало Мединывыше, добавив \setlength\abovedisplayskip{0pt}
(после преамбулы согласноВертикальное пространство до и после выравнивания среды). Хотя это и сдвинуло уравнения вверх по вертикали, они все еще были выровнены по вертикали:
И поскольку проблема возникает также и в верхней части страницы, я не думаю, что это связано сПонимание мини-страниц — выравнивание по верху
Вопрос:
- Как настроить
align
среду так, чтобы автоматически не было дополнительного пространства вверху страницы илиminipage
? - Есть ли причина такого поведения и, возможно, не стоит его менять?
Код:
\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
не будут затронуты.
Есть аналогичный патч для «лечения» окружений в начале абзаца, но я не хочу его показывать, так как считаю, что абзац долженникогданачните с отображаемого уравнения (за исключением вышеупомянутого).