Содержание
Для публикации документа в печатном виде, как правило, используются специальные программы: текстовые процессоры.
Наиболее мощным для текстовым процессором на текущий момент является LaTeX (раздел “Поддержка кириллицы в TeX/LaTeX”). Это, по сути своей, является скорее решением, нежели программой. Сложности при начальном освоении, вызванные относительно высоким порогом вхождения, компенсируются удивительной гибкостью и лёгкостью решения сложных проблем.
В этом разделе я опишу несколько способов набора кириллических текстов в TeX и LaTeX. Есть несколько путей для достижения этой цели, которые отличаются в сложности установки и удобстве использования. Например, одна из возможностей — это начать работу без всякой предварительной настройки, используя Washington AMSTeX Cyrillic fonts. С другой стороны, вы можете установить пакет LaTeX, который легко настраивается на пользование кириллицей.
Вид набранного документа в значительной степени определяется шрифтом, который вы используете. Основные кириллические шрифты, которые можно использовать при наборе, описаны в разделе “Шрифты для TeX/LaTeX”.
Различных русификаций LaTeX написано много, многие их них писались в ту пору, когда и Бабеля-то никакого небыло, кроме разве что Исаака. Следует различать явление интернационализации и русификации.
Русификация основанная на результатах работы T2 team, подразумевающая использование пакетов inputenc, babel, и fontenc, это именно интернационализация, а не русификация. Подробнее об этом пакете написано в разделе “Пакет T2”. В раздел “Кириллизация teTeX” описывается именно этот способ и именно его я и советую для использования.
Пакет T2 необычайно ценен там, где надо набирать что-то русско-испанское. Этот пакет даже позволяет работать с utf-8! (Раздел “Стандарт UNICODE”). Практически речь идёт о поддержке юникода. Такое всеобъемлющее поведение не могло произойти "бесплатно". Пакеты T2 объективно имеют свои недостатки: русские буквы поражены в правах, их нельзя использовать как часть имён команд, нельзя использовать в метках и аргументах комады cite. То есть они не являются буквами с точки зрения LaTeX. Это активные символы. Такое их поведение может доставлять неудобства с точки зрения русскоязычного пользователя. Огромным преимуществом T2 интернационализации является наличие этого пакета фактически во всех более-менее современных[9] дистрибутивах LaTeX.
Русификация Шеня-Львовского этими недостатками не обладает. Она выглядит несколько старомодно, но она работает. И .toc файлы после неё читаемы. Эта русификация обладает существенным недостатком: поставить её это отдельная задача, и использовать Вы после её установки будете шрифты zcr а вовсе не cm-super (Раздел “cm-super”).
Тем не менее, в рамках существующих технологий можно пользоваться русификацией Александра Черепанова, которая объединила в себе все преимущества русификации Шеня-Львовского и русификации T2, но это не интернационализация, а русификация.
Пакет T2 был изначально был создан Werner Lemberg'ом и Владимиром Воловичем. Этот пакет развивается по сей день и, надеюсь, будет развиваться и дальше. В нем присутствуют некоторые недостатки, но в 99% случаев для отображения кириллицы через LaTeX его возможностей хватает. Современная русификация LaTeX основана именно на этом пакете. Пример русификации через T2 приведён в разделе “Кириллизация teTeX”.
Пакет `T2' можно найти на любом сайте CTAN в директории macros/latex/contrib/supported/t2, последняя версия лежит по адресу ftp.vsu.ru
Официально с 1-го декабря 1998 года дистрибутив LaTeX2e поддерживает шрифты со стандартными кириллическими кодировками (T2A, T2B, T2C, X2) и всевозможные входные кодовые таблицы (например, koi8-r, cp1251, cp866, iso8859-5)
BABEL начал поддерживать кодировку T2 с версии 3.6k (последнюю версию можно взять на любом сайте CTAN в директории CTAN:macros/latex/required/babel).
В файле `cyrguide.tex', который является частью дистрибутива LaTeX2e, описывается настройка и использование кириллицы при работе с LaTeX. Для полной поддержки кириллицы требуется иметь lh шрифты и соответствующую таблицу переносов.
Шрифты lh начиная с версии 3.20 (они наверняка есть в вашем дистрибутиве) поддерживают все нужные кодировки — смотрите раздел “lh”.
Русские таблицы переносов, поддерживающие кодировку T2 и оформленные как пакет 'ruhyphen' (он наверняка есть в вашем дистрибутиве), можно найти на любом CTAN архиве в директории language/hyphenation/ruhyphen или по адресу ftp.vsu.ru
В пакете T2, кроме непосредственно поддержки T2 кодировок, дополнительно присутствуют следующие полезные составляющие.
Пакет `mathtext', который позволяет использовать кириллицу в формулах без дополнительных ухищрений. Пакет может быть включён с опцией warn — в этом случае он сообщает обо всех случаях использования кириллических букв в формулах. Пакет следует загружать до загрузки пакета babel и/или fontenc.
Пакет `citehack.sty' переопределяет команды LaTeX таким образом, чтобы можно было использовать кириллические символы в качестве аргументов команд \cite и \bibitem — это временный "хак", и в следующей версии LaTeX нужда в нем отпадёт.
Скрипт `rubibtex' будет полезен, если вы используете bibtex.
Скрипт `rumkidx' будет полезен, если вы используете makeindex — к сожалению, невозможно (без напильника) сделать несколько индексов одновременно.
Директория `examples' содержит несколько примеров.
Пакет `cyrplain' — на случай, если вы захотите использовать Plain TeX.
Директория `cyrfinst' содержит поддержку кириллицы для пакета fontinst.
Директория `enc-maps' содержит различные входные кодировки, которые можно использовать при наборе файла LaTeX.
Одной из раздражающих особенностей T2-кириллизации является то, что при "прогонке" tex-файла через latex вывод предупреждений и ошибок ведётся на внутренней кодировке — то есть T2:
Артём Чуприн написал программу-фильтр — она перекодирует сообщения об ошибках от "\T2A/" до конца строки, остальное не трогает. Для практических нужд пока хватает. Программу можно найти по адресу http://www.inp.nsk.su/~baldin/misc/Latex.c
Так же можно использовать стандартный перекодировщики — например,
latex myfile.tex | t2filter
Если у вас старый дистрибутив teTeXа (версия ниже 1.0), то настоятельно рекомендую скачать последнюю версию этого программного продукта.
Для современных версий TeX'а (teTeX, fpTeX, MikTeX, Web2c TeX) русификация уже входит в дистрибутив.
Первое, что нужно сделать — это подключить русские переносы. Для этого нужно отредактировать файл language.dat, находящийся в директории $TEXMF/tex/generic/config/language.dat ($TEXMF обычно равно /usr/lib/texmf или /usr/share/texmf), добавив туда строки:
ruseng ruenhyph =russian =english
Остальные строки нужно закомментировать, либо удалить. После чего необходимо перегенерировать форматные файлы:
texconfig init
Описанное выше можно проделать через стандартную конфигурационную программу texconfig — выбрать меню hyphenation, далее меню latex и раскомментировать строку со словом russian. При выходе из программы форматные файлы автоматически перегенерируются.
Теперь можно работать с русским языком.
Добавьте в преамбулу документа (после слов \documentclass{})
\usepackage{mathtext} % если нужны русские буквы в формулах (не обязательно) \usepackage[T2A]{fontenc} % внутренняя T2A кодировка TeX \usepackage[koi8-r]{inputenc} % кодировка - можно использовать [cp866] [cp1251] \usepackage[russian]{babel} % включение переносов
После этого в документе можно использовать русские буквы.
Подробнее о пакете T2 смотрите раздел “Пакет T2”.
P.S. Это только один из вариантов, самый простой и универсальный, решения проблемы кириллизации. Есть и другие варианты и методы, которые на практике могут оказаться более удачными.
Чтобы добавить форматы из cyrplain набора в texconfig, следует выбрать меню FORMATS и добавить
cyrtxinf tex language.dat cyrtxinf.ini
для русского texinfo. Аналогично для cyrblue и cyramstx.
Чтобы добавить формат cyrtex (русский TeX), проще в каталоге web2c выполнить:
initex '\input cyrtex.ini \dump'
и бросить символическую ссылку с именем cyrtex на tex (например, в /usr/bin).
Чтобы переключится на русский в этих plain форматах, надо использовать команду
\language N
где N — номер, под которым числится русский язык в получившейся раскладке.
В этом разделе даны рецепты, как создать и/или модифицировать свой стиль, естественно, это относится к использованию кириллицы в LaTeX. Предложенные рецепты в основном опираются на пакет русификации T2 (См. раздел “Пакет T2”).
Для того, чтобы использовать кириллицу в формулах следует в преамбуле до задания inputenc, fontenc, babel добавить строчку:
\usepackage{mathtext}
Что бы сделать кириллические буквы в формулах наклонными, то нужно в преамбуле добавить строчку:
\DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it}
Для создания кириллических подписей в картинках следует воспользоваться пакетом psfrag. Подробнее про этот пакет описан в разделе “Пакет psfrag (eps)”.
Чтобы кириллицу можно было использовать с texinfo следует воспользоваться пакетом cyrplain (См. раздел “Кириллизация teTeX”).
Чтобы заставить окружение enumerate нумеровать списки \item по-русски. Следует воспользоваться пакетом babel:
Маленькие буквы:
\renewcommand{\theenumi}{\asbuk{enumi}}
Большие буквы:
\renewcommand{\theenumi}{\Asbuk{enumi}}
Эти команды делают нужную нам нумерацию на верхнем уровне вложенности. На следующем уровне идут enumii, enumiii, enumiv.
Для нумерации приложений русскими буквами (некоторые как раз любят латинские) следует написать:
\makeatletter \renewcommand\appendix{\par \setcounter{section}{0}% \setcounter{subsection}{0}% \gdef\thesection{\@Asbuk\c@section}} \makeatother
Чтобы правильно писать составные слова, типа, "коммерческо-посредническая". следует добавить следующие строчки (См. README от пакета ruhyphen):
\lccode`\-=`\- \defaulthyphenchar=127 % ... \usepackage[T2A]{fontenc}
Если нужно явно задать правило переноса для какого-то составного слова, то вставьте что-то вроде:
\begingroup \lccode`\==`\- % Пример: задать правила переноса для `коммерческо-посредническая': \hyphenation{ком-мер-че-ско=-по-сред-ни-че-ская} \endgroup
Этот пакет был создан для Американского Математического Общества, чтобы дать возможность создавать документы со ссылками на первоисточники на русском. Следовательно, авторы не очень "напрягались" при создании этого пакета, и шрифты в результате этого выглядят довольно неуклюже. Обычно этот пакет упоминается как "по настоящему плохой пакет кириллицы для TeX".
Однако мы обсудим его, так как он очень прост в использовании и не требует установки — этот набор содержится в большинстве дистрибутивов TeX.
Конечно, у вас не будете такой роскоши, как автоматическая расстановка дефисов, но всё равно...
Снабдите ваш документ следующими директивами:
\input cyracc.def \font\tencyr=wncyr10 \def\cyr{\tencyr\cyracc}
Теперь, чтобы напечатать символы кириллицы, вставьте \cyr для печати используйте соответствующий латинский символ или команду TeX. То есть строчные буквы русского алфавита соответствуют следующим сочетаниям:
a b v g d e \"e zh z i {\u i} k l m n o p r s t u f kh c ch sh shch {\cprime} y {\cdprime} \`e yu ya
Чрезвычайно сложно преобразовывать ваши русские тексты в такую кодировку, но вы можете автоматизировать этот процесс. Программа translit (раздел “Символьная перекодировка”) поддерживает опцию вывода TeX.