Глава 8. Текстовые процессоры

Содержание

Поддержка кириллицы в TeX/LaTeX
Пакет T2
Кириллизация teTeX
Стиль
Работа с Washington Cyrillic
bibtex
OpenOffice
StarOffice
nroff

Для публикации документа в печатном виде, как правило, используются специальные программы: текстовые процессоры.

Наиболее мощным для текстовым процессором на текущий момент является LaTeX (раздел “Поддержка кириллицы в TeX/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

Пакет 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 кодировок, дополнительно присутствуют следующие полезные составляющие.

  1. Пакет `mathtext', который позволяет использовать кириллицу в формулах без дополнительных ухищрений. Пакет может быть включён с опцией warn — в этом случае он сообщает обо всех случаях использования кириллических букв в формулах. Пакет следует загружать до загрузки пакета babel и/или fontenc.

  2. Пакет `citehack.sty' переопределяет команды LaTeX таким образом, чтобы можно было использовать кириллические символы в качестве аргументов команд \cite и \bibitem — это временный "хак", и в следующей версии LaTeX нужда в нем отпадёт.

  3. Скрипт `rubibtex' будет полезен, если вы используете bibtex.

  4. Скрипт `rumkidx' будет полезен, если вы используете makeindex — к сожалению, невозможно (без напильника) сделать несколько индексов одновременно.

  5. Директория `examples' содержит несколько примеров.

  6. Пакет `cyrplain' — на случай, если вы захотите использовать Plain TeX.

  7. Директория `cyrfinst' содержит поддержку кириллицы для пакета fontinst.

  8. Директория `enc-maps' содержит различные входные кодировки, которые можно использовать при наборе файла LaTeX.

Одной из раздражающих особенностей T2-кириллизации является то, что при "прогонке"  tex-файла через latex вывод предупреждений и ошибок ведётся на внутренней кодировке — то есть T2:

Артём Чуприн написал программу-фильтр — она перекодирует сообщения об ошибках от "\T2A/"  до конца строки, остальное не трогает. Для практических нужд пока хватает. Программу можно найти по адресу http://www.inp.nsk.su/~baldin/misc/Latex.c

Так же можно использовать стандартный перекодировщики — например,

   latex myfile.tex | t2filter

Кириллизация teTeX

Если у вас старый дистрибутив 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

Чтобы кириллицу можно было использовать с 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

Отступ для первого параграфа раздела

В русской литературе, в отличии от английской, принято, чтобы первый параграф раздела имел точно такой же отступ, как и везде. Для этого следует воспользоваться пакетом indentfirst.

\usepackage{indentfirst}

Работа с Washington Cyrillic

Этот пакет был создан для Американского Математического Общества, чтобы дать возможность создавать документы со ссылками на первоисточники на русском. Следовательно, авторы не очень "напрягались"  при создании этого пакета, и шрифты в результате этого выглядят довольно неуклюже. Обычно этот пакет упоминается как "по настоящему плохой пакет кириллицы для 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.



[9] Начиная с 1998 года.