М.Гуссенс, Ф.Миттельбах, А.Самарин ПУТЕВОДИТЕЛЬ ПО ПАКЕТУ LATEX И ЕГО РАСШИРЕНИЮ LATEX2E: Справочное руководство по пакету LATEX2e—современной версии LATEX'a, — ставшему в настоящее время стандартом de facto. Благодаря гибкости, простоте использования и профессиональному полиграфическому качеству, LATEX, разработанный на базе издательской системы TEX Дональда Кнута, широко применяется при подготовке изданий как по точным, так и по гуманитарным наукам. Авторам — известным специалистам в этой тематике (Швейцария, ФРГ, Швейцария) — удалось в полном объеме представить инструментарий LATEX'a: NFSS2, AMS-LATEX, epic, eepic, MakeIndex и BibTeX, а также богатую библиотеку пакетов (более 150) по плавающим объектам, графике, таблицам, языку PostScript и многоязыковой поддержке. Книга предназначена для тех, кто хочет знать, как расширить возможности lATEX'a, чтобы уметь красиво оформлять издания: для профессиональных полиграфистов, авторов, разработчиков и программистов. Предисловие редактора перевода 5 Предисловие 11 1 Введение 19 1.1 Краткая история TeX’а и LaTeX’а 19 1.1.1 Вначале был TeX 19 1.1.2 Потом Лесли Лэмпорт придумал LaTeX 20 1.1.3 С LaTeX’ом в 2000 год? 21 1.2 LaTeX и его составляющие 21 1.2.1 Как работает LaTeX? 21 1.2.2 Выходные процессоры (драйверы dvi) 24 1.3 Концепция общей разметки 25 1.3.1 Что такое общая разметка? 25 1.3.2 Преимущества общей разметки 26 1.3.3 Разделение содержания и формы 27 1.4 Необходимость локальной разметки 27 1.4.1 Недостатки локальной разметки 27 1.4.2 Когда использовать локальную разметку 28 2 Структура документа, подготовленного в LaTeX’е 29 2.1 Структура исходного файла 29 2.1.1 Обработка опций и пакетов 31 2.1.2 Разделение исходного файла на части 34 2.1.3 Комбинирование нескольких файлов 35 2.2 Логическая структура 35 2.3 Команды секционирования 36 2.3.1 Нумерация заголовков 38 2.3.2 Форматирование заголовков 42 2.3.3 Изменение стандартных заголовков 48 2.4 Структура оглавления 49 2.4.1 Набор оглавления 50 2.4.2 Ввод информации в файлы оглавления 2.4.3 Определение нового файла, аналогичного .toc 2.4.4 Сложные оглавления 2.5 Управление ссылками 2.5.1 varioref — более гибкие ссылки 2.5.2 Ссылки на внешние документы 3 Основные средства форматирования 3.1 Фразы и абзацы 3.1.1 letterspace — изменение межбуквенных интервалов 3.1.2 ulem — выделение посредством подчеркивания 3.1.3 xspace — гибкий пробел после макро 3.1.4 Выравнивание внутри абзаца 3.1.5 doublespace —изменение интерлиньяжа 3.1.6 picinpar — набор абзацев с прямоугольными окнами 3.1.7 shapepar — набор абзацев необычной формы 3.2 Структуры перечня 3.2.1 Модификация стандартных перечней 3.2.2 Создание собственных перечней 3.3 Подражание машинописному шрифту 3.3.1 alltt—окружение типа verbatim 3.3.2 verbatim — стиль для литературного текста 3.3.3 moreverb—дополнительные окружения типа verbatim 3.4 Примечания: подстрочные, на полях, выносные 3.4.1 Создание сносок 3.4.2 Примечания на полях 3.4.3 Выносные примечания 3.5 Использование многоколонного набора 3.5.1 multicol — гибкий способ работы с многоколонным документом 3.5.2 Набор текста в колонках 3.5.3 Создание окружения multicols 3.5.4 Плавающие объекты и сноски в multicol 3.5.5 ftnright — сноски в правой колонке при двухколонном окружении 3.6 Простое управление версиями 4 Макет полосы набора 4.1 Геометрические параметры макета полосы набора 4.2 Изменение макета 4.2.1 Пакеты для создания макета полосы набора 4.2.2 Горизонтальное расположение полос набора при печати 4.3 Стили полосы 4.3.1 Написание новых стилей полосы 4.3.2 Создание стиля полосы при помощи fancyheadings 4.4 Явное форматирование 5 Таблицы 5.1 Сравнение окружений tabbing и tabular 53 54 55 58 60 64 65 66 66 67 68 69 70 71 72 74 74 78 84 84 84 85 88 88 92 93 94 94 95 96 98 98 100 101 102 105 107 109 110 112 114 117 120 121 5.2 Использование окружения tabbing 5.2.1 Окружение program 5.3 array — расширение окружений tabular 5.3.1 Примеры команд преамбулы 5.3.2 Стилевые параметры 5.3.3 Определение новых спецификаторов колонок 5.3.4 Некоторые особенности реализации пакета array 5.3.5 tabularx — автоматическое вычисление ширины колонок 5.3.6 delarray — определение вида ограничителей для окружения array 5.4 Многостраничные таблицы 5.4.1 supertab —верстка многостраничных таблиц 5.4.2 longtable —усложненные многостраничные таблицы 5.4.3 Завершающее сравнение окружений supertabular и longtable 5.5 Дополнительные штрихи 5.5.1 dcolumn — управление выравниванием в колонках таблицы 5.5.2 hhline — комбинирование горизонтальных и вертикальных от резков 5.6 Приложения 5.6.1 Переносы в узких колонках 5.6.2 Сноски в таблицах 5.6.3 Таблицы с широкими графами 5.6.4 Колонки, занимающие несколько строк таблицы 5.6.5 Таблицы внутри таблиц 5.6.6 Еще два примера 6 Плавающие объекты 6.1 Параметры плавающих объектов 6.2 Улучшенное размещение плавающих объектов 6.3 float — создание новых видов плавающих объектов 6.3.1 Разместить плавающий объект «здесь» ! 6.4 Другие виды плавающих окружений 6.4.1 floatfig — узкие плавающие рисунки «в оборку» 6.4.2 wrapfig — неплавающие рисунки «в оборку» 6.4.3 subfigure — рисунки внутри рисунков 6.4.4 endfloat — размещение рисунков и таблиц в конце документа 6.5 Создание своих названий 7 Переключение шрифтов 7.1 Введение в NFSS 7.2 Характеристики шрифтов 7.2.1 Моноширинные и пропорциональные шрифты 7.2.2 Шрифты с засечками и без засечек 7.2.3 Семейства шрифтов и их атрибуты 7.2.4 Схемы кодирования 7.3 Переключение шрифтов в тексте 7.3.1 Стандартные шрифтовые команды NFSS 122 123 124 124 129 131 132 133 137 138 138 142 147 147 147 151 152 152 153 154 155 157 160 162 162 166 169 171 173 173 174 176 176 178 180 180 182 183 184 184 189 190 191 7.3.2 Комбинирование стандартных команд управления шрифтами 7.3.3 Сравнение командного и декларативного способов переключения шрифтов 7.3.4 Доступ ко всем литерам шрифта 7.3.5 Изменение значений по умолчанию для атрибутов текстовых шрифтов 7.3.6 Шрифтовые команды LaTeX 2.09 7.4 Переключение шрифтов в формулах 7.4.1 Специальные идентификаторы математических алфавитов 7.4.2 Текстовые шрифтовые команды при наборе математических формул 7.4.3 Версии математических формул 7.5 Стандартные пакеты 7.5.1 Добавление новых текстовых шрифтов 7.5.2 Подключение новых математических шрифтов 7.5.3 slides — получение демонстрационных слайдов 7.5.4 Обработка ранее созданных документов 7.5.5 Специальные пакеты для NFSS 7.6 Низкоуровневый интерфейс 7.6.1 Установка индивидуальных шрифтовых атрибутов 7.6.2 Установка значений для нескольких шрифтовых атрибутов 7.6.3 Автоматические подстановки шрифтов 7.6.4 Использование низкоуровневых команд в документе 7.7 Подключение новых шрифтов 7.7.1 Общая схема 7.7.2 Объявление новых семейств шрифтов и групп начертаний шрифтов 7.7.3 Параметры управления загрузкой шрифтов 7.7.4 Ввод определений новых схем кодирования 7.7.5 Внутренняя организация файла 7.7.6 Объявление новых шрифтов для математических формул 7.7.7 Порядок записи деклараций 7.8 Предупреждения и сообщения об ошибках 8 Высшая математика 8.1 Создание AMS-LaTeX’а 8.2 Шрифты и символы в формулах 8.2.1 Команды для математических шрифтов 8.2.2 Математические символы 8.3 Составные символы, ограничители и операторы 8.3.1 Кратные интегралы 8.3.2 Стрелки сверху и снизу 8.3.3 Многоточия 8.3.4 Двойные акценты 8.3.5 Акценты как верхние индексы 196 197 199 200 202 202 203 206 207 208 209 212 214 214 215 217 218 223 224 225 225 225 226 235 235 236 238 243 244 252 252 253 253 254 260 260 260 261 261 262 8.3.6 Акценты в виде точек 8.3.7 Корни 8.3.8 Формулы в рамке 8.3.9 Растяжимые стрелки 8.3.10 Команды \overset, \underset и \sideset 8.3.11 Команда \smash 8.3.12 Команда \text 8.3.13 Названия новых операций 8.3.14 Команда \rnod и ее аналоги 8.3.15 Дроби и родственные конструкции 8.3.16 Непрерывные дроби 8.3.17 Ог-г-г-громные ограничители 8.4 Окружения типа матрицы и коммутативные диаграммы 8.4.1 Окружение cases 8.4.2 Окружения типа matrix 8.4.3 Команда \substack 8.4.4 Коммутативные диаграммы 8.5 Выравнивание многострочных формул 8.5.1 Несколько формул без выравнивания 8.5.2 Несколько формул с выравниванием 8.5.3 Разбитые на части формулы без выравнивания 8.5.4 Разбитые на части формулы с выравниванием 8.5.5 Окружения выравнивания для набора отдельных частей выключных формул 8.5.6 Вертикальные пробелы и разрывы страниц при наборе формул 8.5.7 Команда \intertext 8.6 Разное 8.6.1 Нумерация формул 8.6.2 Установка счетчика формул 8.6.3 Подчиненная нумерация формул 8.6.4 Тонкая настройка в математическом режиме 8.6.5 На что еще обратить внимание 8.6.6 Опции к пакету amsmath и отдельные его составляющие 8.6.7 Классы документов AMS-LaTeX’а 8.7 Примеры многострочных формул 8.7.1 Окружение split 8.7.2 Окружение multline 8.7.3 Окружение gather 8.7.4 Окружение align 8.7.5 Использование окружений align и split внутри gather 8.7.6 Использование окружений alignat 8.8 Расширения для окружения theorem 8.8.1 Как определять новые окружения типа теоремы 8.8.2 Примеры определений и использования теорем 262 262 262 263 263 264 264 265 266 266 268 268 269 269 269 271 271 272 273 274 275 275 276 277 277 278 278 279 279 280 280 281 283 283 283 286 287 287 288 289 290 291 293 8.8.3 Некоторые специальные вопросы 8.9 Параметры, задающие математические стили 8.9.1 Как управлять размерами символов 8.9.2 Параметры математических стилей в LaTeX’е 9 LaTeX в многоязычной среде 9.1 TEX и языки, отличные от английского 9.1.1 Механизм виртуального шрифта 9.2 Babel — LaTeXвладеет многими языками 9.2.1 Среда пользователя 9.2.2 Опция german 9.2.3 Структура языковых стилевых файлов системы babel 9.3 Следование типографским нормам 9.3.1 Традиционные французские типографские нормы 9.3.2 Команды пакета french 9.3.3 Структура пакета french 10 Графика в LaTeX’е 10.1 Орнаменты 10.1.1 Министраницы в рамке 10.1.2 Рамки с тенью 10.1.3 Декоративные рамки 10.2 Окружение picture 10.2.1 Аппроксимации Безье 10.2.2 Как совмещать несколько рамок 10.2.3 Как рисовать бинарные и тернарные деревья 10.2.4 Как рисовать гистограммы 10.2.5 Примеры окружения barenv 10.2.6 Как рисовать произвольные кривые 10.2.7 Другие пакеты 10.3 epic — усовершенствования к окружению picture 10.3.1 Описание команд 10.4 Расширение пакета epic 10.4.1 Расширения LaTeX’а при помощи eepic 10.4.2 Расширения пакета epic при помощи eepic 10.4.3 Новые команды в пакете eepic 10.4.4 Совместимость 10.4.5 Примеры 10.5 Пакеты, основанные на epic 10.5.1 Как рисовать двудольные графы 10.5.2 Как рисовать деревья 11 Как использовать PostScript 11.1 Язык PostScript 11.1.1 Несколько слов о языке 11.1.2 Что такое инкапсулированный PostScript ? 11.2 dvips—преобразование dvi в PostScript 294 294 294 296 298 298 301 302 302 303 305 312 312 313 314 315 317 317 317 318 320 320 321 322 324 326 327 333 333 335 340 341 341 342 343 344 344 344 348 350 350 350 352 354 11.3 Совмещение текста и графики в формате PostScript 11.3.1 Простые рисунки 11.3.2 Черновые рисунки 11.3.3 Более сложная организация рисунков 11.4 Как повернуть материал 11.4.1 Как повернуть табличный материал 11.4.2 Как повернуть рисунок 11.4.3 Как повернуть только подпись к рисунку 11.5 Отчеркивания на полях 11.5.1 Среда пользователя 11.5.2 Параметры команд пакета changebar 11.5.3 Недостатки и неточности 11.6 Обрамление и затенение 11.7 Цветной вывод 11.8 Наложение текста на выводимую страницу 11.9 Еще одно обращение к NFSS 11.9.1 Как называются эти тысячи шрифтов 11.9.2 Система PSNFSS 11.9.3 Как использовать Pi-шрифты из PostScript'a 11.9.4 Общие команды в пакете pifont 11.9.5 Шрифт Symbol 11.9.6 Как самостоятельно установить новые PostScript-шрифты 11.9.7 Как заменить все ТeХ'овские шрифты PostScript-шрифтами 11.10 DCPS — корковская кодировка с PostScript-шрифтами 12 Создание указателей 12.1 Синтаксис описания элементов указателя 12.1.1 Простые описания элементов указателя 12.1.2 Формирование подчиненных элементов 12.1.3 Диапазоны страниц и перекрестные ссылки 12.1.4 Управление формой представления указателя 12.1.5 Печать специальных символов 12.1.6 Некоторые дополнительные замечания 12.1.7 Согласованность элементов указателя 12.2 Подготовка указателя 12.2.1 Формирование полуфабриката указателя 12.2.2 Получение форматированного указателя 12.3 Запуск программы MakeIndex 12.3.1 Опции программы MakeIndex 12.3.2 Сообщения об ошибках 12.4 Изменение вида указателя 12.4.1 Пример стилевых файлов указателя 12.4.2 Указатель, формируемый отдельно 12.4.3 Изменение специальных символов 12.4.4 Изменение выходного формата указателя 355 358 359 359 361 363 364 365 365 367 369 369 370 371 371 371 371 372 375 376 377 378 379 380 385 387 387 388 389 390 391 391 393 394 394 394 395 395 398 400 400 404 404 405 12.4.5 Обработка нетрадиционных номеров страниц 12.4.6 Глоссарий 12.5 Изменение макета указателя 12.5.1 Формирование нескольких указателей 12.5.2 Модификация команд формирования указателей 13 Создание списка литературы 13.1 Создание библиографических ссылок 13.1.1 Придание ссылкам требуемого вида 13.1.2 Выбор формата меток 13.2 Совместное использование BibTeX'а и LaTeX’а 13.2.1 Список стилевых файлов для BibTeX'а 13.2.2 Примеры BibTeX''овских стилей 13.3 Документы с несколькими списками литературы 13.3.1 Пакет chapterbib 13.3.2 Пакет bibunits 13.4 Средства управления библиографическими базами данных 13.5 Форматbib-файлов 13.5.1 Общая структура записей в BibTeX''овской базе данных 13.5.2 Текстовая часть поля 13.5.3 BibTeX и аббревиатуры 13.5.4 BibTeX'овская преамбула 13.5.5 Перекрестные ссылки 13.5.6 Дополнительные замечания 13.6 Формат записей базы данных (подробное описание) 13.7 Как устроены BibTeX'овские стили 13.7.1 Общее представление о BibTeX'овских стилевых файлах 13.7.2 Команды BibTeX'овского стилевого файла 13.7.3 Встроенные функции 13.7.4 Стилевой файл-документация btxbst.doc 13.8 Модификация стилевых файлов 13.8.1 Добавление нового поля 13.8.2 Поддержка языков, отличных от английского 13.9 Пакет makebst для модификации библиографических стилей 13.9.1 Работа с программой makebst 14 Средства документирования макропакетов 14.1 Макропакеты с документацией 14.2 Пользовательский интерфейс пакета doc 14.2.1 Основные понятия 14.2.2 Описание новых макрокоманд и окружений 14.2.3 Перекрестные ссылки между используемыми макрокомандами 14.2.4 Заключительные процедуры создания указателя 14.2.5 Дополнительные возможности 14.2.6 Управляющий файл 14.2.7 Простой пример файла, документированного при помощи пакета 406 408 409 410 410 416 417 418 420 420 422 424 431 431 434 438 443 443 445 450 451 452 453 453 458 458 459 459 459 463 464 466 469 470 472 472 473 473 474 475 475 475 481 482 doc 14.3 Утилита DOCSTRIP 14.3.1 Команды, используемые в пакетных файлах 14.3.2 Условное включение кода 14.4 Пример инсталляционной процедуры А LaTeX: основы программирования А.1 Разметка и форматирование А.1.1 Определение новых команд А.1.2 Определение новых окружений А.1.3 Создание счетчиков и изменение их текущих значений А.1.4 Управление параметрами расстояния А.2 Разметка страниц: различные типы боксов А.2.1 LR-боксы А.2.2 Боксы-абзацы А.2.3 Боксы-линейки А.2.4 Работа с боксами А.3 Структура пакетов и классов в LaTeX2e А.3.1 Команды идентификации А.3.2 Начальный командный код А.3.3 Декларация опций А.3.4 Исполнение опций А.3.5 Загрузка макропакетов А.3.6 Основной командный код А.3.7 Команды, специально предназначенные для макропакетов и классов А.3.8 Команды, специально предназначенные для классов А.4 calc — макропакет для арифметических вычислений А.5 ifthen — усовершенствованный условный переход В Техническое обеспечение и группы пользователей 8.1 Главные сайты TeX'a в Internet'e 8.2 Mail-серверы 8.3 Группы пользователей TeX'a Список литературы Именной указатель Предметный указатель Список таблиц Список иллюстраций Оригинал-макет The LaTeX Companion 485 485 487 487 492 492 493 496 499 502 507 508 510 514 515 517 519 520 520 522 523 524 524 525 527 529 534 534 538 538 541 555 557 591 594 597