Математические шрифты и операторы
Урок про специальные математические алфавиты и про то, как вставлять обычный текст внутрь формулы.
Математические алфавиты (
\mathbb,\mathcal,\mathrm) — особые начертания для множеств, операторов и обозначений, у которых есть устоявшийся смысл.
В математике начертание буквы несёт смысл: $\mathbb{R}$ — это множество вещественных чисел, а просто $R$ — какая-то переменная. LaTeX даёт алфавиты для каждой роли.
Главные алфавиты
| Команда | Вид | Типичное применение |
\mathbb{R} | $\mathbb{R}$ (ажурные) | числовые множества: $\mathbb{N}, \mathbb{Z}, \mathbb{Q}, \mathbb{R}, \mathbb{C}$ |
\mathcal{L} | $\mathcal{L}$ (каллиграфия) | преобразования, категории: $\mathcal{F}, \mathcal{L}$ |
\mathrm{d} | $\mathrm{d}$ (прямой) | дифференциал $\mathrm{d}x$, обозначения из нескольких букв |
\mathbf{v} | $\mathbf{v}$ (жирный) | векторы и матрицы |
\mathfrak{g} | $\mathfrak{g}$ (готический) | алгебры Ли, идеалы |
Множество вещественных чисел и непрерывная функция на отрезке:
f \colon \mathbb{R} \to \mathbb{R}, \quad \mathcal{C}[0, 1]$$f \colon \mathbb{R} \to \mathbb{R}, \quad \mathcal{C}[0, 1]$$
Прямой шрифт для многобуквенных обозначений
Если переменная состоит из нескольких букв (а не произведения), её ставят прямым шрифтом, иначе LaTeX наберёт курсивом как произведение:
v_{\mathrm{max}} \quad E_{\mathrm{kin}} \quad \mathrm{Re}, \mathrm{Im}$$v_{\mathrm{max}} \quad E_{\mathrm{kin}} \quad \mathrm{Re}, \; \mathrm{Im}$$
Текст внутри формулы
Чтобы вставить в формулу обычные слова (с пробелами и прямым шрифтом), используют \text из amsmath:
x > 0 \quad \text{для всех } x \in S$$x \gt 0 \quad \text{для всех } x \in S$$
Без \text слова «для всех» набрались бы как произведение букв-переменных в курсиве и без пробелов — нечитаемо.
Свои операторы — напоминание
Имена операторов (sin, det, и ваши собственные) набираются прямым шрифтом через готовые команды или \operatorname:
\det(A) \quad \gcd(a, b) \quad \operatorname{sign}(x)$$\det(A) \quad \gcd(a, b) \quad \operatorname{sign}(x)$$
Как работает под капотом
Каждый математический алфавит — это отдельный шрифтовой набор, на который команда переключает свой аргумент. \mathbb и \mathfrak требуют пакета amssymb (или amsfonts), потому что ажурные и готические глифы лежат именно там. \text временно возвращает текстовый режим внутри математики: восстанавливаются пробелы и прямой шрифт основного текста. Разница между $R$ (курсив-переменная) и $\mathbb{R}$ (множество) — это разница глифов из разных наборов, и она семантически значима.
amssymb, amsfonts и что откуда
Стоит чётко понимать, какой пакет за какой алфавит отвечает, иначе ошибка «Undefined control sequence» будет преследовать вас регулярно. Сам по себе LaTeX знает \mathrm, \mathbf, \mathit и \mathcal — для них дополнительные пакеты не нужны. А вот ажурные буквы \mathbb и готические \mathfrak живут в наборе AMS: их подключает \usepackage{amssymb}, который, в свою очередь, опирается на amsfonts с самими описаниями шрифтов. На практике почти всегда пишут одну строку \usepackage{amssymb}, и этого достаточно. Если же ажурных букв нужно больше, чем заглавная латиница, или нужен ажурный строчный шрифт, подключают отдельный пакет bbold или dsfont с командой \mathds — стандартный \mathbb покрывает только прописные буквы.
Жирная математика: mathbf против boldsymbol
Команда \mathbf делает аргумент жирным, но при этом ставит его прямым шрифтом и теряет наклон — для латинских векторов это часто как раз то, что нужно. Однако \mathbf не действует на греческие буквы и на математические символы вроде знака суммы: написать жирную «бету» через него не получится. Для таких случаев есть \boldsymbol из пакета amsmath (точнее, подгружаемого им amsbsy): он делает жирным и сохраняет курсивный наклон, поэтому годится для жирных греческих букв, операторов и отдельных символов. Запомните разницу так: \mathbf — жирный и прямой, обычно для буквенных обозначений векторов; \boldsymbol — жирный с сохранением наклона, для всего остального, что \mathbf не берёт.
DeclareMathOperator и место объявления
Когда вы пишете свой оператор несколько раз — например, tr для следа матрицы или rank для ранга, — каждый раз вызывать \operatorname неудобно. Правильнее один раз объявить команду через \DeclareMathOperator{\tr}{tr}, и тогда \tr всюду будет печататься прямым шрифтом с корректными отступами вокруг. Ключевой момент: \DeclareMathOperator можно ставить только в преамбуле, до \begin{document}, а не в теле текста — это объявление, а не команда исполнения. Если оператору нужны нижние пределы, как у lim или max (чтобы условие уходило под знак в выключных формулах), используют звёздочку: \DeclareMathOperator*{\argmax}{arg\,max}. Разовый, нигде больше не встречающийся оператор проще набрать прямо в формуле через \operatorname и не засорять преамбулу.
Частые ошибки
\mathbb/\mathfrakбез amssymb — ошибка «Undefined control sequence».- Многобуквенные обозначения курсивом — выглядят как произведение; ставьте
\mathrm. - Русский текст в формуле без
\text— каша из курсивных букв без пробелов.
Итоги
\mathbb— числовые множества,\mathcal— каллиграфия,\mathrm— прямой шрифт,\mathbf— векторы.\text{...}вставляет обычные слова с пробелами внутрь формулы.- Имена операторов — прямым шрифтом через команды или
\operatorname.