Краткое содержание
Это занятие учит входить в математический режим и выходить из него осмысленно. Оно объясняет, что меняется в этом режиме по сравнению с текстом: буквы набираются курсивом как переменные, пробелы исходного кода не учитываются, и движок рассчитывает интервал каждого знака по его классу, пустые строки запрещены, а некоторые знаки существуют только в одном из двух режимов; показывает, почему переменную не пишут через \textit и что происходит в LuaLaTeX с математическим символом, написанным вне своего режима. Занятие представляет внутритекстовые формулы, с $…$ и \(…\), их ограниченную высоту, перенос строки внутри них, тильду и пунктуацию; выключные формулы, с \[…\] и окружениями equation и equation*, как части предложения, которые снабжаются знаками препинания, и причины не использовать $$…$$ и не оставлять перед ними пустую строку; нумерацию, с \label, \eqref, \numberwithin и \tag; текст внутри формулы, с \text и \mathrm, и явные пробелы; десятичную запятую в математическом режиме и пакет siunitx для чисел и единиц. В конце разбираются типичные ошибки в том виде, в каком их записывает журнал компиляции, и то, чего лучше избегать.
Цели обучения
- Объяснять, что меняется в математическом режиме по сравнению с текстом, и предсказывать результат переменной, слова или символа, записанных не в том режиме.
- Выбирать между внутритекстовой и выключной формулой и писать каждую как часть предложения, с её пунктуацией и без неуместных пустых строк.
- Нумеровать выключные формулы с помощью
equation, ссылаться на них через\eqrefи предсказывать нумерацию, которую дают\numberwithinи\tag. - Записывать десятичные дроби и величины с единицами по российским нормам, зная, что математический режим делает с точкой и запятой.
- Распознавать по журналу компиляции ошибки «
Missing $ inserted», «Bad math environment delimiter» и «Missing character» и находить их причину в исходном коде.
Два режима набора
До сих пор движок набирал текст: слова, разделённые пробелами, которые распределяются по строкам и абзацам. Формула подчиняется другим правилам, и поэтому LaTeX набирает её в особом математическом режиме, в который входят и из которого выходят с помощью ограничителей. При входе меняется многое, и это стоит перечислить до того, как мы рассмотрим ограничители, потому что из этого вытекают почти все советы занятия.
- Буквы набираются особым курсивом, курсивом переменных, с шириной и интервалами, рассчитанными на чтение их как символов, а не как слов.
- Пробелы исходного кода не учитываются:
$x=a-b$и$x = a - b$дают в точности одно и то же. Интервал рассчитывает движок по классу каждого знака: обычный (буква, цифра), бинарная операция (+,-), отношение (=,<), знак препинания (запятая), открывающий и закрывающий (скобки). - Пустая строка не допускается: пустая строка завершает абзац, а формула не может остаться открытой в конце абзаца.
- Некоторые знаки существуют только в одном из двух режимов:
^и_, образующие верхние и нижние индексы, или греческие буквы вроде\alphaотносятся к математике; буквы с диакритикой, как é, и кириллические буквы относятся к тексту.
Вторая и третья строки одинаковы, хотя их исходный код различается. В $x=a-b$ минус бинарный, потому что у него есть операнд с каждой стороны, и он получает средний пробел; после знака равенства в $y=-b$ слева операнда нет, минус считается знаком с одним операндом и прижимается к b. Первая строка, набранная как текст, ничего не различает: дефис есть дефис, а у знака равенства нет пробелов.
Почему переменную не пишут через textit
Отсюда следует, что курсив текста и курсив математического режима не одно и то же. \textit{x} даёт букву текстового курсива без интервалов, которые движок даёт знакам; а слово, написанное в математическом режиме, не слово, а последовательность перемножаемых переменных, если его буквы вообще есть в математическом шрифте.
В первой строке пробелы только те, что набрал автор, а знаки взяты из текстового шрифта; буквы к тому же текстового курсива, другого рисунка, чем в формуле. Внутри формулы, напротив, движок даёт знаку равенства и знаку «больше» интервал отношения с каждой стороны. В третьей строке русские слова исчезают полностью и остаются только знаки равенства и минуса: математический курсив LuaLaTeX без дополнительных пакетов не содержит кириллицы, и сообщает об этом только журнал, по строке «Missing character» на каждую букву. Слово латиницей не исчезло бы, а читалось бы как произведение переменных с неровными интервалами. Команда \text из пакета amsmath рассматривается ниже в этом занятии.
Математический символ вне своего режима
В pdfLaTeX \alpha, написанная в тексте, вызывает ошибку «Missing $ inserted». В LuaLaTeX, движке этого курса, нет: греческая буква набирается без ошибки, но непредсказуемо. Если в документе ещё не набрано ни одной формулы, она исчезает; если хоть одна уже набрана, она появляется, взятая из математического шрифта и прижатая к следующему слову, потому что пробел после команды теряется.
Первое предложение теряет букву без видимого предупреждения; третье случайно её сохраняет, прижатой к слову «острый». Единственный след остаётся в журнале, и только от первого:
Missing character: There is no ^^K (U+000B) in font nullfont!Следовательно, в LuaLaTeX математический символ вне своего режима не вызывает сообщения об ошибке: его нужно всегда писать между ограничителями, а перед тем как счесть документ законченным, полезно поискать в журнале «Missing character».
Загрузка содержимого…