Работа в системе LaTeX

       

Многострочные выключные формулы


Программа TeX никогда не делает автоматических переносов в выключных формулах, поэтому, если ваша формула не умещается в строку, необходимо разбить ее на отдельные строки самостоятельно. Первое, что приходит в голову начинающим, — это оформить каждую из этих строк как отдельную выключную формулу с помощью $$...$$ и записать эти выключные формулы подряд. При этом расстояние по вертикали между двумя строками получается слишком большим, так что на глаз они не воспринимаются как части одной формулы. В этом разделе мы описываем, как грамотно организовать такое разбиение.

Как и в случае с матрицами, наиболее удобные (и рекомендуемые нами) средства открываются, если подключить пакет amsmath; с их описания мы и начнем, а в конце опишем скромные средства набора многострочных формул, доступные без подключения дополнительных пакетов.

Итак, пусть вы подключили amsmath. Тогда самое простое средство для набора многострочных выключных формул — это окружение multline:

\begin{multline} 1+2+3+4+\ldots\\ +46+47+48+\ldots\\ +99+100=5050 \end{multline}

Первая из строк печатается выключенной влево, последняя — выключенной вправо, остальные строки центрируются. Подобно окружению equation, окружение multline не должно быть заключено в знаки "$$". Как вы могли заметить, формула, оформленная в виде окружения multline, автоматически нумеруется. Чтобы этой нумерации не было, надо воспользоваться "вариантом со звездочкой" — окружением multline*.

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

\multlinegap=.5in

Чтобы какая-то из средних строк была не центрирована, а выключена влево, надо воспользоваться командой \shoveleft, написав, скажем,

\shoveleft{+46+47+48+\ldots}\\

вместо "+46+47+48+\ldots\\". Для выключки вправо аналогичным образом используется команда \shoveright.

Когда несколько выключных формул идут подряд, можно не оформлять каждую из них с помощью "$$" или окружения equation, но воспользоваться окружением gather:

\begin{gather} 2\times 2=4\\ 9\times 9=81 \end{gather}
<
p> При использовании gather формулы также не должны быть заключены в символы "$$". Каждая из формул, собранных в gather, автоматически нумеруется. Чтобы на пронумерованную таким образом формулу можно было сослаться (а иначе зачем нумеровать?), надо ее пометить, поставив перед |\\| команду \label.

Если какую-то из них нумеровать не надо, следует поставить непосредственно перед "\\" команду \notag. Если вы не хотите нумеровать ни одну из формул, можно воспользоваться "вариантом со звездочкой" — окружением gather* .

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

\begin{equation} \begin{split} 1999&=1000+900+{}\\ &+90+9 \end{split} \end{equation}
Разбиение формулы на строки по-прежнему задается с помощью \\, а знак & стоит перед символами, по которым производится выравнивание. По TeX-ническим причинам формулу, разбитую на строки помощью split , нельзя задавать с помощью знаков $$ (почему мы и воспользовались в примере окружением equation ). С другой стороны, из-за equation наша формула получила номер. Если нумерация вам не нужна, можно либо написать \notag перед \end{equation}, либо воспользоваться окружением equation*, которое формулы не нумерует.

Формулы, разбитые на части с помощью split , можно использовать также внутри окружений gather или align (о последнем речь пойдет ниже), со звездочками или без.

Нередко возникает необходимость напечатать один или несколько выровненных столбцов формул. Для этих целей предназначено окружение align:

\begin{align} 7\times 9& =63 & 63:9& =7\\ 9\times 10& =90 & 90:10& =9 \end{align}
При выравнивании формул по знаку равенства (или другого бинарного отношения), как это обычно и делается, знак "&" ставится перед знаком равенства. В нашем примере второй знак "&" в строке отделяет первый столбец формул от второго, по третьему знаку "&" идет выравнивание во втором столбце, четвертый "&", если бы он был, отделял бы второй столбец от третьего, и т.д.


По-прежнему не нужны знаки "$$", каждая строка уравнений автоматически получает номер, который можно подавить, написав \notag перед "\\", и по-прежнему есть вариант со звездочкой align* , который формулы не нумерует.

При грамотном применении окружения align в строке должно стоять нечетное число знаков "&". Именно, если у нас
столбцов с уравнениями, то имеется
знаков "&", отделяющих друг от друга столбцы, плюс еще
знаков — по одному на каждый столбец, а всего
.

Полезное применение align возникает, когда идущие подряд выключные формулы содержат текстовые комментарии. Желательно, чтобы эти комментарии были выровнены. Вот как можно этого добиться с помощью align:

\begin{align*} 3\cdot 5+7\cdot 5&=(3+7) \cdot5 &&\text{(ясно)}\\ &=50&&\text{(очевидно)} \end{align*}
Обратите внимание на два амперсенда, отделяющие комментарий от формул (см. выше текст мелким шрифтом). Нелишне также отметить, что, как и в случае с окружениями multline и gather , формулы, задаваемые с помощью align , нельзя оформлять с помощью знаков доллара.

