Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 39
Текст из файла (страница 39)
Автоматическая нумерация формул подавляется при использовании *-формы перечисленных выше процедур. Процедураsplit, естественно, не имеет *-формы. Она вообще отличается от других процедур форматирования выключных уравнений, так как предназначена для использования только внутри них (раздел 8.6.3). Для более избирательного управлениянумерацией формул служат команды\tag{text}\notag\tag*{text}Команда \notag (действующая аналогично команде ядра LATEX’а \nonumber) подавляет номер на любой строке уравнения.
Её, как и \tag или \tag*, целесообразно помещать в конце или начале соответствующей строки (например, перед1838.6. Выключные уравнения\\). Команда \tag, напротив, пометит соответствующую ей строку уравнения,даже если автоматическая нумерация отключена (т. е. использована *-форма одной из процедур). Текст text, содержащийся в аргументе \tag и используемый вкачестве номера уравнения, обрабатывается в текстовой моде. Это может бытьпроизвольный текст типа $1’$ или ii.
Команда \tag* печатает номер уравнения text без добавления круглых скобок вокруг него. Если \tag или \tag* используются для замещения автоматически вырабатываемого номера уравнения(внутри обычной формы процедур), значение счётчика equation не увеличивается. Следующий пример показывает, как можно нумеровать разные вариантыодного уравнения, используя механизм перекрёстного цитирования:Два варианта (8.1), (8.1′ ) одногоуравнения:Два варианта (\ref{eq:difference}),(\ref{eq:identity}) одного уравнения:\begin{equation}\label{eq:difference}a-b=0,\end{equation}\begin{equation}\label{eq:identity}a=b.\tag{\ref{eq:difference}$’$}\end{equation}a − b = 0,(8.1)a = b.(8.1′ )Читатель сам может подсчитать, сколько раз нужно обработать входной файл,чтобы все перекрёстные ссылки в этом примере сработали правильно.Примеры, позволяющие сравнить работу всех процедур форматирования уравнений, собраны в табл.
8.11 (вертикальные линии в примерах указывают границырабочего поля страницы). Следует обратить внимание на важное отличие в способе расстановки символов &, служащих для разделения колонок в процедурахalign, alignat, falign, split, по сравнению с процедурой eqnarray.Сравните:Сравните:\begin{eqnarray}a_1 &=& b_1+c_1\\a_2 &=& b_2+c_2\end{eqnarray}и\begin{align}a_1 &= b_1+c_1\\a_2 &= b_2+c_2\end{align}a1a2= b1 + c1= b2 + c2(8.2)(8.3)иa1 = b1 + c1a2 = b2 + c2(8.4)(8.5)Обсудим теперь особенности и назначение каждой из процедур форматированияуравнений.8.6.1.Отдельное уравнение\begin{equation}\begin{equation*}......\end{equation}\end{equation*}(amsmath)184Глава 8.
AMS-LATEXТаблица 8.11Процедуры форматирования выключных уравнений\begin{equation*}a=b\end{equation*}a=b\begin{equation}a=b\end{equation}a=b\begin{equation}\begin{split}a &= b+c-d+{}\\&\quad +e-f=\\&= g+h=\\&= i\end{split}\end{equation}\begin{multline}a+b+c+d+e+f+{}\\+i+j+k+l+m+n\end{multline}a=b+c−d++e−f ==ia+b+c+d+e+f +\begin{align}a_1 &= b_1+c_1\\a_2 &= b_2+c_2-d_2+e_2\end{align}\begin{flalign*}a_{11} &= b_{11}&a_{12} &= b_{12}\\a_{21} &= b_{21}&a_{22} &= b_{22}+c_{22}\end{flalign*}(2)=g+h=\begin{gather}a_1=b_1+c_1\\a_2=b_2+c_2-d_2+e_2\end{gather}\begin{align}a_{11} &= b_{11}&a_{12} &= b_{12}\\a_{21} &= b_{21}&a_{22} &= b_{22}+c_{22}\end{align}(1)+i+j+k+l+m+n(3)a 1 = b 1 + c1(4)a2 = b2 + c2 − d2 + e2(5)a1 = b1 + c1(6)a2 = b2 + c2 − d2 + e2(7)a11 = b11a12 = b12(8)a21 = b21a22 = b22 + c22(9)a11 = b11a12 = b12a21 = b21a22 = b22 + c221858.6.
Выключные уравненияПроцедура equation размещает выключное уравнение в одной строке. Она автоматически печатает номер уравнения. Процедура equation* делает всё то жесамое, но не ставит номер уравнения, если это не сделано при помощи команды\tag. В ядре LATEX’а процедура equation* формально отсутствует, но её функциивыполняет displaymath. Интересно, что \tag метит даже уравнения, созданныепри помощи скобок \[ . .
. \]:\[E = mc^2 \tag{\textasteriskcentered}\]8.6.2.E = mc2(∗)Расщепление уравнения без выравнивания\begin{multline}\begin{multline*}......\end{multline}\end{multline*}(amsmath)Процедуру multline следует использовать вместо equation, если уравнение непомещается на одной строке. Точки переноса части уравнения на следующуюстроку, как обычно, отмечаются командой \\. Первая строка уравнения будетсдвинута влево, а последняя — вправо, почти вплотную к полям страницы. Величину отступа от полей определяет командная длина(amsmath)\multlinegapСтроки между первой и последней центрируются (за исключением случая, когдазадействована опция fleqn в \documentclass). Однако их можно сдвигать влевоили вправо соответственно командами\shoveleft{line}(amsmath)\shoveright{line}В их аргументе должен находиться весь текст, соответствующий сдвигаемой строке уравнения, исключая заключительную команду \\.
В следующем примереABCD(8.6)рамку заданных размеров рисует команда \framebox, которую мы изучим в главе 9:\begin{multline}\framebox[10cm]{A}\\\framebox[7.5cm]{B}\\\shoveright{\framebox[7.5cm]{C}}\\\framebox[10cm]{D}\end{multline}186Глава 8. AMS-LATEXЗначение \multlinegap, как и любой командной длины, можно изменить припомощи \setlength и \addtolength (раздел 2.10).8.6.3.Расщепление уравнения с выравниванием...\begin{split}(amsmath)\end{split}Подобно multline, процедура split предназначена для расщепления на строкиотдельных уравнений (но не систем уравнений), не умещающихся в одной строке.В отличие от multline, процедура split обеспечивает выравнивание расщеплённых строк относительно точек выравнивания, которые, как обычно, устанавливаются амперсантами &.Мы уже отмечали, что процедура split не нумерует уравнения, так как предназначена для использования только внутри других процедур форматированияуравнений (обычно equation, align или gather), которые обеспечивают нумерацию.
Например, уравнениеnHc =1 (−1)l (n − l)p−22nl=0p ( )nil1 +···+lp =l i=1ni −li× [(n − l) − (ni − li )]:2li· (n − l) −×pj=12(ni − li );(8.7)во входном файле описано следующим образом:\begin{equation}\begin{split}H_c &= \frac{1}{2n} \sum^n_{l=0}(-1)^{l}(n-{l})^{p-2}\sum_{l_1+\dots+l_p=l}\prod^p_{i=1}\binom{n_i}{l_i} \times \\&\quad \times [(n-l)-(n_i-l_i)]^{n_i-l_i}\cdot\Bigl[(n-l)^2-\sum^p_{j=1}(n_i-l_i)^2\Bigr]\end{split}\end{equation}8.6.4.Системы уравнений без выравнивания\begin{gather}\begin{gather*}......\end{gather}\end{gather*}(amsmath)Процедура gather используется для группы последовательных уравнений, еслиих не нужно выравнивать. Каждое уравнение центрируется в своей строке независимо от других (см.
пример в табл. 8.11).1878.6. Выключные уравнения8.6.5.Системы уравнений с выравниванием\begin{align}\begin{align*}\begin{flalign}\begin{flalign*}............\end{align}\end{align*}\end{flalign}\end{flalign*}(amsmath)Процедура align используется для двух или более уравнений, которые желательно выровнять по вертикали; обычно выравнивание производится относительнознаков бинарных операций.Чтобы разместить уравнения в несколько столбцов, можно использовать туже процедуру align, указав необходимое количество символов & в одной строке:x=yx′ = y ′′X=Y′x+x =y+ya=b+c′X =YX + X′ = Y + Y ′′′a =ba′ b = c′ b(8.8)(8.9)(8.10)\begin{align}x&=y& X&=Y& a &=b+c\\x’ &=y’& X’ &=Y’& a’ &=b \\x+x’&=y+y’ & X+X’&=Y+Y’ & a’b&=c’b\end{align}Той же цели служит процедура\begin{alignat}{num_col}\begin{alignat*}{num_col}......\end{alignat}\end{alignat*}(amsmath)В ней можно явно указать расстояние между группами уравнений.
Она имеетодин аргумент num_col, который задаёт количество групп уравнений. Максимально допустимое число символов & в строке вычисляется как 2num_col − 1(т. е. один амперсант внутри группы и по амперсанту между группами).C11 = C1 + CC21 = −C\begin{alignat}{2}C_{11} &= C_1+CC_{21} &= -C\end{alignat}&\qquad&C12 = −CC22 = C2 + C(8.11)(8.12)C_{12} &= -C \\C_{22} &= C_2+CПроцедура flalign действует аналогично align, только уравнения прижимаются к полям страницы (см.
пример в табл. 8.11).1888.7.Глава 8. AMS-LATEXВертикальное позиционированиемногострочных уравненийВ отличие от eqnarray процедуры пакета amsmath не допускают автоматическойвставки разрыва страницы между строками уравнения, если такая вставка небудет явно разрешена посредством одной из команд\displaybreak[num]\allowdisplaybreaks[num](amsmath)Смысл такого подхода состоит в том, что разрыв страницы посреди уравнения или системы уравнений требует разрешения автора. Ставить \displaybreakлучше всего непосредственно перед командой \\ переноса на следующую строку, где это разрешение может иметь эффект. Подобно \pagebreak (раздел 4.7),\displaybreak имеет необязательный аргумент num — число, которое может изменяться от 0 до 4: при num = 0 переход на следующую страницу допустим, но нежелателен; команда \displaybreak без аргумента эквивалентна \displaybreak[4] и делает такой переход обязательным.Если Читатель предпочитает традиционную для LATEX’а стратегию, разрешающую разрывать страницу в середине любых многострочных уравнений, емуследует поместить \allowdisplaybreaks в преамбулу входного файла.