Приложение Е. LaTeX в России
Пример: использованная в книге русификация
Для обработки русских текстов вместо стандартной команды \latex используется специальная команда \rlatex. При этом тексты записываются в кодировке cp866 для DOS и Windows и в кодировке koi8-r для UNIX-подобных систем. Подключение дополнительных пакетов не обязательно: и без них русские буквы можно использовать наравне с латинскими (в том числе в названиях команд, счетчиков, меток и др.), переносы учитывают таблицу русских переносов, можно использовать команды \лк, \пк для кавычек и \номер для знака номера. Буква ё является одной из равноправных букв русского алфавита.
Само по себе использование команды \rlatex не меняет оформления текстов (и для английских текстов она дает почти тот же результат, что и команда \latex ). Но можно обычным способом (с помощью \usepackage ) подключить пакет russcorr . Это приведет к следующим изменениям:
- по умолчанию устанавливается режим \frenchspacing, а значение параметра \righthyphenmin полагается равным ;
- определены команды \tg, \ctg, \cosec, \arctg, \sh, \ch, \th, \cth, дающие принятые в России названия этих функций;
- становятся определены команды \varkappa, \eps и \vphi, дающие принятые в русских текстах начертания греческих букв ;
- команды \leqslant и \geqslant дают (даже без подключения пакета \pkg{amssymb}) знаки неравенств и , принятые в русских текстах;
- переведены на русский заголовки "Оглавление", "Рис.", "Часть", "Список рисунков", "Список таблиц", "Литература", "Предметный указатель", "Таблица", "Аннотация", "Глава", "Приложение", "Доказательство" (последний заголовок нужен при использовании пакета amsthm);
- в заголовках разделов документа после номера раздела ставится точка (чего обычный LaTeX не делает); можно заменить эту точку на что-то другое, переопределив команды \postchapter, \postsection и т.п.; кроме того, имеются команды \presection, \presubsection и т.д. которые изначально ничего не добавляют перед номером раздела (подраздела и т.д.), но также могут быть переопределены (например, можно получить знак параграфа перед номерами разделов, если переопределить \presection как \S );
- точки ставятся также после названий рисунков и таблиц (вместо двоеточий) и после номеров теорем;
- имеются команды \ralph и \Ralph, являющиеся русскими аналогами команд \alph и \Alph ; при этом буквы е, й, ъ, ы и ь пропускаются;
- оформление перечней в окружении {enumerate} меняется: элементы верхнего уровня нумеруются цифрами со скобками, а не с точками, на втором уровне используются русские буквы вместо латинских, на третьем уровне элементы вообще не нумеруются, а отмечаются тире; четыре уровня вложенности не разрешаются;
- добавляется окружение {rlist}, которое нумерует пункты русскими буквами по алфавиту (строчными; чтобы получить прописные, надо использовать необязательный аргумент [u] );
- приложения (при использовании команды \appendix ) нумеруются прописными русскими буквами вместо латинских;
- изменено поведение команды \cleardoublepage: оставляемая ей пустая четная страница теперь совсем пуста (не содержит колонтитулов, номера страницы и т.п.).
- команды \glqq и \grqq задают кавычки - лапки
- при использовании стилевой опции longtoc в оглавление помещаются не сокращенные, а полные названия разделов;
- при использовании стилевой опции indentheadings первые абзацы и заголовки разделов печатаются с абзацным отступом;
- При использовании стилевой опции yo слова с буквой е получают возможность нормально переноситься, даже если в исходном тексте эта буква задана как \"е'.
Наконец, в состав русифицирующего комплекта входит специальный вариант программы makeindex, используемой при подготовке предметного указателя; этот вариант учитывает порядок русских букв при сортировке.
Все необходимые файлы для установки указанного варианта русификации (дополнительные файлы для UNIX, комплект TeX (конкретно — MiKTeX) плюс GhostScript и GSView для Windows, комплект emTeX для DOS) имеются на прилагаемом к книге компакт-диске (программы GSView там может не быть по лицензионным причинам, и ее придется списывать из Интернета, а также доступны по ftp. См. приложение Ж.
Пример: babel для русского языка
В некоторые установки системы TeX (в частности, в некоторых русских версиях Linux) включены средства для обработки русских текстов с помощью пакета babel. (Говоря TeX нически, нужно, чтобы (1) сам пакет был установлен в вашей TeX-системе и (2) таблица переносов для русского языка была включена в формат.) Чтобы выяснить, так ли это, создайте файл \tstbabel.tex следующего содержания:
\documentclass{article} \usepackage[russian]{babel} \begin{document} Test text. \end{document}
и обработайте его командой latex tstbabel.tex. Если обработка файла прошла успешно (TeX не пожаловался на отсутствие пакета babel или неизвестную стилевую опцию russian ), это значит, что пакет babel с русскими дополнениями установлен. Теперь надо проверить наличие русской таблицы переносов; для этого загляните в получившийся файл tstbabel.log. Его начало должно выглядеть примерно так:
This is TeX, Version 3.14159 (Web2C 7.3.1) **tstbabel.tex (tstbabel.tex LaTeX2e <2001/06/01> Babel <v3.7h> and hyphenation patterns for english, french, german, ngerman, russian, nohyphenation, loaded.
Если в списке языков (он идет после слов "hyphenation patterns for") указан русский (russian), то таблица переносов для русского языка включена в формат и можно набирать русские тексты с помощью babel. (Если она в формат не включена, то можно попробовать это исправить. Необходимые действия зависит от версии используемой TeX-системы; для этого даже есть специальные " утилиты", например, программа MiKTeX Options в системе MiKTeX или программа texconfig в системе teTeX.)
Чтобы использовать babel с русскими текстами, необходимо включить в преамбулу строки
\usepackage[...]{inputenc} \usepackage[russian]{babel}
В квадратных скобках вместо {...} нужно указать кодировку, в которой будет набираться русский текст: например, cp866 (DOS-кодировка), cp1251 (Windows-кодировка) или koi8-r (кодировка koi8-r). Эти строки должны находиться в преамбуле до вызова каких-либо пакетов, использующих русские буквы. После этого в тексте можно набирать русские буквы в указанной кодировке. Важное ограничение: русские буквы нельзя использовать в именах команд или меток!
Пакет babel с опцией russian определяет множество командных последовательностей и лигатур для набора различных символов: например, с помощью "<">' или '"','"' можно получить кавычки-" елочки", '---' дает тире. Кроме того, переопределяются команды для набора заголовков, списка литературы и проч. (например, команда \chapter теперь будет печатать слово "Глава", а не " Chapter" — ср. предыдущий раздел). Более подробную информацию можно найти в документации.
Использование пакета babel несовместимо с описанной выше (и использованной в книге) русификацией LaTeX'а, а также с некоторыми другими пакетами — не пытайтесь их соединить! Кроме того, вам могут потребоваться некоторые специальные средства для подготовки предметных указателей, чтения сообщений об ошибках и др.
Пример: babel для французского языка
Предположим, что вам надо подготовить с помощью LaTeX'а текст на французском языке. Тогда файл надо начать так:
documentclass[12pt,a4paper]{article} usepackage[T1]{fontenc} usepackage[french]{babel} (другие команды \usepackage, если нужно)
После этого в тексте будут при необходимости делаться переносы по французским правилам, в том числе и в словах, включающих буквы с диакритическими знаками (" аксанами", как сказал бы любитель французского), невзирая на то, что эти буквы задаются в тексте с помощью команд \', \^ и т.п. Стандартные заголовки (" глава", "список литературы" и т.п.) и дата (проставляемая автоматически или с помощью команды \today ) будут печататься по-французски. Более того, в тексте будут автоматически учитываться различные французские полиграфические тонкости (например, некоторые знаки препинания будут печататься не вплотную к сл" и " (в шрифтах, используемых пакетом bову, а с небольшим отступом, как это во Франции и принято). Кавычки-" елочки", принятые во французских текстах, можно при этом набирать как abel, это лигатуры). Для некоторых других типично французских полиграфических эффектов предусмотрены специальные команды, с которыми можно ознакомиться в документации к пакету.
Кроме французского, аналогичным образом можно обойтись с немецким (вместо french надо написать german ), итальянским и многими другими европейскими языками; впрочем, надо иметь в виду, что далеко не для всех из них будут доступны автоматические переносы (см. предыдущий раздел по поводу того, как выяснить, включена ли в формат нужная вам таблица переносов и как можно попытаться ее добавить). Если вы не уверены, что таблица переносов есть, то лучше вообще запретить переносы, сказав в преамбуле \hyphenpenalty=10000: худшее, что может случиться при использования русского babel 'а без русских переносов, — это то, что в русских словах не будет делаться переносов, а вот при обработке, скажем, французского текста без французской таблицы переносов французские слова переноситься будут, но по английским правилам, что, надо полагать, хуже.