Как глобально изменить интервал вокруг уравнений?

Как глобально изменить интервал вокруг уравнений?

Как мне настроить «верхнее» и «нижнее» виртуальное пространство вокруг окружающей equationсреды?

Если бы то же самое можно было сделать для сред subequationsили gather, это было бы бонусом.

решение1

Вы можете настроить значения \abovedisplayskip, \belowdisplayskip, \abovedisplayshortskip, \belowdisplayshortskip. shortskipВерсии используются в ситуации, когда короткая текстовая строка предшествует отображаемому уравнению: если текст заканчивается до начала отображаемого уравнения, то лучше добавить меньше вертикального пространства.

Поскольку классы документов часто определяют эти пропуски, \normalsizeвы можете переопределить этот макрос, исправить его или просто дополнить его, поскольку простая установка значений в преамбуле в этом случае не сработает.

\documentclass{article}
\usepackage{amsmath}
\makeatletter
\g@addto@macro\normalsize{%
  \setlength\abovedisplayskip{40pt}
  \setlength\belowdisplayskip{40pt}
  \setlength\abovedisplayshortskip{40pt}
  \setlength\belowdisplayshortskip{40pt}
}
\makeatother
\begin{document}
text
\begin{gather}
  1 + 1 = 2
\end{gather}
text
\begin{equation}
  1 + 1 = 2
\end{equation}
\end{document}

То же самое можно сделать и без \g@addto@macro, то есть без всяких @и не требуя \makeatletterи \makeatother, используя \expandafter:

\expandafter\def\expandafter\normalsize\expandafter{%
    \normalsize
    \setlength\abovedisplayskip{40pt}
    \setlength\belowdisplayskip{40pt}
    \setlength\abovedisplayshortskip{40pt}
    \setlength\belowdisplayshortskip{40pt}
}

Я предпочитаю способ добавления в \normalsize, поскольку и переопределение, и исправление требуют знания точного определения \normalsizeиспользуемого классом документа. Способы бота, которые я описал ранее вФорум сообщества LaTeX, в ответ наНевозможно установить вертикальный пробел в преамбуле.

Более подробную информацию можно найти в превосходномматмоддокументация.

решение2

В качестве обновления ответа Стефана.

Ваши вопросы следует закрыть как дублирующиеся. Здесь вы найдете много вопросов/ответов. Например:

Разные интервалы вокруг уравнения и выравнивание

Прежде чем показать некоторые другие подходы, отметим очень важный факт:

Не пропустите клей! Длина \abovedisplayskipи т. д. могут быть определены с помощью клея, и таким образом вы позволяете LaTeX настраивать пространство более гибко. Пожалуйста, прочтите этот вопрос/ответ: Что такое растяжение клея?

Однако я хочу показать другую возможность настройки длины. Прежде всего, вы можете использовать команду \AtBeginDocument. Шрифт будет установлен в начале документа, и поэтому хук выполнит все позже:

\AtBeginDocument{%
 \abovedisplayskip=12pt plus 3pt minus 9pt
 \abovedisplayshortskip=0pt plus 3pt
 \belowdisplayskip=12pt plus 3pt minus 9pt
 \belowdisplayshortskip=7pt plus 3pt minus 4pt
}

Команда \g@addto@macroявляется внутренним макросом. Пакеты вроде etoolboxили более новый xpatchпредоставляют более надежные версии команды \g@addto@macro. Покажите вместо использования внутренней команды и без специальной обработки @вы можете использовать:

\usepackage{etoolbox}
\apptocmd\normalsize{%
 \abovedisplayskip=12pt plus 3pt minus 9pt
 \abovedisplayshortskip=0pt plus 3pt
 \belowdisplayskip=12pt plus 3pt minus 9pt
 \belowdisplayshortskip=7pt plus 3pt minus 4pt
}{}{}

или

\usepackage{xpatch}
\xapptocmd\normalsize{%
 \abovedisplayskip=12pt plus 3pt minus 9pt
 \abovedisplayshortskip=0pt plus 3pt
 \belowdisplayskip=12pt plus 3pt minus 9pt
 \belowdisplayshortskip=7pt plus 3pt minus 4pt
}{}{}

Вот работа с соберите здесь простой пример. Вам следует поиграть с длинами.:

\documentclass{article}
\usepackage{kantlipsum}
\usepackage{xpatch}
\xapptocmd\normalsize{%
 \abovedisplayskip=12pt plus 3pt minus 9pt
 \abovedisplayshortskip=0pt plus 3pt
 \belowdisplayskip=12pt plus 3pt minus 9pt
 \belowdisplayshortskip=7pt plus 3pt minus 4pt
}{}{}
\usepackage{amsmath}
\begin{document}
\kant[1]
\begin{gather}
  1 + 1 = 2
\end{gather}
\kant[1]
\begin{gather}
  1 + 1 = 2
\end{gather}
\kant[1]
\begin{subequations}
\begin{equation}
  1 + 1 = 2
\end{equation}
\end{subequations}
\kant[1]
\kant[1]
\end{document}

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