Не всегда удобно включать комментарии к выкладкам прямо в формулы. Иногда хочется, чтобы какой-то из комментариев шел в отдельной строке. Команда \intertext позволяет сделать это так, чтобы выравнивание не нарушилось:

\begin{align*} 3\cdot 5+7\cdot 5&=(3+7) \cdot5 &&\text{(ясно)}\\ &=50&&\text{(очевидно),}\\ \intertext{откуда} 15+35 &=50 \end{align*}
Наряду с окружением align, дающим сразу целую выключную формулу, есть окружение aligned , которое можно использовать в качестве составной части большей формулы. Вот как можно с помощью этого окружения задать систему уравнений:

$$ \left\{ \begin{aligned} x^2+y^2&=7\\ x+y & = 3.\\ \end{aligned} \right. $$
Для создания фигурной скобки, охватывающей всю систему, мы воспользовались командами \left и \right, причем при команде \right стоит "пустой ограничитель" — точка.

Наконец, еще один тип многострочных выключных формул возникает, когда выражение в правой части равенства должно выглядеть по-разному в разных случаях.


На этот случай в пакете amsmath предусмотрено окружение cases. Продемонстрируем его работу сразу на примере:

$$ |x|=\begin{cases} x,&TeXt{если $x>0$;}\\ 0,&TeXt{если $x=0$;}\\ -x,&TeXt{если $x<0$.} \end{cases} $$
Разработчики пакета amsmath рекомендуют внутри окружения cases использовать команду \lbrace вместо \{.

Теперь, когда вы ознакомились с возможностями набора многострочных формул с помощью пакета amsmath, расскажем и о том, что можно сделать в этом направлении без подключения дополнительных стилевых пакетов.

Системы уравнений можно набирать с помощью окружения array таким образом:

$$ \left\{ \begin{array}{rcl} x^2+y^2&=&7\\ x+y & = &3.\\ \end{array} \right. $$
Мы отвели по одному столбцу на левую часть каждого уравнения, на знак равенства и на правую часть. При этом мы попросили, чтоб левые части уравнений были выровнены по правому краю (отсюда r в преамбуле), правые части выровнены по левому краю ( l в преамбуле), а знак равенства располагался по центру своей колонки (поэтому вторая буква в преамбуле — буква c).

Можно заметить, что пробелы (отбивки) до и после знака равенства получаются больше, чем это допускается типографскими правилами (и чем получается при использовании окружения aligned из пакета amsmath). К сожалению, бороться с этим трудно; проще раздобыть комплект, в который входит пакет amsmath .

Если необходимо, чтобы отдельные уравнения в системе были пронумерованы, можно воспользоваться окружением eqnarray . Оно работает так же, как окружение array с преамбулой rcl в вышеприведенном примере, но при этом у каждого уравнения автоматически печатается его номер (подобно тому, как автоматически печатается номер у выключной формулы, созданной с помощью окружения equation —. Если пометить какое-либо уравнение с помощью команды \label, то в дальнейшем можно на него ссылаться с помощью команды \ref или \pageref.

\begin{eqnarray} 2\times3&=&6\\ 2+3&=&5\label{silly} \end{eqnarray} На с.~\pageref{silly} приведено глупое уравнение~\ref{silly}
Обратите внимание, что фигурной скобки, охватывающей систему уравнений, окружение eqnarray не создает.


В этом примере символ "~ "между "с."\ и \pageref поставлен, чтобы слово "с."\ и номер страницы не попали на разные строки ; для аналогичных целей мы использовали этот символ и вторично.

При использовании окружения eqnarray не надо писать знаки "$$" (подобно тому, как не надо их писать при пользовании окружением equation).

Если вы хотите нумеровать не все уравнения, надо уравнения, которые вы нумеровать не будете, пометить командой \nonumber (непосредственно перед "\\"):

\begin{eqnarray} \int_{-\infty}^\infty e^{-x^2}dx & = & \sqrt{\pi}\nonumber\\ \sqrt{576} & = & 24 \end{eqnarray}
Наконец, если вы вообще не хотите нумеровать уравнения, то можно воспользоваться "вариантом со звездочкой"- окружением eqnarray*.

Окружение array можно использовать не только в выключных, но и во внутритекстовых формулах, хотя результат при этом обычно выглядит некрасиво. Окружения eqnarray и eqnarray* создают только выключные формулы.

Чтобы разбить выключную формулу на несколько выровненных частей, также можно воспользоваться окружением eqnarray или eqnarray*:

\begin{eqnarray*} x^{20}&=&(x-1)^{20}+ 20(x-1)^{19}+\ldots+\\ &&{}+20(x-1)+1 \end{eqnarray*}
Обратите внимание, что перед первым знаком + во второй строке формулы мы поставили пару из открывающей и закрывающей фигурных скобок; это сделано для того, чтобы на печати знак
не подошел слишком близко к первому символу второй строки, что в сочетании со увеличенными отбивками вокруг знака равенства было бы уже слишком (можете поставить эксперимент самостоятельно). Природа описанного эффекта объясняется ниже в разд. "Тонкая настройка"; он частично учтен в пакете amsmath (к сожалению, разные версии этого пакета могут давать разные результаты).


Содержание раздела