Перейти к содержимому
Topos Uranos

Краткое содержание

Это занятие учит входить в математический режим и выходить из него осмысленно. Оно объясняет, что меняется в этом режиме по сравнению с текстом: буквы набираются курсивом как переменные, пробелы исходного кода не учитываются, и движок рассчитывает интервал каждого знака по его классу, пустые строки запрещены, а некоторые знаки существуют только в одном из двух режимов; показывает, почему переменную не пишут через \textit и что происходит в LuaLaTeX с математическим символом, написанным вне своего режима. Занятие представляет внутритекстовые формулы, с $…$ и \(…\), их ограниченную высоту, перенос строки внутри них, тильду и пунктуацию; выключные формулы, с \[…\] и окружениями equation и equation*, как части предложения, которые снабжаются знаками препинания, и причины не использовать $$…$$ и не оставлять перед ними пустую строку; нумерацию, с \label, \eqref, \numberwithin и \tag; текст внутри формулы, с \text и \mathrm, и явные пробелы; десятичную запятую в математическом режиме и пакет siunitx для чисел и единиц. В конце разбираются типичные ошибки в том виде, в каком их записывает журнал компиляции, и то, чего лучше избегать.

Цели обучения

  1. Объяснять, что меняется в математическом режиме по сравнению с текстом, и предсказывать результат переменной, слова или символа, записанных не в том режиме.
  2. Выбирать между внутритекстовой и выключной формулой и писать каждую как часть предложения, с её пунктуацией и без неуместных пустых строк.
  3. Нумеровать выключные формулы с помощью equation, ссылаться на них через \eqref и предсказывать нумерацию, которую дают \numberwithin и \tag.
  4. Записывать десятичные дроби и величины с единицами по российским нормам, зная, что математический режим делает с точкой и запятой.
  5. Распознавать по журналу компиляции ошибки «Missing $ inserted», «Bad math environment delimiter» и «Missing character» и находить их причину в исходном коде.

Два режима набора

До сих пор движок набирал текст: слова, разделённые пробелами, которые распределяются по строкам и абзацам. Формула подчиняется другим правилам, и поэтому LaTeX набирает её в особом математическом режиме, в который входят и из которого выходят с помощью ограничителей. При входе меняется многое, и это стоит перечислить до того, как мы рассмотрим ограничители, потому что из этого вытекают почти все советы занятия.

  • Буквы набираются особым курсивом, курсивом переменных, с шириной и интервалами, рассчитанными на чтение их как символов, а не как слов.
  • Пробелы исходного кода не учитываются: $x=a-b$ и $x = a - b$ дают в точности одно и то же. Интервал рассчитывает движок по классу каждого знака: обычный (буква, цифра), бинарная операция (+, -), отношение (=, <), знак препинания (запятая), открывающий и закрывающий (скобки).
  • Пустая строка не допускается: пустая строка завершает абзац, а формула не может остаться открытой в конце абзаца.
  • Некоторые знаки существуют только в одном из двух режимов: ^ и _, образующие верхние и нижние индексы, или греческие буквы вроде \alpha относятся к математике; буквы с диакритикой, как é, и кириллические буквы относятся к тексту.
ПримерДвижок расставляет интервалы по классу знаков
Код LaTeX
Как текст: x=a-b, y=-b.​В математическом режиме: $x=a-b$, $y=-b$.​С другими пробелами в коде: $x   =   a-   b$, $y = - b$.
Результат
Результат

Вторая и третья строки одинаковы, хотя их исходный код различается. В $x=a-b$ минус бинарный, потому что у него есть операнд с каждой стороны, и он получает средний пробел; после знака равенства в $y=-b$ слева операнда нет, минус считается знаком с одним операндом и прижимается к b. Первая строка, набранная как текст, ничего не различает: дефис есть дефис, а у знака равенства нет пробелов.

Почему переменную не пишут через textit

Отсюда следует, что курсив текста и курсив математического режима не одно и то же. \textit{x} даёт букву текстового курсива без интервалов, которые движок даёт знакам; а слово, написанное в математическом режиме, не слово, а последовательность перемножаемых переменных, если его буквы вообще есть в математическом шрифте.

ПримерТекстовый курсив, слово как формула и правильная форма
Код LaTeX
С textit: \textit{f}(\textit{x}) = \textit{x} + 1, если \textit{x} > 0.​Как формула: $f(x) = x + 1$, если $x > 0$.​Слово в математическом режиме: $стоимость = цена - скидка$.​Слова как текст: $\text{стоимость} = \text{цена} - \text{скидка}$.
Результат
Результат

В первой строке пробелы только те, что набрал автор, а знаки взяты из текстового шрифта; буквы к тому же текстового курсива, другого рисунка, чем в формуле. Внутри формулы, напротив, движок даёт знаку равенства и знаку «больше» интервал отношения с каждой стороны. В третьей строке русские слова исчезают полностью и остаются только знаки равенства и минуса: математический курсив LuaLaTeX без дополнительных пакетов не содержит кириллицы, и сообщает об этом только журнал, по строке «Missing character» на каждую букву. Слово латиницей не исчезло бы, а читалось бы как произведение переменных с неровными интервалами. Команда \text из пакета amsmath рассматривается ниже в этом занятии.

Математический символ вне своего режима

В pdfLaTeX \alpha, написанная в тексте, вызывает ошибку «Missing $ inserted». В LuaLaTeX, движке этого курса, нет: греческая буква набирается без ошибки, но непредсказуемо. Если в документе ещё не набрано ни одной формулы, она исчезает; если хоть одна уже набрана, она появляется, взятая из математического шрифта и прижатая к следующему слову, потому что пробел после команды теряется.

ПримерОдна и та же греческая буква, трижды
Код LaTeX
Первое: угол \alpha острый.​Второе: угол $\alpha$ острый.​Третье: угол \alpha острый.
Результат
Результат

Первое предложение теряет букву без видимого предупреждения; третье случайно её сохраняет, прижатой к слову «острый». Единственный след остаётся в журнале, и только от первого:

Журнал компиляции
Missing character: There is no ^^K (U+000B) in font nullfont!

Следовательно, в LuaLaTeX математический символ вне своего режима не вызывает сообщения об ошибке: его нужно всегда писать между ограничителями, а перед тем как счесть документ законченным, полезно поискать в журнале «Missing character».