В этом разделе я опишу несколько способов набора кириллических текстов в TeX и LaTeX. Есть несколько путей для достижения этой цели, которые отличаются в сложности установки и удобстве использования. Например, одна из возможностей -- это начать работу без всякой предварительной настройки, используя Washington AMSTeX Cyrillic fonts. С другой стороны, вы можете установить пакет LaTeX, который легко настраивается на пользование кириллицей.
Вид набранного документа в значительной степени определяется шрифтом, который вы используете. Основные кириллические шрифты, которые можно использовать при наборе, описаны в разделе Шрифты для TeX/LaTeX.
Обратите внимание, что доступны две версии LaTeX, одна из них -- 2.09 -- старая версия, в то время как 2e -- новая (выпуск pre-3.0). Если вы используете LaTeX 2.09, то как можно быстрее переходите на 2e. Последний сохраняет совместимость со старой версией, но имеет намного больше возможностей.
Последние версии дистрибутивов LaTeX (например,
teTeX версии старше чем 1.0) включают в себя русификацию out of
the box. Признаком русифицированности LaTeX'а out-of-the-box является наличие
директории /$TEXMF/tex/latex/t2
, $TEXMF
обычно равно
/usr/lib/texmf
или /usr/share/texmf
. Русификация, как
нетрудно догадаться, -- T2 (См. раздел
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 кодировок, дополнительно присутствуют следующие полезные составляющие.
babel
и/или fontenc
.
\cite
и \bibitem
-- это временный "хак", и в следующей
версии LaTeX нужда в нем отпадёт.
bibtex
.
makeindex
-- к сожалению, невозможно (без напильника) сделать несколько индексов
одновременно.
fontinst
.
Одной из раздражающих особенностей T2-кириллизации является то, что при
"прогонке" tex-файла через latex
вывод предупреждений и ошибок
ведётся на внутренней кодировке -- то есть T2:
Артём Чуприн написал программу-фильтр -- она перекодирует сообщения об ошибках от "\T2A/" до конца строки, остальное не трогает. Для практических нужд пока хватает. Программу можно найти по адресу http://www.inp.nsk.su/~baldin/misc/Latex.c
Так же можно использовать стандартный перекодировщики -- например,
CTAN:macros/latex/contrib/supported/t2/etc/t2filter.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.
Чтобы кириллицу можно было использовать с texinfo следует воспользоваться пакетом cyrplain (См. раздел Русификация teTeX).
Что бы можно было использовать кириллицу с bibtex'ом -- то есть иметь возможность написать что-то вроде:
\bibitem{Иванов1000}Следует воспользоваться пакетом citehack -- добавить в преамбуле:
\usepackage{citehack}
Замечание: По умолчанию кириллицу нельзя использовать в качестве ИНДЕКСА
(т.е. внутреннего объекта, который никак не отображается в свёрстанном
документе). В необязательных аргументах \cite
и \bibitem
(которые отображаются в документе) использовать кириллицу можно. Пакет
citehack позволяет использовать 8-битные символы в качестве индекса.
Чтобы заставить окружение enumerate
нумеровать списки \item
по-русски. Следует воспользоваться пакетом babel:
\renewcommand{\theenumi}{\asbuk{enumi}}
\renewcommand{\theenumi}{\Asbuk{enumi}}
Эти команды делают нужную нам нумерацию на верхнем уровне вложенности. Hа следующем уровне идут enumii, enumiii, enumiv.
Для нумерации приложений русскими буквами (некоторые как раз любят латинские) следует написать:
\makeatletter \renewcommand\appendix{\par \setcounter{section}{0}% \setcounter{subsection}{0}% \gdef\thesection{\@Asbuk\c@section}} \makeatother
Чтобы символы бинарных операций ("+", "-", "=") в LaTeX, набранные в строчных формулах, при переносе на другую строку, дублировались например:
a + b = = c
можно воспользоваться такими командами в преамбуле:
\renewcommand\ne{\mathchar"3236\mathchar"303D\nobreak \discretionary{}{\usefont {OMS}{cmsy}{m}{n}\char"36\usefont {OT1}{cmr}{m}{n}\char"3D}{}} \begingroup \catcode`\+\active\gdef+{\mathchar8235\nobreak\discretionary{}% {\usefont{OT1}{cmr}{m}{n}\char43}{}} \catcode`\-\active\gdef-{\mathchar8704\nobreak\discretionary{}% {\usefont{OMS}{cmsy}{m}{n}\char0}{}} \catcode`\=\active\gdef={\mathchar12349\nobreak\discretionary{}% {\usefont{OT1}{cmr}{m}{n}\char61}{}} \endgroup \def\cdot{\mathchar8705\nobreak\discretionary{}% {\usefont{OMS}{cmsy}{m}{n}\char1}{}} \def\times{\mathchar8706\nobreak\discretionary{}% {\usefont{OMS}{cmsy}{m}{n}\char2}{}} \mathcode`\==32768 \mathcode`\+=32768 \mathcode`\-=32768
Дополнение: Вероятно, эти команды будут включены в планируемый
пакет-дополнение к babel
(добавляющий некоторые особенности русскоязычного
набора). Кто заметит глюки в вышеприведённых командах -- дайте знать Владимиру
Воловичу vvv@vvv.vsu.ru
или 2:5025/2.72
.
Чтобы правильно писать составные слова, типа, "коммерческо-посредническая".
следует добавить следующие строчки (См. README
от пакета ruhyphen):
\lccode`\-=`\- \defaulthyphenchar=127 % ... \usepackage[T2A]{fontenc}
Если нужно явно задать правило переноса для какого-то составного слова, то вставьте что-то вроде:
\begingroup \lccode`\==`\- % Пример: задать правила переноса для `коммерческо-посредническая': \hyphenation{ком-мер-че-ско=-по-сред-ни-че-ская} \endgroup
В русской литературе, в отличии от английской, принято, чтобы первый параграф раздела имел точно такой же отступ, как и везде. Для этого следует воспользоваться пакетом indentfirst.
\usepackage{indentfirst}
Этот пакет был создан для Американского Математического Общества, чтобы дать
возможность создавать документы со ссылками на первоисточники на русском.
Следовательно, авторы не очень "напрягались" при создании этого пакета, и
шрифты в результате этого выглядят довольно неуклюже. Обычно этот пакет
упоминается как "по настоящему плохой пакет кириллицы для TeX"
.
Однако мы обсудим его, так как он очень прост в использовании и не требует установки -- этот набор содержится в большинстве дистрибутивов TeX.
Конечно, у вас не будете такой роскоши, как автоматическая расстановка дефисов, но всё равно...
\input cyracc.def \font\tencyr=wncyr10 \def\cyr{\tencyr\cyracc}
\cyrдля печати используйте соответствующий латинский символ или команду TeX. То есть строчные буквы русского алфавита соответствуют следующим сочетаниям:
a b v g d 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.
Возьмите уже русифицированную версию OpenOffice, например с ftp AltLinux
Лучше всего воспользоваться программным пакетом OpenOffice (раздел OpenOffice)
Для того, чтобы через nroff
можно было "пропустить" символы
кириллицы, надо использовать его с ключом -Tlatin1. Пропишите где-нибудь
в стартовом скрипте (если у вас bash
, то в .bashrc
)
alias nroff='nroff -Tlatin1'
Просмотр файлов в mc запускается через nroff (по крайней мере, в mc, идущем со
Slackware'96). В файле /usr/lib/mc/mc.ext следует в строке вызова
nroff'а
изменить параметр вызова с -Tascii на -Tlatin1.