Русский язык: 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.tex

pdfLaTeX: классический путь

Если приходится работать через 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.
  • Языковой пакет даёт переносы, перевод служебных слов и правильные кавычки.
Проверьте себя
1. Какой путь настройки русского рекомендуется для XeLaTeX?
Afontenc[T2A] + inputenc
Bfontspec с системным шрифтом + polyglossia с русским языком
CНичего не нужно, всё работает само
DТолько babel без шрифта
2. За что отвечает кодировка T2A в pdfLaTeX?
AЗа формат страницы
BЭто кодировка шрифта, содержащая кириллические глифы
CЗа размер шрифта
DЗа нумерацию страниц
3. Что, помимо букв, даёт русский языковой пакет?
AТолько цвет текста
BПереносы, перевод служебных слов («Содержание», «Рис.») и правильные кавычки
CУскорение компиляции
DАвтоматическую библиографию