О разных русификациях (La)TeX

Последнее обновление 6 июня 2016 г.

В чем проблема?

При любой русификации LaTeX основными вопросами, конечно, будут наличие русских букв (вместе с правильной отработкой их кодировки) и разумно хороших русских переносов. Кроме того есть несколько часто встречающихся команд, которые (если их нет в самой русификации) придется писать самостоятельно: таковы, например, команды для некоторых видов кавычек, переопределение знаков \ge и \le или команды \today, команды \tg и \сtg, команды для использования русских букв в значениях счетчиков. (Проблему с \ge и \le, впрочем не решает ни одна из русификаций. Подробности смотрите в конце текста)

Дополнительные проблемы в ряде случаев ждут коллег, желающих порождать предметный указатель на русском языке или пользующихся, например, пакетом hyperref для вставки «кликабельных» гиперссылок.

Наконец, есть много специфических типографских тонкостей, принятых в русской традиции, пример — оформление абзацев и разделов.

Отметим, что файл PDF с поиском и copy+paste во всех русификациях, (кроме №1), обычно получается через PostScript без всяких хлопот. Навигации и bookmark'ов, правда, не будет.
При помощи pdflatex легко породить PDF c возможностью копирования и поиска русского текста, при этом можно также вставлять картинки в формате PDF, а также в некоторых (png, gif, jpg, etc…) распространённых графических форматах, хотя за деталями придётся следить.

Ниже имеется краткое описание использования 4-5 русификаций LaTeX — от более старых к более новым.

