Русский язык: babel и polyglossia
Урок настраивает LaTeX на русский язык: кодировка, шрифты, переносы и кавычки.
babel и polyglossia — пакеты языковой поддержки: они включают русские переносы, правильные кавычки и переводят служебные слова («Рис.», «Таблица», «Содержание»).
«Из коробки» LaTeX ориентирован на английский. Чтобы корректно набрать русский текст — с переносами, «Содержанием» вместо «Contents» и кавычками-«ёлочками» — нужна языковая настройка. Способ зависит от движка.
XeLaTeX/LuaLaTeX: рекомендуемый путь
Современные движки понимают UTF-8 нативно, остаётся подключить шрифт с кириллицей и языковой пакет polyglossia:
\documentclass{article}
\usepackage{fontspec} % системные шрифты
\setmainfont{Times New Roman} % шрифт с кириллицей
\usepackage{polyglossia}
\setdefaultlanguage{russian}
\setotherlanguage{english}
\begin{document}
Привет, мир! Это русский текст с правильными переносами.
\end{document}Собирать такой файл нужно командой xelatex или lualatex (не pdflatex). Это самый надёжный способ для русских работ.
xelatex thesis.texpdfLaTeX: классический путь
Если приходится работать через pdfLaTeX, кириллицу включают связкой пакетов кодировки и шрифтов:
\usepackage[T2A]{fontenc} % кодировка шрифта с кириллицей
\usepackage[utf8]{inputenc} % исходник в UTF-8
\usepackage[russian]{babel} % русский языкКодировка шрифта T2A — ключевая: именно она содержит кириллические глифы. Без fontenc[T2A] русские буквы либо не наберутся, либо переносы будут неправильными.
Что даёт языковой пакет
- Правильные русские переносы слов.
- Перевод служебных слов: «Содержание», «Рис.», «Таблица», «Литература».
- Русские кавычки-«ёлочки» (часто через команду
\enquoteизcsquotes). - Корректное оформление дат и нумерации по русским правилам.
Как работает под капотом
Переносы в LaTeX делаются по словарю шаблонов для каждого языка; babel/polyglossia загружают русский набор шаблонов и переключают на него движок. Перевод служебных слов — это переопределение макросов вроде \contentsname и \figurename на русские строки. В pdfLaTeX буква «ё» и другие глифы берутся из шрифта кодировки T2A, тогда как XeLaTeX просто запрашивает их у системного OpenType-шрифта по коду Unicode — поэтому современный путь проще и надёжнее.
T2A против OT1 и проблема переносов
Стоит понять, почему кодировка шрифта так важна именно для русского. По умолчанию pdfLaTeX использует старую 7-битную кодировку OT1, в которой кириллических глифов попросту нет, а у многих букв нет даже доступа к акцентам. Когда вы подключаете \usepackage[T2A]{fontenc}, движок переключается на 8-битную кодировку с полным кириллическим набором, и — что не менее существенно — начинает применять русские шаблоны переносов к словам, набранным «настоящими» буквами, а не составленными из акцентов. Без T2A слова из кириллицы внутри движка выглядят как последовательность активных символов, и алгоритм переноса их просто пропускает: вы получаете либо «лесенку» из непереносимых слов с дырами между ними, либо вылезающие за поле строки. Поэтому связку fontenc[T2A] + inputenc[utf8] + babel[russian] подключают втроём и именно в таком порядке — кодировка ввода, кодировка шрифта и язык.
Кавычки: csquotes и вложенность
Русская типографика требует «ёлочек» снаружи и „лапок“ внутри при вложенной цитате. Набирать их вручную символами Unicode рискованно: легко перепутать открывающую и закрывающую, а при смене языка правила меняются. Аккуратный способ — пакет csquotes и команда \enquote{...}: она сама ставит кавычки по правилам текущего языка babel и корректно обрабатывает вложенность, когда вы пишете \enquote{внешняя \enquote{внутренняя} цитата}. Вложенный вызов автоматически переключается с «ёлочек» на „лапки“ и обратно — вам не нужно помнить, какой уровень кавычек идёт следующим. Это особенно ценно в работах, где цитаты тянутся через несколько уровней, и в двуязычных текстах, где русский фрагмент должен брать русские кавычки, а английская вставка — английские.
Микротипографика и мелочи качества
Когда основная настройка работает, имеет смысл добавить пакет microtype: он включает протрузию пунктуации за край набора и едва заметное растяжение/сжатие шрифта, благодаря чему правый край абзаца становится ровнее, а переполнений строк — заметно меньше. На русском тексте это особенно полезно, потому что длинные слова чаще упираются в поле. Из других полезных мелочей: неразрывный пробел ~ между инициалами и фамилией и перед единицами измерения, чтобы они не отрывались при переносе; команда \textnumero для знака «№» и тире нужного начертания. Все эти штрихи отличают аккуратно набранную русскую работу от формально скомпилированной.
Частые ошибки
- pdfLaTeX без
fontenc[T2A]— кракозябры или сломанные переносы. - Компилировать polyglossia-файл через pdfLaTeX — он рассчитан на Xe/Lua.
- Исходник сохранён не в UTF-8 — русский текст «поедет». Проверьте кодировку файла.
Итоги
- Лучший путь для русского — XeLaTeX/LuaLaTeX + fontspec + polyglossia.
- Классический путь — pdfLaTeX +
fontenc[T2A]+inputenc[utf8]+ babel. - Языковой пакет даёт переносы, перевод служебных слов и правильные кавычки.