Выравнивается ли среда amsmath по умолчанию со стилем отображения?

Выравнивается ли среда amsmath по умолчанию со стилем отображения?

Является ли alignedсреда автоматически \displaystyle? Этот тест, похоже, указывает на то, что она:

\documentclass{article}
\usepackage{amsmath}

\begin{document}
  \(\begin{aligned}
    \int_{0}^{\pi}f(x)dx &= \frac{1}{\pi} \\
  \end{aligned}\)

  \(\int_{0}^{\pi}f(x)dx = \frac{1}{\pi} \)
\end{document}

Дополнительно amsmath.styсодержит следующий код:

\newcommand{\start@aligned}[2]{%
    \RIfM@\else
        \nonmatherr@{\begin{\@currenvir}}%
    \fi
    \savecolumn@ % Assumption: called inside a group
    \alignedspace@left
    \if #1t\vtop \else \if#1b \vbox \else \vcenter \fi \fi \bgroup
        \maxfields@#2\relax
        \ifnum\maxfields@>\m@ne
            \multiply\maxfields@\tw@
            \let\math@cr@@@\math@cr@@@alignedat
            \alignsep@\z@skip
        \else
            \let\math@cr@@@\math@cr@@@aligned
            \alignsep@\minalignsep
        \fi
        \Let@ \chardef\dspbrk@context\@ne
        \default@tag
        \spread@equation % no-op if already called
        \global\column@\z@
        \ialign\bgroup
           &\column@plus
            \hfil
            \strut@
            $\m@th\displaystyle{##}$%
            \tabskip\z@skip
           &\column@plus
            $\m@th\displaystyle{{}##}$%
            \hfil
            \tabskip\alignsep@
            \crcr
}

К сожалению, я не большой хакер tex, поэтому не могу быть уверен, но определение макроса включает \displaystyle. Однако я не смог отследить эту информацию в документации. Раздел 3 (руководство пользователя amsmath) перечисляет отображаемые уравнения, но alignedне входит в их число.

Есть ли хороший способ определить, является ли заданная математическая среда \displaystyle? Обычно я бы предположил, что встроенная математика по умолчанию не отображается, но alignedсреда используется внутри \(\)или $$.

решение1

Код содержит часть

\ialign\bgroup % spaces before and after & included for clarity
       & \hfil$\m@th\displaystyle{#}$ & $\m@th\displaystyle{{}#}$\hfil \crcr
%        \____________  ____________/   \_____________  _____________/
%                     \/                               \/
%         first column specification       second column specification

Я удалил много всего, что не имеет отношения к сути; я также ввел пробелы вокруг амперсанда &для ясности, хотя пробел перед ним на самом деле важен; и я заменил ##на один #, поскольку удвоение вытекает из обычных правил TeX для вложенных определений. Забудьте о первом &на данный момент. \ialignявляется инициализированной формой \halign, примитива TeX для горизонтального выравнивания (он устанавливает межколоночное расстояние равным нулю). Первый столбец имеет спецификацию

\hfil $\m@th\displaystyle{#}$

что означает "выравнивание по правому краю, displaystyle math". Используя обозначение пакета, arrayэто будет спецификатор столбца в форме

>{$\m@th\displaystyle\bgroup}r<{\egroup$}

Второй столбец содержит

$\m@th\displaystyle{{}#}$\hfil

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

А как насчет первого &в строке, который я сначала сказал игнорировать? Это конструкция TeX; цитата из TeXBook (стр. 241)

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

Поэтому эта последовательность выровненных по правому краю и выровненных по левому краю столбцов может повторяться бесконечно. Таким образом, alignedсреда в основном соответствует табличной с повторяющимися rlrlrlrl...столбцами, все в режиме displaystyle math.

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