Опубликован: 07.02.2007 | Доступ: свободный | Студентов: 4036 / 1360 | Оценка: 4.56 / 3.95 | Длительность: 23:09:00
Специальности: Художник
Лекция 2:

Как набирать формулы

Набор коммутативных диаграмм

Чтобы набирать в LaTeX'е "коммутативные диаграммы", необходимо подключить стилевой пакет amscd. Пусть это сделано. Тогда коммутативная диаграмма оформляется в виде окружения CD. Читателю, знакомому с AMS-TeX'ом, дальнейшее можно объяснить одной фразой: между "\begin{CD}" и "\end{CD}" надо поместить в точности тот же текст, что в MS-TeX'е пишут в аналогичном случае между \CD и \endCD. Для всех остальных удобнее пояснить правила набора коммутативных диаграмм на примере. Рассмотрим следующую диаграмму:


При подключенном пакете amscd она набирается следующим образом:

$$
  \begin{CD}
    0 @>>> E' @>J>> E @>g>> E'' @>>> 0\\
    @.   @VVpV    @VVqV   @VVrV      @.\\
    0 @>>> F' @>f>> F @>g>> F'' @>>> 0
  \end{CD}
$$

Первая строка в этой записи соответствует верхней строке диаграммы. Стрелка, направленная слева направо, задается конструкцией "@">" (а стрелка справа налево — конструкцией "@"<"); если над стрелкой надо поставить какую-то надпись (например, просто букву), то нужно ее разместить между первым и вторым знаками неравенства; чтобы надпись получилась под стрелкой, надо ее разместить между вторым и третьим знаками неравенства.

Вторая строка задает вертикальные стрелки. Конструкция "@VVV" задает стрелку, направленную вниз; если справа от стрелки нужна надпись, то ее надо разместить между второй и третьей буквами {V} (чтобы надпись оказалась слева от стрелки, она должна быть, естественно, между первой и второй буквами V). Вертикальная стрелка, направленная вверх, задается конструкцией "@AAA" (буква A — максимальное приближение к устремленной вверх стрелке); справа и слева от нее также можно сделать надпись (аналогичным образом).

Конструкция "@." задает "пустую" стрелку (в нашем случае — между двумя нулями); она необходима, чтобы LaTeX не сбился со счета, выясняя, в какие колонки ставить вертикальные стрелки.

Опишем работу окружения CD более аккуратно. Каждую коммутативную диаграмму окружение CD рассматривает как таблицу, состоящую из перемежающихся "горизонтальных" и " вертикальных" строк. Каждая "горизонтальная" строка состоит из формул, перемежающихся горизонтальными стрелками. Во всех горизонтальных строках должно быть одинаковое количество формул. Если некоторые из мест, предназначенных для формул, должны остаться пустыми, то на этом месте надо оставить пробел или, если вам так приятнее, написать "{}". Между каждой парой формул должна быть стрелка. Если какие-то из этих стрелок не нужны, на их месте надо поставить "@." (" пустую" стрелку).

Каждая "вертикальная" строка состоит из вертикальных стрелок. Их должно быть столько же, сколько формул в любой из горизонтальных строк. Если какие-то из вертикальных стрелок не нужны, на их месте надо поставить "@." (пустую стрелку).

Если надпись при стрелке, направленной вниз (и задаваемой, стало быть, конструкцией "@VVV"), сама содержит букву V, то нужно ее (надпись) взять в фигурные скобки — иначе TeX не сможет понять, какая из букв V относится к надписи, а какая — к обозначению стрелки. Аналогичные меры надо принять, если надпись при стрелке, направленной вверх, содержит букву A (а также, естественно, если надпись при горизонтальной стрелке содержит знак ">" или "<", хотя ввиду математического смысла таких надписей последнее менее вероятно).

Наряду со стрелками, в коммутативных диаграммах встречаются горизонтальные и вертикальные "растянутые знаки равенства":


$$
  \begin{CD}
  A @=     B   @">  C  \\
  @V{V_1}VV  @AfAA   @| \\
  D @"g< E   @"<  F
  \end{CD}