Тем, кто не уверен, какая русификация ему нужна, советуем воспользоваться вариантом №3 (babel+inputenc). Если же необходимо скомпилировать документ с большим количеством меток с русскими именами — проще всего заставить работать русификацию №2 А.Черепанова.

  1. rlatex Шеня--Львовского

    Использование — Желательно добавить в заголовок файла

    \usepackage{russcorr}
    

    компилировать командой rlatex.
    (работа с разными кодировками кириллицы требует менять параметры внутри файла rlatex.bat. Разумеется, и cp-866, и cp-1251, и koi8-r подключаются, например, можно создать несколько разных файлов типа rlatex, rlatexw и rlatexu).

    Пакет russcorr возможно придется доставлять. (В этой русификации MikTeXa он мог бы оказаться в директории C:\zcmiktex\zctexmf\tex\zclatex\, полезно почитать его описание)

    Достоинства
    Разумно полно описан в разумных учебниках LaTeX на русском языке.
    В распространяемом пакете корректно решено большинство проблем русификации.
    Стабильно и разумно одинаково работает на разных дистрибутивах с 1993 года по сю пору.

    Недостатки
    Необходимы неочевидные действия при установке — надо устанавливать специальные добавления.
    (Для MikTeX версии ≤2.4 эти действия более-менее описаны в книге Львовского, хотя в 2012 году требуются и ещё хитрости).
    Компиляция по схеме TeX → DVI → Postscript → PDF (в три разных действия, что некоторых раздражает) приводит к читаемому и разумному PDF, но обеспечить корректную работу с русским текстом шансов нет (ни поиск, ни копирование текста работать не будет!).
    Обработка при помощи pdflatex скорее не удастся (желающие могут разбираться с rpdflatex).
    Разрешаются команды с русскими буквами в именах.
    Ожидаемы сложности при использовании пакета hyperref.

    Нюансы
    Кавычки: \лк ёлочки\пк\ и \glqq лапки\grqq; знак номера — \номер.
    \ralph и \Ralph для счетчиков

    Советы
    Если у вас не установлена эта русификация, то, скорее всего, не надо пытаться её добавлять к имеющимся.
    Отсылая кому-то файл в этой русификации, укажите адресату на использование русских букв в именах команд и меток (или НЕиспользование).
    Если вы используете эту русификацию, то вам предстоят сложности с файлами, подготовленными в русификациях №3 и, особенно, №4.

  2. russlh Черепанова

    ИспользованиеПервой строчкой файла добавить

    %& --translate-file=win2t2
    
    (или koi2t2, или alt2t2 — в зависимости от используемой кодировки, при этом надо проверить доступность соответствующих файлов с расширением tcx); в заголовок добавить
    \usepackage{russlh}
    и, по желанию,
    \usepackage{russcorr}
    (полезно следить за кодировкой кириллицы в этом файле)
    компилировать командой latex или pdflatex.

    Необходимые файлы можно скачать со страницы free books.

    Достоинства
    Можно без особых усилий использовать с любым дистрибутивом.
    Русские буквы можно использовать в именах команд, меток и т.п.
    Русские буквы разумным образом записываются в файлы типа .aux, .toc, .idx и т.п.

    Недостатки
    Необходимо использовать нестандартный пакет.
    Кодировка utf-8 не поддерживается.
    Возможны труднонаходимые ошибки с русскими буквами внутри математических формул.
    Не полностью работает пакет hyperref (по крайней мере, проблемы с bookmark'ами гарантированы).

    Нюансы
    \tg и \сtg, кавычки и русские буквы в счётчиках определяются пакетом russcorr и не отличаются от описанного выше.

    Для работы переносов в MikTeX'е может потребоваться запустить Settings и поставить галочку напротив `russian` во вкладке `hyphenation`, после чего обновить форматные файлы.

    Советы
    Используйте эту русификацию, если вам надо работать с файлом, где обильно использованы русские буквы в именах команд и-или меток. В иных случаях специального выигрыша она скорее не приносит.
    Отсылая кому-то файл в этой русификации, перешлите адресату те файлы пакета, которые вы используете (russlh.sty, *2t2.tcx, russcorr.sty)

  3. babel+inputenc

    Использование — В заголовок файла добавить

    \usepackage[utf8]{inputenc}
    \usepackage[russian]{babel}
    
    компилировать командой pdflatex или latex.

    Достоинства
    Стандартный способ, работающий out-of-the-box с любым из ныне распространённых дистрибутивов.
    Можно пользоваться почти любой русской кодировкой (нужно только аккуратно её указать пакету inputenc).
    Совместимо со всеми стандартными пакетами (в т.ч. с hyperref).

    Недостатки
    Русские буквы становятся активными символами (и их нельзя использовать в названиях меток, команд и т.п.).
    Русские буквы в файлах типа .aux, .toc, .idx и т.п. становятся нечитаемы (по крайней мере без отдельных перекодирующих программ).

    Нюансы
    \tg и \сtg уже определены, \today разумно переопределена.
    \asbuk и \Asbuk печатают русскими буквами значения счетчиков
    Кавычки: <<ёлочки>> и ,,лапки'' (или "<ёлочки">)
    (использование таких двухсимвольных сокращений вместо команд — умеренная удача, но тут именно так)
    Знак номер \No.
    Знак дюйма " имеет специальный смысл! (так что люди, использующие его по ошибке вместо кавычек, могут быть удивлены).

    Для работы переносов в MikTeX'е может потребоваться запустить Settings и поставить галочку напротив `russian` во вкладке `hyphenation`, после чего обновить форматные файлы.

    Советы
    Если вы ставили любой стандартный дистрибутив, то эта русификация у вас уже есть — скорее всего именно её вам и будет проще всего использовать.
    Если вам надо работать с файлом, где обильно использованы русские буквы в именах команд и-или меток, воспользуйтесь лучше русификацией А.Черепанова (№2).

    Для знатоков отметим, что проблем с читаемостью русских букв в файлах типа .aux, .toc, .idx можно избежать,
    если НЕ использовать пакет inputenc, а вместо этого первой строчкой файла добавить

    %& --translate-file=win2t2
    
    (или koi2t2, или alt2t2 — в зависимости от используемой кодировки),
    при этом надо проверить доступность одноименных файлов с расширением tcx (при необходимости их можно взять из №2, например).

  4. xelatex

    Использование — В заголовок файла добавить

    \usepackage{polyglossia}
    \setmainlanguage{russian}
    \newfontfamily\russianfont{PT Sans}
    
    (последняя команда варьируется в зависимости от желаемого шрифта); тем, кто привык к babel, стоит добавить еще
    \setkeys{russian}{babelshorthands=true}
    
    компилировать командой xelatex.

    Достоинства
    Работает out-of-the-box с достаточно современными дистрибутивами.
    Русские буквы можно использовать в именах меток и т.п.
    Можно использовать любой OpenType или TrueType шрифт, имеющийся в системе.

    Недостатки
    Работает только с кодировкой utf8.
    Активно разрабатывается и, видимо, не вполне еще устоялся (очень полезно следить за свежестью дистрибутива!).
    Отсутствует возможность компиляции в PostScript (соответственно, нельзя использовать средства типа ps2ps).
    Со «старыми» MiKTeX'ами проще застрелиться.
    Также xelatex нельзя использовать внутри MetaPost'а — тут нужен обычный latex.

    Нюансы
    Кавычки «ёлочки» и „лапки”, натурально — Unicode так unicode!

    \tg и \сtg???
    команды для использования русских букв для значений счетчиков???

    Что еще почитать

    страницу практики в июне 2013 --- там список книг