$$

Как видно из этого примера, такие знаки задаются конструкциями "@=" (горизонтальный) и "@|" (вертикальный). Обратите также внимание, как мы защитили фигурными скобками символ {V} в надписи к левой вертикальной стрелке.

Конструкция "\pretend" \ldots\ "\haswidth" системы AMSTeX в LaTeX'е не поддерживается.

Математики знают, что в коммутативных диаграммах могут встречаться не только горизонтальные и вертикальные стрелки: бывают и наклонные, и изогнутые, и пунктирные\...\ Возможностей пакета amscd для печати таких стрелок недостаточно; если вам нужны такие более сложные диаграммы, стоит воспользоваться стилевым пакетом Xy-pic (см. приложение Д).

В "чистом" (без подключения стилевых пакетов) LaTeX'е набор диаграмм не предусмотрен. На самый крайний случай, если нет ни amscd, ни Xy-pic'а, можно сделать так:

$$
  \begin{array}{ccccccccc}
  0&\longrightarrow & E' &   \stackrel{f}{\longrightarrow}& E &  
\stackrel{g}{\longrightarrow} &   E'' & \longrightarrow & 0\\
  &&\downarrow\lefteqn{p}&&\downarrow
  \lefteqn{q}&&\downarrow\lefteqn{r}\\
  0&\longrightarrow & F' &   \stackrel{f}{\longrightarrow}& F &  
\stackrel{g}{\longrightarrow} & F''
  & \longrightarrow & 0
  \end{array}
$$

В результате получится почти такая же диаграмма, как в нашем первом примере (правда, буквы при вертикальных стрелках будут крупнее букв при горизонтальных, поскольку команда \stackrel уменьшает буквы). Единственное, что тут нуждается в пояснении, — команды \lefteqn. Они нужны для того, чтобы вертикальные стрелки с надписями были правильно центрированы. Если эти \lefteqn 'ы опустить (и писать p вместо \lefteqn{p} и т.п.), то вертикальные стрелки с подписями окажутся не по центру, а сдвинутыми влево.

Для интересующихся объясним, в чем тут дело. В процессе верстки текста TeX учитывает, сколько места занимает тот или иной фрагмент формулы. В TeX'е предусмотрены специальные команды, позволяющие фальсифицировать эти данные. В частности, команда \lefteqn печатает формулу, являющуюся ее аргументом, но при этом сообщает TeX'у, что по горизонтали эта формула не занимает места вообще. Стало быть, с точки зрения TeX'а ширина элемента, стоящего во второй строке нашей таблицы, определяется только шириной стрелки, и при центрировании текст располагается так, чтобы именно стрелка была на равном расстоянии от краев, сколь бы длинна на самом деле ни была формула, стоящая в \lefteqn. Создатель TeX'а Дональд Кнут назвал такого рода приемы работы с TeX'ом "грязными трюками" (dirty tricks). Впрочем, при написании TeX'овских макропакетов используются трюки и похлеще.

Чего мы еще не сказали

Для читателя-математика того, что мы уже рассказали о наборе формул, должно быть, в принципе, достаточно, за одним важным исключением: при написании математической статьи полезно знать, как грамотно оформлять тексты теорем, определений и тому подобные вещи. Об этом у нас рассказывается в разд."Окружение типа "теорема","Окружение типа "теорема" в пакете amsthm" лекции 7 вы можете прочитать это уже сейчас, пропуская непонятные места и справляясь при необходимости с разд."Рубрикация документа" "Оформление текста в целом" , посвященным рубрикации документа.

Тонкая настройка

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

Пробелы вручную

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


Команда \! из этой таблицы уменьшает промежуток на столько же, на сколько команда \, его увеличивает.

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

Пробелы надо
корректировать в
таких формулах,
как~$\int f(x)\,dx$,
$\int\!\!\int f\,dx\,dy$
или~$\sqrt{3}\,x$
.
$$
Пробелы надо
корректировать в
таких формулах,
как $\int f(x)\,dx$,
$\int\!\!\int f\,dx\,dy$
или $\sqrt{3}\,x$.
$$

Команда \qquad полезна для отделения текста, входящего в формулу, от собственно формулы. Для этих же целей можно использовать команду \quad, делающую пробел размером {1em}. Вместо \int\!\!\int лучше, конечно, подключить пакет amsmath и сказать \iint.

Размер символов в формулах

В большинстве случаев вам не приходится задумываться о том, какой размер будут иметь символы в формуле: TeX автоматически выбирает более мелкий шрифт для степеней, индексов, числителей и знаменателей дробей, созданных командой \frac, и т.п. Бывают, однако, случаи, когда в этот процесс автоматического выбора размера приходится вмешаться. Сейчас мы вкратце опишем, как TeX выбирает размеры символов в формулах и как можно на него при этом влиять.

При наборе формулы TeX в каждый момент руководствуется одним из следующих "стилей":

displaystyle " выключной" стиль
textstyle " текстовый" стиль
scriptstyle стиль для индексов
scriptscriptstyle стиль для индексов к индексам.

" Выключной" и "текстовый" стили используют одинаковые шрифты, но формулы в текстовом стиле выглядят чуть скромнее (например, в выключном стиле верхние индексы поднимаются повыше, а нижние опускаются пониже, чем в текстовом; в текстовом стиле " пределы" операций записываются не сверху, а сбоку —. В стиле для индексов используются более мелкие шрифты, чем в выключном или текстовом (а в стиле для индексов к индексам — еще более мелкие). Выбираются стили набора формул следующим образом: выключная формула начинает набираться в выключном стиле, внутритекстовая — в текстовом стиле; далее, если в момент действия какого-то из стилей встретится команда \frac (или \atop ), то для набора числителя и знаменателя TeX переключается на следующий по порядку стиль из вышеприведенной таблицы; если в момент действия выключного или текстового стиля встретится верхний или нижний индекс (показатель степени мы также рассматриваем как верхний индекс — в математическое содержание формул TeX не вникает), то этот индекс начинает набираться стилем для индексов; если индекс встретится в момент действия стиля для индексов или индексов к индексам, то набираться он будет в стиле "индексы к индексам". Например, при наборе формулы

x+\frac{y^2+3-z^{x^7-y^7}}{1+\cos^2x}
TeX использует выключной стиль при наборе \displaystyle x+{}, текстовый стиль при наборе y^2+3-z^{x^7-y^7} и 1+\cos^2x, стиль для индексов при наборе \scriptstyle x^7-y^7 и двойки в показателе степени, и стиль для индексов к индексам при наборе семерок в показателях степени. Стиля {scriptscriptscriptstyle} и дальнейших не предусмотрено, так что индексы третьего и более высоких порядков набираются теми же шрифтами, что и индексы второго порядка (расстраиваться по этому поводу не надо, поскольку эти шрифты и так мелкие).

Если вы хотите изменить стиль набора формулы, можно в явном виде указать его с помощью TeX'овской команды, имя которой совпадает с английским названием этого стиля ( \displaystyle... \scriptscriptstyle )). Вот типичный пример, когда это может понадобиться. Предположим, в вашем тексте встречаются "цепные дроби". Ранее было показано, какой неудачный результат выйдет, если набирать цепную дробь наивным образом. Теперь мы видим, что этот результат формально полностью согласуется с правилами TeX'а: вся формула, коль скоро она выключная, набирается в выключном стиле, стало быть числитель и первый из знаменателей будут уже в текстовом стиле, следующий знаменатель — как индексы, следующий — как индексы к индексам, и т.д. Если нет возможности воспользоваться командой \cfrac из пакета amsmath, то надо набирать так:

$$
  \frac{7}{25}=
  \frac{1}{\displaystyle
     3+\frac{1}{\displaystyle
          1+\frac{1}{\displaystyle
               1+\frac{1}{3}}}}
$$
\frac{7}{25}=
  \frac{1}{\displaystyle
     3+\frac{1}{\displaystyle
          1+\frac{1}{\displaystyle
               1+\frac{1}{3}}}}

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

Нина Казачек
Нина Казачек
Василий Майоров
Василий Майоров