ncc-latex.djvu
Предисловие
Глава 1. Как начать работать в LATEX'e?
1.3. Пример работы с MikTeX'ом через WinEdt
1.4. Разбор примера
1.5. Подготовка документов на русском языке
1.6. Плата за использование кириллицы
1.7. Ещё о редакторе WinEdt
1.8. Дерево файлов TEX-системы
1.9. Как найти ошибку при трансляции файла?
1.10. Какими классами и пакетами LATEX'а пользоваться?
1.11. Правила хорошего тона при подготовке статей
Глава 2. Базовые элементы LATEX'a
2.2. Команды, параметры, *-форма
2.3. «Крепкие» и «хрупкие» команды
2.4. Декларации, область действия, блоки, окружения
2.5. Расстояния и и переменные
2.6. Счётчики, метки, ссылки
2.7. Преамбула документа
2.8. Опции класса и опции пакета
2.10. Макет страницы
2.11. Особенности оформления текста в несколько колонок
2.12. Вертикальная, горизонтальная, математические моды
2.13. Форматирование абзаца
2.14. Специальные режимы форматирования абзаца
2.15. Боксы
2.16. Плавающие элементы
2.17. Форматирование страницы
Глава 3. Шрифты в LATEX'e
3.2. Что TEX знает о шрифтах?
3.3. Размеры шрифтов в LATEX'е
3.4. Гарнитуры и начертания шрифтов LATEX'а
3.5. Заказ нормального шрифта, выделение текста
3.6. Особенности курсивных и наклонных шрифтов
3.7. Текстовые шрифты в математической моде
3.8. Старый стиль выбора шрифтов
3.9. Схемы кодировки шрифтов
3.10. Выбор нестандартного шрифта
3.11. Заказ одиночного шрифта
Глава 4. Вёрстка статьи в LATEX'e
4.2. Опции класса article
4.3. Стили оформления страниц документа
4.4. Рубрикация
4.5. Перекрёстные ссылки между рубриками
4.6. Оформление библиографии
4.7. Оформление ссылок на ресурсы Интернет
4.8. Цитирование
4.9. Специфика оформления статей на русском языке
4.10. Оформление статей в классе ncc
4.11. Оформление статьи в классе nccproc
4.12. Оформление статьи в классе sibjnm
Глава 5. Верстаем текст грамотно
5.2. Использование общепринятых сокращений
5.3. Перенос слов
5.4. Тире короткое и длинное
5.5. Кавычки, цитаты, многоточия
5.6. Логотипы, пробелы, пунктуация
5.7. Единицы измерения физических величин
5.8. Специальные символы и текстовые акценты
5.9. Методы выделения текста
Глава 6. Приёмы вёрстки текста: выносные текстовые элементы
6.2. Выносные текстовые элементы
6.3. Влево, вправо, по центру
6.4. Цитаты и стихи
6.5. Дословное воспроизведение текста
6.6. Правила оформления списков
6.7. Как устроены выносные списки?
6.8. Стандартные списки
6.9. Список desclist
6.10. Табулированный текст
Глава 7. Приёмы вёрстки текста: подробности
7.2. Вертикальные боксы
7.3. Линейки и подпорки
7.4. Дополнительные боксы в макросе NCC
7.5. Сноски
7.6. Горизонтальная раздвижка и заполнение
7.7. Вертикальная раздвижка
7.8. Управление форматированием страницы
7.9. Окружение titlepage
7.10. Вёрстка в две колонки
7.11. Пакет multicol
Глава 8. Вёрстка таблиц
8.2. Синтаксис оформления таблиц
8.3. Описание столбцов таблицы
8.4. Содержимое таблицы
8.5. Оформление выводов
8.6. Пример оформления простой таблицы
8.7. Изменение расстояний между столбцами таблицы
8.8. Вставка символов между столбцами
8.9. Использование мультстолбцов
8.10. Таблица с p-столбцами
8.11. Вертикальный сдвиг полей в таблице
8.12. Таблица со сложной шапкой
8.13. Перевёртывание таблиц
8.14. Многомерная таблица
8.15. Таблица заданной ширины
8.15. Пакет array
8.17. Другие расширения механизма генерации таблиц
8.18. Команды оформления таблиц из пакета nccboxes
Глава 9. Вёрстка математических формул
9.2. Ожирнение математических символов
9.3. Специальные математические шрифты
9.4. Категории математических символов
9.5. Базовые математические конструкции
9.6. Точка или запятая в десятичных числах?
9.7. Грамотная вёрстка математических формул
Глава 10. Выносные математические формулы
10.2. Дополнительные возможности
10.3. Выравнивание внутри формул
10.4. Управление выносными формулами
10.5. Средства пакета nccmath
10.6. Оформление однострочной формулы
10.7. Оформление многострочной формулы
10.8. Оформление группы формул
10.9. Как уплотнить формулу?
Глава 11. Теоремы
11.2. Расширения механизма генерации математических утверждений
11.3. Динамические счётчики
11.4. Математические утверждения в пакете nccthm
11.5. Стили оформления утверждений
11.6. Quod Erat Demonstrandum
11.7. Настройка пакета nccthm
11.8. Математические утверждения пакета ncclatex
Глава 12. Графика
12.2. Особенности вставки графических объектов
12.3. Коллекция пакетов graphics
12.4. Работа с цветом
12.5. Вращение текста
12.6. Масштабирование текста
12.7. Подробнее о вставке графических объектов
12.8. Подготовка чертежей
12.9. Расширенные возможности подготовки чертежей
12.10. Дополнительные графические возможности
Глава 13. Плавающее размещение таблиц и рисунков
13.2. Приёмы оформления плавающих элементов
13.3. Размещение рисунков и таблиц в оборку с текстом
13.4. Средства пакета nccfloats
13.5. Использование пакета nccfloats
Глава 14. Вёрстка больших документов
14.2. Частичная трансляция документов
14.3. Особенности рубрикации в книгах
14.4. Оформление колонтитулов и сборка содержания
14.5. Использование пакета nccsect
14.6. Улучшенное оформление колонтитулов
14.7. Сборка предметного указателя
14.8. Использование макроса NCC
14.9. Титульные страницы в классе ncc
14.10. Подготовка специальных страниц в классе ncc
Приложение А. Оформление библиографии по ГОСТам
А.2. Ссылка на однотомное непериодическое издание
А.3. Ссылка на отдельные тома многотомного издания
А.4. Ссылка на составную часть издания
А.5. Примеры библиографических ссылок
А.6. Ссылка на электронную публикацию
А.7. Ссылка на ресурс Интернет
Приложение Б. Макросы в LATEX'e
Б.2. Создание новых окружений
Б.3. Работа с переменными
Б.4. Работа со счётчиками
Приложение В. LATEX и его расширения
В.2. Русский этаж Вавилонской башни
В.3. Математические расширения LATEX'а
В.4. Вокруг плавающих элементов
В.5. Управление сносками
В.6. Многоуровневые сноски
В.7. Вокруг пакета verbatim
В.8. Управление макетом страницы
В.9. Управление рубрикацией
В.10. Дополнительные шрифты
В.11. LATEX и электронные документы
В.12. Обзор коллекции tools
В.13. Обзор коллекции ncctools
В.14. Разное
Приложение Г. Справочник основных элементов LATEX'a
Г.2. Управление текстовыми шрифтами
Г.3. Пробелы и специальные символы
Г.4. Текстовые акценты и символы
Г.5. Специальные математические шрифты
Г.6. Математические акценты и символы
Г.7. Математические разделители
Г.8. Математические операторы и дроби
Г.9. Разные математические конструкции
Г.10. Матрицы
Г.11. Математические символы пакета stmaryrd
Г.12. Специальные шрифты
Литература
Предметный указатель
\CYRDJE — \CYRP
\guilsingleft — \k
\kappa — \listoftables
\ll — \mddefault
\mdseries — \normalmarginpar
\normalsize — \phi
\tanh — \textminus
Text
                    А. И. Роженко
Искусство
верстки в LaTeX’g
1] File Edit Search Insert Document Project Tools Macros Accessories Options
D &. L Й	V в i %
# U bJ M V to S Ё т	&
Window Help
“J w TEX «J Их
£> P ? DVI
mono.tex
*i [
X 3	*
♦ mono.tex
- > TOC
\documentclass[llpt,book/russian,openany,sm \input{loading}
Qj Предисловие
+ U Как начать работа
+ Ijj Базовые элементы т	Шрифты в \LaTeX’e
+	Верстка статьи в V
+ QJ Верстаем текст грг + (JJ Приемы верстки те + (jj Приемы верстки те + UJ Верстка таблиц\!аЬ + (jJ Верстка математик + Qj Выносные математ Г * Ю Теоремы
* MJ Графика
ч- (JJ Плавающее размеь
+ Qj Верстка больших д (jj Appendix
Цр File View Tools Window Help
Ш	i ® е О т Т В И H:fe}
11 j‘ uic.ювие
Сначала был . Рональд Кнут1. Он создал Tj?X?. Plain T]gX породил Л VfS- ГрХ1 и ОГрХ (>1 них ш основные «потомки» 1)цХ а. Есть еще множ<чтво торых я не упомянул. У DlpX'a со временем ноя несовместимых между собой. Поэтому, чтобы уст


РОССИЙСКАЯ АКАДЕМИЯ НАУК СИБИРСКОЕ ОТДЕЛЕНИЕ ИНСТИТУТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И МАТЕМАТИЧЕСКОЙ ГЕОФИЗИКИ А. И. Роженко ИСКУССТВО ВЕРСТКИ В Ш^Х’е Ответственный редактор академик А. С. Алексеев НОВОСИБИРСК, 2005
УДК 681.322 ББК 3.9732-018 Р625 Роженко А.И. Искусство верстки в ТАТ^Х’е / Отв. ред. акад. А.С. Алексеев.-Новосибирск: Изд. ИВМиМГ СО РАН, 2005.-398 с. Книга посвящена подготовке документов в издательской системе 1АТ^Х. В ней описан современный в объеме, достаточном для подготовки статей для научных журналов, отчетов, препринтов, монографий. Книга предназначена как для начинающих, так и для опытных пользователей lAT^X’a. Книга ориентирована на пользователей ИТ^Х’а, а не на Технологов (дизайнеров пакетов и классов LaTeX’a). В ней Вы не найдете информацию о том, как создавать собственные классы и пакеты, зато обнаружите много полезных советов по практической верстке в соответствии с правилами зарубежной и отечественной полиграфии. Целевая аудитория книги — научные работники, пишущие статьи, препринты, монографии. Изложение материала ориентировано на «варианты использования», т. е. материал сгруппирован таким образом, чтобы читателю легко было найти ответ на волнующий его вопрос. Цель книги—помочь в решении практических задач верстки документов наиболее эффективно и правильно. Вся справочная информация (таблицы математических символов, основные математические конструкции с примерами их использования и др.) собрана в одном приложении, что облегчает поиск подходящих математических конструкций. Описание русификации базируется на стандарте lAT^X’a—пакете Babel. Приведены правила и примеры оформления библиографии по ГОСТам. В книге описано с разной степенью детальности более 150 пакетов lATgX’a, а также авторская разработка—макрос .NqC, — адаптирующая DTgX для подготовки изданий на русском языке. Завершает книгу предметный указатель, в котором для каждой нестандартной команды или окружения дополнительно приводится название определяющего ее пакета или класса. Рецензенты: доктор технических наук А. С. Родионов кандидат физико-математических наук Ю. С. Волков кандидат физико-математических наук А.Ш. Непомнящая Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. ISBN 5-901548-25-6 © А. И. Роженко, 2005 © ИВМиМГ СО РАН, 2005
Оглавление Предисловие........................................................ 11 Глава 1. Как начать работать в ИТ^Х’е?............................. 19 1.1. Что такое Т^Х-система?.................................... 19 1.2. Что используется при работе в Т^Х’е?...................... 20 1.3. Пример работы с MiKTeX’oM через WinEdt.................... 21 1.4. Разбор примера ........................................... 23 1.5. Подготовка документов на русском языке.................... 24 1.6. Плата за использование кириллицы.......................... 25 1.7. Еще о редакторе WinEdt.................................... 27 1.8. Дерево файлов Т^}Х-системы................................ 28 1.9. Как найти ошибку при трансляции файла?.................... 29 1.10. Какими классами и пакетами ИТ^Х’а пользоваться?........... 30 1.11. Правила хорошего тона при подготовке статей............... 31 Глава 2. Базовые элементы ИТ^Х’а................................... 33 2.1. Символы ИГ^Х’а............................................ 33 2.2. Команды, параметры, *-форма .............................. 34 2.3. «Крепкие» и «хрупкие» команды............................. 36 2.4. Декларации, область действия, блоки, окружения............ 37 2.5. Расстояния и переменные................................... 38 2.6. Счетчики, метки, ссылки................................... 39 2.7. Преамбула документа....................................... 42 2.8. Опции класса и опции пакета............................... 43 2.9. Подробнее о классах и пакетах............................. 44 2.10. Макет страницы............................................ 44 2.11. Особенности оформления текста в несколько колонок......... 47 2.12. Вертикальная, горизонтальная, математическая моды......... 47 2.13. Форматирование абзаца..................................... 48 2.14. Специальные режимы форматирования абзаца.................. 51 2.15. Боксы..................................................... 52 2.16. Плавающие элементы........................................ 53 2.17. Форматирование страницы................................... 54 Глава 3. Шрифты в Ш^Х’е............................................ 56 3.1. Шрифт, кегль, гарнитура................................... 56 3.2. Что Т^Х знает о шрифтах?.................................. 57 3.3. Размеры шрифтов в ИТ^Х’е.................................. 58 3.4. Гарнитуры и начертания шрифтов ИТ^Х’а..................... 59 3.5. Заказ нормального шрифта, выделение текста................ 61
3.6. Особенности курсивных и наклонных шрифтов................ 62 3.7. Текстовые шрифты в математической моде................... 63 3.8. Старый стиль выбора шрифтов.............................. 65 3.9. Схемы кодировки шрифтов.................................. 65 3.10. Выбор нестандартного шрифта 66 3.11. Заказ одиночного шрифта 67 Глава 4. Верстка статьи в lATEjX’e................................ 69 4.1. Подготовка статьи для научного издания 69 4.2. Опции класса article..................................... 71 4.3. Стили оформления страниц документа....................... 73 4.4. Рубрикация............................................... 74 4.5. Перекрестные ссылки между рубриками...................... 76 4.6. Оформление библиографии.................................. 77 4.7. Оформление ссылок на ресурсы Интернет.................... 78 4.8. Цитирование.............................................. 79 4.9. Специфика оформления статей на русском языке............. 80 4.10. Оформление статьи в классе лее........................... 81 4.11. Оформление статьи в классе пссргос 83 4.12. Оформление статьи в классе sibjnm........................ 84 Глава 5. Верстаем текст грамотно 85 5.1. Набор текста............................................. 85 5.2. Использование общепринятых сокращений.................... 85 5.3. Перенос слов............................................. 86 5.4. Тире короткое и длинное.................................. 88 5.5. Кавычки, цитаты, многоточия.............................. 90 5.6. Логотипы, пробелы, пунктуация............................ 91 5.7. Единицы измерения физических величин .................... 93 5.8. Специальные символы и текстовые акценты.................. 95 5.9. Методы выделения текста 95 Глава 6. Приемы верстки текста: выносные текстовые элементы 97 6.1. Управление форматированием абзаца 97 6.2. Выносные текстовые элементы.............................. 98 6.3. Влево, вправо, по центру................................. 98 6.4. Цитаты и стихи .......................................... 99 6.5. Дословное воспроизведение текста ........................100 6.6. Правила оформления списков...............................102 6.7. Как устроены выносные списки? ...........................103 6.8. Стандартные списки.......................................104 6.9. Список desclist..........................................106 6.10. Табулированный текст ....................................107
Глава 7. Приемы верстки текста: подробности......................112 7.1. Горизонтальные боксы ...................................112 7.2. Вертикальные боксы......................................116 7.3. Линейки и подпорки......................................118 7.4. Дополнительные боксы в макросе J\[qC....................119 7.5. Сноски..................................................120 7.6. Горизонтальная раздвижка и заполнение...................123 7.7. Вертикальная раздвижка..................................125 7.8. Управление форматированием страницы.....................127 7.9. Окружение titlepage.....................................128 7.10. Верстка в две колонки ..................................129 7.11. Пакет multicol..........................................130 Глава 8. Верстка таблиц..........................................131 8.1. Принципы оформления таблиц..............................131 8.2. Синтаксис оформления таблиц..............................132 8.3. Описание столбцов таблицы...............................133 8.4. Содержимое таблицы.......................................135 8.5. Оформление выводов...................................... 136 8.6. Пример оформления простой таблицы.......................136 8.7. Изменение расстояний между столбцами таблицы............138 8.8. Вставка символов между столбцами .......................139 8.9. Использование мультистолбцов............................140 8.10. Таблица с р-столбцами...................................141 8.11. Вертикальный сдвиг полей в таблице......................143 8.12. Таблица со сложной шапкой...............................144 8.13. Перевертывание таблиц...................................145 8.14. Многомерная таблица.....................................147 8.15. Таблица заданной ширины.................................148 8.16. Пакет array........................................... 149 8.17. Другие расширения механизма генерации таблиц............151 8.18. Команды оформления таблиц из пакета nccboxes............153 Глава 9. Верстка математических формул...........................155 9.1. Математические стили....................................155 9.2. Ожирнение математических символов.......................156 9.3. Специальные математические шрифты.......................157 9.4. Категории математических символов.......................158 9.5. Базовые математические конструкции......................159 9.6. Точка или запятая в десятичных числах?..................164 9.7. Грамотная верстка математических формул.................165
Глава 10. Выносные математические формулы.......................171 10.1. Стандартные средства оформления........................171 10.2. Дополнительные возможности.............................172 10.3. Выравнивание внутри формул.............................176 10.4. Управление выносными формулами.........................176 10.5. Средства пакета nccmath................................179 10.6. Оформление однострочной формулы........................181 10.7. Оформление многострочной формулы.......................188 10.8. Оформление группы формул...............................191 10.9. Как уплотнить формулу?.................................193 Глава 11. Теоремы ..............................................194 11.1. Средства генерации математических утверждений..........194 11.2. Расширения механизма генерации утверждений.............195 11.3. Динамические счетчики..................................197 11.4. Математические утверждения в пакете nccthm.............198 11.5. Стили оформления утверждений...........................200 11.6. Quod Erat Demonstrandum................................200 11.7. Настройка пакета nccthm................................201 11.8. Математические утверждения пакета ncclatex.............202 Глава 12. Графика...............................................204 12.1. Оформление иллюстраций.................................204 12.2. Особенности вставки графических объектов...............205 12.3. Коллекция пакетов graphics.............................209 12.4. Работа с цветом .......................................210 12.5. Вращение текста........................................212 12.6. Масштабирование текста.................................213 12.7. Подробнее о вставке графических объектов...............214 12.8. Подготовка чертежей....................................218 12.9. Расширенные возможности подготовки чертежей............224 12.10. Дополнительные графические возможности................227 Глава 13. Плавающее размещение таблиц и рисунков................229 13.1. Вывод плавающих элементов..............................229 13.2. Приемы оформления плавающих элементов..................232 13.3. Размещение рисунков и таблиц в оборку с текстом........233 13.4. Средства пакета nccfloats..............................234 13.5. Использование пакета nccfloats.........................236
Глава 14. Верстка больших документов..............................238 14.1. Типичное задание для трансляции книги ...................238 14.2. Частичная трансляция документа...........................239 14.3. Особенности рубрикации в книгах..........................241 14.4. Оформление колонтитулов и сборка содержания..............241 14.5. Использование пакета nccsect.............................243 14.6. Улучшенное оформление колонтитулов.......................247 14.7. Сборка предметного указателя.............................250 14.8. Использование макроса Л/^С...............................253 14.9. Титульные страницы в классе псс.........................260 14.10. Подготовка специальных страниц в классе псс.............262 Приложение А. Оформление библиографии по ГОСТам...................267 А.1. Библиографическая ссылка.................................267 А.2. Ссылка на однотомное непериодическое издание.............267 А.З. Ссылка на отдельные тома многотомного издания............271 А.4. Ссылка на составную часть издания........................272 А.5. Примеры библиографических ссылок.........................273 А.6. Ссылка на электронную публикацию.........................276 А.7. Ссылка на ресурс Интернет ...............................277 Приложение Б. Макросы в LKTj^X’e..................................278 Б.1. Создание новых команд....................................278 Б.2. Создание новых окружений ................................280 Б.З. Работа с переменными.....................................281 Б.4. Работа со счетчиками.....................................283 Приложение В. lATgX и его расширения..............................286 В.1. Базовые классы и пакеты IATf%’a..........................286 В.2. Русский этаж Вавилонской башни...........................289 В.З. Математические расширения ЬКГ^Х’а........................293 В.4. Вокруг плавающих элементов.............................. 294 В.5. Управление сносками......................................296 В.6. Многоуровневые сноски....................................298 В.7. Вокруг пакета verbatim...................................302 В.8. Управление макетом страницы..............................308 В.9. Управление рубрикацией...................................311 В. 10. Дополнительные шрифты .............................321 В.11. ИТ^Х и электронные документы.............................325 В. 12. Обзор коллекции tools...................................329 В. 13. Обзор коллекции ncctools................................331 В. 14. Разное..................................................337
Приложение Г. Справочник основных элементов DT^X’a...............340 Г.1. Стандартные счетчики.....................................340 Г.2. Управление текстовыми шрифтами...........................340 Декларации выбора размера шрифта.........................340 Гарнитуры, жирность и начертания шрифтов.................341 Математические текстовые шрифты..........................341 Старый стиль выбора шрифтов..............................341 Стандартные схемы кодировки текстовых шрифтов............341 Гарнитура «Computer Modern Roman».......................342 Гарнитура «Computer Modern Sans» .......................342 Гарнитура «Computer Modern Typewriter»..................342 Гарнитура «Computer Modern Fibonacci»...................342 Гарнитура «Computer Modern Funny Roman».................342 Гарнитура «Computer Modern Dunhill».....................342 «Внутренняя кухня» выбора шрифта.........................343 Г.З. Пробелы и специальные символы............................343 Пробелы..................................................343 Кавычки..................................................343 Дефисы и тире............................................344 Г.4. Текстовые акценты и символы..............................344 Текстовые акценты .......................................344 Команды, доступные в текстовой и математической модах .... 344 Текстовые символы европейских языков.....................345 Команды, доступные в текстовой моде......................345 Дополнительные текстовые акценты (textcomp)..............345 Дополнительные текстовые символы (textcomp) .............346 Символы кириллицы .......................................347 Г.5. Специальные математические шрифты........................348 Шрифт Blackboard Bold \mathbb............................348 Рукописный шрифт \mathcal................................348 Шрифт RSFS \mathrsfs.....................................348 Шрифт Euler Script \mathscr..............................348 Шрифт Euler Fraktur \mathf так...........................348 Г.6. Математические акценты и символы.........................349 Математические акценты...................................349 Широкие математические акценты (amsfonts)................349 Двойные математические акценты (amsmath).................349 Дополнительные акценты из точек (amsmath)................349 Акценты в верхнем индексе (amsxtra) .....................349 Строчные греческие буквы.................................349 Прописные греческие буквы................................349 Прописные курсивные греческие буквы (amsmath)............350 Дополнительные греческие и еврейские буквы (amssymb).....350
Разные математические символы............................350 Дополнительные математические символы (amssymb)..........350 Символы бинарных операций ...............................350 Дополнительные символы бинарных операций (amssymb)......351 Символы отношений........................................351 Дополнительные символы отношений (amssymb)...............351 Отрицания символов отношений.............................352 Отрицания символов отношений (amssymb)...................352 Символы стрелок .........................................353 Дополнительные символы стрелок (amssymb).................353 Г.7. Математические разделители ..............................353 Символы-разделители......................................354 Большие символы-разделители .............................354 Дополнительные символы-разделители (amsfonts) ...........354 Г.8. Математические операторы и дроби ........................354 Операторы переменного размера ...........................354 Дополнительные операторы переменного размера (amsmath) . . . 354 Дроби и биномиальные коэффициенты (amsmath)..............355 Генератор дробей (amsmath)...............................355 Цепные дроби (amsmath)...................................355 Операторы и дроби среднего размера (nccmath) .......... 356 Стандартные математические функции.......................357 Дополнительные математические функции (amsmath)..........357 Дополнительные математические функции [russian]..........357 Генератор математических функций (amsmath)...............357 Объявление новой математической функции (amsmath)........357 Опции управления стилем вывода индексов (amsmath) .......358 Г.9. Разные математические конструкции........................358 Индексы..................................................358 Производные..............................................358 Текст в формуле..........................................358 Корни...............................•....................358 Сдвиг показателя степени в корнях (amsmath)..............358 Многоточия...............................................359 Дополнительные многоточия (amsmath)......................359 Формула в рамке (amsmath)................................359 Разделитель над и под формулой...........................359 Дополнительные стрелки сверху и снизу (amsmath)..........360 Формула над и под формулой...............................360 Стрелки переменной длины (amsmath).......................360 Индексы над и под формулой (amsmath).....................360 Индексы слева и справа (amsmath).........................360 Многострочные индексы (amsmath)..........................361
Сравнение по модулю (amsmath) .........................361 Логические связки (amsmath)............................361 Создание новых символов отношений (nccmath) ...........361 Команда \smash.........................................361 Фантомы ...............................................362 Г. 10. Матрицы..............................................362 Матрицы (amsmath)......................................362 Альтернатива (amsmath).................................362 Обрамление матриц......................................363 Многоточия в матрицах (amsmath)........................363 Окружение smallmatrix (amsmath)........................363 Матрицы среднего размера (nccmath) ....................363 Г. 11. Математические символы пакета stmaryrd...............363 Простые символы........................................363 Символы бинарных операций .............................364 Символы отношений......................................364 Стрелки................................................364 Перечеркивание стрелок.................................365 Символы-разделители....................................365 Операторы переменного размера .........................365 Г. 12. Специальные шрифты...................................365 Символы международного фонетического шрифта............365 Символы шрифта WASY....................................366 Символы шрифта MVS.....................................366 Символы шрифта IFSYM...................................367 Символы шрифта IFWEA ..................................367 Символы шрифта IFCLK...................................367 Символы шрифта DING ...................................368 Символы шрифта ZapfDingbats............................368 Литература.....................................................369 Предметный указатель...........................................370
Предисловие Сначала был Дональд Кнут1. Он создал Т^Х2. TfejX породил Plain T]gX3. Plain ТцХ породил Дд^-Т^Х4 и 1АТцХ5. От них появился Ддд^-ИТцХ6. Это основные «потомки» T^jX’a. Есть еще множество «побочных детей», о которых я не упомянул. У lATgX’a со временем появилось много диалектов, несовместимых между собой. Поэтому, чтобы устранить несовместимость, был разработан новый стандарт lATgX’a, впитавший все лучшее, что было в его диалектах. Об этом стандарте, называемом IM?gX2£, и пойдет речь в этой книге. Конечно, T^jX—далеко не единственное средство подготовки электронных документов. Он сильно уступает в популярности редактору MS Word. Это не WYSIWYG-система (What You See Is What You Get), в кото 1 Дональд Кнут—известный американский математик и программист, автор трехтомника «Исскуство программирования для ЭВМ». 2гЩХ [5] — система компьютерной подготовки документов. Читается «тэх», в русскоязычной среде обычно говорят «тех». 3Слово «породил» здесь не точно. TgX— программа верстки, а все другие ТеХ’и — просто макрорасширения TgX’a, позволяющие работать в нем более комфортно. Plain TgX-первая «одежда» для TgX’a. Это довольно простой пакет, содержащий только минимум базовых средств для набора математических формул и немного сервисных команд. В нем, однако, нет многих необходимых элементов полиграфии, таких как рубрикация (оформление заголовков глав, секций, подсекций), оформление содержания, предметного указателя и др. 4Лд45-ТеХ [10] читается «амстех». Создан по заказу Американского математического общества. В нем сделано много усовершенствований, облегчающих подготовку сложных математических конструкций, добавлено много новых математических символов. 5DTeX [15] читается «латех», а не «латекс». Его автор, Лесли Лампорт, назвал IXTeX комфортабельным лимузином, a Plain TgX — гоночным автомобилем, в котором нет ничего лишнего. Действительно, ИТеХ предоставил новые удобные средства подготовки документа, которых не было в других макрорасширениях TgX’a. В нем представление документа отделено от разметки документа. Представление —это как документ выглядит, какие шрифты, их размеры и начертания используются. Разметка задает логическую структуру документа. Пример современного языка разметки (markup language) — XML. Он определяет только правила написания хорошо оформленных (well-formed) документов, а смысл элементов оформления устанавливается с помощью стилевых файлов. Применяя к xml-документу разные стилевые файлы, получаем разные представления (html, pdf, ...). Пользователи Дд^^-Т^Х’а довольно быстро оценили достоинства ТХЩХ’а и захотели иметь тот сервис, что есть в ГХЩХ’е, но при этом работать, как в Дд^^-ТеХ’6-
рой пользователь в процессе редактирования документа видит, как документ будет выглядеть при печати. Процесс подготовки документа в Т^Х’е немного иной: пользователь работает над текстом документа в каком-либо редакторе текстовых файлов, транслирует документ транслятором Т^Х и смотрит, что получилось, с помощью специальной программы просмотра. При работе в Т^Х’е пользователь использует язык макросов, например, LMfeX. Прежде чем осваивать lAT^X, следует хорошо подумать, стоит ли время, потраченное на его изучение, тех преимуществ, которые Вы получите от его использования. А преимущества, конечно, есть и немалые: • Документ можно готовить в любом редакторе текстовых файлов7, хотя, конечно, лучше использовать «умный» редактор, который знаком с синтаксисом Т^ЦцХ’а. • Документы, подготовленные в T^jX’e, легко переносятся на другие типы компьютеров. При соблюдении простых правил можно быть уверенным, что Ваш документ будет одинаково транслироваться на любом компьютере, на котором установлен Т^Х. Это одна из причин высокой популярности Т^Х’а в научной среде, особенно в издательствах математического и естественно-научного профиля. • Многие научные издательства принимают для публикации статьи, подготовленные в lATEX’e. DT^jX фактически является стандартным средством обмена научной информацией. • Документ, подготовленный в IAT]gX’e, очень легко изменять, поскольку lATgX обладает замечательными средствами разметки, в которых структура документа отделена от представления. При изменении размера базового шрифта также изменяются размеры других шрифтов, используемых в документе. Переверстка документа в другом кегле и с другим размером страницы выполняется без больших усилий. • По качеству оформления математических формул TgX занимает лидирующее положение среди всех известных издательских систем. Средства подготовки математических формул в Т^Х’е многообраз 7Под текстовым файлом подразумевается файл, содержимое которого состоит из отображаемых символов и разбито на строки. С этой точки зрения MS Word не является редактором текстовых файлов, поскольку в формате его выходного документа кроме собственно текста есть много специальных команд и символов, задающих форматирование.
ны, но легко осваиваются. После небольшой практики Вы будете набирать формулы в T^jX’e гораздо быстрее, чем в Word’e. • ИЩХ — идеальный инструмент для подготовки монографий. Средства автоматической нумерации, мощный механизм меток и ссылок, автоматическая сборка предметного указателя и содержания, возможность раздельной трансляции глав документа — вот далеко не полный перечень приятных особенностей lAT^jX’a. • Макроязык T^jX’a позволяет легко создавать собственные команды и изменять уже существующие. Эти возможности особенно полезны для упрощения набора документа, а также при изменении дизайна документа. Обычно новые макросы или модификации известных макросов, предназначенные для широкого использования, оформляются в виде пакетов или классов и публикуются на сервере CTAN [13]. • Наконец, немаловажно, что Т^Х — свободно распространяемая система. Некоммерческие версии T^jXa существуют на всех известных платформах. Например, под Windows популярен MiKTeX [17]. Описав предмет, о котором пойдет речь, я хотел бы ответить на вопрос почему у меня возникло желание написать эту книгу. Это уже не первый мой опыт по написанию руководства по lAT^jX’y. Чуть больше 10 лет назад было издано небольшим тиражом «Руководство по работе в системе NCC-ЬХЩХ» [9]. В нем были описаны стандартные средства ЕМ^Х’а и макропакет А^С8, созданный мною в Вычислительном Центре СО РАН и использовавшийся в издательстве института. Руководство разошлось довольно быстро, и практически сразу же стали поступать запросы о его переиздании. Однако простое переиздание было уже бессмысленно, поскольку руководство к этому моменту частично устарело: IATeX в то время бурно развивался, был принят новый стандарт— IATeX[16]. Но еще не было стандартизовано кириллическое расширение ТЕХ’а и отсутствовал стандарт схем кодировок и начертаний шрифтов кириллицы. По этой причине работа над новой книгой была отложена до лучших времен. 8Макрос NqC содержит много сервисных элементов, облегчающих работу в I^TEX’e, а также добавляющих гибкость в оформление стандартных элементов документа: рубрик, колонтитулов, содержания. Пользователи, привыкшие использовать средства макроса Л/^С, с большой неохотой работают в стандартных классах lAI^jX’a, поскольку им явно не хватает того сервиса, который предоставляет МрС.
К настоящему времени кириллическое расширение стандартизовано: приняты кодировки и начертания шрифтов, русификация реализована с помощью пакета babel. Уже издано несколько руководств по 1АТцХ’у [2-4, 6, 7, 16], в которых современный lATgX описан достаточно подробно. В них делается упор на описание возможностей lAI^X’a и дополнительных пакетов, разработанных для JAT^jX’a. В то же время в этих книгах мало рассматриваются аспекты подготовки документа в lAI^X’e в соответствии с полиграфическими стандартами, в особенности с отечественными. Поэтому книга, уделяющая много внимания стыковке JAT^jX’a с полиграфией, актуальна и, скорее всего, будет востребована. Другая причина, по которой я не спешил с переизданием руководства, заключалась в том, что описанный в нем макрос Л^С был подготовлен в «устаревшем» lATfiX’e. Поэтому мне хотелось сначала перевести макрос Л/^C с устаревшего 1АТЁХ-2.09 в современный 1АТЁХ2с, а затем включить его описание в новую книгу. В 2002 г. эта работа была в основном закончена и еще два года ушло на апробацию макроса в ИВМиМГ СО РАН9 и его доработку. Современный TgX предоставляет неисчерпаемые возможности для подготовки документов. На сервере CTAN [13] опубликованы сотни пакетов, работающих под управлением JAT^jX’a, и описать все эти пакеты не представляется возможным. При отборе материала в эту книгу я ориентировался на определенный круг читателей, в основном на студентов ВУЗов, профессиональных математиков и физиков. В книге уделяется большое внимание верстке текста, набору математических формул, подготовке таблиц, иллюстраций. Я был пристрастен при подборе материала для книги. По этой причине в ней много внимания уделяется работе в макросе Л/^С. Макрос разбит на две коллекции файлов: ncctools и ncclatex10. Коллекция ncctools находится на сервере CTAN в папке macros/ latex/contrib/ncctools и содержит базовые пакеты макроса, представляющие самостоятельный интерес. Эти пакеты могут использоваться совместно со стандартными и базирующимися на них классами. Коллекция ncclatex (macros/latex/contrib/ncclatex) содержит пакет ncclatex, класс псс и сопутствующие файлы. В них используются пакеты коллек 9 За это время в макросе AfcC были подготовлены сборники трудов трех международных конференций и несколько монографий. 10В книге описаны версия 3.2 коллекции ncctools и версия 1.3 коллекции ncclatex. Информацию о дальнейших изменениях можно прочитать в файлах changes.txt, содержащихся в дистрибутивах коллекций.
ции ncctools. Установив эти коллекции в своем Т^Х’е, Вы сможете пользоваться всеми возможностями макроса Л/^С, описанными в книге. Книга рассчитана на широкий круг читателей. Поэтому я в ней стараюсь избегать специальных полиграфических терминов, подбирая более привычные слова. Так, вместо термина «выключка», я пишу «центрирование», «выравнивание по левому краю» и др. Формулу, напечатанную в отдельной строке, называю «выносной формулой»11. Но полностью без полиграфических терминов обойтись, все-таки, не удается. Я использую такие термины как «макет», «кегль», «гарнитура», «начертание». В книге много внимания уделяется практическим советам по верстке тех или иных элементов текста и математических формул. Как оказалось, это наиболее нужная информация12. Книга получилась многоплановой. Ее могут использовать как начинающие пользователи I^TgX’a, так и специалисты. При написании книги я старался ставить себя на место пользователя lATgX’a, чтобы понять, какая информация будет важной, а какая — ненужной в практической верстке. Ненужную с моей точки зрения информацию я исключал. * * * Как читать эту книгу? Материал книги разбит по главам так, чтобы уменьшить их зависимость друг от друга. Поэтому можно читать книгу практически с любой главы. Начинающим пользователям полезно будет сначала прочитать гл. 1. В ней рассказано, как начать работать в Г^СЩХ’е на примере работы с MiKTeX’oM через WinEdt. В конце главы приведены также некоторые полезные советы о подготовке статей для научных журналов. Гл. 2 — центральная. В ней вводится почти вся используемая терминология и объясняются базовые элементы TgX’a и lATgX’a. Эта глава сложна при первом чтении, поэтому я рекомендую начинающему пользователю сначала ее прочитать «по диагонали», а потом по мере необходимости возвращаться к ней за уточнением терминов. 11С.М. Львовский в [7] называет такую формулу «выключной», хотя правильнее было-бы сказать «формула, выключенная по центру». Но в этой фразе смешиваются два разных понятия: «разметка» и «представление». Разметка указывает, что формула напечатана отдельно от остального текста, а представление, — что напечатана по центру полосы. По этой причине термин «выносной», относящийся только к разметке, мне показался более подходящим в качестве перевода с английского слова «display». 12Я обратил внимание, что у многих пользователей моего предыдущего руководства первая часть книги, содержащая описание 1#ЩХ’а, почти как новая, а вторая часть книги, содержащая примеры, крайне потрепана.
Работа со шрифтами вынесена в гл. 3. Здесь описан пользовательский уровень без углубления в детали. Дополнительную информацию о шрифтах можно найти в приложениях В и Г. Гл. 4 — для нетерпеливых пользователей. Прочитав ее, Вы сможете подготовить простую статью. Здесь описывается структура статьи, подготовка титула, аннотации, рубрикация и работа с библиографическими ссылками. Гл. 5 —для тех, кто хочет набирать текст грамотно: правильно расставлять пробелы, дефисы и тире, использовать общепринятые сокращения, кавычки и многоточия. Здесь же Вы найдете информацию об общеупотре-бимых единицах измерения физических величин, их наименовании (русском и международном) и использовании. Гл. 6 — для тех, кто хочет оформлять текст красиво. Здесь описаны выносные текстовые элементы, т.е. элементы текста, оформление которых отличается от обычного. Например, выравнивание абзацев влево, вправо, по центру; вывод цитат, стихов, списков13, табулированного текста, текста без обработки. Гл. 7—для любознательных читателей. Здесь описаны детали форматирования текста, которые требуются только в сложных документах: боксы, линейки, подпорки, раздвижка и заполнение пространства. Сюда же отнесена работа со сносками и верстка текста в несколько колонок. Гл. 8 посвящена верстке таблиц. Это очень непростая тема, поэтому она иллюстрируется большим числом примеров, сложность которых постепенно возрастает. Здесь же демонстрируются возможности пакета nccboxes из коллекции ncctools, с помощью которого можно легко оформлять таблицы в соответствии с отечественными полиграфическими стандартами. Заканчивается глава описанием наиболее известных расширений механизма подготовки таблиц, в частности, пакета array. Гл. 9 посвящена верстке внутристрочных формул. В ней вводится математическая терминология T^jX’a, дается описание возможностей пакетов Американского математического общества. Подробная информация по математическим символам и конструкциям вынесена в приложение Г. Здесь же Вы найдете советы по грамотной верстке некоторых важных математических конструкций. Гл. 10 посвящена верстке выносных формул. Существенная ее часть связана с пакетом amsmath. Заканчивается глава различными примерами оформления выносных формул. 13В полиграфии используется термин «перечень». Я употребляю вместо него термин «список».
Гл. 11 — для математиков. В ней описано, как создавать окружения для оформления таких математических утверждений, как теорема, лемма и др. Базовые возможности LM^jX’a в этой области недостаточны, поэтому много внимания в главе уделяется различным расширениям. Гл. 12 посвящена графическим возможностям lATgX’a. Начинающему пользователю достаточно прочитать только два первых пункта этой главы, в которых описаны правила оформления иллюстраций и особенности вставки графических объектов. Из остальной части главы Вы почерпнете информацию о работе с цветом, некоторых трансформациях объектов, подготовке рисунков средствами псевдографики 1А1]цХ’а и др. Плавающему размещению рисунков и таблиц посвящена гл. 13. В ней Вы найдете информацию о том, как оформить плавающие элементы, в том числе и нестандартно (например, в оборку с текстом). Заключительная, четырнадцатая глава книги, посвящена верстке больших документов: книг и отчетов. Здесь наиболее полно проявляются возможности оформления документов в макросе «Л/^С: управление рубрикацией, заголовками плавающих элементов и сборкой содержания; улучшенный дизайн колонтитулов документа; управление подготовкой предметного указателя. Описываемый здесь класс псс содержит много полезных команд, в частности, в нем есть средства для оформления специальных страниц документа (титула, аннотации, страницы выходных данных) по правилам отечественной полиграфии. В книге также есть 4 приложения. Приложение А посвящено оформлению библиографии по ГОСТам, т. е. по правилам, принятым в отечественной полиграфии. Здесь приводится «выжимка» из этих правил и много примеров. В приложении Б описана работа с макросами: создание и переопределение команд и окружений, работа с переменными14 и счетчиками. Приложение В —самое объемное. В нем описано около 150 пакетов lATEjX’a. Надеюсь, что это приложение будет полезно тем пользователям, которым недостаточно обычных возможностей ЬМ^Х’а. 14То, что я называю переменной, в терминологии IM^X’a называется length-command. Здесь у меня расхождения по сравнению с книгой С.М. Львовского [7], в которой с этой целью используется термин параметр. Я же использую термин параметр в контексте параметр команды, а Львовский для этой цели применяет термин аргумент команды. Это, пожалуй, наиболее существенные расхождения между терминологией этой книги и книги [7]. Другие расхождения связаны с использованием термина блок: я использую программистскую интерпретацию — блок, это ограничение области действия деклараций, — а английский термин box, перевожу дословно как бокс. Львовский переводит box как блок, а для ограничения области действия использует термин группа.
Наконец, в приложении Г собрана справочная информация по основным командам ЬМ^Х’а и некоторых его расширений (более 1000 команд). Здесь я придерживаюсь традиций предыдущей своей книги, собрав всего на 30 страницах описание почти половины всех упомянутых команд. Надеюсь, что это приложение будет наиболее полезно для пользователей. Книга снабжена предметным указателем, в котором для каждой нестандартной команды или окружения дополнительно приводится название определяющего ее пакета или класса. В описании команд и окружений их параметры обычно набраны курсивом и заключены в угловые скобки: {нечто). Текст {список элементов) означает перечисление {элементов) через запятую. В некоторых параметрах применяется синтаксис {ключ)={значение). При этом {список ключей) означает перечисление через запятую ключей с их значениями. Значение true у ключа можно не указывать. Например, следующие варианты дают одинаковый результат: clip=true clip= clip Команды, названия окружений, служебные символы, варианты значений параметров, опции, текст примеров и др. набраны шрифтом телетайпа. Если описание команды или окружения вынесено в отдельный абзац, то знак препинания после него не ставится. Изредка используются элементы формальной грамматики в виде {понятие) {вариант 1) I {вариант 2) I Это означает, что {понятие) может быть представлено любым из перечисленных {вариантов). * * * Эта книга была написана благодаря помощи моей жены Т. И. Рожен-ко и сына Сергея, которые были главными читателями, редакторами и критиками книги. Текст книги был существенно улучшен благодаря замечаниям моих друзей и коллег к.ф.-м.н. А. Ю. Бежаева, В. В. Богданова, к.ф.-м.н. Ю. С. Волкова, к.ф.-м.н. В. Л. Мирошниченко, д.т.н. А. С. Родионова. Наконец, большую помощь в подготовке книги мне оказали редакторы Л. И. Бессильных и М. В. Зверева.
Глава 1 Как начать работать в ВТЕХ’е? 1.1. Что такое Т^Х-система? ТцХ [5] был создан известным американским математиком и программистом Дональдом Кнутом. За годы, прошедшие после своего появления, Т^Х был перенесен на все существующие компыртерные системы. Сейчас насчитывается более десятка различных реализаций T^jX’a, причем все они работают совершенно одинаково. Вы можете быть уверены, что документ, оттранслированный Т^Х’ом на Вашем компьютере, будет выглядеть точно так же, как и оттранслированный в любом другом T^jX’e, в любой другой операционной системе1. В своем первоначальном варианте Т^Х состоял из собственно программы tex и небольшого числа сопутствующих программ и файлов. За более чем 20 лет своего существования количество сопутствующих программ и файлов T^jX’a неимоверно разрослось2, поэтому, говоря о совокупности программ и файлов, относящихся к ТЩХ’у, я буду называть их Тр]Х-систе-мой. Все современные Т^Х-системы устроены одинаково. Они содержат несколько корневых папок (обычно две—texmf и localtexmf), в которых находятся все файлы. Структура дерева файлов в этих папках в разных Т^Х-системах также в основном одинакова. В папке texmf хранятся файлы самой TgX-системы, а папка localtexmf содержит локальные файлы: файлы настроек Т^Х-системы, сгенерированные файлы форматов, шрифтов и др. При поиске файлов папка localtexmf имеет преимущество перед texmf, поэтому, если в обеих папках есть файл с одинаковым названием, то будет использоваться файл из папки localtexmf. В качестве примера Т^Х-системы я буду ссылаться на MiKTeX [17] — ТЩХ-систему под Windows. Эта система распространяется бесплатно и работает в любой операционной системе линейки Windows. MiKTeX может быть установлен в одной из трех комплектаций: малой (small), большой (large) и полной (full). Для использования русского языка необходима ком хЭта фраза неточна. Результат трансляции документа в разных TgX’ax может быть разным, если установленные на них версии макросов (классов и пакетов) различаются. 2Например, MiKTeX в полной комплектации содержит более 40 тыс. файлов и занимает на диске более 500 Мбайт.
плектация large (примерно 300 Мбайт). Если же Вам не жалко 700 Мбайт дискового пространства, то лучше установить MiKTeX в полной комплектации. Чтобы использовать в ТцХ’е русский язык, надо после установки MiKTeX’a запустить программу MiKTeX Options3, выбрать закладку «Languages», отметить строку «russian» в списке языков, нажать кнопку «Apply» (или «Применить»), перейти в закладку «General» и нажать кнопку «Update Now». Для ускорения поиска файлов в современных Т^Х-системах используется база данных, в которой содержатся имена всех файлов Т^Х-системы и пути к ним. Поэтому, если Вы добавили новые файлы макросов в T^jX-систему (например, установили новый пакет), TgX не будет знать о них до тех пор, пока база имен не будет обновлена. В MiKTeX’e это делается нажатием на кнопку «Refresh Now» в закладке «General» программы MiKTeX Options. 1.2. Что используется при работе в Т^Х’е? Современная Т^Х-система содержит много компонент, необходимых для работы в Т]цХ’е. Наряду с транслятором tex, форматирующим Ваш документ и создающим dvi-файл4, обязательно имеется программа просмотра оттранслированного dvi-файла на экране и печати5. Есть также различные dvi-драйверы, позволяющие конвертировать dvi-файл в другие форматы, например, dvips преобразует dvi-файл в PostScript. Еще есть программа pdftex, позволяющая сразу получить pdf-файл из исходного документа. При генерации шрифтов ТцХ использует программу METAF0NT. Для сортировки предметного указателя применяется make index. Для работы с библиографическими базами данных служит bibtex. Есть также большое число вспомогательных программ для работы со шрифтами и других утилит. Отмечу еще программу TeXify, которую можно назвать интегратором программ ТвХ’а. Эта программа оттранслирует Ваш файл столько раз, сколько необходимо для правильной установки перекрестных ссылок в документе, вызовет при необходимости другие программы (makeindex, bibtex) и покажет результат в просмотрщике, либо вызовет 3Через кнопку «Пуск» зайдите в пункт меню «Программы», затем в «MiKTeX» и кликните по пункту «MiKTeX Options». 4Файл с расширением .dvi (Device Independent). 5В MiKTeX’e для просмотра и печати dvi-файла используется YAP (Yet Another Previewer).
1.3. Пример работы с MiKTeX’oM через WinEdt 21 текстовый редактор, если трансляция завершилась с ошибкой. Все перечисленные программы содержатся в любой современной ТЩХ-системе. Для полноценной работы в T^jX’e необходимы также программы других производителей программного обеспечения: Adobe Acrobat Reader [12] (просмотр pdf-файлов), Ghost Script и Ghost View [14] (работа с PostScript-файлами). Полезно также установить какой-либо графический редактор, например, Jasc Paint Shop Pro, Corel Graphics Suite, Adobe Photoshop. 1.3. Пример работы c MiKTeX’oM через WinEdt Документы для JATgX’a можно готовить в любом текстовом редакторе, но лучше использовать специализированный редактор, который интегрирован с Вашей IJgX-системой. Так, для работы с MiKTeX’oM хорошо подойдет текстовый редактор WinEdt [19]. Он распознает стандартные команды ИЩХ’а, помогает при наборе отслеживать вложенность фигурных скобок, упрощает процесс набора документа, облегчает трансляцию документа и поиск ошибок в нем, и многое другое. Пожалуй, начнем с самого простого документа, состоящего всего лишь из четырех строк: \documentclass{article} \begin{document} Hello, \LaTeX\,! \end{document} Откройте WinEdt, создайте новый документ, наберите в нем эти строки и сохраните результат в файле sample.tex в какой-либо папке6. Теперь найдите в панели инструментов кнопку с медведем Щ7 и нажмите на нее. На экране ненадолго появится текстовое окно, в котором Вы увидите процесс трансляции документа. Если Вы набрали документ без ошибок, то по завершении трансляции будет запущена программа просмотра YAP, и Вы увидите страницу с текстом Hello, LMfeX! Если при трансляции возникла ошибка, то ТцХ в текстовом окне задаст вопрос, что делать дальше. Обычно в этом случае надо завершать трансляцию. Для этого зажмите клавишу Ctrl и нажмите символ Z (сокращенно Ctrl+Z). Завершить трансляцию можно также клавишей Ctrl+Break. 6В именах файлов и палок для LM^X’a русские буквы лучше не использовать, поскольку для таких файлов не работает функция обратного поиска в YAP’e. 7При нажатии на эту кнопку запускается программа TeXify.
При этом управление перейдет в WinEdt, снизу появится окно с описанием ошибки, а строки текста, в которых возникла ошибка, будут выделены. Весь этот сервис работает только в том случае, если Вы транслируете файл с помощью программы TeXify. Если же Вам надо только оттранслировать файл без перехода в программу просмотра, то используйте кнопку с логотипом Другие полезные кнопки в панели инструментов WinEdt, которые могут пригодиться при работе с документами в DTfTjX’e: трансляция документа в формат PDF с помощью TeXify; трансляция документа в формат PDF с помощью pdftex (без перехода в программу просмотра pdf-файла); просмотр dvi-файла программой YAP; просмотр dvi-файла программой YAP с показом той страницы, где в данный момент находится курсор в редакторе WinEdt (в YAP’e позиция курсора показывается маркером в виде серого кружка); перевод dvi-файла в PostScript программой dvips; Js* просмотр pdf-файла; трансляция выделенного фрагмента документа. В YAP’e полезно настроить функцию обратного поиска, предоставляющую такой сервис: дважды кликнув мышью на какой-либо фрагмент текста на странице документа, показанной в YAP’e, Вы попадете в соответствующее ему место документа в WinEdt’e. Чтобы настроить эту функцию, откройте в YAP’e форму «Options» через пункт меню View/Options. . ., выберите закладку «Inverse Search» и в списке с заголовком «Program:» выберите вариант WinEdt. Если такого варианта в списке нет, то Вам придется задать команду обратного поиска вручную: в поле с заголовком «Command line:» наберите команду "C:\Program Files\WinEdt Team\WinEdt\winedt.exe" " [Open(’7.f ’); SelLine (’/.1,8)] ” Первый параметр команды задает путь к программе WinEdt (здесь показан путь, предлагаемый по умолчанию при установке программы). При трансляции документа sample.tex в папке, где он находится, создаются следующие файлы: • Файл с расширением .dvi — sample.dvi — содержит результат трансляции документа. Этот файл используется программой YAP для показа документа на экране.
• Файл с расширением .log—sample. log—содержит журнал трансляции документа. В этот файл заносится вся информация, которую Вы видите в текстовом окне во время трансляции документа, а также много другой дополнительной информации о процессе трансляции. • Файл с расширением .aux—sample .aux—содержит контекст документа. Этот файл очень важен, поскольку именно из него JATf^X извлекает номера источников цитирования, утверждений и формул, на которые производятся ссылки, и именно из него берется информация для сборки содержания документа, списка рисунков и таблиц. В процессе трансляции сложных документов могут создаваться и другие файлы (подробности см. в гл. 14). 1.4. Разбор примера Теперь разберем подробнее, из чего состоит документ sample.tex. Он в основном состоит из команд, начинающихся со специального символа «\». У некоторых команд есть параметры) заключенные в фигурные скобки. Параметр команды \documentclass задает класс транслируемого документа. В данном случае это стандартный класс article, используемый при подготовке статей. Пара команд \begin и \end задает окружение) имя которого указано в их параметре. Здесь это окружение document, разбивающее файл документа на три части: 1. Строки, находящиеся между командами \documentclass и \begin{document}, называются преамбулой документа. В преамбуле выполняется настройка документа, в частности, загружаются дополнительные пакеты,) задается стиль оформления документа и пр. В преамбуле нельзя писать обычный текст. Пустые строки в преамбуле игнорируются. 2. Текст документа помещают внутрь окружения document. Абзацы текста отделяют друг от друга пустыми строками или командой \раг. 3. Команда \end{document} завершает трансляцию документа. Текст, идущий следом, игнорируется. Строка с текстом документа (Hello, \LaTeX\,!) состоит из слова «Hello», запятой, пробела, команды \LaTeX, печатающей логотип lAT^jX, команды \ ,, вставляющей узкий пробел, и символа «!». Команды бывают
двух типов. У одних команд имя состоит из латинских букв8, а у других— из одиночного символа, не являющегося латинской буквой. К буквам относятся только латинские строчные и прописные буквы. Символы кириллицы буквами не являются. Пробелы после команды с буквенным именем игнорируются, а после команды с небуквенным символом не игнорируются. 1.5. Подготовка документов на русском языке Чтобы заказать русский язык, добавьте в преамбулу документа следующие строки: \usepackage[Т2А]{fontenc} \usepackage[ср1251]{inputenc} \usepackage[russian]{babel} Здесь с помощью команды \usepackage загружаются три пакета'. fontenc, inputenc и babel. Каждому из них передается опция, указанная в квадратных скобках сразу после команды \usepackage. В шрифтах Dl^X’a, используемых по умолчанию, символы кириллицы отсутствуют. Поэтому нужно сменить схему кодировки шрифтов на схему, содержащую кириллицу, загрузив пакет fontenc и указав требуемую схему в его опциях. В DTfTjX’e имеется три употребимых варианта кодировки кириллицы: Т2А, Т2В и Т2С. Во всех этих вариантах есть буквы латинского и русского алфавитов, а различия проявляются на буквах других языков, использующих кириллицу. Для русского языка можно указать любой из этих вариантов. Исторически сложились несколько вариантов кодировки символов кириллицы при наборе текста. Поэтому для выбора варианта, соответствующего кодировке Вашего документа, необходимо загрузить пакет inputenc, в опциях которого указывается требуемая кодировка. Обычно используются кодировки ср1251 (Windows СР1251), ср866 (MS DOS), koi8-r (Unix), maccyr (Apple Macintosh). Между документами на английском и русском языках есть ряд различий. Так заголовок главы в английском языке начинается словом «Chapter», а в русском — «Глава». Есть и другие стандартные заголовки, которые надо сменить при выборе русского языка. Все это делает пакет babel при его загрузке с опцией russian. 8Строчные и прописные буквы в имени команды различаются! Изменяя регистр любой буквы, Вы получите другую команду!
В отечественной полиграфии принято после номера раздела ставить точку, а в английской полиграфии точка не ставится. Есть и другие особенности оформления документов на русском языке, которые учтены в пакете misccorr. Загружать этот пакет следует после пакета babel командой \usepackage{misccorr} В качестве альтернативы можно использовать пакет ncclatex, который оформляет документы как на русском, так и на английском языке по правилам отечественной полиграфии. Загружать этот пакет следует вместо пакетов babel и fontenc. Если Вы готовите документ в кодировке Windows СР1251, то пакет inputenc также можно не указывать. Пример: \documentclass{article} \usepackage[russian]{ncclatex} \begin{document} \end{document} Здесь все необходимые пакеты подгружаются автоматически9: babel с опцией russian, fontenc с опцией Т2А, inputenc с опцией cpl251-light (это «легкий» вариант кодировки СР1251, о котором будет рассказано чуть ниже). Если Вы используете входную кодировку, отличную от СР1251, то загрузите пакет inputenc с нужной кодировкой в любом месте преамбулы документа. Если же Вам нужна иная кодировка шрифтов с кириллицей, то укажите ее в опциях загрузки пакета ncclatex. Пример: \usepackage[russian,Т2В]{ncclatex} 1.6. Плата за использование кириллицы Когда Т^Х только появился, все было просто: его текстовые шрифты состояли из 128 символов, содержали символы кодировки ASCII и немного дополнительных символов. Теперь же в 1АТ)цХ’е поддерживаются десятки языков, и обеспечить точное совпадение входного кода символа с его кодом в шрифте Т^Х’а уже не удается. По этой причине приходится использовать пакет inputenc, предназначенный для установки соответствия между кодами не-ASCII-символов (например, символов кириллицы), используемых при наборе текста, и их кодами в текстовых шрифтах. 9Пакет ncclatex загружает много других пакетов из макроса N(£- Подробнее об этом рассказано в п. 14.8 на с. 253.
Пакет inputenc превращает каждый не-АЭСП-символ в команду. Когда TfTjXl транслирует такой документ, команды, связанные с не-АЭСП-сим-волами, подставляют вместо себя коды, используемые в шрифтах ТЩХ’а. При использовании кириллицы ситуация еще усложняется, поскольку есть не только много входных кодировок, но и выходные кодировки шрифтов с кириллицей так же различаются. Поэтому процесс сопоставления входного кода и кода в шрифте становится двухшаговым: при трансляции символ кириллицы заменяется на специальную команду, а затем эта команда подставляет вместо себя код шрифта по правилам, определенным пакетом fontenc. Например, слово «Задача» превращается в процессе обработки в последовательность команд \CYRZ\cyra\cyrd\cyra\cyrch\cyra Эта особенность не позволяет нормально сортировать предметный указатель, содержащий термины на русском языке: русские буквы будут упорядочиваться не по алфавиту, а по именам соответствующих им команд10. Если буквы кириллицы работают как команды, то их нельзя использовать в именах меток при перекрестных ссылках. Решить эту проблему поможет пакет citehack: просто загрузите его командой \usepackage. В стандартных математических шрифтах TfrjX’a символы кириллицы отсутствуют. В результате в математических формулах они пропадают. Это очень коварная ошибка, причем обнаружить ее можно только в log-файле по тексту: Missing character: There is no (символ) in font (шрифт)1. а найти такой символ в тексте документа крайне трудно. Эта ошибка часто возникает в документах, автоматически переведенных в из Word’a. Решить проблему с русскими буквами в математических формулах поможет пакет mathtext, который следует загружать до пакета fontenc. В макросе A/^C определена легкая версия кодировки СР1251, называемая cpl251-light. Ее использование позволит решить все перечисленные выше проблемы, но для этого, конечно, надо набирать текст в кодировке Windows СР 1251. При заказе этой кодировки командой \usepackage[cpl251-light]{inputenc} 10Для сортировки русского предметного указателя вместо программы makeindex используют программу xindy, которую можно закачать с серверов CTAN [13]. Но в этом случае Вам придется настроить TeXifу, чтобы использовать xindy для сборки предметного указателя.
Вы получаете следующие преимущества: в именах меток можно использовать все строчные и прописные русские буквы за исключением «Е» и «ё»; в математических формулах эти буквы не исчезают и печатаются прямым шрифтом; предметный указатель можно сортировать программой make index11. 1.7. Еще о редакторе WinEdt При наборе текста в редакторе WinEdt абзац автоматически разбивается на строки, если включен режим Wrap. Индикатор этого режима показан в строке статуса (снизу): если слово Wrap серое, то этот режим отключен для файла, в котором в данный момент находится курсор. Чтобы изменить режим Wrap, кликните по этому слову левой кнопкой мыши. С помощью кнопок В, J, Т в панели инструментов можно сменить начертание выделенного фрагмента текста: кнопка В оформляет выделенный текст в виде параметра команды \textbf (ожирнением), / — задает выделение командой \emph (курсивом), Т—командой \texttt (шрифтом телетайпа). Очень полезна при наборе кнопка S: она добавляет панель с основными математическими командами lAT^jX’a (стандартными и из расширения Лд4?), состоящую из большого числа закладок. Чтобы убрать эту панель, кликните на кнопку Е еще раз. Редактор WinEdt многооконный. Вы можете править несколько файлов одновременно. Переключение между файлами осуществляется выбором закладок с их именами, которые отображаются под панелью инструментов. Чтобы закрыть файл, в котором в данный момент находится курсор, нажмите на маленькую кнопку X, находящуюся в верхнем правом углу окна редактора под аналогичной кнопкой закрытия всего приложения. При работе над большим документом пригодятся следующие кнопки: объявляет файл, в котором находится курсор, головным файлом. WinEdt будет запускать на трансляцию именно этот файл, вне зависимости от того, в каком файле в данный момент находится курсор, отключает режим головного файла. 11 При такой сортировке русские буквы упорядочиваются по их кодам. Поэтому могут возникнуть сложности с сортировкой терминов, начинающихся с русских букв разного регистра. Но в предметных указателях такая ситуация обычно не возникает, поскольку все термины начинаются с прописной буквы.
показывает дерево проекта в специальном окне слева от текстового окна. Чтобы работать с деревом проекта, надо оформлять вставку каждого файла в головном файле командой \include или \input (подробности см. в гл. 14). Дерево состоит из двух частей: из дерева файлов и дерева рубрик документа. Так дерево проекта этой книги в свернутом состоянии имело вид: Ж £2 mono.tex Lt) TOC Здесь в первой строке показано имя головного файла, а во второй—слово ТО С, означающее оглавление книги (Table of Contents). Разворачивается дерево нажатием на символ «+». При первом использовании дерева проекта полезно задать действие, которое будет выполняться по клику клавишами мыши на имя файла в дереве. Для этого служит кнопка [Г] в панели дерева проекта12. Нажав на стрелку около этой кнопки, Вы увидите возможные варианты настройки. Выберите, например, вариант «Open on Click», означающий переход к редактированию файла при клике левой клавишей мыши по его имени. Используя дерево ТОС, можно перейти на начало любой рубрики документа. Для этого кликните правой кклавишей мыши по нужной рубрике в дереве и выберите вариант «Find» в появившемся контекстном меню. 1.8. Дерево файлов Т^Х-системы В корне texmf есть следующие папки и файлы, представляющие интерес для пользователей: tex все файлы макросов для TfrjX’a; tex\generic\babel файлы пакета многоязыковой поддержки Babel; tex\latex файлы макросов Г^ЦцХ’а; tex\latex\base ядро 1АТ[£Х’а и стандартные классы; tex\latex\tools стандартные пакеты ГМ^Х’а; tex\latex\cyrillic поддержка кириллицы; 12 Эта кнопка может быть не видна в окне дерева проекта. Чтобы ее увидеть, расширьте окно, перетащив мышью его правую границу.
source\latex исходные файлы макросов t^TgX’a и пакетов; . doc вся документация к ТцХ-системе; doc\latex документация к lAT^X’y и пакетам; doc\guides пособия для пользователей T^jX’a, в частности, в папке Ishort-russian Вы найдете введение в lAT^X; doc\latex\base дополнительная документация к lAI^X’y, в частности, следующие инструкции на английском: cfgguide .dvi — о конфигурировании ЬХЩХ’а; clsguide .dvi — о написании классов и пакетов; cyrguide.dvi — о кириллической поддержке; fntguide.dvi — о схеме выбора шрифтов ЬХЩХ’а. 1.9. Как найти ошибку при трансляции файла? Ошибка в наборе названия команды обычно приводит к следующей диагностике, которая выводится в окне трансляции: ! Undefined control sequence. 1.25 \sectin ? В ней говорится, что в строке номер 25 обрабатываемого файла обнаружена неизвестная команда \sect in. TgX спрашивает с помощью символа ?, что делать дальше. В такой ситуации лучше прекратить трансляцию документа, нажав Ctrl+Z или Ctrl+Break. Имя файла, в котором возникла ошибка, можно узнать проанализировав структуру log-файла: когда ТЁК начинает чтение какого-либо файла, в log-файл заносится открывающая круглая скобка и следом полный путь к этому файлу; по окончании чтения файла в log-файл заносится закрывающая круглая скобка. Занявшись поиском круглых скобок в log-файле, можно выяснить при обработке какого именно файла возникла ошибка. Конечно, это занятие достаточно утомительное, поэтому интеллектуальные текстовые редакторы, интегрированные с Т^Х’ом (например WinEdt), проводят такой анализ автоматически и открывают нужный файл в нужном месте.
1.10. Какими классами и пакетами ПТцХ’а пользоваться? Для ТАТ^Х’а подготовлены сотни пакетов макросов. Такое разнообразие сначала удручает. На самом деле все не так страшно, поскольку большинство пакетов—специализированные. Обычно достаточно освоить базовые средства IM^X’a и дополнительные средства нескольких пакетов. При подготовке документа надо выбрать класс, в котором транслировать документ, и заказать необходимые дополнительные пакеты макросов. Если Вы готовите статью для отправки в научное издание, то лучше всего использовать стандартный класс article. Для подготовки математических формул рекомендую использовать средства пакета amsmath. Специализированные математические шрифты подгружаются в пакете amsfonts, а дополнительные математические символы определяются в пакете amssymb. В математических статьях может быть еще полезен пакет Ьш, определяющий команду \bm (ожирнение математических символов). Для вставки рисунков лучше всего использовать средства пакета graphicx. Все перечисленные пакеты входят в стандартную конфигурацию JAT^X’a. Для подготовки монографии или отчета можно использовать стандартные классы book или report, однако обеспечиваемый ими дизайн документа далек от совершенства13. Поэтому для подготовки больших документов лучше использовать усовершенствованные классы. Например, в макросе Л/^С есть класс псс, позволяющий готовить статьи, препринты, отчеты и книги в соответствии с отечественной полиграфической традицией. Выбор варианта документа задается в списке опций команды \documentclass. По умолчанию документ готовится в стиле «статья». Так для заказа стиля «русскоязычная статья» в классе псс служит команда \documentclass[russian]{псс} При заказе класса псс автоматически загружаются пакеты amsmath и graphicx. Если в команде \documentclass указана опция russian, то также загружаются пакеты fontenc со схемой кодировки шрифтов Т2А и babel с опцией russian. Если Вы не используете явно пакет inputenc, то по завершении преамбулы документа устанавливается легкий вариант поддержки кодировки СР1251: cpl251-light. 13Для стандартных классов важна их неизменность, чтобы можно было на их основе создавать собственные классы документов. По этой причине разработчики ДОЩХ’а «заморозили» стандартные классы.
1.11. Правила хорошего тона при подготовке статей Если Вы готовите статью для публикации в научном издании, подумайте немного о технических редакторах, которые будут ее править14, и постарайтесь облегчить им работу. Для этого надо придерживаться следующих простых правил: • Используйте класс, который рекомендует научное издание. • Старайтесь не использовать нестандартных пакетов. • Старайтесь избегать создания собственных команд. • Если уж собственные команды необходимы, создавайте их с помощью команды \newcommand, а не \def. • Не старайтесь готовить документ красиво. Ваше понимание красоты может отличаться от правил, используемых в редакции. • Не пишите текст заголовков прописными буквами. • Не используйте команд принудительной разбивки строк текста (\\, \linebreak, \newline) и страниц (\pagebreak, \newpage). • Не злоупотребляйте командами маленьких пробелов \,, \:, \;, особенно внутри математических формул15. Т^Х достаточно грамотно вставляет нужные математические пробелы без каких-либо усилий с Вашей стороны. Не мешайте ему это делать! • Чем меньше фигурных скобок в документе, тем лучше! Особенно важно не злоупотреблять фигурными скобками в математических формулах, поскольку они «съедают» пробелы между элементами формул. Например, $а+Ь$ выглядит так: а + Ь, а $а{+}Ь$ —так: а+Ь. • Не стоит «лепить» формулы друг на друга. Строчные формулы лучше набирать каждую отдельно (каждой формуле—по паре собственных долларов!). Например, фразу «Пусть а, Ь, с—вещественные числа» желательно набирать так: 14При издании трудов конференций издатели могут потребовать от Вас статью в виде, готовом для печати (camera ready). При этом задаются достаточно жесткие требования к макету страницы, используемым шрифтам и правилам оформления элементов документа. Часто прилагается класс для I^T^X’a, в котором рекомендуется готовить статью. Конечно, в такой ситуации технического редактирования Вашей статьи в издательстве уже не будет, и Вы можете готовить статью так, как считаете нужным. 15 Одно из исключений из этого правила: перед знаком дифференциала в интегралах стоит вставлять маленький пробел \,.
Пусть $а$, $Ь$, $с$~— вещественные числа • Громоздкие строчные формулы лучше превратить в выносные (вынесенные из основного текста в отдельные абзацы). Выносные формулы, на которые нет ссылок, лучше не нумеровать. В выносных формулах для разделения нескольких подформул, написанных в одной строке, используйте команду \quad или \qquad, в крайнем случае \enskip, если в строке не хватает места. • Рисунок, подготовленный в векторном формате (cdr, eps, ps, mtf, pdf и др.), предпочтительнее растрового рисунка (png, рсх, bmp, gif и др.). А лучше сделать два варианта рисунка: оригинал в векторном формате и версию для печати в растровом виде. Формат jpg используйте только для фотографий. • Готовьте растровые рисунки хорошего качества. Если рисунок хорошо выглядит на экране компьютера, еще не факт, что он будет хорошо выглядеть в напечатанном виде. Экранное разрешение обычно 75-100 dpi (dots per inch), а для печати требуется разрешение в 600 и более точек на дюйм. • Если рисунок полутоновой или цветной, не стоит переводить его в черно-белый формат, даже если известно, что издание будет чернобелым. Черно-белые рисунки очень трудно редактировать и масштабировать. • Если в издании не будет использоваться цвет, то разные кривые на графиках лучше оформлять линиями разного типа и толщины (тонкая, толстая, сплошная, штриховая, точечная, штрих-пунктирная и т.д.), а не разного цвета. • Размер (кегль) шрифта, используемого в «легенде» рисунка (в надписях и в оцифровке графиков), не должен быть больше, чем кегль базового шрифта документа. Обычно легенда оформляется более мелким кеглем, но в пределах разумного. Рекомендуемый кегль легенды: 7-10 пунктов. • Гарнитура шрифта, используемого в легенде рисунка, должна согласовываться с гарнитурой основного текста. Стандартный шрифт ZATgX’a близок к шрифту «Times New Roman». Недопустимо использовать шрифты нескольких гарнитур в иллюстрациях одной статьи.
Базовые элементы ИТвХ’а 2.1. Символы ИТ^Х’а Все символы, встречающиеся в текстовом файле, подразделяются Т^Х’ом на категории. Например, большие и малые латинские буквы относятся к категории букв1. К пробелам относятся обычный пробел, символ табуляции и конца строки. При чтении файла несколько подряд идущих пробелов заменяются на один пробел, но если среди них встречается два символа конца строки, то все они заменяются на команду завершения абзаца \раг. Таким образом, пустая строка в тексте документа означает конец абзаца. Несколько идущих подряд пустых строк эквивалентны одной пустой строке. Следующие символы имеют в DT^jX’e специальные категории: \ { } $ & # ~ _ 7. Символ «\» —признак начала команды; «{» и «}» —ограничители параметра команды и ограничители блока; «$» —переключатель в математическую моду и обратно2; «&» —разделитель полей в матрицах и таблицах; «#» —признак параметра в макроопределениях; «*» и «_» — команды оформления верхних и нижних индексов в математической моде; наконец, «У.» —начало комментария (весь остаток строки, начиная с этого символа, а также все пробелы в начале следующей строки игнорируются). Особую категорию составляют активные символы. Такие символы работают как команды. В стандартном ЬХЩХ’е есть только один активный символ— «~», который используется в качестве неразбиваемого пробела, т. е. пробела, по которому нельзя разорвать строку текста. При использовании пакета inputenc не-АЗСП-символы (с кодом более 127) также 1Во «внутренней кухне» I^TgX’a символу «0» присваивается категория буква. Это позволяет создавать команды, недоступные для пользователя, в имени которых фигурирует символ «0». При необходимости Вы можете изменить категорию этого символа непосредственно в документе. Команда \makeatletter присваивает символу «0» категорию буква, а команда \makeat other—категорию другие. 2Два доллара подряд используются как ограничители для выносных формул: $$ (выносная формула) $$. Это низкоуровневый метод набора выносных формул. В ШЁХ’е его применять не стоит, поскольку на такие формулы не распространяются некоторые режимы форматирования выносных формул.
становятся активными. При загрузке пакета babel с опцией russian активным становится символ «"». С его помощью задаются русские кавычки «елочки» (это слово набрано так: "<елочки">) и другие действия, специфичные для отечественной полиграфии. Остальные символы либо игнорируются3, либо имеют категорию другие. Есть еще одна специальная категория: символы, активные в математической моде. Вне математических формул такие символы могут иметь произвольную категорию (кроме активных), а внутри—действуют как команды. Пример такого символа—одиночная правая кавычка «’», которая в математической моде генерирует производную. Сравните использование этой кавычки в текстовой моде (х’) и в математической (х'). Следующие символы обычно используют в математической моде: + = | < > Символы «+» и «=» можно использовать и в текстовой моде, но в математической моде они немного жирнее. 2.2. Команды, параметры, *-форма Команды. Файл, обрабатываемый Т^Х’ом, обычно содержит множество разных команд. Команда начинается с символа «\». Затем идет имя команды, состоящее из букв или одиночного небуквенного символа. Примеры команд с небуквенным именем: \#, \$, \7., \&, \{, \}, \_. Перечисленные команды служат для печати символов «#», «$», «%», «&», «{», «}», «_» соответственно. Команда \и, имя которой состоит из пробела, печатает пробел. После команды с буквенным именем пробелы игнорируются, а после команды с небуквенным именем — не игнорируются. 3 Игнорируются невидимые символы с кодом меньше 32. При использовании пакета inputenc категория невидимых символов с кодами 1-8, 11, 14-31 изменяется на активные.
Параметры команд. У команд могут быть параметры, обычно заключаемые в фигурные скобки. lAT^X добавил в синтаксис языка T^jX’a необязательные параметры, заключаемые в квадратные скобки (например, список опций в команде \documentclass). У некоторых команд есть параметры в круглых скобках, как обязательные, так и необязательные4. Пробелы между параметрами команд игнорируются. Фигурные скобки вокруг обязательного параметра можно опустить, если его содержимое — одиночный символ или команда, производящая простой математический символ. Например, математическая команда \frac имеет два обязательных параметра, задающих числитель и знаменатель дроби. Следующие примеры ее использования работают одинаково: \frac{l}{2} \frac 1 {2} \frac {1} 2 \fracl2 Последний пример показателен: пробел между именем и первым параметром команды можно опустить, если параметр не является буквой. Примеры команд, задающих акценты над буквами: \‘{о}, \”о, \и{о}, \и о. В последнем примере пробел между именем команды и параметром обязателен, поскольку имя команды буквенное. Короткие и длинные параметры. Если в параметре команды встречается команда \раг (или эквивалентная ей пустая строка), то такой параметр называют длинным. Короткий параметр не содержит команду \раг. Длинные параметры можно использовать только в некоторых командах МЩХ’а. Большинство команд этого не допускает. При попытке задать длинный параметр в команде с короткими параметрами Т^Х фиксирует ошибку. Например, если Вы случайно потеряли закрывающую фигурную скобку у параметра команды \mbox, возникнет следующая ошибка: Runaway argument? {... \par ... ! File ended while scanning use of \mbox. cinserted text> 4Возможности языка макроопределений ТвХ’а более широки. Можно в качестве разделителей параметров команды использовать практически любые символы, а не только круглые и квадратные скобки.
\раг <*> test.tex ? После строки «Runaway argument» в сообщении об ошибке идет текст короткого параметра, в котором встретилась команда \раг. В строке, начинающейся с <*>, указано имя файла, при обработке которого возникла ошибка. Звездочка-форма. Некоторые команды имеют два варианта, отличающиеся в деталях. В таком случае второй вариант команды задается звездочкой после имени команды. При этом говорят, что команда имеет *-форму. Например, широко используемая команда \\ означает завершение текущей строки, а ее *-форма \\* дополнительно запрещает разрыв страницы. 2.3. «Крепкие» и «хрупкие» команды Некоторые команды lAT^X’a содержат так называемые перемещаемые параметры. Например, параметры команды \sect ion — перемещаемые, поскольку их содержимое заносится в колонтитул и аих-файл. Команды М^Х’а делятся на крепкие и хрупкие: крепкие команды можно безбоязненно использовать внутри перемещаемых параметров, а хрупкие необходимо защищать от преждевременной макроподстановки. Для защиты хрупких команд используется команда \protect. Например, чтобы сделать принудительный разрыв строки в элементе оглавления документа, генерируемом командой \sect ion, надо в дополнительный параметр этой команды добавить \protect\linebreak: \section[Этот параметр заносится в аих-файл. Принудительный разрыв CTpoKn\protect\linebreak попадет в оглавление] {Этот параметр содержит название рубрики, которое попадет в основной текст} Если в этом примере команду \protect убрать, то трансляция документа прервется с ошибкой: ! Argument of \©sect has an extra }. <inserted text> \par
2.4. Декларации, область действия, блоки, окружения 37 2.4. Декларации, область действия, блоки, окружения Декларации. Среди команд ТЭДЩХ’а можно выделить такие, которые не выводят текст, но оказывают влияние на форматирование идущего следом текста. Такие команды называют декларациями. Область действия деклараций. Фрагмент текста, заключенный в фигурные скобки { }, образует блок5. Заключив некоторый текст в блок, Вы тем самым ограничиваете область действия всех внутренних деклараций. Данная конструкция наиболее часто используется для выделения фрагмента текста с помощью другого шрифта. Например, пусть в тексте, выводимом прямым шрифтом, Вы хотите выделить некоторые слова курсивом. Это делается так (справа приводится текст, набираемый в файле, а слева—результат обработки): Слово худой выделено ожирнением. Слово {\bf series худой} выделено ожирнением. В этом примере при выходе из блока заканчивается область действия команды \bf series, заказавшей ожирненное начертание шрифта, и тем самым дальнейший вывод выполняется тем шрифтом, который использовался перед входом в блок. Окружения. На основе механизма блоков реализованы окружения. Можно сказать, что окружение—это именованный блок, при входе в который осуществляется некоторая последовательность действий, называемая в дальнейшем прологом, а при выходе—набор действий, называемый эпилогом. Окружение используется так: \begin{(uAt« окружения)} (тело) \еп&{(имя окружения)} Команда \begin исполняет пролог окружения с именем, указанным в ее параметре. У пролога могут быть дополнительные параметры, идущие следом после имени окружения. После параметров начинается (тело) окружения. Команда \end завершает окружение. Параметр (имя окружения) должен быть идентичен в прологе и эпилоге. При нарушении этого условия IATj^X фиксирует ошибку. Окружения 5В оригинале эта конструкция называется group. Группа в lAT^X’e имеет двойное применение: она ограничивает обязательный параметр команды и область действия деклараций. Чтобы различать эти случаи, я использую термин блок в качестве ограничения области действия.
могут быть вложены одно в другое, причем глубина их вложенности не ограничивается. Любую декларацию можно оформить как окружение. Так предыдущий пример можно переписать следующим образом: Слово \begin{bfseries}xyflon\end{bfseries} выделено ожирнением. 2.5. Расстояния и переменные Переменная — это команда, значением которой является расстояние6. В DTgX’e есть много переменных, значения которых Вы можете изменить с помощью деклараций \зеЪ1еп%ЪЪ{(переменная)}{(расстояние)} \аЛбЪо1еп£ЪЪ{(переменная)}{(расстояние)} Первая присваивает (переменной) указанное (расстояние), а последняя— прибавляет (расстояние). Переменные бывают двух типов: размер и длина. Размер — величина жесткая, а длина еще имеет «растяжимость» и «сжимаемость». Размер можно задавать многими способами (см. прил. Б.З, с. 281). Обычно используют явные размеры в виде числа и единиц измерения. Например, размер 12.3mm задается в миллиметрах, -5.5cm—в сантиметрах, lin—в дюймах (lin « 25.4mm), 12pt —в пунктах (ipt « 0.351mm). Чтобы задать нулевой размер, Вы должны написать, например, 0mm. В TgX’e еще есть относительные единицы измерения: ех и еш. Их величина зависит от характеристик текущего шрифта. Размер lex равен высоте строчных букв, a lem—ширине прописной буквы «М», а точнее кеглю шрифта. Через em-единицы задаются многие горизонтальные промежутки. Например, команды \enskip, \quad и \qquad определены так: \enskip = \hspace{0.5еш} \quad = \hspace{lem} \qquad = \hspace{2em} При задании длины используют более сложные конструкции: после основного размера с помощью слов plus и minus задают величины его приращений: растяжения и сжатия. В качестве единиц измерения в приращениях можно использовать специальные бесконечные единицы измерения: 6В оригинале [15] переменная называется length-command. В книге Львовского [7] используется термин «параметр». Я же придерживаюсь терминологии [9].
fil, fill и filll. Чем больше букв «1» в названии бесконечных единиц измерения, тем «сильнее» соответствующая «бесконечность» (filll fill fil). Примеры: Длина Размер Растяж. до Сжатие до 2mm plus 1mm minus 0.5mm 2 мм 3 мм 1.5 мм 5cm plus 6mm 50 мм 56 мм 50 мм lOpt minus lOpt 10 п 10 п 0 п lin minus 12bp 72 bp 72 Ьр 60 Ьр Opt plus Ifil 0 мм оо 0 мм 10mm plus 2.5fill minus 5mm 10 мм оо 5 мм Opt minus Ifilll 0 мм 0 мм —оо 20pt plus Ifill minus Ifill 20 п оо —оо 2.6. Счетчики, метки, ссылки Счетчики. lATgX использует автоматическую нумерацию страниц документа, глав, секций, подсекций7, выносных формул и т.п. С каждым типом автоматически нумеруемого элемента связан свой счетчик. Так выносные формулы нумеруются счетчиком equation, таблицы — table, рисунки — figure и т.д. Счетчики, используемые в командах рубрикации, обычно связываются между собой так, что при переходе, скажем, к новой главе счетчики рубрик нижних уровней (секций, подсекций и т.д.) обнуляются. Тем самым между этими счетчиками устанавливается отношение подчиненности: счетчик секции подчинен счетчику главы, счетчик подсекции — счетчику секции и т. д. Номер подчиненного счетчика при его печати обычно составной. Например, номер секции 5 главы 2 будет «2.5». В обычном документе нет необходимости в явном использовании счетчиков. Исключение —счетчик page, содержащий номер текущей страницы документа. Чтобы изменить номер страницы, воспользуйтесь командой \setcounter{page}{(Hoewu номер страницы)} Значения всех счетчиков, за исключением page, надо устанавливать на единицу меньшими, чем требуется. Например, чтобы начать очередную 7В отечественной литературе при ссылке на рубрики документа используются термины часть, раздел, глава, пункт, подпункт. Здесь же речь идет о названии элемента рубрикации в терминах lAl^X’a. Поэтому, говоря секция, я имею в виду элемент рубрикации, оформляемый командой \section.
секцию документа с номера 5, напишите перед командой \section команду \setcounter{section}{4}. Метки. При использовании счетчиков возникает необходимость ссылок на нумерованные элементы документа. Для этого служат команда создания метки и команды ссылок на значения меток. Команда \1аЬе1{(ил1л метки)} создает метку, имя которой задается в ее параметре8, присваивая ей значение последнего измененного счетчика и номер страницы, к которой относится метка. Например, если Вы поставили метку в параметре команды \subsection: \subsection{(3aeo^oeoK подсекции)\1а.Ъе!{(имя метки)}} то значение этой метки будет содержать номер данной подсекции и номер страницы, с которой эта подсекция начинается. Значение метки, создаваемой командой \label, сначала заносится в aux-файл, а только потом может появиться в тексте документа в точке ссылки на метку. Поэтому может потребоваться повторная трансляция документа, чтобы синхронизовать метки и ссылки на них. Если Вы используете для трансляции программу TeXif у, то она выполнит дополнительную трансляцию самостоятельно, если в этом возникнет необходимость. Имена всех меток в документе должны быть уникальными. Если Вы поместили в документ две одинаковых метки, то lATgX занесет в log-файл предупреждение LaTeX Warning: Label с (имя метки) ’ multiply defined. В конце log-файла при этом появится сообщение LaTeX Warning: There were multiply-defined labels. Чтобы уменьшить вероятность использования одинаковых меток, имеет смысл делать их имена составными. Например, в выносных формулах можно использовать метки с префиксом «е:»: \label{e: (имя метки)} 8В имени метки желательно использовать только символы ASCII, т. е. знаки пунктуации, цифры и латинские буквы. Малые и большие буквы различаются. Вообще говоря, можно использовать и символы с кодами больше, чем 127, если они имеют категорию другие. Например, при использовании кодировки cpl251-light в именах меток можно использовать основные буквы кириллицы.
Ссылки. Команды \хе±{(имя метки}} \ръ.%ехе±{(имя метки}} печатают значения метки: первая — значение счетчика, последняя — номер страницы. Например, пусть Вы пометили рисунок 2.1 на странице 23 меткой f :ris и хотите сослаться на него, причем достаточно далеко от местоположения рисунка. Это делается так: (см. рис. 2.1, с. 23) (см.\ рис.~\ref{f:ris}, с.~\pageref<f:ris}) После слова «см.» здесь поставлен межсловный пробел \и, подавляющий вставку дополнительного расстояния после символа точки9. Если установлен режим \f renchspacing, то дополнительная отбивка после точки не делается, что соответствует правилам отечественной полиграфии10. В этом случае команду \и можно заменить на обычный пробел. Ссылки на метку в этом примере прижаты к словам «рис.» и «с.» с помощью неразбиваемого пробела ", запрещающего разрыв строки в месте его употребления. Ссылку на формулу принято оформлять прямым шрифтом, поскольку круглые скобки вокруг ее номера должны быть прямыми. В пакете amsmath для этого определена команда \eqref{(имя метки}} Она действует так: \textup{(\ref{(имя метки}})} Если метка, на которую ссылаются перечисленные выше команды, не определена, то выдаст предупреждение Reference ‘ (имя метки} ’ on page ... undefined. В конце log-файла при этом появится сообщение LaTeX Warning: There were undefined references. 9 В английской полиграфии принято отделять конец предложения от следующего предложения увеличенным пробелом. Т^Х это делает автоматически. В данном случае точка после «см» не является концом предложения. Поэтому необходимо подавить вставку увеличенного пробела, явно указав, что нужен обычный пробел. Это, например, делается командой \и. 10При загрузке пакета babel с опцией russian устанавливается \frenchspacing.
2.7. Преамбула документа В I^TEX’e транслируемый файл начинается командой \documentclass [(список опций}]{(имя класса}} [(дата}] загружающей класс с указанным (именем класса}. Дополнительный параметр (список опций} содержит список опций, разделенных запятыми. Опция—это обычно строка из букв и цифр. Например, команда \documentclass [llpt,draft,twoside] {article} загружает класс article с опциями llpt (базовый шрифт 11 пунктов), draft (черновик) и twoside (двустороннее оформление статьи). Параметр (дата} применяется крайне редко. Он нужен в том случае, если Вы используете возможности класса, которые появились, начиная с некоторого его релиза. Если в Т^Х-системе установлена более старая версия класса, чем требует параметр (дата}, то в log-файл будет занесено предупреждение об этом. Формат (даты}: yyyy/mm/dd, где уууу—год, mm-месяц, dd—день. Команда \documentclass открывает преамбулу документа. В преамбуле можно помещать команды загрузки дополнительных пакетов: \usepackage [(список опций}] {(список пакетов}} [(дата}] (Список опций} передается каждому пакету из (списка пакетов}. Списки опций у пакетов обычно различаются. Поэтому команда \usepackage часто загружает либо один пакет со списком опций, либо список пакетов без опций. Пример использования команды \usepackage: \usepackage{amsmath, amssymb, bm} \usepackage[final]{graphicx}[1999/02/16] В преамбуле документа также помещают команды настройки и определения собственных команд. Заканчивается преамбула командой \begin{document} открывающей окружение document. Команда \end{document} закрывает окружение document и прекращает трансляцию документа. Некоторые команды, например \usepackage, можно использовать только в преамбуле документа. При попытке вызвать команду \usepackage внутри окружения document Вы получите следующую диагностику об ошибке:
! LaTeX Error: Can be used only in preamble. See the LaTeX manual or LaTeX Companion for explanation. Type H <return> for immediate help. 1.12 \usepackage {amsmath} Текст документа, а также команды, приводящие к выводу текста в dvi-файл, должны размещаться внутри окружения document. По завершении этого окружения может идти произвольный текст, поскольку lATgX прекращает трансляцию при выходе из него. 2.8. Опции класса и опции пакета Каждый класс и пакет имеют список опций, которые можно к ним применять. Такие опции назовем собственными опциями. В опциях команды \documentclass можно задавать как собственные опции класса, так и опции пакетов, перечисленных в преамбуле документа. Другими словами, опции, переданные классу, являются также глобальными опциями для всех используемых в документе пакетов. В опциях команды \usepackage можно задавать только собственные опции пакета. Тем самым опции команды \usepackage являются локальными опциями конкретного пакета. При попытке передать пакету неверную локальную опцию фиксируется ошибка. Глобальные опции, не принадлежащие пакету, пакетом игнорируются. Если глобальная опция не является собственной опцией класса и не определена ни в одном из пакетов, перечисленных в преамбуле документа, то при завершении преамбулы JAT^jX выводит предупреждение о том, что опция не использовалась. Класс и пакет обычно обрабатывают опции в порядке их определения в своем коде. Другими словами, порядок перечисления опций в командах \documentclass и \usepackage обычно не играет роли. Но есть исключения из этого правила. Например, пакет babel обрабатывает опции в порядке их перечисления. Так команда \usepackage[english,russian]{babel} заказывает русский язык оформления документа, а команда \usepackage[russian,english]{babel} заказывает английский язык.
2.9. Подробнее о классах и пакетах В документе Вы выбираете ровно один класс и можете заказывать любое число пакетов. Каждый пакет загружается только один раз11. Поэтому, если какой-либо пакет уже загружен, попытки повторной его загрузки игнорируются. Многие пакеты Г^ТвХ’а используют в своем коде другие пакеты. Если при загрузке такого пакета используемые в нем пакеты еще не загружены, то они подгружаются автоматически. Например, пакет amssymb использует пакет amsfonts. Поэтому команда \usepackage{amssymb} фактически загружает два пакета—amsfonts и amssymb. Другой пример — пакет ncclatex, который использует десять пакетов из коллекции ncctools. Возможен также специальный вариант использования пакета: расширение. Говорят, что один пакет расширяет другой пакет, если он загружает другой пакет, передавая ему все поступившие опции и определяя или переопределяя некоторые команды. Например, пакет graphicx расширяет пакет graphics, переопределяя часть команд последнего. Еще пример — пакет nccmath расширяет пакет amsmath, переопределяя некоторые его команды, добавляя дополнительные команды и определяя новую опцию mediummath (уменьшенные размеры интегралов, сумм, дробей и др.). Классы также могут использовать пакеты. Например, класс псс использует пакет ncclatex и еще несколько пакетов. Поэтому при указании такого класса в параметре команды \documentclass все используемые в нем пакеты подгружаются автоматически. Класс может использовать другой класс. В этом случае говорят, что один класс базируется на другом классе, и последний класс называют базовым классом для первого. Например, класс article служит базовым классом для многих классов ЬХЩХ’а. 2.10. Макет страницы На рис. 2.1 показан макет страницы, генерируемой JAT^X’om. Страница состоит из четырех областей: текстовой области, верхнего колонтитула, нижнего колонтитула и заметок на полях. Расположение областей на странице определяется следующими размерами, устанавливаемыми в классе документа: 11 Исключение—пакет fontenc, который можно загружать многократно.
\paperwidth lin + \voffset \headheight \headsep Верхний колонтитул Заметки на! полях Текстовая область \textwidth Нижний колонтитул Заметки на полях Рис. 2.1. Макет страницы в lATEX’e \paperwidth — ширина страницы; \paperheight — высота страницы; \textwidth — ширина текстовой области; \textheight — высота текстовой области; \headheight — высота верхнего колонтитула; \headsep — расстояние от верхнего колонтитула до текстовой области; \footskip — расстояние от текстовой области до подножия нижнего колонтитула;
\topmargin — величина верхнего отступа. Расстояние от верхнего обреза страницы до верхнего колонтитула равно lin + \voffset + \topmargin В TfiX’e переменная \vof f set применяется для вертикального сдвига всей страницы. Ее значение по умолчанию равно нулю. В ЬХЩХ’е эту переменную не стоит использовать; \oddsidemargin — величина левого отступа для страниц с нечетным номером. При одностороннем оформлении применяется для всех страниц документа. Расстояние от левого обреза страницы до текстовой области равно lin + \hoffset + \oddsidemargin Опять же \hoffset по умолчанию равно нулю и в IATeX’c не используется; \еvensidemargin — величина левого отступа для страниц с четным номером. Играет роль только при двустороннем оформлении документа. Так же как и в предыдущем случае, расстояние от левого обреза страницы с четным номером до текстовой области равно lin + \hoffset + \evensidemargin \marginparwidth — ширина заметок на полях; \marginparsep — расстояние от заметок на полях до текстовой области. Расстояние от текстовой области до левого края страницы зависит от режима оформления документа, задаваемого опциями twoside и oneside в команде \documentclass. В одностороннем (oneside) режиме все страницы оформляются одинаково и расстояние от левого обреза страницы определяется через переменную \oddsidemargin. В двустороннем-(1иоБ14е-) режиме для левых (четных) страниц используется \еvensidemargin, а для правых (нечетных) страниц—\oddsidemargin. Заметки на полях могут располагаться слева от текстовой области, справа и с обеих сторон. Их расположение зависит от режима оформления документа.
2.11. Особенности оформления текста в несколько колонок 47 При оформлении документа в две колонки (опция twocolumn команды \documentclass или команда lATgjX’a \twocolumn) заметки на полях располагаются по обе стороны от текстовой области (заметка в левом столбце — слева от текстовой области, в правом—справа). При оформлении документа в одну колонку (опция onecolumn команды \documentclass или команда JATgjX’a \onecolumn) заметки на полях располагаются с внешней стороны от текстовой области: при одностороннем оформлении внешней всегда считается правая сторона, а при двустороннем для нечетных страниц внешняя сторона правая, для четных —левая. Такое оформление задается декларацией \normalmarginpar, устанавливаемой по умолчанию. Вариант оформления с внутренней стороны от текстовой области устанавливается декларацией \reversemarginpar. 2.11. Особенности оформления текста в несколько колонок ЕЩТ'Х позволяет оформлять страницы документа в одну или две колонки. В последнем случае текстовая область разбивается на две колонки одинаковой ширины. Сначала заполняется левая колонка, затем правая. Следом—левая колонка новой страницы и т. д. Ширина одной колонки определяется по формуле \columnwidth = (\textwidth - \columnsep) / 2 Здесь \columnsep—расстояние между колонками. При оформлении в одну колонку \columnwidth = \textwidth. Колонки можно дополнительно отделить друг от друга декоративной линией. Ее толщина задается переменной \columnseprule. Стандартный механизм JAT^X’a не позволяет совмещать на одной странице оформление с разным числом колонок12, но пакет multicol позволяет оформлять страницы документа с любым числом колонок. Он автоматически выравнивает колонки по высоте, что позволяет изменять количество колонок в рамках одной страницы. 2.12. Вертикальная, горизонтальная, математическая моды В процессе обработки документа Т^Х может находиться в одной из трех мод: вертикальной, горизонтальной, математической. В начале документа устанавливается вертикальная мода. Она действует между абзацами. 12Это не совсем точно. У страницы с двумя колонками могут быть заголовок и плавающие элементы, занимающие по ширине обе колонки.
Абзац документа обрабатывается в горизонтальной моде. Заканчивается горизонтальная мода командой \раг или эквивалентной ей пустой строкой. Команда \раг инициирует форматирование абзаца, заключающееся в разбиении текста на строки. По завершении форматирования абзаца TgX снова переходит в вертикальную моду. Математическая мода используется для вывода математических формул. Т^Х переходит в математическую моду из горизонтальной. Различаются внутристрочные и выносные математические формулы. Внутристрочная формула оформляется в тексте абзаца, обрамляется одиночными символами $ и верстается в подбор с текстом абзаца. Например, это предложение заканчивается внутристрочный формулой: х^у € X. Выносная формула оформляется специальным образом в виде отдельного абзаца. Например, это предложение заканчивается выносной формулой: х,у е X. В математической моде все пробелы между командами игнорируются. 2.13. Форматирование абзаца TgjX начинает форматирование абзаца, когда встречает команду \раг или эквивалентную ей пустую строку13. В процессе форматирования TfrjX выбирает такой вариант разбиения абзаца на строки, у которого наименьшая «плохость» (badness). При вычислении «плохости» учитывается много факторов: на сколько приходится изменять пробелы между словами, чтобы сделать правый край абзаца ровным; как сильно различаются пробелы в соседних строках абзаца; сколько идущих подряд строк заканчиваются символом переноса. Если не удается отформатировать абзац так, чтобы его «плохость» была удовлетворительной, то Т^Х выводит диагностику Overfull \hbox ... означающую переполнение строки при форматировании абзаца. Дополнительно в этом сообщении указывается диапазон строк форматируемого абзаца и фрагмент текста, который не удалось хорошо отформатировать. Основная причина переполнения при форматировании связана с проблемами переноса слов: либо в слове отсутствует подходящая точка переноса (например, слово «сплайн» не имеет точек переноса), либо сло 13В Т^Т^Х’е команды \\ и \newline инициируют форматирование части абзаца перед ними.
во является составным (например, «вариационно-разностный»)14 и может переноситься только по дефису. В первом случае придется перед непе-реносящимся словом сделать принудительный разрыв строки командой \linebreak. В последнем случае в составном слове надо будет расставить точки возможного переноса с помощью команды \-, например, так15: ва\-риа\-ци\-он\-но-раз\-но\-ст\-ный Команда принудительного разрыва строки может в дальнейшем привести к не до заполнению строки при форматировании абзаца, сопровождающемуся диагностикой Underfull \hbox (badness (число)) . . . Число в скобках — величина «плохости» форматирования строки. Наибольшая «плохость» —10000. Если переполнения при форматировании обычного абзаца возникают слишком часто (например, текст абзаца состоит из труднопереносимых слов), то вместо вставки большого числа команд \linebreak можно использовать декларацию \sloppy, ослабляющую требования к качеству абзаца настолько, что в нем никогда не возникнут переполнения. Учитывая, что форматирование абзаца начинается в момент обработки команды \раг, можно использовать следующий трюк для оформления одиночного абзаца в режиме \sloppy: Текст абзаца, содержащего много труднопереносимых слов.{\sloppy\par} Для оформления нескольких абзацев в режиме \sloppy можно использовать окружение \begin{sloppypar} (абзацы) \end{sloppypar} Декларация \fussy противоположна \sloppy: она устанавливает нормальное качество форматирования абзаца. Иногда необходимо немного растянуть длинный абзац так, чтобы он при форматировании занимал на одну строку больше, или, наоборот, поджать абзац, уменьшив число строк на единицу. Сделать это Вам поможет 14Еще возможен случай, когда слово не переносится из-за того, что оно иностранное. Например, в документах на русском языке слова, использующие латинский алфавит, не переносятся. 15При использовании класса псс дефис, разделяющий слова, можно заменить командой \-/: «вариационно\-/разностный». Этого достаточно для переноса обеих частей составного слова.
специальная переменная \looseness, которой надо присвоить перед завершением абзаца значение 1 (растянуть) или —1 (сжать): Текст длинного абзаца... Завершаем абзац командой сжатия абзаца на одну строку.\looseness=-l Присвоение переменной \looseness ненулевого значения не гарантирует, что Т^Х выполнит Ваше требование. Обычно удается поджать только длинные абзацы. Растянуть абзац удается чаще. Однако при этом последнее слово абзаца скорее всего будет перенесено по последнему слогу, что, конечно, плохо. Чтобы избежать нежелательного переноса, заключите последнее слово в бокс: \mbox{(слово)}. При форматировании абзаца учитываются следующие переменные: \parskip — расстояние между абзацами (длина). В стандартных классах оно устанавливается равным Opt plus Opt (нулевой размер с нулевой растяжимостью). Задание растяжимости (хотя и нулевой) позволяет TgX’y вставлять вертикальную растяжку между абзацами при форматировании страницы. \parindent — величина абзацного отступа (размер). Обычно она равна 1.5ет от размера основного шрифта документа. Значение этой переменной используется при форматировании обычных абзацев. Если Вы хотите подавить абзацный отступ, вставьте команду \noindent в начало абзаца. \parf illskip — величина промежутка, вставляемого в конец абзаца (длина). Ее значение по умолчанию равно Opt plus Ifil, что означает бесконечно растяжимый пробел нулевой ширины. Если Вы хотите, чтобы последняя строка абзаца была растянута на всю его ширину, завершите абзац так: ... текст абзаца.{\parfillskip=Omm\par} \linewidth — ширина текущего абзаца (размер). Устанавливается IATeX’om перед обработкой абзаца. В обычном абзаце \linewidth = \columnwidth. \base line skip — расстояние между базовыми линиями соседних строк абзаца (размер). Значение этой переменной изменяется IAT^X’om автоматически при изменении размера шрифта. Если вертикальные размеры каких-либо строк абзаца оказались больше этой величины, то фактическое расстояние между такими строками будут увеличено.
Обычно расстояние между базовыми линиями строк абзаца (интерлиньяж) в 1,2 раза больше кегля шрифта. Так для шрифта 10-го кегля интерлиньяж равен 12 pt, 11-го—13,б16, 12-го—14,4 и т.д. Это так называемый нормальный интерлиньяж. Его можно изменить с помощью множителя, задаваемого командой \baselinestretch. Например, задав в преамбуле документа команду \renewcommand\baselinestretch{l.25} Вы увеличите интерлиньяж в 1,25 раза, что примерно соответствует плотности вывода текста через два машинописных интервала. Можно также оперативно изменить интерлиньяж декларациями \linespread{(Amoa/cume./ib)}\selectf ont Здесь (множитель) умножается на величину нормального интерлиньяжа. Поскольку значение интерлиньяжа вычисляется только в момент форматирования абзаца, эти декларации имеет смысл применять непосредственно перед командой \раг. Пример: Текст абзаца, интерлиньяж в котором увеличен в 1,25 раза.{\linespread{l.25}\selectfont\par} 2.14. Специальные режимы форматирования абзаца Описанный в предыдущем пункте режим форматирования абзаца является основным в T^jX’e. Он формирует абзацы, начинающиеся с абзацного отступа и имеющие ровные края, за исключением последней строки абзаца. Однако это далеко не единственный режим форматирования абзаца. Следующие декларации обеспечивают форматирование абзаца без абзацного отступа, без переноса слов и с одинаковыми межсловными пробелами: \raggedright — рваный правый край: текст прижат к левому краю; \raggedleft — рваный левый край: текст прижат к правому краю; \centering — центрированный абзац. Эти команды надо помещать в начало абзаца, чтобы подавить вставку абзацного отступа. Следует также учитывать, что форматирование начинается в момент, когда встречается команда завершения абзаца. Поэтому при специальном форматировании одиночного абзаца надо поступать так: 16В макросе J\[qC у шрифта 11-го кегля интерлиньяж 13,15 pt.
Это пример центрированного абзаца. Его надо заключить в блок вместе с командой завершения абзаца. {\centering Это пример центрированного абзаца. Его надо заключить в блок вместе с командой завершения абзаца.\раг} 2.15. Боксы С точки зрения Т^Х’а любой текст после его обработки превращается в последовательность «боксов» (символов шрифта), соединенных в цепочку и связанных между собой «клеем» (пробелами)17. Бокс—это элемент, не разбиваемый на части. Он форматируется как единое целое. Боксы в DT^jX’e используются повсеместно. Так с помощью команды \mbox можно поместить любой текст в бокс и тем самым запретить разбивку этого текста на части. Далее, с помощью пар-боксов (\parbox) можно оформить маленький абзац и поместить его внутрь строки. Более того, с помощью окружения minipage можно на одной странице документа разместить несколько мини-страниц. Бокс характеризуется тремя размерами: шириной, высотой и глубиной (рис. 2.2). У бокса есть базовая линия, вдоль которой выполняется его выравнивание относительно соседних боксов. Точкой привязки бокса служит начало его базовой линии. При размещении бокса в строке абзаца точка привязки продвигается на ширину бокса. отрицательной. Высота и глубина бокса Содержимое любого бокса является блоком, т. е. область действия деклараций внутри бокса ограничивается его содержимым. Различаются горизонтальные и вертикальные боксы. В горизонтальном боксе может использоваться только горизонтальная мода. Другими словами, текст в горизонтальном боксе располагается слева направо и не разбивается на строки. Например, команда \mbox создает горизонтальный бокс. В вертикальном боксе можно использовать все моды. Содержимое вертикального бокса, создаваемого командой \parbox или окружением minipage, форматируется Т^Х’ом по тем же принципам, что и основной 17Кроме боксов и клея в этой последовательности встречаются и другие специальные элементы (см. [5]). Базовая линия Бокс Высота Глубина Ширина Рис. 2.2 Ширина бокса может всегда неотрицательны. быть
текст документа, но с нулевым \parindent. Особенность вертикального бокса — наличие выравнивания по вертикали. Возможны три метода выравнивания: t — по верхней строке бокса (базовой линией бокса объявляется базовая линия его первой строки), b — по нижней строке бокса (базовой линией бокса объявляется базовая линия его последней строки), с — центрировано (бокс смещается по вертикали так, что его базовая линия оказывается почти по центру). Пример: Верхняя строка Верхняя строка Выравнивание b ххх-----Верхняя строка____Выравнивание с____Нижняя строка_____ххх Выравнивание t Нижняя строка Нижняя строка Здесь продемонстрированы все три способа вертикального выравнивания боксов. 2.16. Плавающие элементы Элементы, которые при обработке документа могут перемещаться, называют плавающими. Например, сноски оформляются командой \footnote{(me?ccm сноски)} идущей сразу после точки привязки (якоря) сноски. При этом в точке привязки ставится номер сноски в верхнем индексе, а текст сноски, сопровождаемый номером сноски, уходит в подножие страницы. Другой пример— заметки на полях, оформляемые в тексте документа командой \marginpar [.{текст слева)'] {{текст справа)} Содержимое заметки сносится налево или направо от текстовой области в зависимости от выбранного макета страницы-и положения точки привязки заметки (подробнее о размещении области заметок см. с. 46). Заметка размещается по возможности на уровне ее точки привязки в тексте документа. Выбирается {текст слева) или {текст справа) в зависимости от расположения заметки относительно основного текста. Если параметр {текст слева) отсутствует, то он считается совпадающим с {текстом справа). Перечисленные плавающие элементы нельзя употреблять внутри боксов, поскольку их плавающая часть при этом теряется. Если в тексте документа встречается рисунок или таблица, то может оказаться, что этот элемент не помещается на текущей странице. В этом случае необходимо перенести его в другое место документа, например, на
следующую страницу. Специально для таких случаев в Г^ТвХ’е имеются окружения figure и table, служащие для оформления рисунков и таблиц в виде плавающих элементов. При форматировании документа JAT^jX самостоятельно решает, куда поместить такие плавающие элементы. 2.17. Форматирование страницы Как только оказывается, что отформатированных абзацев и плавающих элементов набралось достаточно для подготовки новой страницы, lAT^X запускает процедуру вывода страницы. При выводе lAT^jX размещает на странице отформатированные абзацы и накопленные плавающие элементы, оформляет колонтитулы18 19. При двустороннем оформлении lAT^jX делает текст всех страниц документа равным по высоте, а при одностороннем оформлении нижняя кром-19 ка текста не выравнивается . Для принудительного завершения страницы используется команда \pagebreak. Разрыв страницы выполняется после завершения форматирования строки абзаца, в которой находится эта команда. При этом содержимое страницы растягивается по вертикали, если выравнивание страниц включено. В результате может возникнуть недозаполнение страницы, сопровождаемое диагностикой Underfull \vbox (badness {число}) . . . Число в скобках—величина «плохости» форматирования страницы. Наибольшая плохость— 10000. Переполнения страницы крайне редки. Они появляются, например, если вертикальный размер плавающего элемента, содержащего рисунок или таблицу, превышает вертикальный размер текстовой области. В процессе верстки документа могут возникнуть два типа «полиграфического брака»: разрыв страницы после первой строки абзаца (нижняя висячая строка) и разрыв страницы перед последней строкой абзаца (верхняя висячая строка). При попытке исправить эти недостатки с помощью команды \pagebreak может возникнуть недопустимая растяжка страницы. Альтернативой команде \pagebreak служит декларация 18Это, конечно, весьма упрощенная схема работы процедуры вывода. Реальная процедура вывода ИТ^Х’а существенно сложнее. 19Управляют режимом выравнивания декларации \flushbottom и \raggedbottom. Первая задает выравнивание нижней кромки текста, а последняя отключает выравнивание.
\enlargethispage{ (размер)} увеличивающая высоту текстовой области текущей страницы на заданный {размер). При отрицательном значении {размера) высота текстовой области уменьшается. Помещать эту декларацию можно в любом месте страницы, например, перед последним абзацем страницы. Так, декларация \enlargethispage{\baselineskip} увеличивает вертикальный размер текстовой области на одну строку, а \enlargethispage{-\baselineskip} уменьшает размер на одну строку. Декларация \enlargethispage не изменяет позицию нижнего колонтитула, поэтому при большом увеличении вертикального размера текстовой области текст может наложиться на нижний колонтитул. Эта декларация имеет *-форму, действующую так: вертикальный размер страницы изменяется на указанную величину и по окончании ее верстки страница поджимается на сколько возможно. Например, декларация \enlargethispage*{\baselineskip} означает увеличение вертикального размера страницы на не более чем одну строку.
Шрифты в Ш?ЕХ’е 3.1. Шрифт, кегль, гарнитура Шрифт — это набор символов определенного рисунка и кегля (например, курсивный шрифт Times New Roman кегля 10 пунктов). Кегль — это расстояние между верхней и нижней линиями шрифта, выраженное в пунктах (рис. 3.1). Символы шрифта выравниваются по базовой линии. Размер в lex равен расстоянию между линией строчных букв и базовой линией. Относительно математической линии центрируются математические формулы и вертикальные боксы. Наконец, размер в lem обычно равен кеглю шрифта. Верхняя линия -Линия строчных букв -Математическая линия -Базовая линия -Нижняя линия - Абракадабра: Кегль Рис. 3.1. Основные линии шрифта У текстовых шрифтов существует несколько вариантов начертаний, например, нормальное (plain), курсивное (italic), жирное (bold), жирное курсивное (bold italic). Различные варианты начертания некоторого шрифта всех возможных кеглей объединяются в гарнитуру. В некоторых гарнитурах представлены и другие распространенные начертания, такие как светлое (light), суперсветлое (extra light), полужирное (demi bold), супержирное (extra bold), сжатое (compressed или condensed), растянутое (extended или expanded). Наряду с курсивным начертанием возможно и/или наклонное (oblique или slanted). Большую часть текстовых шрифтов можно разделить на четыре группы: шрифты с засечками1 (serif), шрифты без засечек2 (sans serif), декоративные (decorative) и рукописные (script). В текстовом наборе обычно используются шрифты с засечками и без засечек. Важная характеристика шрифта — удобочитаемость. При хорошей удобочитаемости человек не разбирает слово по буквам, а охватывает его 1 Засечки—это вертикальные и горизонтальные штрихи у букв. Пример шрифта с засечками— «Times New Roman». 2Общеупотребимые шрифты без засечек — «Arial» и «Helvetica».
целиком, что способствует беглому чтению. Удобочитаемость складывается из многих факторов. Во-первых, засечки подчеркивают горизонтальное направление и помогают глазу скользить вдоль строки. Во-вторых, важна сбалансированность промежутков между буквами, достигаемая с помощью кернинга3 шрифта. В-третьих, имеет значение расстояние между строками текста: если оно слишком мало, то трудно удержать взгляд на строке, если же слишком велико — приходится затрачивать дополнительные усилия для перемещения взгляда с одной строки на другую. В-четвертых, важен кегль шрифта, поскольку шрифт мелкого кегля читать сложнее. Для малоформатных изданий оптимален шрифт 10-го кегля, а для крупноформатных—больше подходит 11-й или 12-й кегль. Наконец, имеет значение количество знаков в строке. Считается, что длина строки в 60-70 знаков (включая знаки пунктуации и пробелы) оптимальна. Расстояние между базовыми линиями соседних строк текста называют интерлиньяжем4. Для нормального восприятия текста величина интерлиньяжа должна быть примерно в 1,2 раза больше кегля шрифта. Различные шрифты при одинаковом кегле могут иметь разную величину строчных букв. Например, шрифт «Times New Roman» выглядит мельче шрифта «Arial». Шрифты с небольшой высотой строчных букв менее удобочитаемы, а со строчными буквами большей высоты не слишком экономичны и требуют увеличенного интерлиньяжа. Различаются пропорциональные и моноширинные шрифты. В пропорциональном шрифте символы имеют разную ширину, а в моноширинном— ширина всех символов одинакова и равна ширине пробела5. Текстовые шрифты обычно пропорциональные. Моноширинные шрифты в основном используются в изданиях по информатике и компьютерам для печати листингов программ. 3.2. Что Т^Х знает о шрифтах? При трансляции документа TfeX использует метрическую информацию о шрифтах, содержащуюся в файлах с расширением . tfm. Все, что TgX’y необходимо для вычисления позиций символов — это размеры каждого 3Кернинг — это процесс изменения интервалов между соседними буквами для улучшения внешнего вида и удобочитаемости текста. 4 В справочнике [8] интерлиньяж — это величина визуального промежутка между строками текста, т. е. расстояние между базовой линией предыдущей строки и линией строчных букв следующей строки. Однако в системах компьютерной верстки, интерлиньяж—это расстояние между базовыми линиями соседних строк. 5Пример моноширинного шрифта— «Courier New».
символа, т. е. ширина, высота и глубина бокса символа. Кроме информации о размерах, еще использует информацию о кернинге и лигатурах, имеющуюся в файле метрик шрифта. При кернинге изменяются расстояния между некоторыми парами символов. Например, если символы «А» и «V» оказались по соседству, то без кернинга они будут выглядеть так: «AV», а с кернингом —так: «AV». Лигатура—это замена пары символов на какой-либо третий. Например, двойные левые и правые кавычки (“... ”) получаются в результате преобразования пары соответствующих одинарных кавычек6. Тире и длинное тире также набираются с помощью лигатур7: с с __« У У __к ” Кроме перечисленных есть еще пять лигатур для комбинаций символов: «ff», «fi», «fl», «ffi», «ffl» —> «ff», «fi», «fl», «ffi», «ffl». Иногда возникает ситуация, когда кернинг или лигатура нежелательны. Чтобы избавиться от кернинга или лигатуры, поместите между символами пустой блок «{}». Например, текст «f {}i» превратится в «й». 3.3. Размеры шрифтов в ИСЩХ’е При загрузке стандартного класса Вы можете выбрать базовый кегль шрифта документа с помощью одной из опций: lOpt, llpt, 12pt8 9. Базовому кеглю соответствует декларация \normalsize. Другие декларации установки размера шрифтов задают размер шрифта относительно базового размера (см. с. 340). При изменении базового размера изменяется вся g шкала относительных размеров, используемых в документе . 6Символ двойной кавычки (") превращается в двойную правую кавычку (”), но этого не происходит, если загружен пакет babel с опцией russian. Поэтому лучше привыкнуть набирать двойную правую кавычку через две одинарные правые кавычки. 7Длинное тире «—» получается в результате двойного применения лигатуры: сначала два символа переноса «-» заменяются на тире «-», затем тире «-» и третий символ переноса «-» заменяются на длинное тире «—». 8 В классе псс есть еще опция 14pt. 9Максимальный кегль, используемый в стандартных классах I^TEX’a— 25. Поэтому при выборе большого базового кегля количество больших размеров шрифтов уменьшается. Так при использовании опции 12pt команды \huge и \Huge становятся эквивалентны (обе заказывают шрифт 25 кегля). При использовании опции 14pt в классе псс уже три больших размера становятся эквивалентными между собой: \LARGE, \huge и \Huge.
Область действия деклараций изменения размера шрифта ограничена текущим блоком. Пример: Нормальный, крупнее, снова нормальный, мельче, еще мельче, еще мельче, ОПЯТЬ нормальный. Нормальный, {\Large крупнее}, снова нормальный, {\small мельче, \footnotesize еще мельче, \scriptsize еще мельче}, опять нормальный. При изменении размера шрифта изменяется интерлиньяж. Однако величина интерлиньяжа учитывается в момент, когда Т^Х обрабатывает абзац, т. е. при исполнении команды \раг. Поэтому, чтобы обеспечить правильный интерлиньяж при верстке абзаца со шрифтом измененного размера, конец абзаца следует помещать внутрь блока: Этот абзац набран размером, исполь- {\f ootnotesize Этот абзац набран зуемым в сносках, и имеет правиль- размером, используемым в сносках, и ный интерлиньяж. имеет правильный интерлиньяж. \раг} 3.4. Гарнитуры и начертания шрифтов ПТ^Х’а Размер, гарнитура и начертание шрифтов в lAI^X’e изменяются по возможности независимо друг от друга. Другими словами, при изменении размера шрифта его гарнитура и начертание сохраняются, а при изменении гарнитуры выбирается шрифт близкого начертания. Гарнитуру и начертание шрифтов можно выбрать двумя способами: с помощью деклараций, действующих в пределах текущего блока текста, и с помощью команд \text... {{текст}}. Первый вариант лучше использовать для больших фрагментов текста, а последний — для выделения небольших фрагментов текста. 1АТцХ предоставляет три базовых гарнитуры (слева—декларация, в скобках—вариант команды с параметром): \rmfamily — гарнитура с засечками (\textrm{(meKcm)}). Используется в качестве основной текстовой гарнитуры; \sffamily — гарнитура без засечек (\textsf{{текст}}}. Используется в оформительских целях; \ttfamily — гарнитура моноширинного шрифта (\texttt{(mettcm)}). Используется при оформлении листингов программ, для эмуляции набора на экране компьютера. Начертание шрифтов представлено комбинацией двух свойств, изменяющихся независимо друг от друга: рядом и формой.
lATgX обеспечивает два ряда шрифтов: \mdseries — нормальная жирность (\textmd{{текст)}), \bfseries — увеличенная жирность (\textbf{{текст}}) и четыре варианта формы: \upshape — прямой шрифт (\textup{(me?ccm)}), \itshape — курсивный шрифт (\t ext it {{текст}}), \slshape — наклонный шрифт (\textsl{(meKcm)}), \scshape — мелкопрописной шрифт {\textsc{{meKcm}}). В некоторых гарнитурах отдельные комбинации свойств начертания отсутствуют. Например, в гарнитуре \sffamily нет мелкопрописного шрифта. Если заказанная комбинация свойств начертания отсутствует, то lAT^X выводит предупреждение в log-файл и заменяет требуемое начертание на близкое. Посмотрите какие варианты доступны в гарнитуре \rmfamily: Нормальная жирность: {\rmfamilyXmdseries прямой, курсив, наклонный) МЕЛКОПРОПИСНОЙ. Увеличенная жирность: Нормальная жирность: ^ех^р{прямой}, Xtextit{курсив}, \textsl{HaKnoHHbrii}, \textsc{MenKonponHCHOH}.\\ прямой, курсиву наклонный^ МЕЛКОПРОПИСНОЙ. \bfseries Увеличенная жирность: \textup{npHMoft}, \textit{курсив}, \textsl{HaKHOHHbni}, \textsc{мелкопрописной}.} А теперь в гарнитуре \sffamily: Нормальная жирность: прямой, курсив, наклонный. Увеличенная жирность: {\sffamilyXmdseries Нормальная жирность: \textup{npHMoft}, \textit{курсив}, \textsi{наклонный}.\\ прямой, курсив, наклонный. \bfseries Увеличенная жирность: \textup{npHMoft}, \textit{KypcHB}, \textsi{наклонный}.} Видно, что в гарнитуре без засечек нет курсива. Вместо него используется наклонный шрифт.
Наконец, посмотрите на гарнитуру \ttf amily: Нормальная жирность: {\ttfamily\mdseries прямой, курсив, наклонный, Нормальная жирность: \textup{npHMofi}, МЕЛКОПРОПИСНОЙ. \textit{KypcHB}, \гехгз1{наклонный}, Увеличенная жирность: \гехгзс{мелкопрописной}.\\ прямой, курсив, наклонный, \bfseries мелкопрописной. Увеличенная жирность: \textup{npHMofi}, \textit{курсив}, \textsl{HaKnoHHbifi}, \textsc{MenKonpomicHofi}.} В ней, оказывается, нет шрифтов с ожирнением. Перечисленные команды выбора гарнитур и начертаний составляют самый верхний слой команд выбора шрифтов. Представление документа, использующего только эти команды, можно изменить одной командой. Например, команда \usepackage{literat} устанавливает гарнитуру «Литературная» в качестве основной гарнитуры документа (\rmfamily) вместо гарнитуры «Computer Modern Roman», используемой по умолчанию. Перечисленные здесь варианты начертаний шрифтов не охватывают всех имеющихся возможностей. Например, в гарнитуре «Computer Modern Roman» есть два варианта ожирнения: «bold» и «bold extended». Команда \bf series задает второй вариант. Чтобы заказать вариант «bold», придется воспользоваться командами более низкого уровня. Их описание приводится дальше. 3.5. Заказ нормального шрифта, выделение текста Основной шрифт, используемый в документе, называется нормальным шрифтом. Обычно это шрифт гарнитуры \rmfamily, ряда \mdseries, формы \upshape. Для заказа этого шрифта служит декларация \normalfont. Аналогично предыдущим командам, команда \textnormal{(me?ccm)} выводит (текст) нормальным шрифтом. Часто возникает необходимость выделения фрагмента текста иным шрифтом. Если основной шрифт прямой, то выделение обычно оформляют курсивом. Если же требуется выделить фрагмент внутри курсивного или наклонного текста, то выделение можно оформить прямым шрифтом. В lAT^X’e для этой цели служит команда \етрЪ{(текст)}, которая автоматически выбирает подходящий вариант выделения в зависимости
от начертания окружающего текста. Наряду с этой командой можно использовать декларацию \ет, но предпочтительнее пользоваться командой \emph. Посмотрите как работает команда \emph: Шрифт прямой: выделение] курсивный: выделение; наклонный: выделение; мелкопрописной: выделение] жирный прямой: выделение; курсивный: выделение; наклонный: выделение; МЕЛКОПРОПИСНОЙ: выделение. Шрифт прямой: \етрЬ{выделение}; {\itshape курсивный: \етрЬ{выделение};} {\slshape наклонный: \етрЬ{выделение};} {\scshape мелкопрописной: \етрЬ{выделение};} {\bfseries жирный прямой: \етрЬ{выделение}; {\itshape курсивный: \етрЬ{выделение};} {\slshape наклонный: \етрЬ{выделение};} {\scshape мелкопрописной: \етрЬ{выделение}.}} 3.6. Особенности курсивных и наклонных шрифтов Некоторые символы курсивных и наклонных шрифтов выступают за правую границу своего бокса (рис. 3.2). Поэтому при переходе от наклонного шрифта к прямому расстояние между последним наклонным и первым прямым символами может оказаться слишком маленьким или, даже более того, может произойти частичное наложение символов. Чтобы избежать этого служит команда компенсации курсивного выступа \/, добавляющая небольшой пробел, равный величине выступа последнего символа. Рис. 3.2. Боксы курсивных символов Команду компенсации курсивного выступа обычно применяют в том случае, если следом идет достаточно высокий прямой символ. Если же это символ точки или запятой, то такая компенсация не нужна. Если следом идет пробел, то курсивная компенсация также желательна, поскольку пробелы в одной строке текста должны быть одинаковы. Пример: В этой фразе курсивный и наклонный шрифты нуждаются в компенсации, кроме последнего. В этой фразе {\itshape курсивный\/} и {\sishape наклонный\/} шрифты нуждаются в компенсации, кроме {\itshape последнего}.
Все эти усилия нужны, когда Вы заказываете курсивное или наклонное начертание с помощью деклараций. Если же применяется их альтернативная форма с параметром (\textit и \textsl), то вставка команды компенсации делается автоматически. Сравните: В этой фразе курсивный и наклонный шрифты нуждаются в компенсации, кроме последнего. В этой фразе \textit{курсивный} и \textз1{наклонный} шрифты нуждаются в компенсации, кроме \textit{nocneflHero}. Вам также не нужно заботиться о курсивной компенсации, если для выделения Вы используете команду \emph10. Если по каким-то причинам Вы хотите подавить курсивную компенсацию в параметре команд \textit, \textsl, \emph, вставьте перед закрывающей фигурной скобкой команду \nocorr11. Тот же пример, но без курсивной компенсации: В этой фразе курсивный и наклонный шрифты нуждаются в компенсации, кроме последнего. В этой фразе \textit{KypcHBHbrii\nocorr} и \textsl{HaKnoHHbm\nocorr} шрифты нуждаются в компенсации, кроме \textit{nocneflHero}. Различия есть, но очень незначительные. 3.7. Текстовые шрифты в математической моде В математической моде использует специальные математические шрифты. Однако возникают ситуации, когда в формуле нужен текстовый шрифт. Например, в формуле 1ВЫХ нижний индекс должен оформляться прямым шрифтом. Это делается так: $I_{\textnormal{BHx}}$. Как видно из этого примера, команды \text... можно использовать в математической моде, причем кегль получающегося текста будет соответствовать месту использования команды в формуле (в индексах и индексах индексов кегль всех шрифтов уменьшается). В параметре команд \text... действует текстовая мода, а не математическая, поэтому пробелы внутри параметра не игнорируются. 10При использовании декларации \еш для выделения шрифта задача курсивной компенсации существенно усложняется. Поэтому лучше для выделения использовать команду \emph. ^Команду \nocorr можно использовать не только в конце параметра команд \text..., но и в начале. В этом случае будет подавляться курсивная компенсация в начале текста. Но этот случай слишком экзотичен, чтобы придумать осмысленный пример.
Кроме индексов, текстовые шрифты часто используют в выносных формулах. Например, формула 11 при i = j, и ij — < О иначе. набрана так: \[ \delta_{ij} = \begin{cases} 1 & \textnormal{npn } i=j,\\ О & \гехЪпогта1{иначе.} \end{cases}\] Это не лучшее решение. Явного указания начертания шрифта лучше избегать, поскольку оно может не соответствовать начертанию вне формулы. Поэтому следующий вариант предпочтительнее: \[ \delta_{ij} = \begin{cases} 1 & \шЬох{при } i=j,\\ О & \шЬох{иначе.} \end{cases}\] Однако и это решение тоже не оптимально. Команда \mbox хотя и оформляет свой параметр требуемым шрифтом, но она нечувствительна к положению текста в формуле: в индексах и индексах индексов текст, генерируемый командой \mbox, будет крупнее, чем надо. Оптимальное решение дает команда \text из пакета amstext12: она работает как \mbox, но чувствительна к положению текста в формуле. Вот наилучшее решение задачи: \[ \delta_{ij} = \begin{cases} 1 & \text{npn}\ i=j,\\ О & \text{иначе.} \end{cases}\] Для использования текстовых шрифтов в математической моде в lATEX’e имеются команды, начинающиеся на \math... (см. с. 341). В отличие от команд \text... они оформляют свой параметр в математической моде (пробелы игнорируются), причем вполне определенным шрифтом. Например, команда \mathrm{(meKcm)}, выводит (текст) прямым шрифтом с засечками. Эти команды имеют ограниченное применение. Их можно использовать только с символами ASCII, т. е. с символами, коды которых меньше 128. Символы кириллицы в параметре таких команд исчезают13. 12При заказе пакета amsmath пакет amstext подгружается автоматически. 13Если заказана кодировка cpl251-light, то кириллица не исчезнет, а будет выведена нормальным текстовым шрифтом.
3.8. Старый стиль выбора шрифтов В классах JAT^X’a определены также декларации выбора текстовых шрифтов в старом стиле (см. с. 341), который использовался в IATgX-2.09. Эти декларации можно использовать не только в текстовой моде, но и в математической. Например, декларация \rm заказывает шрифт гарнитуры \rmfamily, нормальной жирности и прямого начертания как в текстовой, так и в математической моде. 3.9. Схемы кодировки шрифтов Количество символов в шрифте TgX’a не превосходит 256. Поместить в этот небольшой набор символы многих языков уже не удается. Поэтому говоря о шрифте определенной гарнитуры, имеют в виду не весь шрифт, а подмножество символов шрифта, предназначенное для работы с определенной группой языков. Такое подмножество, уложенное в 256 позиций, называют схемой кодировки шрифта14. В 1АТЩХ’е имеются следующие стандартные схемы кодировки текстовых шрифтов: 0Т1, Tl, 0Т2, Т2А, Т2В, Т2С, Х2 (см. с. 341). Старые кодировки 0Т1 и 0Т2 содержат только по 128 символов. В кодировке 0Т2 кириллица занимает позиции латинских букв. Ее прообраз, «Вашингтонская кириллица», был разработан Американским математическим обществом для реферирования изданий с кириллицей. Кодировка Т1 содержит латиницу и дополнительные символы европейских языков с латинской основой. Кодировки схемы Т2 (Т2А, Т2В, Т2С) содержат и латиницу, и кириллицу. Первые 128 символов кодировок схем Т2 и Т1 идентичны. Оставшиеся 128 символов в кодировках схемы Т2 содержат русские буквы и дополнительные буквы для поддержки языков, использующих кириллицу. Все кодировки схемы Т2 поддерживают русский язык. Различаются они группами языков с кириллицей, которые поддерживаются дополнительно. Наиболее распространенные языки поддержаны в кодировке Т2А. В схеме Т2 кодировка прописных и строчных русских букв (за исключением буквы «ё») совпадает с кодировкой Windows СР 1251. 14Речь здесь пойдет только о кодировках текстовых шрифтов, поскольку кодировки математических и специальных шрифтов по большей части «зашиты» в команды. Совершенно не обязательно знать, где и в каком шрифте находится математический или специальный символ, если есть команда, его производящая.
Наконец, кодировка Х2 содержит все буквы кириллицы, но не содержит латинских букв. Русские буквы в ней занимают те же позиции, что и в кодировках схемы Т2. Для загрузки схемы кодировки шрифтов используют пакет fontenc. Например, команда \usepackage[Т2А]{fontenc} заказывает кодировку Т2А. 3.10. Выбор нестандартного шрифта Описанные ранее команды выбора шрифтов не охватывают все имеющиеся в I^I^X’e гарнитуры и начертания. Например, семейство «Computer Modern» содержит около десяти различных гарнитур, из которых в IM^X’e используются только три гарнитуры. Чтобы заказать нестандартный шрифт, воспользуйтесь декларацией \usef ont {(кодировка)}{(гарнитура)} {(ряд)} {(форма)} Эта команда не изменяет кегль шрифта. Ее параметры означают следующее: (кодировка) — схема кодировки шрифта. Стандартные схемы кодировки шрифтов семейства «Computer Modern»: 0Т1, Tl, 0T2, T2A, T2B, T2C, X2; (гарнитура) — название гарнитуры шрифта. Основные гарнитуры семейства «Computer Modern»: cmr (шрифт с засечками), cmss (шрифт без засечек), cmtt (шрифт телетайпа); (ряд) — свойство, описывающее жирность и растянутость шрифта. В семействе «Computer Modern» используются варианты: m (нормальный), b (жирный), Ьх (жирный, растянутый), sbc (полужирный, сжатый), с (сжатый); (форма) — свойство, описывающее форму шрифта. В семействе «Computer Modern» используются варианты: п (прямой), it (курсивный), si (наклонный), sc (мелкопрописной), ui (прямой курсив). Образцы шрифтов семейства «Computer Modern» схемы Т2 приведены на с. 342.
3.11. Заказ одиночного шрифта При оформлении специальных страниц документа может потребоваться шрифт нестандартного размера. Для такого шрифта стоит создать специальную декларацию, по которой он будет выбираться. Для этого воспользуйтесь декларацией \DeclareFixedFont{ (декларация) М (кодировка)}{(гарнитура)} {(ряд)}{(форма)}{(кегль)} По сравнению с \usefont здесь добавилось два новых параметра: параметр (декларация) задает новую декларацию, которая будет устанавливать требуемый шрифт, а (кегль) задает требуемый кегль шрифта. Например, \DeclareFixedFont\myf ont{T2Aj{cmdhMmMn}{30} создает декларацию \myfont, которая будет устанавливать шрифт 30 кегля гарнитуры «Dunhill». Пример использования декларации: \begin{center} \myfont Это шрифт Dunhill \end{center} Результат: Это шрифт Dunhill Шрифты JAT^X’a семейства «Computer Modern» доступны в небольшом числе кеглей. В старых схемах кодировки шрифтов (0Т1, 0Т2) максимальный кегль—25, а в новых (Tl, Т2А, Т2В, Т2С, Х2) —36. Далеко не все доступные кегли целочисленные. Поэтому при заказе шрифта DTgX выбирает максимально близкий кегль из всех возможных. Вот полный список кеглей шрифтов семейства «Computer Modern» схемы Т2: 5 6 7 8 9 10 10.95 12 14.4 17.28 20.74 24.88 29.86 35.83 Если Вы все-таки хотите заказать шрифт очень большого кегля, то можно воспользоваться низкоуровневой декларацией \newfont{(декларация)М(спецификация шрифта)}
Здесь (спецификация шрифта) : (имя шрифта) | (имя шрифта) scaled (целое число) (Имя шрифта) задает полное имя шрифта, а (целое число) — величину масштабирования шрифта, умноженную на 1000. Например, шрифт «Dunhill» 30 кегля кодировки Т2А называется ladh2986 (цифры в конце имени —точная величина кегля, умноженная на 100). Чтобы увеличить его вдвое, задайте масштабирование 2000: \newfont\Myfont{ladh2986 scaled 2000} Пример использования этой декларации: \begin{center} \Myfont Это Dunhill \end{center} Результат: Это Dunhill И в заключение приведу еще один способ использования команды \newfont. Если Вы хотите увеличить жирность какого-нибудь шрифта, то можно заказать его меньший размер и применить к нему большее масштабирование. Например, возьмите шрифт ladhlOOO («Dunhill» 10 кегля кодировки Т2А), увеличьте его в 6 раз: \newfont\MYF0NT{ladhl000 scaled 6000} и выведите фразу «Это Dunhill» шрифтом \MYF0NT. Результат будет жирнее, чем в предыдущем случае: Это Dunhil.
Глава 4 Верстка статьи в ЖГ^Х’е 4.1. Подготовка статьи для научного издания Многие издательства принимают статьи, подготовленные в стандартном классе article, либо предоставляют собственный класс документа для оформления статьи. Различия между классом article и специализированным классом обычно невелики и в основном касаются оформления титула документа. Поэтому, научившись готовить статью в классе article, Вы без труда освоите специализированные классы. Как правило статья, предназначенная для отправки в научный журнал, имеет следующую структуру: {Титул документа) {Аннотация) {Текст документа) {Список литературы) Вот заготовка для нее в lAT^X’e: \documentclass[draft]{article} \usepackage{amsmath} \begin{document} \Ъ±Ъ1е{{название статьи)} \author{{автор (ы))} \maketitle \begin{abstract} {текст аннотации) \end{abstract} {текст документа) \begin{thebibliography}{9} \Ь±Ь±Ъет{{метка)} {библиографическая ссылка) \Ъ±Ъ±Ъет{{метка)} {библиографическая ссылка) \end{thebibliography} \end{document} Разберем, из чего состоит эта заготовка.
1. Команда \documentclass заказывает класс article для оформления данного документа. Опция draft в списке дополнительных параметров команды заказывает маркировку горизонтальных переполнений. Этот режим полезен при отладке документа, поскольку справа от строки, где возникло переполнение, печатается вертикальная линейка I. Перед отправкой документа в издательство эту опцию лучше убрать. Другие опции класса article описаны в п. 4.2. 2. Преамбула документа обычно начинается с заказа дополнительных пакетов, которые нужны при подготовке статьи. Если в статье используются сложные математические формулы, то закажите пакет amsmath. Для вставки в статью рисунков воспользуйтесь возможностями пакета graphicx. 3. Команды \title, \author и \maketitle служат для подготовки титула статьи. Есть еще команда, задающая дату написания статьи1: \date{(dama)} По умолчанию в титуле выводится дата трансляции документа. Чтобы убрать дату, задайте команду \date{}. Вывод титула выполняет команда \maketitle, а другие команды готовят информацию для нее. Поэтому команды \title, \author, \date могут находиться как внутри окружения document, так и в преамбуле документа, а команда \maketitle должна идти после \begin{document}. Параметр команды \title содержит название статьи и может содержать ссылку на гранты, при поддержке которых написана статья. Ссылка оформляется командой \thanks{( информация о поддержке)} создающей специальную сноску. Эту команду не стоит отрывать от последнего слова названия статьи, чтобы между маркером сноски и этим словом не было пробела. В параметре команды \author указывается информация об авторах: инициалы и фамилия2, место работы, электронный адрес, информация о грантах, которыми поддержана работа автора. Ее оформление зависит от ХВ классе псс команда \date не используется. 2Инициалы должны идти до фамилии. Употребление инициалов после фамилии допустимо только в библиографических ссылках и элементах оформления, служащих для поиска по фамилии. В канцелярских документах часто пишут инициалы после фамилии, но это плохая практика.
требований, предъявляемых издательством, но есть некоторые общие черты. Обычно используется один из двух вариантов: информация об одном авторе отделяется от информации о другом авторе командой \and3, либо вся необязательная информация об авторах выносится в сноски. Пример: Gnu Veldt Cuisine G. Picking* Acme Kitchen Products R. Dillo Gordon Puce SchooP 24 July 1984 Revised 5 January 1985 \title{Gnu Veldt Cuisine} \author{G. Picking\thanks{Supported by a grant from the GSF.} \\ Acme Kitchen Products \and R. Dillo \\ Gordon Puce School\thanks{On leave during 1985.}} \date{24 July 1984 \\ Revised 5 January 1985} * Supported by a grant from the GSF. t(Dn leave during 1985. \maketitle Команду \thanks можно использовать только в параметрах команд \title и \author. Команду \and можно использовать только в параметре команды \author. После команды \maketitle все перечисленные команды оформления титула становятся недоступными4. 4. Окружение abstract выводит аннотацию, состоящую из одного или нескольких абзацев. Обычно аннотация состоит из текста и строчных формул. Ссылки на библиографию в аннотацию помещать не стоит, поскольку это затруднит реферирование статьи. После аннотации идет основной текст статьи, а следом—список литературы. Их структура описана соответственно в пп. 4.4 и 4.6. 4.2. Опции класса article Класс article имеет следующие опции: • Опции размера базового шрифта: lOpt, llpt, 12pt. По умолчанию устанавливается lOpt. • Опции размера страницы (ширина х высота): 3В классе псс команда \and не используется. 4В классе псс команды оформления титула можно использовать многократно.
а4рарег 210 х 297 mm абрарег 148 x 210 mm Ьбрарег 176 x 210 mm letterpaper 8.5 x 11 in legalpaper 8.5 x 14 in executivepaper 7.25 x 10.5 in По умолчанию устанавливается letterpaper. • Опция landscape задает оформление документа в альбомной ориентации, т. е. меняет местами длину и ширину страницы. • Черновик (draft) или чистовик (final). По умолчанию—чистовик. В режиме черновика текст и формулы, выходящие за правый край текстового поля (горизонтальные переполнения), помечаются черным прямоугольником на полях. • Одностороннее (oneside) или двустороннее (twoside) оформление страницы. При одностороннем оформлении документа макет всех страниц одинаков. При двустороннем оформлении компоновка четных (левых) и нечетных (правых) страниц документа различается колонтитулами и позициями сносок на полях страницы (см. п. 2.10, с. 44). По умолчанию используется одностороннее оформление. • Оформление титула документа на отдельной странице (titlepage) или в подбор, т.е. совместно с текстом документа (notitlepage). По умолчанию титул оформляется в подбор. • Верстка текста страницы в одну колонку (onecolumn) или в две колонки (twocolumn). По умолчанию действует верстка в одну колонку. В lAT^X’e есть также команды \onecolumn и \twocolumn, позволяющие изменять количество колонок в документе в процессе его обработки5 . • Опция f leqn задает выравнивание выносных формул по левому краю текстовой области с отступом на величину \mathindent, равную величине отступа в списках. По умолчанию действует центрирование выносных формул. • Опция leqno задает вывод номера слева от выносных формул. По умолчанию номер в выносных формулах выводится справа. • Опция openbib задает открытое оформление библиографических ссылок. Блоки информации в библиографической ссылке (авторы, 5Пакет multicol позволяет верстать текст с любым количеством колонок.
название, издание и др.) можно отделять друг от друга командой \newblock. В обычном режиме эта команда генерирует небольшой пробел. Если заказана данная опция, то команда \newblock разрывает строку. При этом левый отступ всех строк каждого блока информации, начиная со второй строки, увеличивается на величину \bibindent, равную 1.5ет. Размеры текстовой области и ее положение на странице вычисляются автоматически и зависят от двух факторов: базового кегля документа и размера страницы. 4.3. Стили оформления страниц документа Декларация \pagestyle{(cmih/ib)} задает стиль оформления колонтитулов текущей и последующих страниц документа. Обычно ее помещают в преамбулу документа. В lATgX’e определено 4 стиля оформления колонтитулов: empty — пустые колонтитулы; plain — верхний колонтитул пуст, номер страницы располагается по центру нижнего колонтитула; headings — нижний колонтитул пуст, в верхнем колонтитуле с внешней стороны страницы (см. с. 46) расположен номер страницы, а с внутренней — текст старших рубрик документа (этот стиль используется в книгах); myheadings — то же оформление, что и в предыдущем случае, но текст верхних колонтитулов задается вручную специальными командами. По умолчанию в классе article задается стиль plain. В статьях также используется стиль myheadings, колонтитулы для которого оформляются командами \markboth{(текст слева)} {{текст справа)} \markright{(текст справа}} Здесь {текст слева) —текст левого (четного), а {текст справа) — правого (нечетного) колонтитула. Последняя команда изменяет только правый
колонтитул. Левый и правый колонтитулы различаются только при двустороннем (см. с. 46) оформлении документа, а при одностороннем оформлении левый колонтитул игнорируется (всегда выводится правый). Стиль оформления колонтитулов можно изменять внутри документа с помощью декларации \pagestyle или \thispagestyle{ (стиль)} Последняя изменяет стиль оформления колонтитулов только на текущей странице документа, а со следующей страницы восстанавливается старый стиль. 4.4. Рубрикация Текст статьи как правило разбит на фрагменты с нумерованными заголовками, называемые пунктами. Нумерация пунктов обычно сквозная, начиная с единицы. Пункты могут быть разбиты на подпункты с двойной нумерацией. Например, пункт 1 содержит подпункты 1.1, 1.2, 1.3; пункт 2 содержит подпункты 2.1, 2.2 и т. д. В свою очередь, подпункты тоже могут быть разбиты на более мелкие подразделы и т. д. Разбиение текста на пункты, подпункты и т.д. называют рубрикацией. Заголовки элементов рубрикации называют рубриками документа. Рубрики верхних уровней обычно выносные (оформляются отдельными абзацами), а рубрики нижних уровней выводятся в подбор с текстом, т. е. заголовок рубрики начинает абзац. В статье как правило используется одноуровневая или двухуровневая рубрикация. Например, текст статьи с одноуровневой рубрикацией имеет следующую структуру: \section{Introduction} (абзацы) \зесЪ±оп{(Заголовок секции 2)} (абзацы) \зесЪ±оп{(Заголовок секции N)} (абзацы) Команда \section оформляет рубрику первого уровня. Рубрика «Introduction» будет иметь номер 1, следующая—номер 2 и т.д.
В классе article имеется 5 основных уровней рубрикации: Команда Уровень Оформление Название рубрики* \section 1 выносное секция \subsection 2 выносное подсекция \subsubsection 3 выносное подподсекция \paragraph 4 в подбор параграф \subparagraph 5 в подбор подпараграф Нумерация рубрик первого уровня сквозная, второго —двойная, третьего—тройная. Рубрики 4 и 5 уровня не нумеруются6 7. Есть также специальный нулевой уровень рубрикации — часть, для оформления которой используется команда \part. Части нумеруются большими римскими цифрами. В обычных статьях эта команда не используется, хотя разбиение на части может потребоваться в больших статьях, оформляемых в виде отдельного издания, например, в препринтах. Все команды рубрикации имеют две формы: основную и *-форму. Их синтаксис: \команда [{элемент оглавления}] {{заголовок}} \команда*{{заголовок}} Здесь \команда —любая из перечисленных выше команд рубрикации. Основной вариант команды рубрикации открывает новую нумерованную рубрику (или ненумерованную, если нумерация рубрики данного уровня отключена). Текст заголовка рубрики заносится также в аих-файл с целью дальнейшей сборки содержания. Если задан {элемент оглавления}, то он будет занесен в аих-файл вместо {заголовка}. В статьях дополнительный параметр команд рубрикации используется крайне редко, обычно в случае, если в заголовке рубрики есть хрупкая команда, например, \linebreak. Тогда самый простой способ избавления от ошибки трансляции — задать у команды рубрикации пустой дополнительный параметр, например: 6Я называю рубрики документа по имени команд, использующихся для их оформления, а не по их названию в полиграфии. Другими словами, вместо полиграфических терминов пункт, подпункт и т.д. я использую 1£\ЩХ’овские термины секция, подсекция и т.д. В данной книге это оправдано и, надеюсь, не приведет к путанице. 7Управляет глубиной нумерации рубрик документа счетчик secnumdepth. Его значение по умолчанию в классе article равно трем. Это означает, что нумерация рубрик уровня выше третьего подавляется.
\section[]{Длинный заголовок принудительно разбитый\ИпеЬгеак на две строки} Конечно, это делается, если сборка содержания не требуется. В противном случае следует продублировать в дополнительном параметре содержимое основного параметра, но без команды \linebreak. Звездочка-форма команды рубрикации открывает новую рубрику этого же уровня, но без номера. Заголовок такой рубрики в aux-файл не заносится. В статье могут быть приложения. Как правило они размещаются после библиографии. Пусть, например, статья содержит два приложения. Тогда их оформление будет таким: \end{thebibliography} У. Помещаем приложения после библиографии \appendix \зесЫоп{{Заголовок приложения Л)} {абзацы} \section{( Заголовок; приложения В}} {абзацы} \end{document} Команда \appendix обнуляет счетчик секций и изменяет нумерацию секций с числовой на буквенную (большими латинскими буквами). Поэтому первое приложение будет иметь номер А, второе—В и т.д. Команды рубрикации можно отделять пустыми строками от окружающего текста. Это не повлияет на результат трансляции. 4.5. Перекрестные ссылки между рубриками Если рубрика документа имеет номер, то на него можно организовать ссылку. Пусть, например, во введении к статье приведено краткое описание ее содержания: ‘‘The results are presented for both analytical (Section~2) and numerical (Section~3) investigation’’. Здесь есть явные ссылки на секции 2 и 3. Если технический редактор Вашей статьи решит, что секцию «Introduction» нумеровать не стоит, и воспользуется *-формой команды \section при ее оформлении, то Ваши
ссылки на номера секций станут неверными. Это может привести к трудноустранимым ошибкам, особенно если ссылки на рубрики документа запрятаны глубоко в текст. Устранить этот недостаток помогут метки и ссылки. Сначала поставьте метки в заголовках (или сразу после заголовков) соответствующих рубрик: \section{Analytical estimation of the bias\label{s:analytic}} \section{Numerical investigation of the bias\label{s:numerical}} Затем измените текст во введении: ‘‘The results are presented for both analytical (Section~\ref{s:analytic}) and numerical (Section~\ref{s:numerical}) investigation’’. 4.6. Оформление библиографии Если в статье есть библиография, то есть и необходимость ее цитирования внутри статьи. предлагает автоматизацию механизма цитирования с помощью специальных «библиографических меток», которые создаются в окружении thebibliography командой \bibitem при описании библиографической ссылки. Структура окружения thebibliography следующая: \begin{thebibliography}{ (прототип)} \bibitem[(Atap?cep)] {{метка}} {библиографическая ссылка} \bibitem[{маркер}] {{метка}} {библиографическая ссылка} \end{thebibliography} Параметр {прототип} задает прототип максимально широкого маркера библиографической ссылки. При обычном оформлении ссылок, когда каждая ссылка маркируется порядковым номером, прототип содержит одну или несколько десятичных цифр. Так, если в списке литературы не более 9 ссылок, то прототипом будет число 9; для более 9, но не более 99 ссылок—99; для трехзначной нумерации ссылок—999 и т.д. Библиографическая ссылка начинается командой \bibitem, содержащей необязательный {маркер} и обязательную {метку}. Эта команда начинает новый элемент библиографического списка и печатает маркер биб
лиографической ссылки в квадратных скобках. Если дополнительный параметр отсутствует, то маркером будет порядковый номер библиографической ссылки. Если же {маркер} задан8, то он будет выводиться вместо номера. Пример оформления библиографии в классе article: References [1] Knuth, D. Е. The [2] Lamport, L. BT^X. Т^ХЬвок, \begin{thebibliography}{99} \bibitem{Knuth} Knuth, D.\,E. \textit{The \TeX book}, ... \bibitem{Lamport} Lamport, L. \textit{\LaTeX. ...} [11] [12] Gratzer, G. Math into T^X^ Gratzer, G. First steps in BTeX, • • • \bibitem{Gratherl} Gr\"atzer, G \textit{Math into \TeX}, ... \bibitem{Grather2} GrV'atzer, G \textit{First steps in \LaTeX}, \end{thebibliography} Здесь схематично показано оформление библиографии, состоящей из двенадцати ссылок. Для удобства цитирования, метки ссылок содержат имена цитируемых авторов. Все метки в документе должны быть уникальны. Библиографические ссылки обычно упорядочивают либо в порядке цитирования их в тексте статьи (в статьях с небольшой библиографией), либо по алфавиту. Если при оформлении ссылок на английском языке инициалы идут после фамилии автора, то перед ними ставится запятая. 4.7. Оформление ссылок на ресурсы Интернет Оформление ссылок, начинающихся с http://, имеет следующие особенности: разрыв строки возможен только после символов пунктуации; в точке разрыва «дефис» не вставляется. По этой причине разбивка длинных ссылок на строки может оказаться весьма сложной задачей. Чтобы упростить подготовку таких ссылок, закажите пакет url в преамбуле документа: \usepackage{url} Оформление ссылки выполняет любая из команд \url{{ссылка на ресурс}} \\irl{символ}{ссылка на ресурс}{символ} 8 Оформление ссылок с явно указанными маркерами в отечественной литературе используется редко.
Первый вариант традиционный, но имеет ограничения: в параметре команды нельзя использовать символы «*/,», «#», «~»; параметр не должен заканчиваться символом «\»; фигурные скобки в параметре должны быть сбалансированы. Второй вариант похож по оформлению на команду \verb (см. с. 101): ограничителем параметра команды служит указанный (символ), отсутствующий внутри параметра. По умолчанию ссылка на ресурс оформляется шрифтом телетайпа, что в большинстве случаев хорошо. Однако в библиографии ссылки на ресурсы желательно оформлять обычным текстовым шрифтом. Для этого служит декларация \urlstyle{(cmih/it>)} где (стиль) — один из следующих вариантов: tt (гарнитура \ttfamily), rm (гарнитура \rmfamily), sf (гарнитура \sffamily), same (оформление текущим текстовым шрифтом). Пример оформления библиографии: \begin{thebibliography}{9} \urlstyle{same} \bibitem{Gl} Globus Toolkit TM 2.4 Installation Instructions.~--- \url{http://www.globus.org/gt2.4/install.html}. \end{thebibliography} Другие возможности пакета url описаны непосредственно в коде пакета в виде комментариев. 4.8. Цитирование Цитирование библиографического источника выполняется в тексте документа командой \cite, проставляющей маркер библиографической метки, заключенный в квадратные скобки. Синтаксис этой команды: \cite [(комментарий)] {(список меток)} Здесь (список меток) — список меток библиографических источников цитирования, разделенных запятыми, а (комментарии) — уточняющая информация. При обработке ссылки имена меток в списке заменяются на
маркеры соответствующих библиографических ссылок, а комментарий вставляется после последнего маркера и отделяется от него запятой. Примеры: [1] [1, 2] [2, Section 5.4] \cite{Knuth} \cite{Knuth,Lamport} \cite[Section 5.4]{Lamport} Если составная ссылка (содержащая список из нескольких меток) попадает на разрыв строки, то может произойти нежелательная ее разбивка. Например, маркер метки «Knuth» может оказаться в конце строки, а маркер метки «Lamport» —в начале следующей строки. Исправить эту ситуацию можно, заключив команду \cite в \mbox: \mbox{\cite{Knuth,Lamport}} или вставив команду \linebreak перед \cite. Конечно, эти действия следует производить при заключительной верстке документа, поскольку в случае дальнейших правок эти исправления могут оказаться лишними или даже плохими. 4.9. Специфика оформления статей на русском языке Для заказа русского языка оформления используется пакет babel с опцией russian (см. п. 1.5, с. 24, а также п. 1.6). При этом включается режим переноса русских слов, а возможность переноса слов других языков отключается9. Обычно это не мешает верстке документа, за исключением верстки больших фрагментов текста на иностранном языке, например, библиографических ссылок на иностранные источники. Чтобы разрешить переносы в таких ссылках, требуется переключить язык с русского на соответствующий с помощью команды \f or е ignlanguage {(язык)}{(текст)} Здесь (язык) — название иностранного языка, определенного в пакете babel, например, english (английский), french (французский), german (немецкий). Пример оформления ссылки на английском языке: 9 В Т^Х-системе имеется комбинированная русско-английская таблица переносов ruenhyph. Если настроить Т^Х-систему так, чтобы эта таблица была основной, то перенос и русских и английских слов будет выполняться автоматически. Но это решение нарушает основное правило Г^ЩХ’а— неизменность результата трансляции файла на разных компьютерах.
\bibitem{LaTeXe} \foreignlanguage{english}{Lamport L. \LaTeX. A Document Preparation System. User’s Guide and Reference Manual.~--- 2nd ed.~— Reading (Massachusetts) etc.: Addison-Wesley, 1994.} Если фрагмент текста на иностранном языке состоит из нескольких абзацев, то вместо того, чтобы оформлять каждый абзац как параметр команды \f oreignlanguage, воспользуйтесь окружением \begin{hyphenrules}{(ji3b^)} (абзацы) \end{hyphenrules} 4.10. Оформление статьи в классе псс Класс псс обеспечивает 4 стиля оформления документов, заказываемые следующими опциями: article (статья), preprint (препринт), book (монография), report (отчет). По умолчанию действует стиль article. Размеры текстовой области определяются по базовому кеглю шрифта: Опция Ширина текста Высота текста lOpt 110 мм 157 мм llpt 126.5 мм 199 мм 12pt 145 мм 233 мм 14pt 160 мм 240 мм Класс псс поддерживает все стандартные размеры страниц: а4рарег, абрарег, Ьбрарег, letterpaper, legalpaper, executivepaper, landscape. Дополнительно имеется опция а5а4рарег (210 х 210 мм), применяемая для печати текста формата А5 на принтере формата А4, имеющем центрированный карман подачи бумаги. В отличие от стандартных классов, опции заказа размера страницы не изменяют размеров текстовой области. Чтобы пересчитать размеры текстовой области по размеру страницы, используйте опцию f ittopage. Класс псс поддерживает следующие опции класса article: oneside, twoside, draft, final, onecolumn, twocolumn, openbib, fleqn, leqno. Поддерживаются также опции openright (в стиле book новая глава или часть начинается с нечетной страницы, а в стиле article пустая четная страница добавляется в конец статьи при необходимости, т. е. следующая статья начинается с нечетной страницы) и орепапу (нет выравнивания по нечетной странице). Опции titlepage и notitlepage отсутствуют. Стиль оформления титула определяется стилем документа. В статьях титул оформляется в подбор, а в препринтах, книгах и отчетах—на отдельной странице.
Кегль заголовков рубрик документа можно сделать мельче, если заказать опцию small. В базовом кегле 14pt опция small заказывается автоматически. Для заказа русского языка используется опция russian. Она загружает пакет babel с опцией russian и переопределяет команды алфавитной нумерации с латинской на русскую (нумерация латиницей сохраняется в командах \alphlatin и \Alphlatin). Схема кодировки шрифтов кириллицы при заказе опции russian выбирается опциями Т2А, Т2В, Т2С. По умолчанию используется схема Т2А. Заказ входной кодировки выполняется обычным образом, например: \documentclass[russian,Т2В] {псс} \usepackage[ср866]{inputenc} Если пакет inputenc не загружать, то устанавливается входная кодировка cpl251-light. По умолчанию устанавливаются опции lOpt, a4paper, article, twoside, onecolumn, final, openany. Подготовка статей в классе псс отличается от класса article оформлением титула и колонтитулов страниц документа. Команды \date и \and не используются. Порядок вывода заголовка статьи и списка авторов определяется декларациями \TitleBef ore Author (заголовок, потом авторы) и \AuthorBeforeTitle (авторы, затем заголовок). По умолчанию действует первая декларация. Колонтитулы страниц документа оформляются в стиле myheadings: в левом колонтитуле задается список авторов, в правом — название статьи. Пример: \markboth{A.\,В.\,Иванов, В.\,П.\,Петров}{0 некоторых свойствах многочленов Лежандра} Чтобы задать декоративную линию в верхнем колонтитуле, используйте пакет ncchdr: \usepackage[myheadings]{ncchdr} Управление стилем нумерации рисунков, таблиц, уравнений и математических утверждений выполняется командой \count style. Например, команда \countstyle{section}
задает посекционную нумерацию всех перечисленных элементов, например, формулы в статье будут нумероваться как (1.1), (1.2) и т. д. Чтобы заказать специальную нумерацию для некоторых типов нумерованных элементов, укажите их счетчики в дополнительном параметре этой команды. Например, команды \countstyle{section} \countstyle[table,figure]{} устанавливают для уравнений и математических элементов посекционную нумерацию, а для рисунков и таблиц—сквозную. Сложные списки цитирования можно оформлять с помощью команды \cref {(метка)} подставляющей маркер метки без квадратных скобок вокруг. Например, пусть в примере на с. 78 под номер 3 идет источник с меткой «Lamport2». Тогда, цитирование источников [1-3, 11, 12] оформляется так: [\cref{Knuth}--\cref{Lamport2}, \cref{Gratherl}, \cref{Grather2}] При подготовке статьи для «Bulletin NCC» используйте следующие опции класса псс: \documentclass[llpt,small]{псс} 4.11. Оформление статьи в классе пссргос При подготовке статьи для трудов конференций, проводящихся под эгидой Института вычислительной математики и математической геофизики СО РАН, используется класс пссргос. Можно оформлять статьи как на английском языке, так и на русском. Класс пссргос базируется на классе псс. Вы можете использовать в нем следующие опции: openright, openany, russian, Т2А, Т2В, Т2С Пример преамбулы документа: \documentclass[russian]{пссргос} \title{0 некоторых свойствах многочленов ЛежандраХthanks{Работа выполнена при частичной финансовой поддержке РФФИ, грант 05-01-00343.}} \author{A.\,B. MBaHOB\thanks{MHCTHTyT теоретической и
прикладной механики СО РАН, Новосибирск.}, В.\,П. Петров^ hanks {Институт минералогии и петрографии СО РАН, Новосибирск.}} \markboth{A.\,В.\,Иванов, В.\,П.\,Петров}{0 некоторых свойствах многочленов Лежандра} 4.12. Оформление статьи в классе sibjnm Класс sibjnm используется при оформлении статей для Сибирского журнала вычислительной математики (правила подачи статей приведены на сайте http://www.sscc.ru/SibJNM/). Размер текстовой области — 155 х 225 мм. Статьи в СибЖВМ можно посылать как на русском языке (заказ класса документа с опцией russian), так и на английском. В файле статьи необходимо задать: • оформление титула командами \title, \author, \maketitle; • колонтитул командой \markboth; • коды УДК командой \UDC{(Koch>0}, либо коды классификатора Ам$ командой \AmSclassification{(Koch>0} (только для статей на английском языке); • аннотацию на русском и английском языках. Русская аннотация должна идти следом за командой \maketitle и оформляться с помощью окружения \begin{Rabstract}{{авторы} }{{название-статьи}} {текст-аннотации} \end{Rabstract} Следом за русской аннотацией идет английская, оформляемая так: \begin{Eabstract}{ {авторы} У{{название-статьи}} {текст-аннотации} \end{Eabstract} Необходимо также сопроводить статью информацией об авторах (почтовый и электронный адрес каждого автора) и списком ключевых слов на русском и английском языках. Эту информацию можно добавить в преамбулу или в конец статьи в закомментированном виде (с символом У, в начале каждой строки).
Глава 5 Верстаем текст грамотно 5.1. Набор текста При наборе слова используйте буквы одного языка1 2. Знаки пунктуации прижимайте к предыдущему слову^ и отделяйте от следующего за ним слова пробелом. Между открывающей круглой или квадратной скобкой и идущим за ней словом, а также между словом и закрывающей скобкой не должно быть пробелов. Пример: Слово, слово; слово: слово! слово? Слово, слово; слово: слово! слово? (слова в скобках) (слова в скобках) Если разрыв строки между словами нежелателен, то такие слова соединяют неразбиваемым растяжимым пробелом ~. Нерастяжимый узкий пробел \, также неразбиваемый. Его можно использовать между инициалами, между словами в сокращении. Примеры: А.\,В.“Петров, и~т.\,п., рис.“3, В~следующей главе В классе псс вместо \, лучше использовать неразбиваемый растяжимый узкий пробел \=,: А.\=,В.“Петров, и~т.\=,п. 5.2. Использование общепринятых сокращений Во всех изданиях, кроме литературно-художественных и рассчитанных на начинающего читателя, используют сокращения. Общеупотребимые сокращения (и др., и пр., и т.д., и т.п., т. е.) применяют всюду, кроме случая, когда следом идет слово, согласованное с сокращением (например, и другие ученые). Разрыв строки внутри таких сокращений запрещен. ХВ моей практике был случай, когда в одной статье TgX не справился с переносом самых обычных слов, и в результате возникло огромное число горизонтальных переполнений. Причиной этого оказалась латинская буква е в русских словах, из-за которой Т^Х не распознал эти слова как русские и, естественно, не смог выполнить их переноса. 2Между знаком пунктуации «точка с запятой», «двоеточие», «восклицательный знак», «вопросительный знак» и предшествующим словом можно вставлять узкий пробел \».
Примеры сокращений При географических названиях (г., д., обл., с.) В перекрестных ссылках (гл., п., подп., разд., ч., рис., табл., с.) При сопоставлении (см., ср., напр.) При датах (в., вв., г., гг., до н. э., н. э., ок.) При числах (тыс., млн, млрд, экз., р., к.) г."Новосибирск, д."Каинка, с."Рыбинское в~гл.~5, из п."2.1, в"подл."3.1.4, из разд. "А, ч.~П, на рис. "4.5, в"табл.~5.1, с."231 (см."рис."4.5), (ср."[5]), (см., напр., [5,~9]) Х1Х~в., XIV--XVI"bb., в"1897"г., в"1995--2004"гг., в~30-е~гг., 324"г. до"н.\,э., 125"г."н.\,э., ок.~1730"г. 20~тыс. экз., 300~млн"р., б"млрд, 1"р. 50"к. 5.3. Перенос слов При форматировании текста с выравниванием правого края ТцХ в случае необходимости выполняет перенос слов3, используя базовую таблицу переносов4. Пакет babel позволяет форматировать текст на смеси языков и при необходимости выбирать подходящие таблицы переносов (см. п. 4.9). Перенос слов с дефисным написанием. Бывают ситуации, когда либо TgjX переносит слово неудачно, либо возникает горизонтальное переполнение строки из-за того, что алгоритм переноса слова находит не все возможные точки переноса. Например, сложные слова с дефисным написанием TgjX переносит только по дефису. Чтобы помочь TgjX’y избавиться от переполнения или неудачного переноса, укажите места разрешенного переноса слова с помощью команды \-, например, слово кон\-форм\-но-ин\-ва\-ри\-ант\-ный TgjX будет переносить в указанных точках и по дефису. Если заказана поддержка русского языка с помощью пакета babel, перенос слов с дефисным написанием выполняется так: конформно”^инвариантный 3В шрифте гарнитуры \ttfamily перенос слов отключен. 4 Обычно базовая таблица содержит правила переноса слов английского языка.
В классе псс5 для этой же цели можно использовать команду \-/, причем не только в русском стиле: конформно\-/инвариантный Запрет переноса по дефису требуется в двух случаях: если слово нельзя переносить (например, 1-й) или если первое короткое слово нельзя отрывать от второго, длинного (например, г-согласованный). Вот традиционное решение: \тЬох{1-й} $г$\тЪох-со\-гла\-со\-ван\-ный Здесь все слово или дефис заключают в \mbox и расставляют точки возможных переносов. Команда \mbox запрещает разрыв не только своего содержимого, но и соседних слов, написанных с ней слитно. Вот решение, базирующееся на русском стиле пакета babel: 1"~й $г$"~со"-гласованный Команда действует как \mbox{-}, а вставляет в слово точку возможного переноса и разрешает вставку переносов в остальную часть слова. Наконец, вот решение, предоставляемое классом псс: 1\=/й $г$\=/согласованный Команда \=/ разрешает перенос обеих частей слова с дефисным написанием, но запрещает перенос по дефису. Коррекцию переноса часто употребимых слов можно выполнить с помощью команды \hyphenation{{образцы переноса)} В параметре этой команды указывают слова, разделенные пробелами, а точки возможного переноса в них указывают дефисом. Пример: \ЬурЬепаЬ1оп{кон-фор-м-ный табл} Второе слово в этом примере—сокращение табл6 — набрано без дефисов, т.е. его переносить нельзя. 5 Класс псс использует команды переноса и тире, определенные в пакете ext dash из коллекции пс с too 1s. 6ТеХ может переносить это слово как та-бл, что конечно недопустимо в ссылках на таблицы.
Слова, указанные в параметре команды \hyphenation, не склоняются, т. е. Т^Х использует указанные правила переноса, если модель слова в точности совпадает со словом в тексте, правда, без учета регистра букв (прописных или строчных). Команду \hyphenation рекомендуется использовать в преамбуле документа. 5.4. Тире короткое и длинное TgX предоставляет два варианта тире: короткое (en-dash) и длинное (em-dash). Первое набирается с помощью двух дефисов, а второе—с помощью трех: В шрифтах схемы Т2 длинное тире короче, чем в других схемах (сравните тире «—» схемы Т2А с тире «—» схемы ОТ1), что соответствует правилам отечественной полиграфии. Тире в диапазоне номеров и как разделитель фамилий. По правилам технического редактирования, принятым в отечественной полиграфии [1], в тексте должно использоваться только длинное тире. Следует признать, что эти правила частично устарели, поскольку были разработаны еще в докомпьютерную эпоху. Представляется разумным использовать короткое тире, если оно используется как связка двух текстовых элементов, например: • в диапазоне номеров (например, 25-53); • между двумя фамилиями, написанными через тире {неравенство Ко-ши-Буняковского), или в составной фамилии {Римский-Корсаков). В остальных случаях уместно длинное тире. Русский стиль пакета babel следует правилам [1] и предлагает для разделения фамилий использовать длинное тире неравенство Коши"--~Буняковского В классе псс для этой цели используются команды \-- и \==, генерирующие короткое тире: неравенство Коши\--Буняковского, 25\==53 Их отличия в разрешении (в первом случае) и запрете (в последнем случае) разбивки составного слова по тире. Обе команды разрешают переносы обеих частей составного слова.
Тире между словами. Опять же по правилам [1], длинное тире следует отделять от окружающего текста узкими пробелами. Однако использовать для этого команду \, не стоит, поскольку она запрещает переносы в слове, с которым соседствует. В стандартных средствах IAT]gX’a нет подходящего решения этой задачи, кроме использования обычных пробелов вокруг тире: Пусть $Х$~— банахово пространство. В русском стиле пакета babel эту фразу следует набирать так: Пусть $Х$ "--- банахово пространство. Если между командой "— и предшествующим текстом есть пробел, то он заменяется на неразбиваемый узкий пробел. Поэтому данную команду надо отделять от предыдущего слова во всех случаях, кроме двух: «закрывающая кавычка и тире» и «запятая и тире» пробелами не разделяются. После команды "— вставляется разбиваемый узкий пробел. Вставляемые пробелы нерастяжимы. Наконец, в классе псс предлагается такое решение задачи: Пусть $Х$ \— банахово пространство. Команда \— автоматически обрамляет тире растяжимыми узкими пробелами, причем пробел перед тире неразбиваемый, а после тире—разбиваемый. В классе псс есть также команда \===, которая по сравнению с командой \— запрещает разрыв после тире. Тире, начинающее прямую речь, отделяют от последующего слова нерастяжимым пробелом. Можно для этого использовать \enskip: ---\enskip Прямая речь. В русском стиле пакета babel эту фразу следует набирать так: Прямая речь. В классе псс —так: \— Прямая речь.
5.5. Кавычки, цитаты, многоточия Стандартные кавычки в ТЩХ’е соответствуют правилам английской полиграфии. Это одиночные (‘... ’) и двойные (“...”) кавычки. Первые набираются с помощью соответствующих одиночных кавычек, а вторые— с помощью тех же кавычек, написанных дважды. Примеры: ‘слово’ —> ‘слово’ ‘‘слово’’ —> “слово” Символ двойной кавычки " можно применять в качестве двойной правой кавычки, но только в документах, не использующих пакет babel7. В русском стиле пакета babel имеется возможность набора традиционных русских кавычек: „лапок“ и «елочек»: "‘слово"’ —> „слово“ "<слово"> —> «слово» По правилам полиграфии в документе должны использоваться кавычки одного рисунка. Исключение — кавычки внутри кавычек. Внутренние кавычки должны иметь другой рисунок. Не стоит смешивать кавычки, соответствующие разным полиграфическим правилам: в произведениях на английском языке следует использовать стандартные кавычки, а в документах на русском —„елочки“ и «лапки»8. Цитаты обычно заключают в кавычки. Однако это не обязательно, если цитата выделена иным образом (например, набрана курсивом или вынесена в отдельный абзац с помощью окружения quote). Кавычки ставят в начало и конец цитаты, вне зависимости от размера цитаты и числа абзацев в ней. Пропуски текста в цитате оформляют многоточием (командой \ldots или эквивалентной ей командой \dots), прижимая многоточие к одному из соседних слов. Исключение —многоточие после сокращения, заканчивающегося точкой. Его следует отделять от точки, завершающей сокращение, неразбиваемым пробелом ~. Например, Дисс. ... канд. физ.-мат. наук. Дисс.~\ldots{} канд. физ.-мат. наук. Фигурные скобки после команды \ldots предотвращают «съедание» пробела после многоточия. Можно эту фразу набирать и другими эквивалентными способами: 7Точнее, если символ " не активен. При заказе опции russian или german пакет babel активизирует этот символ. 8 В двуязычных журналах обычно используют кавычки одинакового рисунка вне зависимости от языка набора статьи. Например, в журнале СибЖВМ используют только стандартными кавычками.
Дисс.~\ldots\ канд. или Дисс.~{\ldots} канд. Многоточие перед словом цитаты означает пропуск слов в начале фразы, а многоточие после слова—пропуск слов в конце или в середине фразы. Вот варианты сокращения фразы Пушкина «А поэзия, прости господи, должна быть глуповата»: «А поэзия... должна быть глуповата», —писал Пушкин. «... Поэзия... должна быть глуповата», — писал поэт. Пушкин писал, что «... поэзия... должна быть глуповата». Если опущен фрагмент текста, состоящий из полных предложений, то такой пропуск оформляют многоточием, заключенным в угловые скобки. Набирать это многоточие надо в математической моде: $<\ldots>$ -> < ... > Примеры его использования: «Полная фраза. < ... > Полная фраза». «Незавершенная фраза... <...>... Начало фразы опущено». Если опущены абзацы цитируемого текста, то многоточие в угловых скобках оформляют в виде отдельного абзаца. 5.6. Логотипы, пробелы, пунктуация Логотипы TgX, JATgX, 1АТеХ2£ выводятся с помощью команд \ТеХ, \LaTeX и \LaTeXe соответственно. Эти команды не имеют параметров. Поскольку их имена буквенные, то TgX «съедает» пробелы после них (см. с. 34). Поэтому, чтобы отделить такую команду пробелом от следующего слова, необходимо либо указать пробел явно с помощью команды \и (символом «и» я обозначаю в этой книге пробел), либо предотвратить «съедание» пробела после имени команды, например, с помощью пустого блока {}. По виду конструкция \LaTeX{} напоминает команду с параметром и может вводить в заблуждение. Поэтому можно просто заключить всю команду в фигурные скобки: {\LaTeX}. Такое решение универсально, и его не спутаешь с командой с параметрами. Поскольку все перечисленные варианты эквивалентны, то выбор за Вами. В пакете amsmath есть еще логотип Aj^S, используемый американским математическим обществом. Он задается командой \ArnS.
Пробелы. В предыдущих пунктах этой главы Вы уже познакомились с тремя вариантами пробелов, используемых в ГМТвХ’е: это обычный межсловный пробел (набирается на клавиатуре с помощью клавиши «пробел»), неразбиваемый межсловный пробел ~ и узкий пробел \,. Отличие нераз-биваемого пробела от обычного состоит только в запрете разрыва строки в точке его употребления. При чтении файла ТцХ превращает несколько идущих подряд пробельных символов в тексте документа в один пробел (подробности см. в п. 2.1). Поэтому, чтобы вставить несколько пробелов между словами, можно воспользоваться командой \и или разрядить пробелы пустыми блоками, например, \и\и\и или uOuOu Это решение показано только в качестве иллюстрации работы TfjX’a с пробелами. Есть более удобные средства для вставки увеличенных пробелов в текст (см. с. 343), а именно, команды \enskip, \quad, \qquad. Растяжимость пробела — важная характеристика. При верстке абзацев желательно, чтобы все пробелы в тексте при необходимости растягивались или сжимались, поскольку выравнивание правого края абзаца выполняется изменением размера пробелов между словами. В lATf^X’e только межсловный пробел имеет растяжимость и сжимаемость, а остальные — нерастяжимы. В классе псс добавлены узкие растяжимые пробелы \-, и \=,. Еще одна характеристика пробела—возможность разбивки строки по нему. К неразбиваемым пробелам относятся ~,\!,\,,\:,\;и \enspace. В классе псс пробел \=, неразбиваемый. Наконец, важно, в каком месте документа можно использовать пробел: везде или только в математической моде. К математическим пробелам, т.е. используемым только в математической моде, относятся \!, \: и \;. В пакете amsmath математические пробелы переопределены так, что их можно использовать и вне математической моды. Пробелы после знаков пунктуации. TgX относит следующие символы к символам конца предложения: ? ! Если после такого символа идет пробел, то Т^Х увеличивает этот пробел9. Пробел также увеличивается, если между символом конца предложения 9 При оформлении библиографии вставка увеличенных пробелов после конца предложения отключена.
и пробелом идет закрывающая круглая скобка или любая закрывающая кавычка. Исключение из этих правил — прописная буква перед символом конца предложения. Этот случай Тр}Х не идентифицирует как завершение предложения. Если в тексте используются сокращения, например, i. е. или е. д., то Т^Х ошибочно посчитает завершающую сокращение точку концом предложения и увеличит пробел после нее. Чтобы отказаться от увеличения пробела, вставьте после точки межсловный пробел \и, например, е. \, g. \ы. И наоборот, чтобы принудительно объявить символ пунктуации после прописной буквы концом предложения, вставьте после прописной буквы команду \@. Все перечисленные ухищрения не нужны в режиме \frenchspacing, в котором пробелы после конца предложения не увеличиваются. Этот режим соответствует правилам российской полиграфии и автоматически устанавливается при переключении на русский язык средствами пакета babel. 5.7. Единицы измерения физических величин В основу совокупности единиц измерения физических величин положены единицы Международной системы единиц (СИ), а также десятичные кратные и дольные от них. Последние образуются добавлением приставки к названию и обозначению величины (табл. 5.1). Наряду с ними применяются относительные и логарифмические единицы (табл. 5.2), а также единицы, не входящие в СИ. Список физических величин, рекомендуемых к использованию, приведен в табл. 5.3. Таблица 5.1. Приставки единиц измерения Множитель При-ставка Обозначение Множитель При-ставка Обозначение русское международное русское международное 1018 экса э Е Ю"1 деци Д d 1015 пета п Р 10"2 санти с с ю12 тера т Т 1СГ3 милли м ш 109 гига г G 10-6 микро мк р 106 мега м М 10~9 нано н п 103 кило к к 10-12 ПИКО п р 102 гекто г h КГ15 фемто ф f 101 дека да da 10-1S атто а а
Таблица 5.2. Относительные и логарифмические единицы Наименование Обозначение Определение русское международное Процент Промилле Миллионная доля Бел* Децибел % %0 млн-1 Б дБ % %0 РРт В dB 1(Г2 10~3 10“6 Ig(p2/Pl) 21g(F2/F!) 0,1 Б В определении бела: Pi, Р2 — одноименные энергетические величины; Fi, F2 — одноименные силовые величины. Таблица 5.3. Используемые единицы измерения физических величин Наименование Обозначение Наименование Обозначение русское международное русское международное Ампер А А Люкс лк 1х Астроном, ед. а.е. и.а. Люмен лм 1m Беккерель Бк Bq Метр м m Вар вар var Минута мин min Ватт Вт W Моль моль mol Вебер Вб Wb Ньютон н N Вольт В V Ом Ом Q Гектар га ha Паскаль Па Pa Генри Гн H Радиан рад rad Герц Гц Hz Секунда с s Грамм г g Сименс См S Грей Гр Gy Стерадиан ср sr Джоуль Дж J Сутки сут d Зиверт Зв Sv Тесла Тл T Кандела кд cd Тонна Т t Кельвин К К Фарад Ф F Кулон Кл C Час ч h Литр Л L
Обозначения единиц измерения при наборе отделяют от числа нераз-биваемым пробелом ", а обозначения градусов Цельсия (°C) и Фаренгейта (°F) —узким неразбиваемым пробелом \, (или пробелом \=, в классе псс). Единицы измерения плоского угла в градусах, минутах и секундах не отделяет от числа. Обозначения величин в сложных единицах оформляют текущим текстовым шрифтом (вне математической моды!). Единицы измерения количества информации (бит, байт) не сокращают. Единица скорости передачи информации в 1 бод равна 1 бит/с. Примеры: 1 кг, 12 мкм, 3 кДж, 5 Ом, 1 kg, 12 pm, 3 kJ, 5 Q, 3 мин 20 с, 25 %, 3 %о, 273 К, -20 °C, 32 °F, 45°, 15°50'30", 35 Н • м2/кг, 35 N • m2/kg, 256 байт, 120 Гбайт, 56 кбод. 1~кг, 12~мкм, 3~кДж, 5~0м, l~kg, 12~\textmu m, 3~kJ, 5~\textohm, 3~мин 20~c, 25~\7,, 3~\textperthousand, 273~K, $-20\,~\circ$C, 32\,$Acirc$F, 45$~\circ$, $15~\circ 50’30’’$, 35~$\mbox{H}\cdot\mbox{M}~2/\mbox{Kr}$, 35~N${}\cdot{}$m$~2/$kg, 256“байт, 120~Гбайт, 56~кбод. Команды \textmu и \textohm определены в пакете textcomp. 5.8. Специальные символы и текстовые акценты В прил. Г на с. 344-347 приведены команды, производящие текстовые символы и акценты над ними. Небольшое число из них (см. с. 344) доступно как в тестовой, так и в математической моде. Остальные команды используются вне математической моды, причем часть из них имеется только в отдельных схемах кодировки. Если текстовый акцент ставится над буквой i или у, то вместо этих букв следует использовать их варианты без точки: команды \i и \j10. Например, символ Т был набран так: \"\i- Наряду с символами стандартных текстовых кодировок, в приложении приведены также текстовые символы и акценты кодировки TS1, подгружаемые пакетом textcomp по команде \usepackage{textcomp}. 5.9. Методы выделения текста Выделение используют для подчеркивания элементов текста с помощью специального оформления. В 1М?ЕХ’е обычно применяют шрифто 10Это правило необходимо соблюдать при акцентировании символов из шрифтов схемы кодировки Т2. В схемах Т1 и 0Т1 замена буквы i или j при акцентировании на ее вариант без точки выполняется автоматически.
вое выделение, когда выделяемый текст оформляется шрифтом иного начертания или гарнитуры. Например, команда \emph{(текст)} оформляет {текст) шрифтом курсивного или прямого начертания (см. п. 3.5, с. 61). Возможно также нешрифтовое выделение, при котором используется тот же шрифт, но применяются подчеркивание или разрядка. Воспользуйтесь для этого командами пакета soul: \зо{{текст)}, \и1{{текст)}, \st{{meKcm)}, \сарв{{текст)}. Пример: Используем выделение текста разрядкой, подчеркива-ние текста, перечеркивание текста. Мелкопрописное выделение. Используем \зо{выделение текста разрядкой}, \ul{подчеркивание текста}, \st{перечеркивание текста}. \сарз{Мелкопрописное выделение}.
Глава 6 Приемы верстки текста: выносные текстовые элементы 6.1. Управление форматированием абзаца Команды \linebreak[(число) ] \nolinebreak [ (число) ] управляют принудительной разбивкой абзаца на строки. Первая задает разрыв строки абзаца в месте употребления, а вторая предотвращает разрыв строки. Значение необязательного параметра задает степень жела-емости действия. Это целое число из диапазона 0-4. Значение 4 означает обязательное выполнение действия, а меньшие значения означают, что разрыв или запрет разрыва желательны, но не обязательны. Причем, чем меньше число, тем меньше степень желаемости этого действия. Если необязательный параметр отсутствует, то действует режим 4. Другими словами \linebreak без параметра означает принудительную разбивку строки, а \nolinebreak без параметра—запрет разрыва строки. В обычном режиме форматирования при разрыве строки с помощью команды \linebreak выполняется растяжка строки по ширине абзаца. При этом может возникнуть недозаполнение строки (см. с. 49). Необязательный параметр у этих команд ничего, кроме лишних хлопот, не приносит. Из-за него может возникнуть ошибка ! Missing number, treated as zero. <to be read again> d 1.24 ...\linebreak [data] если после команды Minebreak следует что-нибудь в квадратных скобках, отличное от числа. Чтобы избавиться от этой ошибки, поставьте пустой блок {} после данной команды. Команды \linebreak и \nolinebreak хрупкие.
Изредка возникает необходимость жесткой разбивки строки без растяжки ее содержимого по горизонтали. Это делается командами \newline \\ [(расстояние)] \\* [(расстояние)] Команда \newline выполняет переход на новую строку, оставляя предыдущую строку недозаполненной, \\ действует аналогично, но вставляет (расстояние) между строками, которое может быть и отрицательным, а \\* дополнительно запрещает разрыв страницы в точке применения. Команда \newline применяется только внутри абзаца, а \\ используется более широко (например, в таблицах и многострочных формулах). 6.2. Выносные текстовые элементы Выносные текстовые элементы служат для выделения фрагмента текста специальным оформлением. Например, центрированием, в виде абзаца более узкого формата, в виде списка и др. Все выносные текстовые элементы оформляются как окружения и имеют общие черты: • выносной текстовый элемент отделяется от предыдущего и последующего абзацев вертикальным промежутком; • если перед выносным текстовым элементом идет пустая строка, то размеры вертикальных промежутков увеличиваются; • если после выносного текстового элемента идет пустая строка, то следующий за ней абзац начинается с абзацного отступа; иначе абзацный отступ у него подавляется. Описываемые далее выносные текстовые элементы могут быть вложены друг в друга, но разрешается использовать не более 6 уровней вложенности. Уровень вложенности влияет на внешнее оформление, в частности, на величину вертикальных промежутков вокруг выносного элемента, расстояния между его внутренними абзацами и некоторые другие расстояния. 6.3. Влево, вправо, по центру Окружения \begin{center} (абзацы) \end{center} \begin{flushleft} (абзацы) \end{flushleft} \begin{flushright} (абзацы) \end{flushright}
оформляют содержащиеся в них абзацы как выносные текстовые элементы в специальном режиме форматирования: окружение center центрирует каждую строку при выводе, a flushleft и flushright прижимают строки соответственно влево и вправо. По сравнению с декларациями форматирования из п. 2.14 на с. 51, эти окружения отделяют специально оформляемые абзацы дополнительными вертикальными промежутками, а в остальном между ними есть полное соответствие: Окружение Декларация center \centering flushleft \raggedright flushright \raggedleft Абзацный отступ в начале каждого абзаца подавляется. Переносы слов отключены. Разбивка абзацев на строки выполняется автоматически или с помощью команд из п. 6.1. Для изменения режима форматирования конкретных строк абзацев можно воспользоваться командами \hfill и \hspace*{\f ill}, а также командами из п. 2.14. Примеры: Выводим текст в режиме центрирования, причем разбивка на строки выполняется автоматически до этого места. Это последняя строка. Этот текст прижимается вправо с автоматической разбивкой на строки. А эта строка центрируется. Весь этот текст прижимается влево. А часть этой строки — вправо. Здесь все прижато вправо. \begin{center} Выводим текст в режиме центрирования, причем разбивка на строки выполняется автоматически до этого места. \\ Это последняя строка. \end{center} \begin{flushright} Этот текст прижимается вправо с автоматической разбивкой на строки.\\ \centering А эта строка центрируется. \end{flushright} \begin{flushleft} Весь этот текст прижимается влево.\\ А часть этой строки ---\hfill вправо.\\ \hspace*{\fill} Здесь все прижато вправо. \end{flushleft} 6.4. Цитаты и стихи 1. С помощью окружений \begin{quote} (абзацы) \end{quote} \begin{quotation} (абзацы) \end{quotation}
оформляют выносные текстовые элементы с отступами от левой и правой границ текстовой области на определенное расстояние. Различаются эти окружения значениями \parindent и \parskip: окружение quote форматирует абзацы с нулевым абзацным отступом (\parindent = 0), но с ненулевым расстоянием между абзацами (\parskip > 0), а окружение quotation, наоборот, задает ненулевой абзацный отступ при нулевом расстоянии между абзацами. Примеры: Это текст, идущий перед цитатой. \begin{quote} Это первый абзац цитаты. \раг А это второй абзац. \end{quote} \begin{quotation} Это первый абзац цитаты. \раг А это второй абзац. \end{quotation} \end{verse} Это текст, идущий перед цитатой. Это первый абзац цитаты. А это второй абзац. Это первый абзац цитаты. А это второй абзац. 2. Окружение \begin{verse} (абзацы) служит для оформления стихов. Так же как и в предыдущих случаях, стихи выделяются отступами от левой и правой границ текстового поля. Строки стиха отделяются друг от друга командой \\ или \\* (с запретом разрыва страницы), а строфы—пустой строкой или командой \раг. Если строка стиха не вместилась в одну строку, то ее продолжение будет напечатано с новой строки с дополнительным отступом от левого края. 6.5. Дословное воспроизведение текста 1. Иногда возникает необходимость вывода текста в том виде, в котором он написан (например, при распечатке программ). Для этого служит выносной текстовый элемент \begin{verbatim} (текст) \end{verbatim} Внутри него могут встречаться любые символы, в том числе и специальные, которые на время обработки этого окружения интерпретируются как обычные текстовые символы. Подряд идущие пробелы не «съедаются». Разбивка текста на строки идентична той, которую Вы используете в файле документа. Вывод текста выполняется моноширинным шрифтом гарнитуры \ttfamily. Завершение этого окружения распознается по тексту \end{verbatim}, причем между \end и {verbatim} не должно быть пробелов. Пример:
Этот текст содержит любые символы, в том числе и служебные: \, ", $ и т.\,д. \begin{verbatim} Этот текст содержит Пробелы в нем не игнорируются. любые символы, в том числе и служебные: \, ", $ и т.\,д Пробелы в нем не игнорируются. \end{verbatim} 2. Окружение \begin{verbatim*} (текст) \end{verbatim*} работает аналогично предыдущему, только вместо каждого пробела в тексте печатает символ и. 3. Иногда требуется вывести дословно некоторый текст не в виде выносного текстового элемента, а внутри строки. Для этого служат команды \verb (символ) (текст) (символ) \verb* (символ) (текст) (символ) где указанный (символ), не содержится в (тексте) параметра. Звездочка-форма команды печатает пробелы в виде и. В качестве (символа) нельзя использовать пробел и звездочку. Учтите, что параметр этой команды должен полностью располагаться в одной строке с командой \verb, вместе с ограничивающими символами. Пример: Команда \linebreak напечатана с Команда \verb+\linebreak+ напечатана помощью команды \verb. с помощью команды \verb | \verb | . Строка х$ии$и. Строка \verb*+x$ $ +. Окружения verbatim, verbatim*, команду \verb и ее *-форму нельзя использовать в параметрах команд. Однако внутри окружений их применение допускается. 4. Стандартный пакет alltt предоставляет окружение \begin{alltt} (текст) \end{alltt} работающее почти как verbatim, но не изменяющее категорию символов \, {, }. Поэтому внутри этого окружения можно использовать команды.
5. Метод обработки текста в окружении verbatim не позволяет обрабатывать тексты слишком большого размера. Ограничения на размеры дословно воспроизводимого текста можно снять, если воспользоваться пакетом verbatim из коллекции tools. Он переопределяет окружения verbatim и verbatim* и позволяет печатать тексты неограниченного размера. Кроме того, между командой \end и ее параметром {verbatim} могут идти пробелы. Но после этого параметра в строке не должно быть непробельных символов (иначе они проигнорируются). Пакет verbatim предоставляет также команды \verbatiminput{(uALfl файла}} \verbatiminput*{(uALfl файла}} печатающие содержимое указанного файла в дословном режиме (*-форма как обычно печатает пробелы в виде и). Пакет также определяет окружение \begin{comment} {текст} \end{comment} игнорирующее содержащийся в нем {текст}. 6.6. Правила оформления списков Списки (в полиграфии — перечни} используются для перечисления однородных элементов текста. Различают внутриабзацный и выносной списки. Внутриабзацный список применяют, если его элементы состоят из одного или нескольких слов, из простых предложений, или использование внутриабзацных списков продиктовано требованиями компактности издания. В остальных случаях используют выносной список. Предложение, идущее перед списком, надо заканчивать двоеточием, либо точкой. Двоеточие употребляют, если в предшествующем тексте содержится слово или словосочетание, указывающее на то, что дальше идет список, или список служит прямым разъяснением предшествующей фразы, или список непосредственно продолжает текст (см. [11]). В остальных случаях предшествующее предложение завершают точкой. Элементы списка маркируют арабской, римской или буквенной нумерацией, если есть необходимость в их перечислении в определенном порядке или если автор ссылается на отдельные пункты списка. В противном случае элементы списка маркируют одинаковым символом или не маркируют вовсе (только для внутриабзацного списка). Маркер элемента внутриабзацного списка надо отделять от следующего за ним текста неразрываемым пробелом ~.
Элементы внутриабзацных списков разделяют точкой с запятой или, в простых списках, —запятой. В выносных списках для разделения простых элементов используют точку с запятой, а для разделения элементов, составленных из нескольких предложений, — точку. В сложных многоступенчатых списках используют точку для разделения элементов верхних ступеней. Первое слово элемента списка начинается с прописной буквы, если маркер элемента заканчивается точкой или если элемент сложен по структуре, содержит несколько предложений. Все элементы одного списка должны начинаться единообразно: все с прописной или все со строчной буквы. 6.7. Как устроены выносные списки? В п. 4.6 уже был описан один из таких списков — библиографический. Как видно из его оформления, список состоит из элементов, каждый из которых предваряется некоторым маркером. Например, при оформлении библиографии элементом является описание ссылки, а маркером—ее порядковый номер, заключенный в квадратные скобки. Все окружения, используемые для создания списков, оформляются следующим образом1: \begin{(mtm списка)}(параметры) \itеш[(маркер)~\ (текст элемента) \1Ъет[(маркер)~\ (текст элемента) \end{(mun списка)} Если параметр у команды \item отсутствует, то выполняется стандартное оформление маркера элемента, зависящее от типа списка. Пустые строки между элементами списка не влияют на форматирование списка. Элемент списка может состоять из нескольких абзацев. Они отделяются друг от друга вертикальным промежутком величины \parsep. Расстояние между соседними элементами списка равно сумме величин \parsep и \itemsep. В стандартных классах JAT^X’a расстояние между элементами списка получается слишком большим. Уменьшить его до приемлемого размера можно командой \setlength\itemsep{Omm}, помещаемой внутрь списка после его начала. 1Все списки основаны на окружении list, описание которого в книге не приводится. Я считаю, что стандартных средств оформления списков, дополненных окружением desclist, вполне достаточно для создания самых разнообразных списков. Вы также не найдете здесь описания окружения trivlist.
Внутри списка можно применять декларацию \raggedright для вь вода элементов списка без переносов и горизонтальной растяжки. 6.8. Стандартные списки 1. Окружение itemize используется для оформления списка элементов одинаковым маркером. Маркер задается дополнительным параметром кс манды \item, а если этот параметр отсутствует, то выводится стандартны маркер, оформляемый командой \labelitem..., вид которого зависит о уровня вложенности списка этого типа: Уровень 12 3 4 Команда \labelitemi \labelitemii \labelitemiii \labelitemiv Маркер • — * Можно использовать не более 4-х уровней вложенности таких списков. Пример: Это список типа itemize: Это список типа itemize: „ \begin{itemize} • это первый элемент списка, . . \item это первый элемент списка, состоящий из двух строк: состоящий из двух строк; • это второй его элемент. \item это второй его элемент. \end{itemize} 2. Окружение enumerate применяется для оформления списка нумере ванных элементов. С ним связан счетчик, имя которого зависит от уровн. вложенности окружения данного типа, а значение этого счетчика исполь зуется при оформлении маркеров элементов списка в том случае, есл команда \item задается без дополнительного параметра. Первоначально значение счетчика равно нулю, а при каждом обращении к команде \ite без параметра оно увеличивается на единицу и затем применяется пр оформлении маркера элемента. Имя счетчика, команда \labelenum... для его печати и внешний ви, печатаемого номера, зависят от уровня вложенности списка этого типа: Уровень 12 3 4 Счетчик enumi enumii enumiii enumiv Команда \labelenumi \labelenumii \labelenumiii \labelenumii Первый маркер 1. (a) i. А. Можно использовать не более 4-х уровней вложенности таких списков.
Пример: Это список типа enumerate: Это список типа enumerate: . ~ v \begin{enumerate} 1. Это первый элемент списка, . . Л \item Это первый элемент списка, состоящий из двух строк; состоящий из двух строк; 2. Это второй его элемент. \item Это второй его элемент. \end{enumerate} После команды \item без параметра можно ставить метку (см. с. 40). Если Вы используете вложенные списки данного типа, то значение метки будет составным. Например, метка, поставленная в подпункте 3 пункта 1 вложенного нумерованного списка, будет такой: 1с. Здесь единица означает ссылку на первый элемент внешнего списка, ас — ссылку на третий элемент вложенного в него списка. 3. Пакет enumerate из коллекции tools существенно расширяет возможности оформления маркеров нумерованных списков. Правила оформления маркера задаются в необязательном параметре вызова окружения enumerate: \begin{enumerate} [{прототип)] {элементы) \end{enumerate} В [прототипе) можно указывать любые символы, а также один из специальных символов A, a, I, i, 1, определяющий нумерацию списка: А/а—прописную/строчную буквенную, I/i — прописную/строчную римскую, 1 — арабскую. Чтобы задать в прототипе простую букву, совпадающую со специальным символом, заключите ее в фигурные скобки. Например, параметр [{А}1.] задает последовательность маркеров «А1.», «А2.» и т.д. 4. Окружение description предназначено для оформления списка, маркеры которого явно задаются пользователем в дополнительном параметре команды \item. Его оформление несколько отличается от предыдущих списков: • маркер элемента выводится шрифтом \bfseries и прижимается к левому краю страницы; • остальные строки текста элемента выводятся с отступом от левого края.
Пример: Это список типа description: первый — это первый элемент списка; второй — это второй его элемент. Это список типа description: \begin{description} \item[первый----] это первый элемент списка; \item[второй----] это второй его элемент. \end{description} 6.9. Список desclist В пакете desclist2 из коллекции ncctools вводится окружение \begin{desclist}{{префикс)}{{суффикс}} [{прототип}] {элементы) \end{desclist} расширяющее возможности оформления списков типа description. Содержимое параметров {префикс} и {суффикс} добавляется в начало и в конец каждого маркера списка следующим образом: (префикс) {маркер} {{суффикс)} Дополнительный параметр {прототип) задает прототип маркера, используемый для вычисления величины левого отступа в элементах списка. Если этот параметр отсутствует, то элементы списка оформляются со стандартным отступом от левого края. Пакет также переопределяет окружение description на основе окружения desclist: \begin{description} = \begin{desclist}{\bfseries}{} В результате в окружении description появляется возможность использования дополнительного параметра для выравнивания. Пример: Это список типа description: Это список типа description: о „ \begin{description}[первый ] первый — это первый элемент . . г „ f, .... \item[первый \hfill---J это первый списка; элемент списка; второй это второй его элемент; \item[второй \hf ill ] это второй третий — это третий элемент. его элемент; \item[третий \hfill---] это третий элемент. \end{description} 2В классе псс этот пакет подгружается автоматически.
Такого же результата можно добиться несколько проще с помощью окружения desclist: Это список типа description: \begin{desclist}{\bfseries}{ \hfill }[первый] \item[первый] это первый элемент списка; \item[второй] это второй его элемент; \item[третий] это третий элемент. \end{desclist} Возможности использования окружения desclist разнообразны. Например, можно легко организовать список, подобный по оформлению библиографическому: \begin{desclist}{\hfill[}{]}[99] \item[l] Библиографическая ссылка \end{desclist} Используя \hfill в префиксе и суффиксе маркера, можно центрировать маркер и т. д. 6.10. Табулированный текст С помощью окружения tabbing можно вывести некоторый текст с размещением его порций по позициям табуляции (можно устанавливать до пятнадцати таких позиций в строке). Обычно это окружение используется при оформлении списков команд, текстов программ и т.п. Средства, предоставляемые данным окружением, довольно разнообразны и, вообще говоря, не просты в использовании. Поэтому я буду вести его описание от простых примеров к сложным, по мере необходимости вводя все новые элементы. 1. Вызов этого окружения выполняется так: \begin{tabbing} {текст) \end{tabbing} В {тексте) Вы должны сами указывать, где завершается каждая строка. Это делается командой \\ или \\* (с запретом переноса на новую страницу). Как обычно после этих команд в квадратных скобках может указываться дополнительное расстояние, вставляемое между строками. Не заканчивайте последнюю строку текста командой \\. Содержимое каждой текстовой строки состоит из порций текста {полей) и команд управления табуляцией. Каждое поле является блоком, т.е.
все декларации действуют только в пределах того поля, в котором употреблены. Все пробелы в начале любого поля игнорируются. Первоначально задана только нулевая позиция табуляции, которая установлена на начало текстовой строки. Чтобы разместить текст по другим позициям табуляции надо, естественно, сначала задать их. Для этого после очередного поля поставьте команду \=, которая запоминает текущую текстовую позицию в очередном регистре табуляции и переходит к обработке следующего поля текстовой строки3. После установки позиций табуляции Вы можете их использовать в последующих текстовых строках с помощью команды \>, выполняющей позиционирование на очередную по счету позицию табуляции. Пример: if(i!=0) j += 5; \begin{tabbing} else j = 25; if(i!=0) \= j += 5;\\ else \> j =25; \end{tabbing} Итак, в простейших случаях текстовая строка имеет вид: {Поле 0) ТВ1 {Поле 1) ТВ2 . . . {Поле N) \\ Здесь символами TBi обозначены команды перехода к г-й позиции табуляции \= или \>, первая из которых устанавливает значение г-го регистра табуляции по текущей позиции в строке и переходит к оформлению г-го поля, а вторая — выполняет табуляцию в позицию, вычисленную ранее в г-м регистре. Пример: Если идет дождь, то надень галоши и возьми зонтик, иначе улыбнись и выходи на улицу. \begin{tabbing} Если \= идет дождь,\\ \> то \= надень галоши\\ \> \> и возьми зонтик,\\ \> иначе улыбнись\\ и выходи на улицу. \end{tabbing} 2. Иногда возникает необходимость в настройке регистров табуляции по одной из строк, идущих не в начале оформляемого текста, а где-нибудь в его середине. Например, при оформлении списка из двух полей первую 3В окружении tabbing изменен смысл команд \=, и \- (вне этого окружения первые три используются для акцентирования символов, а последняя — для указания мест возможного переноса в словах). Если Вы хотите внутри tabbing поставить акцент над буквой, то вместо первых трех команд применяйте соответственно \а=, \а’ и \а‘. Внутри tabbing можно использовать обычные и пар-боксы. При этом в пар-боксах команды \=, V, V опять будут задавать акценты, а \—места возможного переноса.
позицию табуляции хотелось бы установить с помощью строки, в которой начальное поле наиболее широкое. Для этого скопируйте нужную строку в начало окружения tabbing, установите с ее помощью регистры табуляции и завершите строку командой \kill, означающей, что строка не будет помещена в текст документа, а используется лишь для настройки регистров табуляции. Пример: Мама мыла раму \begin{tabbing} Абракадабра Амбар Баркас Абракадабра\диа<1\= AM6ap\quad\= \kill Мама \> мыла \> раму \\ Абракадабра \> Амбар \> Баркас \end{tabbing} 3. Позиции табуляции можно переустановить в любой момент. Пример: Длинное поле 1 Длинное поле 2 Поле 3 Поле 1 Поле 2 Новое поле 1 Новое поле 2 Поле 3 Поле 1 Поле 2 Поле 3 Его оформление: \begin{tabbing} Длинное поле 1 \= Длинное поле 2 \= Поле з\\ Поле 1 \> Поле 2 \\ Новое поле 1 \= Новое поле 2 \> Поле 3 \\ Поле 1 \> Поле 2 \> Поле 3 \end{tabbing} 4. Иногда внутри окружения tabbing может идти большая группа строк, у которых одно или несколько начальных полей пусты. Чтобы не набирать в каждой из таких строк команды \>, поставьте в предшествующей этой группе строке команду \+. Эта команда увеличивает на единицу номер регистра табуляции, с которого будет начинаться оформление всех последующих строк текста. Другими словами, любая последующая команда \\ будет выполнять первоначальную табуляцию не по нулевому, а по первому регистру. Употребив п таких команд, Вы тем самым увеличите номер начального регистра табуляции на п, т.е. оформление последующих строк текста будет начинаться с позиции, установленной в регистре номер п. Обратное действие по уменьшению на единицу номера начального регистра табуляции выполняется командой \-. Команды \+ и \- не завершают поле, а только изменяют счетчик начального регистра табуляции.
Если Вы с помощью команды \+ сдвинули номер начальной позиции табуляции и в то же время в некоторой из последующих строк хотите вывести текст с одной из предыдущих позиций табуляции, но не желаете для этого сдвигать начальную позицию командой \-, то выполните локальный сдвиг к предыдущим позициям табуляции командой \<, употребив ее один или несколько раз в начале строки. 5. Команда \ ’, употребленная внутри порции текста, приводит к тому, что текст, идущий после нее, будет размещен с текущей позиции табуляции, а текст, идущий до нее, разместится перед этой позицией и будет отделен расстоянием, задаваемым переменной \tabbingsep, значение которой Вы можете изменить в любом месте документа, но не внутри tabbing. Пример: Порция 0 Порция 1 ххх Порция 1 \begin{tabbing} Порция 0 \= Порция 1\\ \> ххх\’ Порция 1 \end{tabbingl 6. Команда V выполняет сдвиг следующей за ней порции текста к правому краю строки. Эта порция текста должна быть последней в строке, т. е. после нее не должно быть других команд табуляции. Если провести аналогию с обычным текстом, то эта команда действует как \hf ill. 7. С помощью команды \pushtabs Вы можете запомнить текущие значения регистров табуляции для того, чтобы временно изменить их, а потом восстановить командой \poptabs. Отмечу, что пары команд запоминания и восстановления могут быть вложены в другие такие же пары, но они обязательно должны быть согласованы по количеству. Вот пример, в котором использованы все перечисленные возможности: Поле 1 Поле 2 Амбар Поле 3 Баркас Крабы сушеные как улитки. Новые позиции табуляции установлены временно. вкусны почти Старые Текст левее Поле 1 позиции поля 2 Поле 2 восстановлены. Текст прижат вправо.
Его оформление: \begin{tabbing} \hspace{30mm}\= \hspace{30mm}\= \kill Поле 1 \> Поле 2 \> Поле 3\+ \\ Амбар \> Баркас \\ \< Крабы \> сушеные \> вкусны \\ \> почти \- \\ как \> улитки. \\ \pushtabs Новые \= установлены \= \kill Новые \> позиции \> табуляции\\ \> установлены \> временно.\\ \poptabs Старые \> позиции \> восстановлены.\\ \> Текст левее\’ поля 2 \\ Поле 1 \> Поле 2 V Текст прижат вправо. \end{ tabbing}
Глава 7 Приемы верстки текста: подробности 7.1. Горизонтальные боксы Среди описываемых далее команд создания простых боксов к крепким относятся только команды \mbox, \fbox, \sbox и \usebox, а остальные — хрупкие. 1. Команда \mbox{ {текст}} заключает содержащийся в ее параметре {текст} в горизонтальный бокс и тем самым запрещает его разбивку на строки. Данная команда применяется также и для других целей. Например, если ее параметр пуст, то будет создан бокс нулевой ширины, который можно интерпретировать как невидимый символ. 2. Расширенный вариант предыдущей команды задает команда \makebox [{ширина}] [{позиция}] {{текст}} размещающая текст в боксе требуемой {ширины}. Параметр {позиция} определяет способ размещения этого текста внутри бокса и должен состоять из одиночного символа: 1 — текст прижимается влево; с — текст центрируется; г — текст прижимается вправо; s — текст растягивается по ширине бокса. В режиме s текст растягивается только в местах возможного растяжения, т. е. по пробелам между словами и по другим пробелам, имеющих растяжимость. Если второй дополнительный параметр не задан, то текст будет центрироваться. Если оба дополнительных параметра отсутствуют, то команда работает аналогично команде \mbox. Примеры:
А текст А А текст А А текст А А текст текст А А \makebox [25mm] [с] {текст} А\\ А \makebox[25mm][1]{текст} А\\ А \makebox[25mm][г]{текст} А\\ А \makebox[25mm][s]{текст текст} А Ширина бокса может быть меньше ширины содержащегося в нем текста. При этом в зависимости от режима размещения либо правая (в режиме 1), либо левая (в режиме г), либо левая и правая части текста (при центрировании) будут выходить за пределы бокса и накладываться на предыдущий или последующий текст. Это можно использовать, например, чтобы выдать некоторый текст с наложением, задав нулевую ширину бокса. 3. Команды \fbox{(me?ccm)} \framebox [(ширина)] [(позиция)] {(текст)} работают аналогично предыдущим, но дополнительно заключают бокс в рамку толщины \fboxrule, рисуемую с отступами от содержимого бокса на расстоянии \fboxsep. По умолчанию \fboxrule = 0.4pt, \fboxsep = 3pt. Примеры: Текст в простой рамке Длин ^ь/й/текст Большая | рамка Текст в \fbox{npocTOH рамке}\\ \framebox [10mm] [1] {Длинный текст}/ / /\\ Большая \framebox [30mm] {рамка} В параметре (ширина) команд \makebox и \framebox (а также команды \savebox, о которой будет говориться немного позже) можно использовать специальные макросы, значения которых равны соответствующим натуральным размерам бокса \шЪох{(текст)} (см. п. 2.15, с. 52): \width — ширина (текста)] \height — высота (текста)] \depth — глубина (текста)] \totalheight — полная высота (текста) (высота + глубина). Примеры: текст / \makebox[1.5\width][s]{\stretchwith{\hfИ}{текст}}\\ \framebox{\makebox[\totalheight] {\itshape f\/}} Здесь использовалась команда \stretchwith пакета nccstretch из коллекции ncctools, вставляющая бесконечно растяжимое расстояние \hf il между буквами слова текст.
В параметре (ширина) можно задавать арифметические выражения, если загрузить пакет calc (см. прил. Б.З, с. 283). 4. С помощью команды \raisebox{(ewcoma подъема)} [(высота)! [(глубина)! {(текст)} можно сдвинуть некоторый текст вверх по вертикали на высоту, задаваемую параметром (высота подъема). При отрицательном значении этого параметра текст будет сдвинут вниз. Пример: Сдвиг вве₽х и вниз Сдвиг \raisebox{.75ex}{BBepx} и \raisebox{-.6ех}{вниз} При вертикальном сдвиге текста изменяется глубина и высота (см. п. 2.15) получающегося бокса. Например, при сдвиге вверх высота бокса увеличивается на величину подъема, а глубина, соответственно, уменьшается. При сдвиге вниз, наоборот, увеличивается глубина и уменьшается высота. Если в результате сдвига высота или глубина бокса стала отрицательной, то она обнуляется. Дополнительные параметры команды используются для изменения высоты и глубины получающегося бокса: задавая их большими, Вы тем самым отодвинете предыдущую или следующую строки в абзаце, а задавая их малыми, Вы сможете обеспечить вертикальное наложение текста на предыдущую или следующую строку абзаца. 5. Иногда в таблицах или чертежах требуется разместить некоторый текст в виде столбца. Это выполняется с помощью команды \shortstack [(позиция)! {(текст)} в основном параметре которой задается текст, строки которого следует отделять друг от друга командой \\ или \\[(величина)! Последняя изменяет расстояние между строками на заданную (величину). Команда размещает строки текста в боксе в виде столбца и выравнивает базовую линию последней строки этого бокса по базовой линии окружающего текста. Каждая строка этого бокса является блоком. Горизонтальным выравниванием строк в столбце управляет дополнительный параметр (позиция): 1 — строки прижимаются влево; с — строки центрируются; г — строки прижимаются вправо.
Если дополнительный параметр не задан, то строки будут центрироваться. Пример: п и ттт Столбец у вертикально Два Два Два А слова Б слова В слова Г Столбец \shortstack{n\\H\\m\\y} вертикально\\ A \shortstack[1]{Два\\слова} Б \shortstack{flBa\\cHOBa} В \shortstack[r]{Два\\слова} Г Между строками столбца \ short st ack пропускается расстояние в 3pt. 6. Если некоторый фрагмент текста используется часто, то, чтобы исключить многократную трансляцию этого фрагмента, Вы можете сохранить его в боксе, а затем подставлять уже готовый бокс в соответствующие места документа. Сначала с помощью команды \newsavebox{(woea^ команда)} создайте новую команду для хранения в ней бокса. Затем сохраните бокс в этой команде одним из трех способов: \зЪох{(команда)}{ (текст)} \$ачеЪох{(команда)} [(ширина)] [(позиция)] {(текст)} \begin{lxbox} {(команда)} (текст) \end{lrbox} Первая команда—это сокращенная форма второй с отсутствующими дополнительными параметрами. Команды \sbox и \savebox работают подобно командам \mbox и \makebox, только вместо вывода бокса в текст документа заносят результат в бокс, задаваемый параметром (команда). Окружение Irbox работает аналогично команде \sbox, но может применяться более широко. Например, внутри окружения Irbox можно использовать команду \verb и окружение verbatim, в то время как для других боксов это невозможно. Пример использования окружения Irbox будет дан в следующем пункте. Наконец, чтобы поместить содержимое этого бокса в текст документа, воспользуйтесь в документе командой \usebox{ (команда)} Пример: \newsavebox\mybox „ \savebox\mybox[15mm]{\tt бокс} Пишем бокс еще бокс все. „ . , , п Пишем \usebox{\mybox} еще \usebox{\mybox} все.
7.2. Вертикальные боксы Содержимое рассматриваемых далее вертикальных боксов оформляются в виде абзаца заданной ширины. Переменные \parindent и \parskip внутри таких боксов равны нулю. 1. Вертикальные боксы можно оформлять командой \parbox [(поз.)] [{высота}] [{внутр, поз.}] {{ширина}}{{текст}} или окружением \begin{minipage} [(поз.)] [{высота}] [{внутр, поз.}] {{ширина}} {текст} \end{minipage} Первый вариант, называемый nap-боксом, в основном используется при оформлении бокса, содержащего один или несколько простых абзацев текста, а второй, называемый мини-страницей, — в более сложных случаях. Различия между этими боксами проявляются в следующем: • Если содержимое мини-страницы начинается или заканчивается выносным текстовым элементом, то вертикальный промежуток до или после текстового элемента удаляется. В пар-боксе вертикальные промежутки не удаляются. • Мини-страница может содержать внутренние сноски, а пар-бокс нет. Команды оформления пар-боксов и мини-страниц хрупкие. Параметр {позиция} задает способ вертикального выравнивания бокса относительно остального текста и должен состоять из одиночного символа: t — базовая линия первой строки бокса выравнивается с базовой линией окружающего текста; с — бокс вертикально центрируется относительно математической линии; b — базовая линия последней строки бокса выравнивается с базовой линией окружающего текста. Если этот параметр отсутствует, то подразумевается с. Параметр {высота} задает требуемую полную высоту бокса. В нем можно использовать макросы \ width, \height, \depth и \totalheight, равные соответствующим натуральным размерам формируемого вертикального бокса. Если этот параметр отсутствует, то подразумеваемая высота бокса равна \totalheight.
Параметр (внутренняя позиция) определяет позиционирование содержимого внутри вертикального бокса. Если этот параметр отсутствует, то считается, что он совпадает с параметром (позиция). Наряду со значениями t, с, Ь, внутренняя позиция может принимать еще значение s, означающее растягивание бокса по вертикали до заданной (высоты). Наконец, единственный обязательный параметр (ширина) определяет ширину создаваемого бокса. Пример: верх „ верх Базовая_____верх______линия______ ______идет низ ____________здесь. низ Его оформление: Ba30Bas\hrulefill \parbox[t]{8mm}{\itshape Bepx\\HH3}\hrulefill nHHHs\hrulefill \parbox[c]{8mm}{\itshape Bepx\\HH3}\hrulefill wAhrulef ill \parbox[b]{8mm}{\it shape Bepx\\HH3}\hrulef ill здесь. 2. С помощью окружений Irbox и minipage можно легко сделать новое окружение, выводящее мини-страницу в рамке и имеющее тот же синтаксис, что и minipage. Это делается так: \newsavebox{\fmbox} \newenvironment{fmpage} {\begin{lrbox}{\fmbox}\begin{minipage}} {\end{minipage}\end{lrbox}\fbox{\usebox{\fmbox}}} Вот пример использования этого окружения, демонстрирующий возможности мини-страниц: Его оформление: Ba3OBas\hrulef ill \begin{f mpage} [t] [1.5\totalheight] [c]{8mm}\itshape Bepx\\HH3\end{fmpage}\hrulefill линия\Ьги1е:£ill \begin{f mpage} [c] [1.5\totalheight] [s] {8mm}\it shape верх\раг \vfill HH3\end{fmpage}\hrulefill nfleT\hrulefill \begin{f mpage} [b] [1.5\totalheight] [b] {8mm} \ it shape Bepx\\HH3\end{fmpage}\hrulefill здесь.
3. Если Вы хотите, чтобы текст центрировался внутри оформляемого бокса, либо был прижат влево или вправо, то воспользуйтесь соответственно декларациями специального форматирования \centering, \raggedright и \raggedleft, поставив их перед текстом. Пример: верх верх верх низ___________________________ низ низ Его оформление: \mbox{}\hrulefill \parbox[t]{10nim}{\raggedright\itshape Bepx\\HH3>\hrulefill \parbox{10mm}{\centering\itshape Bepx\\HH3}\hrulefill \parbox[b]{10mm}{\raggedleft\itshape Bepx\\HH3}\hrulefill \mbox{} 4. Ширина создаваемого вертикального бокса не всегда совпадает с той, которая задана в его параметре. Может получиться, что реальная ширина бокса окажется меньше. Это возможно в двух случаях: если бокс содержит только ненумерованную выносную формулу или только окружение tabbing. В обоих случаях реальная ширина бокса может уменьшиться до реальной ширины его содержимого, если последняя меньше. 7.3. Линейки и подпорки Команда \rule [(высота подъема)] {(ширина)}{(высота)} рисует линейку (черный прямоугольник) заданной (ширины) и (высоты), смещенную от базовой линии по вертикали на (высоту подъема). При отрицательном значении последней, нижний край будет опущен ниже базовой линии на соответствующее расстояние. Пример: Прямоугольник 1: I Прямоугольник 1: \rule{l. Прямоугольник 2: ““ Прямоугольник 2: \rule [lex] Эта команда хрупкая. Если ширину или высоту прямоугольника задать равной нулю (0mm, Opt и т.п.), то получается невидимая линейка, которая однако занимает место и учитывается при форматировании как обычный, видимый символ. Невидимая линейка нулевой ширины называется подпоркой. ТцХ при форматировании абзаца в конце каждой строки автоматически добавляет подпорку \strut, размеры которой зависят от интерлиньяжа. Эта подпорка как раз и обеспечивает одинаковые расстояния между
базовыми линиями соседних строк текста. При верстке вертикальных боксов (пар-боксов и мини-страниц) подпорка вставляется во все строки, кроме первой и последней. Поэтому если необходимо подстыковать вертикальный бокс и соседствующий с ним абзац так, чтобы соблюдался правильный интерлиньяж, добавьте подпорку \strut в начало и конец вертикального бокса. 7.4. Дополнительные боксы в макросе Л/^С Пакет nccboxes1 из коллекции ncctools определяет несколько новых боксов. 1. Команда \addbox{(приращение 1)} {{приращение 2)}{{текст)} создает горизонтальный бокс, высота и глубина которого изменены относительно его натуральных размеров на величину {приращения 1) и {приращения 2) соответственно. Например, \addbox{lex}{. 5ех}{текст} увеличивает высоту текста на lex, а глубину—на 0.5ех. 2. Команда \jhbox{(прототип)} [{позиция)] {{текст)} создает горизонтальный бокс, ширина которого вычисляется по параметру {прототип). Дополнительный параметр {позиция) задает способ размещения текста внутри бокса как в команде \makebox (1, с, г или s; по умолчанию с). 3. Команда \jvbox{(прототип)} [{позиция)] {{текст)} создает горизонтальный бокс и сдвигает его по вертикали, используя для выравнивания подпорку, определяемую вертикальными размерами {прототипа). Дополнительный параметр {позиция) задает вертикальное выравнивание относительно подпорки: t — выравнивание высоты (верха) текста и подпорки; с — центрирование текста относительно подпорки; b — выравнивание глубины (низа) текста и подпорки. Если этот параметр отсутствует, то подразумевается с. Результирующая высота и глубина бокса вычисляются как максимум между соответствующими параметрами подпорки и бокса. ТВ классе псс этот пакет подгружается автоматически.
4. Команда \ jparbox{(npomomun)} [(позиция)] {{ширина)} {{текст)} формирует пар-бокс требуемой {ширины) и выравнивает его вертикально относительно {прототипа) тем же способом, что и команда \jvbox. 5. Команда \pbox [(позиция)] {{текст)} создает простую одностолбцовую таблицу. Параметр {позиция) может состоять из двух букв, определяющих горизонтальное выравнивание текста внутри столбца (1, с или г как в команде \ short st ack) и вертикальное выравнивание таблицы относительно окружающего текста (t, с или b как в вертикальных боксах). По умолчанию действует режим центрирования по горизонтали и вертикали. Строки таблицы разделяются командой \\. Каждая строка образует блок. Интерлиньяж между строками нормальный, как в пар-боксах. Он контролируется командой \baselinestretch. 7.5. Сноски Сноски, так же как и заметки на полях (см. с. 53), интерпретируются ЖЩХ’ом как плавающие элементы специального вида. Их расположение не привязано жестко к точке употребления. Так, заметки размещаются на полях текущей текстовой страницы, а текст сносок выносится в подножие страницы. Сноски всегда состоят из двух компонент: маркера и текста. Маркер проставляется в верхнем индексе в точке ссылки на сноску, а текст сноски, снабженный этим же маркером, выводится в подножии текстовой области страницы. Параметр {текст сноски) в приведенных ниже командах является перемещаемым, т. е. используемые в нем хрупкие команды необходимо защитить командой \protect. 1. Сноска обычно оформляется командой \footnote{(meKcm сноски)} Эта команда выполняет следующие действия: увеличивает на единицу значение счетчика footnote, выводит его в верхнем индексе в точке употребления командой \thefootnote, текст сноски, снабженный маркером \thefootnote оформляет в подножии текущей страницы. Если сноска
длинная, то может получиться, что часть ее уйдет в подножие следующей страницы, но начало сноски обязательно помещается в подножие той страницы, на которую попал маркер сноски. Если сноска помещена внутрь бокса, то ее плавающая часть (текст) игнорируется. В этих случаях надо использовать раздельное оформление маркера сноски и текста: в том месте, где надо сослаться на сноску, поставьте команду \f ootnotemark а текст сноски оформите вне бокса (сразу после него) с помощью команды \footnotetext{(meKcm сноски)} Первая из этих команд увеличивает значение счетчика footnote на единицу и выводит маркер сноски, а вторая — помещает текст сноски в область сносок, снабжая его тем значением маркера сноски, которое установлено к настоящему моменту. 2. Чтобы сделать в одном пар-боксе две сноски, поступайте следующим образом: \рагЬох{(ширина)}{ . . . \f ootnotemark . . . \f ootnotemark . . . }7. \addtocounter{footnote}{-l}\f ootnot etext {.(текст первой сноски)}*/. \addtocounter{footnote}{l}\footnotetext{(meKcm второй сноски)} Здесь внутри пар-бокса вставляются два маркера сносок с помощью команды \footnotemark, затем сразу после пар-бокса выводится текст этих сносок с помощью команды \footnotetext. Значение счетчика сносок сначала уменьшается, а затем увеличивается на единицу командой \addtocounter, чтобы обеспечить правильную нумерацию сносок в подножии страницы. Символ 7, в конце каждой строки очень важен. Он приводит к игнорированию символа конца строки, и, в результате, пар-бокс вместе с текстами сносок рассматривается ТМ^Х’ом как неразбиваемый элемент, что предотвращает размещение маркеров и текста сносок на разных страницах документа. 3. Имеется также возможность явного задания номера сноски вместо использования счетчика сносок. Для этого в перечисленных выше командах сразу после их имен следует поставить дополнительный параметр: \footnote [(номер сноски)] {(текст сноски)} \f ootnotemark [(номер сноски)] \f ootnotetext [(номер сноски)] {(текст сноски)}
Эти варианты команд работают так, как если бы значение счетчика сносок в момент его вывода совпадало со значением параметра {номер сноски). 4. В пакете nccfoots2 из коллекции ncctools добавлен ручной стиль маркировки сносок: \Footnotе{{маркер сноски)}{{текст сноски)} \Footnotemark{(jwapKep сноски)} \Footnotet ext {{маркер сноски)} {{текст сноски)} Первый параметр этих команд явно задает маркер сноски, который будет оформлен в верхнем индексе в текстовой моде. Пример: Некоторый текст*. Слово** маркировано. *Это первая сноска. **Это вторая сноска. Некоторый TeKci\Footnote{$*$}{3io первая сноска.}.\\ CnoBo\Footnotemark{$**$}7. \Footnotetext{$**$}{3io вторая сноска.} маркировано. 5. Внутри мини-страницы принципы использования и оформления сносок несколько отличаются от применяемых снаружи: • при автоматическом оформлении вместо счетчика footnote используется счетчик mpfootnote, значение которого при открытии министраницы обнуляется; • маркер сносок выводится командой \thempfootnote, по умолчанию использующей нумерации строчными буквами латинского алфавита (в русском стиле класса псс—русского); • текст сноски выводится в подножии мини-страницы. На мини-странице команду \f ootnote можно применять везде, в том числе и в боксах. Если Вы хотите внутри мини-страницы сделать сноску, а ее текст разместить вне мини-страницы в подножии текущей страницы, то для этого внутри мини-страницы воспользуйтесь ручным оформлением сноски: HKopb\stepcounter{footnote}\Footnotemark{\thefootnote} а текст сноски оформите после мини-страницы командой \foot note text. 2В классе псс этот пакет подгружается автоматически.
7.6. Горизонтальная раздвижка и заполнение Здесь описываются команды, обеспечивающие пропуск горизонтального пространства в тексте, а также команды, позволяющие нарисовать горизонтальную линию, левую или правую длинную стрелку, заполнить строку точками. Все перечисляемые далее команды крепкие. 1. Команда \Ъ$рьсе{{расстояние)} выполняет пропуск горизонтального пространства, указанного в ее параметре. Расстояние может быть как положительным, так и отрицательным, как жестким, так и растяжимым (см. прил. Б.З, с. 281). Пример: Здесь / / пропущено 5 мм, Здесь /\hspace{5mm}/ пропущено а сейчас вернемся Нс^бД///на 6 мм 5 мм, \\ а сейчас вернемся назад\Ьзрасе{-6тт}////// на 6 мм Если при форматировании абзаца команда \hspace попала в начало или в конец его строки, то она игнорируется3. Чтобы этого не произошло, воспользуйтесь *-формой команды \hspace. Различия между ними иллюстрирует следующий пример: Начало абзаца. Начало абзаца. \\ Здесь отступ на 0.4 см игнорируется, \hspace{0.4cm}Здесь отступ на а здесь не игнорируется. 0.4 см игнорируется,\\ \hspace*{0.4cm}a здесь не игнорируется. В математической моде и внутри горизонтальных боксов пропуск расстояний командой \hspace никогда не подавляется. Например, команда \hspace*{5mm} эквивалентна команде \mbox{\hspace{5mm}}. 2. В параметре команд \hspace и \hspace* можно использовать бесконечно растяжимое расстояние \fill, определяемое следующим образом: \fill = 0mm plus Ifill Задать растяжимость, кратную \f ill, можно с помощью команды: \stretch{(4uc^o)} = 0mm plus (число)!ill 3В начале и в конце абзаца команда \hspace не игнорируется.
Для часто используемых вариантов пропуска бесконечно растяжимого расстояния имеются сокращения: \hfill = \hspace{\fill} \hfil = \hspace{Omm plus Ifil} Если в одной строке встречается несколько бесконечно растяжимых расстояний одинаковой силы (см. с. 39), то свободное пространство делится между ними в пропорции коэффициентов при растяжимостях. Если же в одной строке встречаются бесконечно растяжимые расстояния разной силы, то более «сильная бесконечность» подавляет «слабую бесконечность». Этими особенностями можно пользоваться для изменения режима форматирования отдельной строки. Так специальные режимы форматирования \centering, \raggedright, \raggedleft добавляют в начало и/или конец каждой строки абзаца слабое растяжимое расстояние \hf il. Чтобы подавить его, достаточно вставить более сильную растяжимость. Пример: слева, слева, Абзац прижат вправо. Текст по центру. Текст по центру, по центру, со сдвигом, справа, справа. {\raggedleft Абзац прижат вправо.\\ \hspace*{\f111}Текст по центру.\hf ill\mbox{}\\ Текст по центру,\hfil\mbox{}\\ слева,\hfill по центру,\hfill справа,\\ слева,\hfill со сдвигом,*/. \hspace{\stretch{2.5}}справа.\раг} Здесь Вы видите несколько методов изменения форматирования строки в абзаце, прижатом к правому краю: вставку неподавляемой сильной растяжимости командой \hspace*{\fill}; запрет подавления растяжимости команды \hf ill с помощью пустого горизонтального бокса \mbox{}, идущего следом; использование слабой растяжимости \hfil в конце строки, которая делит свободное пространство с аналогичной слабой растяжимостью, добавляемой декларацией \raggedright в начало каждой строки. 3. Команда \hfill — пример заполнения свободного пространства пробелами. Возможно также заполнение свободного пространства непробельными символами: \dotfill — точками; \hrulef ill — горизонтальной линией, идущей в подножии строки; \leftarrowfill — длинной стрелкой влево; \rightarrowfill — длинной стрелкой вправо.
Эти команды работают по тем же принципам, что и \hf ill. Поэтому, если Вы хотите заполнить с их помощью начало или конец строки, то вставьте соответственно перед и после них команду \mbox{}. Примеры: Рисуем ................ точки А_____________Б_____________В А <---------Б -------------> В Рисуем \dotfill\ точки\\ A\hrulefill B\hrulefill В\\ А \leftarrowfill\ Б \rightarrowfill\ В\\ \mbox{}\hrulef ill\mbox{} 7.7. Вертикальная раздвижка 1. Вертикальная раздвижка выполняется командами \ч$рьсе{{расстояние)} \vspace*{ (расстояние)} первая из которых в начале страницы игнорируется, а вторая — не игнорируется. Точнее, будучи употребленной в начале страницы, команда \vspace* пропускает несколько большее пространство, чем указано в ее параметре, а именно, она пропускает лишнюю пустую строку. Это, скорее всего, недоработка ЬХГвХ’а. При оформлении пар-бокса или министраницы команда \vspace не игнорируется. По использованию эти команды подобны командам горизонтальной раздвижки: задаваемые ими расстояния могут быть как положительными, так и отрицательными; можно использовать в их параметре переменные, команды \fill и \stretch{(Huc^o)}. Наконец, имеются аналоги команд \hfill и \hfil: \vfill = \vspace{\fill} \vfil = \vspace{Omm plus Ifil} 2. Механизм работы команды \vspace не столь очевиден, как при горизонтальной раздвижке. Если вертикальная раздвижка задана в вертикальной моде (до начала абзаца), то дополнительное расстояние будет вставлено перед этим абзацем. Если же вертикальную раздвижку употребить внутри абзаца, то сначала будет завершено формирование текущей строки абзаца, а уже потом будет добавлено дополнительное расстояние. Пример: Эта строка отодвигается от следу- Эта cTpoKa\vspace{2mm} отодвигается „ о от следующей на 2 мм ющеи на 2 мм
3. Команды \smallskip \medskip \bigskip выполняют вертикальную раздвижку на маленькое, среднее и большое расстояния. Эти три расстояния соотносятся между собой так, что каждое следующее вдвое больше предыдущего. Другими словами команда \medskip эквивалентна двум командам \smallskip, а \bigskip — двум \medskip. Расстояния, на которые при этом выполняется раздвижка, задаются, соответственно, переменными \smallskipamount \medskipamount \bigskipamount которые Вы можете использовать, например, в дополнительном параметре команды \\ (напомним, что эта команда завершает текущую строку и выполняет дополнительную вертикальную раздвижку на заданное расстояние). Пример: Строка отодвинута Строка отодвинута на величину малого вертикального W [\smallskipamount] на величину отступа малого вертикального отступа 4. В командах Г^ТвХ’а, формирующих выносные текстовые элементы, а также в командах рубрикации, вертикальная раздвижка выполняется с помощью команды \addvspace{ (расстояние)} Отличия этой команды от команды \vspace проявляются тогда, когда перед началом абзаца употребляется несколько команд вертикальной раздвижки: если Вы напишите подряд несколько команд \vspace, то все заданные в них расстояния просуммируются; если же воспользуетесь командами \addvspace, то из всех заданных ими расстояний будет выбрано наибольшее. Команду \addvspace можно использовать только между абзацами. Если ее употребить в начале или в конце мини-страницы, то она будет проигнорирована.
7.8. Управление форматированием страницы Все команды, приведенные в данном пункте, за исключением \newpage и \clearpage, — хрупкие. Обычно необходимость ручной разбивки страниц возникает на заключительном этапе форматирования документа. 1. Команды \pagebreak [(целое)] \nopagebreak [(целое)] соответственно задают и запрещают переход на следующую страницу документа после того, как закончится формирование строки, в тексте которой они употреблены. Число в дополнительном параметре (в диапазоне 0-4) определяет жесткость действия этих команд. Режим 4 означает, что заказанное действие выполнится обязательно, а меньшие значения режима ослабляют требования на выполнение действия. Если дополнительный параметр опущен, то действует режим 4. Команда \pagebreak приводит к вертикальной растяжке текста на странице, если действует режим выравнивания нижней кромки страниц (обычно этот режим включается при двустороннем оформлении документа) . Употребление команды \nopagebreak перед выносным текстовым элементом не имеет смысла, поскольку в прологе его окружения устанавливается разрешение разрыва страницы. 2. Чтобы завершить текущую страницу документа без растяжки ее содержимого по вертикали, применяют команды \newpage \clearpage \cleardoublepage Все эти команды дополнительно завершают текущий абзац, т. е. идущий следом текст начнется на новой странице с нового абзаца. Различия между этими командами заключаются в следующем: • команда \clearpage принудительно выводит все накопившиеся к этому моменту плавающие элементы (рисунки и таблицы), а затем выполняется как \newpage; • команда \cleardoublepage выполняется как \clearpage, а затем при необходимости выводит пустую левую страницу. Другими словами,
после исполнения этой команды номер новой страницы будет нечетным, что соответствует правой странице документа. Если заказан односторонний стиль подготовки документа, в котором страницы не подразделяются на правые и левые, то эта команда работает точно так же, как \clearpage. Если нижний край страниц должен быть ровным, то перечисленные команды лучше не использовать для разбивки страниц. Вместо команды \newpage применяйте \pagebreak. При необходимости устранения «висячей строки» воспользуйтесь командой \enlargethispage (см. с. 55). Если же все таки требуется принудительно вывести накопившиеся плавающие элементы, но желательно, чтобы текущая страница была заполнена, то загрузите пакет afterpage и вызовите команду \clearpage так: \afterpage{\clearpage} При этом накопленные плавающие элементы будут выведены сразу после завершения текущей страницы. 3. Несколько идущих подряд команд типа \newpage эквивалентны одной такой команде, т. е. не приводят к пропуску пустых страниц. Поэтому, чтобы выдать пустую страницу, поместите в нее невидимый текст, например, употребив команду \mbox{}: \newpage\mbox{}\newpage 4. Если заказан режим вывода документа в две колонки, то команды \pagebreak и \newpage действуют несколько иначе: употребив их в тексте документа, Вы завершите текущую колонку, а не страницу. 7.9. Окружение titlepage Окружение \begin{titlepage} (абзацы) \end{titlepage} используется для оформления специальных страниц документа. В прологе окружения текущая страница документа завершается (в классе book при этом вызывается команда \cleardoublepage), устанавливается режим вывода в одну колонку, запрещается вывод колонтитулов страницы, и счетчик страниц устанавливается равным единице. В эпилоге окружения текущая страница принудительно завершается и предыдущий режим оформления страниц документа восстанавливается.
Счетчик страниц при одностороннем оформлении документа устанавливается равным единице. В классе псс окружение titlepage действует со счетчиком страниц несколько иначе: в прологе текущая страница документа завершается командой \clearpage, а счетчик страниц устанавливается равным нулю; в эпилоге счетчик страниц восстанавливается до состояния, которое было после вызова команды \clearpage. Другими словами, окружение titlepage не сбивает нумерацию обычных страниц документа. Класс псс допускает вложенное использование окружений titlepage и формирование нескольких страниц в рамках одного такого окружения. 7.10. Верстка в две колонки Вывод документа в две колонки можно заказать двумя способами: с помощью опции twocolumn в команде \documentclass и с помощью команды \twocolumn в теле документа. Эти способы несколько различаются: • Опция twocolumn используется, когда весь документ должен оформляться в две колонки. При этом уменьшаются величины отступов в выносных элементах, увеличивается ширина текстовой области, задается режим \sloppy, позволяющий форматировать абзацы с ухудшением качества, но без горизонтальных переполнений, и включается выравнивание нижней кромки страниц документа. • Команда \t wo column используется в документах, оформляемых в одну колонку, с целью печати его части в две колонки, например, при выводе предметного указателя. Дополнительную информацию об особенностях оформления текста в две колонки Вы можете прочитать в п. 2.11 на с. 47. Переход к оформлению текста в две колонки выполняется так: \twocolumn [(заголовок)] Текущая страница при этом завершается с помощью команды \clearpage, а (заголовок) размещается в верхней части новой страницы, оформляемой в две колонки, и занимает по ширине обе колонки. Режим печати в две колонки действует до команды \onecolumn устанавливающей вывод страниц в одну колонку. При этом текущая страница автоматически завершается командой \ clear page, а ее колонки не выравниваются по высоте.
7.11. Пакет multicol Пакет multicol позволяет оформлять текст в несколько колонок и устраняет недостатки режима twocolumn: он позволяет совмещать текст с разным числом колонок в пределах одной страницы и выравнивает колонки по высоте. В пакете определяется окружение \begin{multicols}{(4uc^o)}[{заголовок}] [{размер}] {абзацы} \end{multicols} оформляющее свое содержимое в несколько колонок, количество которых задается параметром {число} (от 2 до 10). Параметр {заголовок} задает заголовок, занимающий всю ширину текстовой области. Наконец, параметр {размер} определяет минимальный вертикальный размер свободного пространства на текущей странице, необходимый для того, чтобы оформление в несколько колонок началось с этой же страницы. Если свободного пространства меньше требуемого, то текущая страница завершается, а вывод в несколько колонок начинается со следующей страницы. Если параметр {размер} отсутствует, то проверяется, что вертикальный размер свободного пространства не меньше, чем \premulticols (по умолчанию 50pt). Текст, выводимый в несколько колонок, отделяется от предшествующего и последующего текста расстоянием \multicolsep (по умолчанию 12pt plus 4pt minus 3pt). Заметки на полях внутри данного окружения игнорируются. Текст сноски может оторваться от якоря сноски (оказаться с ним на разных страницах). Перед использованием этого окружения должен быть заказан режим печати в одну колонку.
Глава 8 Верстка таблиц 8.1. Принципы оформления таблиц Таблицу можно оформлять двумя способами: помещая ее в текст документа в точке ссылки на нее (такая таблица в полиграфии называется выводом) или оформляя в виде плавающего элемента с заголовком. Вывод—это простая таблица без линовки, непосредственно продолжающая текст. Вывод содержит небольшое число столбцов (обычно два), которые могут быть сдвоены, строены и т. д. для экономии места. Как правило, у вывода нет заголовка. Неозаглавлены во многих случаях и его столбцы. Выводы не нумеруются, поскольку их всегда располагают непосредственно после ссылки на них. В отличие от вывода, таблица с заголовком не привязана к точке ссылки на нее. Заголовки таблиц нумеруют, если в документе более одной таблицы с заголовком. При этом слово Таблица и номер ставят над заголовком по центру или прижатым вправо, либо в подбор с заголовком [11]. Ссылку на таблицу в тексте документа оформляют так: табл. 1. При повторных ссылках на таблицу добавляют см., например: см. табл. 1. При необходимости указывают номер страницы, например: см. табл. 1, с. 25. Если документ содержит единственную таблицу с ненумерованным заголовком, то при ссылке пишут слово таблица без номера. Для оформления таблицы с заголовком лучше всего подходит окружение table. В простейшем случае оформление таблицы с помощью этого окружения имеет вид: \begin{table}\centering\footnotesize \caption{{заголовок таблицы)}\1&Ъе1{{метка)} \begin{tabular} ... \end{tabular} \end{table} Окружение table оформляет таблицу в виде плавающего элемента. Декларация \centering обеспечивает центрирование таблицы. Декларация \footnotesize задает более мелкий кегль оформления таблицы в соответствии с правилами набора [1]. Команда \caption оформляет заголовок таблицы, снабжая его словом Таблица и порядковым номером, а команда \label ставит метку, которую можно будет использовать в тексте для ссылки на таблицу.
Команду \ с apt ion можно использовать только внутри плавающих элементов. В стандартном 1АТцХ’е не предусмотрено оформление заголовка без номера, однако в макросе Л/^С такая возможность есть (команда \caption в нем имеет *-форму). Далее в этой главе рассматривается оформление собственно таблицы, а ее обрамление (оформление заголовка и плавающее размещение в тексте) рассматривается в гл. 13. Согласно [8] таблица состоит из следующих основных элементов: головки, прографки, боковика, граф и строк. Головка—это одна или несколько начальных строк таблицы, содержащих заголовки граф таблицы. Далее я буду называть ее «шапкой» таблицы. Прографка—это разделение таблицы на графы с помощью вертикальных линий. Боковик — это обычно крайняя левая графа таблицы (или несколько граф при сложном оформлении боковика). При оформления таблицы в I^I^X’e графе соответствует один или нескольких столбцов. 8.2. Синтаксис оформления таблиц Для оформления таблиц используются следующие окружения: tabular — таблица в текстовой моде; tabular* — текстовая таблица заданной ширины; array — таблица в математической моде. Обычно при подготовке таблиц использует окружение tabular, a array чаще применяют в математических формулах для оформления матриц. Все перечисленные окружения создают таблицу в виде вертикального бокса, который можно использовать в тексте абзацев наравне с другими текстовыми элементами. Синтаксис: $\begin{array} [(позиция)] {{столбцы)} {содержимое) \end{array}$ \begin{tabular} [{позиция)] {{столбцы)} {содержимое) \end{tabular} \begin{tabular*}{(tuupuHa)} [{позиция)] {{столбцы)} {содержимое) \end{tabular*} Здесь $... $ означают, что окружение array используется в математической моде. Параметр {позиция) может принимать одно из значений t, b, с, задающее способ вертикального выравнивания бокса таблицы относительно окружающего текста по тем же принципам, что и для обычного вертикального бокса: t — выравнивание по верхней строке таблицы, b — по нижней строке, с — вертикальное центрирование. По умолчанию действует с.
Параметр (ширина) задает требуемую ширину таблицы типа tabular*. Наконец, параметр (столбцы) задает описание столбцов таблицы. 8.3. Описание столбцов таблицы Количество, прографка и способ горизонтального выравнивания текста в столбцах задаются в параметре (столбцы). 1. Типы столбцов. В простейшем случае этот параметр состоит из одной или нескольких букв 1, с, г, первая из которых означает выравнивание текста столбца по левому краю, вторая — центрирование, а третья — выравнивание по правому краю. Число столбцов в таблице определяется количеством букв в параметре. Наряду с символами 1, с и г в описании столбцов таблицы можно использовать спецификацию р{(ширина столбца)} означающую, что поля данного столбца будут оформляться в виде пар-боксов заданной ширины с выравниванием их по верхней строке. В таких полях нельзя использовать команду \\, поскольку она означает конец строки таблицы, а не строки пар-бокса. Команду \newline или \linebreak использовать можно. 2. Вертикальные линии между столбцами задаются символом I. Например, окружение \begin{tabular}{111 I с I г|} ... \end{tabularj оформляет таблицу с тремя столбцами, первый из которых выравнивается по левому краю, второй—центрируется, а третий—выравнивается по правому краю. Все столбцы обрамляются вертикальными линиями, а между первым и вторым столбцами рисуется двойная линия. 3. Расшифровка описания столбцов. Между столбцами таблицы вставляется горизонтальное пространство величины \tabcolsep для окружения tabular и \arraycolsep для окружения array. Точнее, эти переменные определяют половину расстояния между столбцами. Например, описание 111 I с I г I для текстовой таблицы расшифровывается так: \vline \hspace{\tabcolsep}(/-cmo^de^)\hspace{\tabcolsep}7.
\vline\hspace{\doublerulesep}\vline \hspace{\tabcolsep}(c-cmo^de^)\hspace{\tabcolsep}7, \vline \hspace{\tabcolsep} (r-стол^ец) \hspace{\tabcolsep}7, \vline Здесь \doublerulesep—переменная, задающее расстояние между линиями двойной линии, а \vline — команда, рисующая вертикальную линию. Толщина линий в таблице задается переменной \arrayrulewidth. Значения по умолчанию: \tabcolsep = 6pt, \arraycolsep = 5pt, \doublerulesep = 2pt, \arrayrulewidth = 0.4pt. 4. Вставка элементов между столбцами. Спецификация ^{(вставка)} подавляет вставку пробелов у столбцов, которые к ней примыкают, и заменяет их на содержимое своего параметра. Параметр (вставка) оформляется в той же моде, что и вся таблица: в окружении array—в математической моде, а в окружении tabular—в текстовой. Пример: @{ } 11 @{\hspace{2mm}}c@{\hspace{2mm}}r@{--}l@{} Это описание задает 4 столбца со следующими свойствами: вставка расстояния перед первым столбцом подавляется; расстояние между первым столбцом и идущей следом вертикальной линией стандартное; расстояние между этой вертикальной линией и вторым столбцом равно 2mm; расстояние между вторым и третьим столбцами равно 2mm; между третьим и четвертым столбцами вставляется короткое тире; наконец, вставка расстояния после четвертого столбца подавляется. Параметр (вставка) — перемещаемый. Поэтому хрупкие команды внутри этого параметра необходимо защитить командой \protect. 5. Повторяющиеся столбцы. Если в описании столбцов таблицы некоторая последовательность символов повторяется несколько раз, то для сокращения записи можно воспользоваться спецификацией *{п}{(символы)} которая эквивалентна повторению п раз содержимого ее последнего параметра. Пример: *{3}{г@{/}11} = г@{/}11 г@{/}11 г@{/}11 Команды повторения могут быть вложены одна в другую, т. е. внутри второго параметра команды * можно использовать другую команду *.
8.4. Содержимое таблицы 1. Строки и поля таблицы. Таблица собирается из строк, разделяемых командой \\. Каждая строка таблицы разбивается на поля специальным символом &. Количество полей в одной строке не должно быть больше числа столбцов, заданного в описании таблицы. Каждое поле таблицы является блоком, т. е. область действия деклараций ограничена полем. Если число полей в строке таблицы превысило число столбцов в описании таблицы, то Вы получите сообщение об ошибке: ! Extra alignment tab has been changed to \cr. 2. Горизонтальная линовка задается командой \hline, которую можно применять только в начале строки таблицы. Можно нарисовать двойную горизонтальную линию, если команду \hline написать дважды. При попытке использовать команду \hline в середине строки таблицы, Вы получите сообщение об ошибке: ! Misplaced \noalign. \hline ->\noalign ... 3. Частичная линовка. Если необходимо отчеркнуть горизонтальной линией только часть столбцов, воспользуйтесь командой \cline{{диапазон)} Здесь {диапазон) — диапазон номеров столбцов, в которых надо нарисовать горизонтальную линию. Примеры: \cline{l-3} \cline{2-2} Счет столбцов начинается с единицы. Номера начального и конечного столбцов разделяются символом минус (-). Начальный номер не больше конечного. Команду \cline употребляют в начале строки таблицы. Если требуется отделить горизонтальной линией несколько групп столбцов, для каждой группы следует задавать свою команду \cline. Пример: \cline{l-3}\cline{5-5}\cline{7-9} 4. Растяжение таблицы по вертикали. Расстояния между строками таблицы можно изменить, переопределив команду \arraystretch до начала таблицы. Например, команда \renewcommand\arraystretch{l.1} означает увеличение расстояния между строками таблицы в 1,1 раза.
8.5. Оформление выводов Вывод обычно оформляется с помощью окружения center шрифтом размера \normalsize или \small. Пример: Уровень 12 3 4 Команда \labelitemi \labelitemii \labelitemiii \labelitemiv Маркер • - * Его оформление: \begin{center}\small \begin{tabular}{Q{}10{\quad}*4{@{\quad}c}0{}} Уровень &1&2&3&4W Команда & \verb+\labelitemi+ & \verb+\labelitemii+ & \verb+\labelitemiii+ & \verb+\labelitemiv+\\ Маркер & \textbullet & \bfseries \textendash & \textasteriskcentered & \textperiodcentered \end{tabular} \end{center} При необходимости в выводе используют отточия (заполнение пространства точками). Пример: Для профилей швеллеров устанавливают предельные отклонения, мм: по высоте ........................... ±2,5 по ширине полки ..................... ±1,5 по толщине стенки ................... ±0,3 по толщине полки .................... ±0,3 Его оформление: Для профилей швеллеров устанавливают предельные отклонения, мм:\\ \mb о х{}\qquad \begin{tabular}[t]{@{}p{75mm}@{\enskip$\pm$}rQ{}} по высоте \dotfill\mbox{} & 2,5\\ по ширине полки \dotfill\mbox{} & 1,5\\ по толщине стенки \dotfill\mbox{} & 0,3\\ по толщине полки \dotfill\mbox{} & 0,3 \end{tabular} 8.6. Пример оформления простой таблицы Далее приведен пример оформления таблицы, состоящей из трех столбцов, с выравниванием первого столбца по левому краю, второго—по центру, третьего—по правому краю. Столбцы разделяются вертикальными линиями, а шапка таблицы отделяется горизонтальной линией:
Поле 1 Поле 2 Поле 3 0,3568669 Да 1500 0,98445 Нет 358 \begin{tabular}{|1|с|г|} \hline Поле 1 & Поле 2 & Поле 3 \\ \hline 0,356\,866\,9 & Да & 1500W 0,984\,45 & Нет & 358 \\ \hline \end{tabular} По правилам отечественной полиграфии оформление этой таблицы1 имеет несколько недостатков: поля шапки таблицы должны быть центрированы; кегль в шапке таблицы должен быть мельче, чем в остальной части; верхняя горизонтальная линия должна быть отодвинута от текста заголовков; содержимое таблицы должно быть оттянуто от завершающей линии шапки расстоянием в 0.5-1 кегля основного шрифта таблицы. Последний столбец таблицы желательно центрировать, но сделать так, чтобы числа в нем выравнивались по правому краю. Для устранения перечисленных недостатков можно сделать следующее: центрирование заголовков обеспечить с помощью «пружинок» \hf il, \hfill (в заголовке первого столбца можно поставить \hfil слева или \hfill с обеих сторон); горизонтальные линейки можно отодвинуть с помощью подпорок; кегль шрифта в шапке таблицы уменьшить, задав в каждом поле декларацию \f ootnotеsize. Вот что получится после устранения недостатков: Поле 1 Поле 2 Поле 3 0,356866 9 Да 1500 0,98445 Нет 358 \begin{tabular}{|1|с|с|} \hline \ г ul е { 0mm} {1 Op t} 7, \footnotesize\hfil Поле 1 & \footnotesize Поле 2 & \footnotesize Поле 3 \\ \hline \rule{0mm}{14pt}7. 0,356\,866\,9 & Да & 1500 \\ 0,984\,45 & Нет & \hphantom{0}358 \\ \hline \end{tabular} Подпорки здесь добавлены с помощью команды \rule, а для выравнивания чисел в последнем столбце использовалась команда \hphantom, создающая невидимый бокс, ширина которого совпадает с шириной содержимого ее параметра. Того же результата, но с меньшими усилиями, можно добиться с помощью команд пакета nccboxes из коллекции ncctools: • Для оформления полей шапки таблицы используется команда \cbox{(текст}}, обеспечивающая вывод поля шрифтом более мел ^онечно, содержание этой таблицы — полная бессмыслица. Но я и не преследую здесь цель демонстрации осмысленных примеров.
кого кегля, вставку подпорок и центрирование полей шапки по вертикали. • Размер шрифта, используемого в шапках таблиц, задается командой \cboxstyle2. При самостоятельном использовании пакета (вне рамок класса псс) стиль оформления следует переопределить, например, после загрузки пакета: \usepackage{nccboxes} \renewcommand\cboxstyle{\footnotesize} • Для центрирования поля шапки по горизонтали используется команда \Ъс{(поле)}. • Чтобы отодвинуть содержимое таблицы от шапки, используется команда \Strut/(число)/, где (число) задает количество строк. Вот пример оформления данной таблицы с помощью средств пакета nccboxes: Поле 1 Поле 2 Поле 3 0,356 866 9 Да 1500 0,984 45 Нет 358 \begin{tabular}{111с I с I} \hline \гс{\сЬох{Поле 1}} & \сЬох{Поле 2} & \сЬох{Поле 3} \\ \hline \Strut/0.7/ О,356\,866\,9 & Да & 1500 \\ 0,984\,45 & Нет & \jhbox{0}{}358 \\ \hline \end{tabular} 8.7. Изменение расстояний между столбцами таблицы Иногда возникает необходимость в растяжении или сжатии таблицы по ширине. Проще всего это сделать изменив значение переменной, которая отвечает за вставку расстояний между столбцами: \tabcolsep в окружении tabular или \arraycolsep в окружении array. Например, если заключить окружение tabular из предыдущего примера в фигурные скобки и изменить внутри значение переменной \tabcolsep: {\setlength\tabcolsep{5mm}\begin{tabular} ...\end{tabular}} то получится таблица, растянутая по горизонтали: Поле 1 Поле 2 Поле 3 0,356866 9 Да 1500 0,98445 Нет 358 2 В пакете nccboxes значение этой команды пустое, а в классе псс используется размер \scriptsize.
8.8. Вставка символов между столбцами Иногда текст в графе надо выровнять по некоторому символу внутри нее. Самый простой и эффективный способ заключается в разбиении этой графы на два столбца со вставкой символа, по которому выполняется выравнивание, между столбцами. Например, таблица с —и(г, с) Уп i &п а2 45 0,834 0,810 ± 0,021 18 40 0,969 0,950 ±0,017 12 35 0,993 0,976 ± 0,016 7 оформлена так: $\begin{array}{ I с | с | 1 г | } \hline с & -u(r,c) & -у_п & \sigma_n & \sigma~2 \\ \hline 45 & 0{,}834 & 0{,}810 & 0{,}021 & 18 \\ 40 & 0{,}969 & 0{,}950 & 0{,}017 & 12 \\ 35 & 0{,}993 & 0О976 & 0{,}016 & 7 \\ \hline \end{array}$ Некоторые пояснения: • Для оформления таблицы здесь использовано окружение array, поскольку содержимое таблицы в основном состоит из формул. Это окружение заключено в доллары, так как должно оформляться в математической моде. • Третья графа таблицы оформлена двумя столбцами со вставкой символа ± между ними. Для этого в описании столбцов использована спецификация г@{{}\рт{}}1, означающая следующее: г —выравни1-вание первой половины графы по правому краю; О\рт{}} —вставка между столбцами символа \рш (пустые блоки О вокруг команды \рт обеспечивают вставку пробелов, характерных для операции ±); 1 — выравнивание второй половины графы по левому краю. • Запятая в числах заключена в блок {,}, чтобы убрать ненужный пробел между целой частью числа и дробной3. 3 Запятая в математической моде используется как знак препинания и автоматически отделяется узким пробелом от идущей следом формулы. Чтобы в математической моде убрать лишние пробелы вокруг любого элемента, достаточно заключить его в фигурные скобки.
8.9. Использование мультистолбцов Для качественного оформления предыдущей таблицы необходимо оформить поля третьего и четвертого столбцов шапки как единое целое, т. е. воспользоваться мультистолбцом. Вот пример оформления таблицы средствами пакета nccboxes с использованием мультистолбца: $\begin{array}{ I с I с | 1 г | } \hline \cbox{$c$J & \cbox{$-u(r,с)$} & \multicolumn{2}{cI}{\cbox{$-y_n\pm\sigma_n\,\,\,\,$}} & \cbox{$\sigma~2$} \\ \hline \Strut/.7/ 45 & 0{,}834 & 0{,}810 & 0{,}021 & 18 \\ 40 & 0{,}969 & 0{,}950 & 0{,}017 & 12 \\ 35 & 0{,}993 & 0{,}976 & 0{,}016 & 7 \\ \hline \end{array}$ Результат: с —и(г, с) -уп ± сг„ а2 45 0,834 0,810 ±0,021 18 40 0,969 0,950 ±0,017 12 35 0,993 0,976 ± 0,016 7 Здесь использовалась команда lATg^’a \multicolumn{n}{ (описание)}{ (поле)} с помощью которой несколько полей строки таблицы объединяются в одно. Параметр п задает число полей, объединяемых в один мультистолбец, (описание) — описание мультистолбца, а (поле) — его содержимое. В описании мультистолбца должна присутствовать ровно одна из спецификаций 1, с, г или р{. . .}, задающая способ размещения текста в нем, а также может быть любое число спецификаций типа | или В поле, где употребляется команда \multicolumn, больше не должно быть ничего, кроме пробелов. Учтите, что поскольку текст мультистолбца занимает п столбцов, число разделителей & в этой строке в результате должно уменьшиться на п — 1. Для правильного применения команды \multicolumn надо хорошо представлять, какая часть таблицы относится к какому столбцу. Это станет ясно из следующих примеров описания столбцов.
1. Параметр {rcl} задает таблицу с тремя столбцами, расстояния между которыми равны удвоенной величине межстолбцового промежутка, задаваемого переменной \tabcolsep или \arraycolsep. Для простоты {sep) далее означает пропуск межстолбцового промежутка. Тогда разбиение таблицы на столбцы имеет вид: Первый столбец Второй столбец Третий столбец {sep) г {sep) {sep) с {sep) {sep) 1 {sep) 2. Параметр {I с I с I c I} задает таблицу со структурой Первый столбец Второй столбец Третий столбец I {sep) с {sep) I {sep) с {sep) I {sep) c {sep) I Здесь к первому столбцу относится часть I с | вместе с соответствующими промежутками, ко второму — с |, а к последнему—все остальное. Итак, все столбцы, кроме первого, начинаются со спецификации, задающей способ размещения в них текста, и заканчиваются перед следующей аналогичной спецификацией. К первому столбцу относится также все, что идет перед его спецификацией. Что касается разнесения промежутков по столбцам, то команды г, с, 1 и р{. . .} фактически задают не только поле текста, но и межстолбцовые промежутки слева и справа от него. 3. Спецификация ©{...} подавляет неявную вставку промежутков в соответствующем месте столбца. Например, описание { I c©{\quad}l I @{}с I } задает таблицу со структурой Первый столбец Второй столбец Третий столбец I {sep) с \quad 1 {sep) I с {sep) I Как видно из этого примера, первая спецификация © вместо межстолбцового промежутка вставляет после первого столбца \quad и подавляет вставку промежутка перед вторым столбцом, а вторая—отменяет вставку межстолбцового промежутка перед третьим столбцом. 8.10. Таблица с р-столбцами Иногда требуется оформить поле в виде абзаца заданной ширины. Для этого в описании столбцов используется спецификация р{. . .}, в параметре которой задается ширина абзаца. Например, таблица
Поле 1 Поле 2 Поле 3 Это первый столбец таблицы Это второй столбец таблицы Это последний столбец таблицы оформлена следующим образом: \begin{tabular}{Ip{30mm}Ip{30mm}Ip{30mm}I} \hline Поле 1 & Поле 2 & Поле 3 \\ \hline Это первый столбец таблицы & Это второй столбец таблицы & Это последний столбец таблицы \\ \hline \end{t abular} Здесь столбцы оформляются пар-боксами шириной в 30 мм. Выравниваются пар-боксы по базовой линии верхней строки. В тексте таких столбцов довольно часто возникают проблемы с переносом слов. Например, TpjX отказывается переносить первое и последнее слова в абзаце p-столбца. Чтобы разрешить перенос последнего слова абзаца, поставьте после него команду \hspace{Omm}. При необходимости можно сделать принудительную разбивку абзаца командами \linebreak и \newline, но нельзя применять команду \\, поскольку она завершает оформление строки таблицы. В полях p-столбцов можно применять декларации \raggedright. \raggedleft, \centering. При этом команда \\ локально переопределяется в рамках текущего поля (символ & восстанавливает старое значение этой команды) и будет действовать как команда разбивки строк внутри абзаца. Чтобы в этом случае закончить строку таблицы, а не поля, воспользуйтесь командой \tabularnewline [(расстояние)] сохраняющей исходное значение команды \\. Следующий пример иллюстрирует эти возможности: Поле 1 Поле 2 Поле 3 Это первый столбец таблицы Это второй столбец таблицы Это последний столбец таблицы Его оформление средствами пакета nccboxes: \begin{tabular}{Ip{30mm}Ip{30mm}Ip{30mm}I} \hline \Цс{\сЬох{Поле 1}} & \Ъс{\сЬох{Поле 2}} & \гс{\сЬох{Поле 3}} \\ \hline \Strut/.7/ \raggedright Это первый столбец таблицы & \centering Это второй столбец таблицы & \raggedleft Это последний столбец таблицы \tabularnewline \hline \end{tabular}
8.11. Вертикальный сдвиг полей в таблице Часто бывает, что шапка таблицы многострочная, причем количество строк в разных полях шапки различается. В таких полях желательно центрировать текст по вертикали. Например, таблица Подъем (отношение стрелки к хорде), h/a Длина дуги, 1 Площадь сегмента 0,01 1,0003 0,0067 0,02 1,0011 0,0133 0,03 1,0024 0,0200 набрана следующим образом: \begin{tabular}{|с|с|с|} \hline Подъем (отношение & \raisebox{-l.5ех}[Omm][0mm]{Длина дуги, $1$} & Площадь\\ стрелки к хорде), $h/a$ && сегмента \\ \hline 0,01 & 1,0003 & 0,0067 \\ 0,02 & 1,0011 & 0,0133 \\ 0,03 1,0024 & 0,0200 \\ \hline \end{t abular} Здесь с помощью команды \raisebox выполнен сдвиг второго поля шапки вниз на 1.5ех. Фактически тут выполняется наложение поля из верхней строки шапки на нижнюю строку. По этой причине высота и глубина бокса, создаваемого командой \raisebox, обнуляется, чтобы не изменить расстояние между строками. Этот же пример можно оформить гораздо проще и красивее средствами пакета nccboxes: Подъем (отношение стрелки к хорде), h/a Длина дуги, 1 Площадь сегмента 0,01 1,0003 0,0067 0,02 1,0011 0,0133 0,03 1,0024 0,0200 Вот его оформление: \begin{tabular}{|с|с|с|} \hline \сЬох{Подъем (отношение\\ стрелки к хорде), $h/a$} & \сЬох{Длина дуги, $1$} & \сЬох{Площадь\\сегмента} \\ \hline \Strut/.7/ 0,01 & 1,0003 & 0,0067 \\
0,02 & 1,0011 & 0,0133 \\ 0,03 & 1,0024 & 0,0200 \\ \hline \end{tabular} 8.12. Таблица со сложной шапкой Таблица Рисунок Точность восстановления Экспертная оценка 3FA стандарт PAL стандарт Лягушка 0,01 0,3 0,7 0,1 0,5 0,9 5,0 5,0 4,8 3,2 Лыжник 0,01 0,1 0,3 0,1 0,3 0,7 5,0 4,6 5,0 3,6 оформлена следующим образом: \begin{tabular}{I с IсссI с|с|} \hline Рисунок & \multicolumn{3}{c|}{Точность} & \multicolumn{2}{c|}{Экспертная оценка} \\ \cline{5-6} & \multicolumn{3}{c|}{восстановления} & 3FA стандарт & PAL стандарт \\ \hline Лягушка & 0,01 & 0,3 & 0,7 fc 5,0 fc 4,8 \\ & 0,1 & 0,5 & 0,9 & 5,0 & 3,2 \\ \hline Лыжник & 0,01 & 0,1 & 0,3 & 5,0 & 5,0 \\ & 0,1 & 0,3 & 0,7 & 4,6 & 3,6 \\ \hline \end{tabular} Здесь Вы видите многократное использование команды \multicolumn в шапке таблицы, а также отрисовку горизонтальных линий в пятом и шестом столбцах шапки таблицы с помощью команды \cline. После технической переработки и доводки эта таблица будет выглядеть так: Рисунок Точность восстановления Экспертная оценка в стандарте 3FA PAL Лягушка 0,01 0,3 0,7 0,10 0,5 0,9 5,0 5,0 4,8 3,2 Лыжник 0,01 0,1 0,3 0,10 0,3 0,7 5,0 4,6 5,0 3,6
Вот ее оформление средствами пакета nccboxes: \begin{tabular}{|с Iссс| с | с I} \hline \cbox*/-l.5/{Рисунок} & \multicolumn{3}{cI}{\cbox*/-l.5/{Точность\\восстановления}} & \multicolumn{2}{c|}{\сЬох{Экспертная оценка\\в стандарте}} \\ \cline{5-6} &&&& \makebox[12mm]{\cbox{3FA}} & \makebox[12mm]{\cbox{PAL}} \\ \hline \tstrut \raisebox{-l.5ex}[Omm][Omm]{Лягушка} & 0,01 & 0,3 & 0,7 & 5,0 & 4,8 \\ \bstrut & 0,10 & 0,5 & 0,9 & 5,0 & 3,2 \\ \hline \tstrut \raisebox{-l.5ex}[Omm][Omm]{Лыжник} & 0,01 & 0,1 & 0,3 & 5,0 & 5,0 \\ \bstrut & 0,10 & 0,3 & 0,7 & 4,6 & 3,6 \\ \hline \end{tabular} Необязательный параметр /-1.5/ у команды \cbox означает, что вертикальный размер поля при форматировании увеличивается вниз на 1,5 строки, а *-форма команды \cbox означает, что высота и глубина получающегося бокса обнуляются с целью наложения бокса на нижнюю строку шапки. С помощью команды \makebox два последних столбца сделаны одинаковыми по ширине (если эту команду не использовать, то последний столбец будет существенно шире предпоследнего). Наконец, команды \tstrut и \bstrut добавляют подпорки, выступающие соответственно вверх и вниз и обеспечивающие оттяжку горизонтальных линий таблицы. Есть еще подпорка \tbstrut, которая выступает вверх и вниз одновременно. Полная высота подпорки \tbstrut равна 1.5\baselineskip. Именно с помощью перечисленных подпорок обеспечивается оттяжка линий шапки таблицы в команде \cbox. 8.13. Перевертывание таблиц Превращая графы в строки и строки в графы, можно добиться большей компактности и выразительности таблиц с небольшим числом столбцов. Такую операцию называют перевертыванием таблицы. Например, исходная таблица
Элемент Допускаемые отклонения для стали, в % кипящей полуспокойной спокойной Углерод ±0,03 ±0,03 +0,03 -0,02 Кремний — +0,03 +0,03 -0,02 Марганец +0,05 +0,05 +0,05 -0,04 -0,03 -0,03 Фосфор +0,006 +0,005 +0,005 Сера +0,006 +0,005 +0,005 была оформлена средствами пакета nccboxes так: \begin{tabular}{111с|с|с I}\hline \tc{\cbox*/-l•5/{Элемент}} & \multicolumn3{с | }{\сЬох{Допускаемые отклонения для стали, в \'/,}} \\ \cline{2-4} & \makebox [15mm]{\сЬох{кипящей}} & \сЬох{полуспокойной} & \сЬох{спокойной} \\ \hline \Strut/.7/ Углерод & & $\рт$0,03 & $\рт$0,03 & & $+$0,03 & $-$0,02 \\ \\ Кремний & — & $+$0,03 & $+$0,03 \\ & & & $-$0,02 \\ Марганецй $+$0,05 & $+$0,05 & $+$0,05 \\ & $-$0,04 & $-$0,03 & $-$0,03 \\ Фосфор &$+$0,00\г1ар6&$+$0,00\г1ар5&$+$0,00\г1ар5\\ Сера &$+$0,00\rlap6&$+$0,00\rlap5&$+$0,00\rlap5\\ \hline \end{tabular} Знак «плюс» можно набирать и вне математической моды, но в математической моде он немного жирнее. Знак «минус» надо набирать только в математической моде. Команда TgjX’a \rlap оформляет свой параметр с наложением вправо. После перевертывания таблица будет выглядеть так: Сталь Углерод Кремний Марганец Фосфор Сера Кипящая ±0,03 — +0,05 -0,04 +0,006 +0,006 Полуспокойная ±0,03 +0,03 +0,05 -0,03 +0,005 +0,005 Спокойная +0,03 -0,02 +0,03 -0,02 +0,05 -0,03 +0,005 +0,005
Ее оформление средствами пакета nccboxes: \begin{tabular}{111*5{cI}} \hline \гс{\сЬох{Сталь}} & \сЬох{Углерод} & \сЬох{Кремний} & \сЬох{Марганец} & \сЬох{Фосфор} & \cbox{Cepa}\\ \hline \Strut/.7/ Кипящая &$\pm$0,03& &$+$0,05 &$+$0,006 &$+$0,006 \\ & & &$-$0,04 к к \\ Полуспокойная&$\рт$0,03&$+$0,03 &$+$0,05 &$+$0,005 &$+$0,005 \\ к & &$-$0,03 к к \\ Спокойная &$+$0,03 &$+$0,03 &$+$0,05 &$+$0,005 &$+$0,005 \\ &$-$0,02 &$-$0,02 &$-$0,03 & & \\ \hline \end{tabular} Видно, что в результате перевертывания таблица стала проще и компактнее. 8.14. Многомерная таблица Если в таблице есть три и более уровней сопоставления, то один уровень выносят в шапку таблицы, другой —в боковик, а остальные уровни оформляют разбиением таблицы на части с промежуточными заголовками. Пример: Связующее Модуль, МПа (106 дин/см2) Эластичность, % упругости эластичности Сажа Масло льняное 0,8 (8) 0,23 (2,3) 25 Олифа льняная полимеризованная 0,053 (0,53) 0,022 (0,22) 70 Пигмент желтый светопрочный Масло льняное 2 (20) 2 (20) 50 Олифа льняная полимеризованная 0,98 (9,8) 0,25 (2,5) 80 Его оформление средствами пакета nccboxes: \begin{tabular}{111r®{\enskip}lIr@{\enskip}lIcI} \hline \tc{\cbox*/-l.5/{Связующее}} & \multicolumn4{c|}{\сЬох{Модуль, МПа ($10*6$ дин/см$*2$)}} & \cbox*/-l. 5/{Эластичность, \7,} \\ \cline{2-5} & \multicolumn2{c|}{\сЬох{упругости}}
& \multicolumn2{c|}{\сЬох{эластичности}} & \\ \hline \multicolumn6{I с I}{\Strut/.7/\itshape Сажа}\\[.5ех] Масло льняное & 0,8&(8) & 0,23&(2,3) & 25 \\ \pbox [1Ь]{Олифа льняная\\полимеризованная} & 0,053&(0,53) & 0,022&(0,22) & 70 \\ \multicolumn6{I с I}{\Strut/.7/\itshape Пигмент желтый светопрочный}\\[.5ех] Масло льняное & 2&(20) & 2&(20) & 50 \\ \pbox [1b]{Олифа льняная\\полимеризованная} & 0,98&(9,8) & 0,25&(2,5) & 80 \\ \hline \end{tabular} 8.15. Таблица заданной ширины Таблица фиксированной ширины оформляется окружением tabular*. Если необходимо растянуть таблицу на всю ширину строки, то ее оформление выполняется так: \begin{tabular*}{\linewidth}{(cmoyi6^bi)} . . . \end{tabular*} В других случаях вместо переменной \linewidth указывается конкретная ширина таблицы. Для растяжения таблицы до требуемой ширины обычно используют команду \extracolsep{\f ill} в параметре спецификации @, вставляемой между столбцами таблицы. Команда \extracolsep используется для вставки дополнительного расстояния непосредственно перед всеми последующими столбцами таблицы (за исключением первого, перед которым дополнительное расстояние никогда не вставляется!). Отменить ее действие можно только с помощью другой такой же команды с нулевым расстоянием. Пример: Поле 1 Поле 2 Поле 3 Поле 4 Поле 5 Поле 1 Поле 2 Поле 3 Поле 4 Поле 5 Его оформление: \begin{tabular*}{\linewidth}{Q{\extracolsep{\fill}}*5c@{}} Поле 1 & Поле 2 & Поле 3 & Поле 4 & Поле 5 \\ Поле 1 & Поле 2 & Поле 3 & Поле 4 & Поле 5 \\ \end{t abular *} Следующий пример показывает возможность неравномерной растяжки таблицы:
ааа Поле 1 bb Поле 2 с Поле 3 dddd Поле 4 ее Текст fff Текст gg Текст h Текст Здесь между соседними столбцами каждой пары вставляется \quad, а между парами столбцов— \f ill. Оформление примера: \begin{tabular*}{\linewidth} {*4{@{\extracolsep{\fill}}cQ{\quad\extracolsep{Omm}}l}@{}} ааа & Поле 1 & bb & Поле 2 & с & Поле 3 & dddd & Поле 4 \\ ее & Текст & fff & Текст & gg & Текст & h & Текст \\ \end{tabular*} 8.16. Пакет array Пакет array из коллекции tools существенно расширяет возможности верстки таблиц. Он переопределяет «внутреннюю кухню» оформления таблиц, добавляя новые типы спецификации столбцов. Есть также небольшое отличие в формировании таблиц с линейками: если Вы подключите пакет array и перетранслируете такую таблицу, то увидите, что она стала чуть шире. Причина в том, что в стандартной версии таблиц вертикальные линии рисуются с наложением на соседние столбцы, в то время как в версии пакета array эти линии размещаются между столбцами. 1. Пакет добавляет два новых типа абзацных столбцов: ^{{ширина)} и ^{{ширина)}. Они отличаются от p-столбца методом вертикального выравнивания своего содержимого. В m-столбце пар-боксы вертикально центрируются, а в b-столбце — выравниваются по базовой линии последней строки. 2. Добавлена спецификация !{{вставка)}, позволяющая вставлять команды между столбцами, но не подавляющая вставку околостолбцовых промежутков как это делает спецификация ^{{вставка)}. 3. Добавлены спецификации >{(вставка)} и <{{вставка)}, которые должны обрамлять спецификацию определения столбца: >{} задает действия, которые будут выполняться в начале форматируемого поля, а «содействия, завершающие форматирование поля. Например, спецификация >{$}!<{$} вставляет переключатели $ в начало и конец каждого поля 1-столбца и тем самым изменяет моду форматирования поля: в таблицах, оформляемых окружением tabular, такой столбец будет обрабатываться в математической моде и, наоборот, в таблицах, оформляемых окружением array, данный столбец будет обрабатываться в текстовой моде.
4. При простом оформлении таблицы горизонтальная линия практически вплотную прижата с тексту следующей за ней строки таблицы. Для оттяжки линии от текста служит переменная \extrarowheight, задающая размер вертикального промежутка, вставляемого после горизонтальной линии. По умолчанию значение этой переменной равно нулю. 5. Перечисленные возможности иллюстрирует следующий пример: Это первый столбец таблицы Это второй столбец таблицы Это третий столбец таблицы х2 + у2 = 1 Его оформление: {\setlength{\extrarowheight}{2pt}‘/, \begin{tabular}{ I p{20mm} I >{\center ing}m{20n)m} I b{20mm} !{\vrule width 3pt}>$!<$|} \hline Это первый столбец таблицы & Это второй столбец таблицы & Это третий столбец таблицы & х~2+у~2 = 1 \\ \hline \end{tabular}} 6. Команда \newcolumntype{(cuAWo./0} [п] {(определение)} позволяет создавать новые типы столбцов и использовать их в параметре спецификации столбцов таблицы наравне со стандартными спецификациями. Здесь (символ) — некоторый неспециальный символ (например, цифра, символ пунктуации или латинская буква), п — число параметров спецификации, (определение) — команды, подставляемые вместо данной спецификации. Если спецификация имеет параметры, то в (определении) они обозначаются как #1, #2 и т.д. Например, команда \newcolumntype{M}[1]{>{\centering \let\\=\tabularnewline}m{#l}} создает спецификацию М{(ширина)}, задающую абзацный m-столбец, содержимое которого центрируется по горизонтали, а команда \\ имеет в нем старое значение, т. е. завершает строку таблицы, а не строку пар-бокса т-столбца. Новый тип, создаваемый командой \newcolumntype, не обязательно должен содержать описание одного столбца. Он может содержать и несколько столбцов, как базовых типов, так и определенных командой \newcolumntype. Например: \newcolumntype{Z}{rcl}.
7. Если команды \firsthline и \lasthline использовать вместо команды \hline соответственно в начале и в конце таблицы, то выравнивание таблицы по верхней или нижней строке будет работать правильно (использование команды \hline в этих ситуациях приводит к выравниванию по создаваемой ей линии, а не по по базовой линии строки). Переменная \extratabsurround задает минимальное расстояние между первой (последней) линией таблицы и предыдущей (следующей) строкой текста в случае, если эта таблица вложена в другую таблицу. По умолчанию значение этой переменной равно 2pt. 8.17. Другие расширения механизма генерации таблиц Здесь приводится обзор других расширений механизма генерации таблиц. Все перечисленные далее пакеты могут работать совместно с пакетом array (некоторые подгружают его автоматически). Исходные коды всех этих пакетов вместе с инструкциями к ним можно найти в подпапке source\latex дерева ТвХ-системы в виде одноименных файлов с расширением .dtx (например, пакет tabularx содержится в файле tabularx.dtx в подпапке tools). Оттранслировав такой файл в lATfTjX’e, Вы получите полную инструкцию к нему, правда на английском языке. 1. Пакет tabularx из коллекции tools определяет окружение tabularx, синтаксис которого аналогичен окружению tabular*. В описании столбцов добавлен тип X, преобразуемый в дальнейшем в р{(ширина)}, где [ширина) вычисляется так, чтобы поделить свободное пространство таблицы между Х-столбцами. Другими словами, окружение tabularx распределяет свободное пространство таблицы за счет расширения столбцов, в то время как tabular* вставляет свободное пространство между столбцами. Окружение tabularx рассчитывает ширину столбцов за несколько проходов. В связи с этим имеются небольшие ограничения в использовании команды \verb в теле такой таблицы. Допускается использование сносок внутри такой таблицы. 2. Пакет delarray из коллекции tools добавляет возможность задания ограничителей вокруг матриц, генерируемых окружением array. Расширенный синтаксис окружения: $\begin{array} [(позиция)] [л. огр.) {(столбцы)} (п. огр.) (содержимое) \end{array}$
Здесь {л. огр.) и {п. огр.) —символы, относящиеся к категории математических ограничителей (подробнее о категориях математических символов будет рассказано в гл. 9). Пример: / А В \ $\begin{array}({cc}) А & В \\ С & D у С D J \end{array}$ Если левый ограничитель не задан, окружение работает как обычный array. 3. Пакет dcolumn из коллекции tools вводит новый тип столбца: D{(ex. символ)} {{вых. символ)}{{число позиций)} с выравниванием его по некоторому символу (например, по десятичной точке), задаваемому в параметре {вх. символ). При выводе этот символ заменяется на {вых. символ). Параметр {число позиций) задает максимальное число позиций в дробной части числа. Отрицательное значение этого параметра означает неограниченное число позиций в дробной части. 4. Пакет hhline из коллекции tools определяет команду \hhline{ {описание)} используемую в том же стиле, что и \hline, но позволяющую рисовать более сложные линии между полями таблицы. Правила рисования линий задаются в параметре {описание). Подробности см. в инструкциях к пакету. 5. Пакет arydshln позволяет использовать в таблицах штриховую линовку. Загружать его следует после пакета array. Вертикальная штриховая линия задается в описании столбцов символом «:», а горизонтальная — командами \hdashline и \cdashline{(duana30H)}, — аналогами команд \hline и \cline. Если загружен пакет array, то команды \f irsthdashline и \lasthdashline используются аналогично \firsthline и \lasthline. 6. Стандартные средства генерации таблиц имеют существенное ограничение: таблица не может быть «длинной», т. е. занимающей несколько страниц. Два конкурирующих пакета—longtable из коллекции tools и supertabular — позволяют создавать длинные таблицы. Они обеспечивают сходную функциональность (можно задать заголовок, шапку и подножие частей многостраничной таблицы), но реализуют ее разными методами. В результате каждый из пакетов имеет свои преимущества и недостатки по сравнению друг с другом.
Пакет longtable определяет окружение longtable. Ширина каждого столбца остается неизменной на протяжении всех страниц, которые занимает таблица. Это можно считать достоинством данного пакета, хотя, с другой стороны, фиксация ширины столбцов усложняет верстку больших таблиц. Пакет supertabular не обеспечивает одинаковой ширины простых столбцов на протяжении всех страниц, но предоставляет больше возможностей по оформлению длинных таблиц: окружения supertabular и supertabular* работают аналогично tabular и tabular*, а окружения mpsupertabular и mpsupertabular* оформляют каждую часть таблицы на министранице, тем самым позволяя использовать сноски внутри длинной таблицы. 8.18. Команды оформления таблиц из пакета nccboxes Завершает эту главу описание команд из пакета nccboxes, предназначенных для использования в таблицах. Конечно, возможности их использования не ограничиваются только таблицами. 1. Команда \Stxut/{число}/ задает подпорку, высота и глубина которой вычисляются на основе прототипа (буквы А) следующим образом: если {число} > 0, то высота подпорки увеличивается на величину интерлиньяжа (расстояния между базовыми линиями соседних строк текста), умноженную на это число; если {число} < 0, то глубина подпорки увеличивается на величину интерлиньяжа, умноженную на модуль этого числа. Например, \Strut/l/ вставляет подпорку, высота которой превышает высоту буквы А на высоту одной строки. В параметре команды \Strut можно также использовать размер, а не число (например, \Strut/2nun/). Команда \Strut без параметра эквивалентна команде \Strut/0/. 2. Команды \tstrut, \bstrut, \tbstrut вставляют подпорки, высота и/или глубина которых превышает размеры буквы А на специальную величину. Эта величина вычисляется так, чтобы полная высота (высота 4- глубина) подпорки \tbstrut была в 1,5 раза больше величины интерлиньяжа. Подпорка \tstrut увеличивает высоту, \bstrut —глубину, \tbstrut —высоту и глубину. 3. Команды \cbox/ {число} / [{позиция}] {{текст}} \сЪох*/{число} / [{позиция}] {{текст}}
создают бокс, содержащий одностолбцовую таблицу. Высота и глубина бокса увеличиваются с помощью подпорок \tstrut в начале и \bstrut в конце тела таблицы. Горизонтальное выравнивание (1, с или г) внутри столбца и вертикальное выравнивание относительно подпорки (t, с или Ь) задаются параметром (позиция). По умолчанию используется центрированное выравнивание. Результирующий бокс вертикально выравнивается относительно подпорки \Stxut/(число)/ с помощью команды \jvbox. Команда \cbox* дополнительно обнуляет высоту и глубину результирующего бокса (используется для оформления многострочных полей таблиц). Параметр /(число)/ не обязателен. Он может также содержать размер, а не число. Примеры использования команды \cbox* в многоярусных шапках таблиц (обрамление таблицы не приводится): \cbox*/-l.5/{Поле 1} & \сЬох{Поле 2}\\ \cline{2-2} & \сЬох{Поле 3} Поле 1 Поле 2 Поле 3 Поле 1 из трех строк Поле 2 Поле 3 Поле 1 Поле 2 Поле 3 двухстрочное Поле 1 Поле 2 Поле 3 Поле 4 \cbox*/-l.5/{Поле 1\\из трех\\строк} & \cbox/.25/{Поле 2}\\ \cline{2-2} & \cbox/.25/{Поле 3} \cbox*/-2.5/{Поле 1} & \сЬох{Поле 2}\\ \cline{2-2} & \сЬох{Поле 3\\двухстрочное} \сЬох*/-3/{Поле 1} & \сЬох{Поле 2}\\ \cline{2-2} & \сЬох{Поле 3}\\ \cline{2-2} & \сЬох{Поле 4} 4. Команда \Ъс{(поле)} используется для центрирования поля таблицы по горизонтали. Совместно с командой \cbox она используется так: \tc{\cbox{ (текст)}}.
Глава 9 Верстка математических формул В Т^Х’е различаются два типа формул: строчные и выносные. Строчные формулы могут использоваться в любом месте документа, где можно размещать обычный текст, и обрабатываются наравне с другими текстовыми элементами. Выносные формулы оформляются в виде выносных элементов и могут применяться в основном тексте и в вертикальных боксах. Оформлению выносных формул посвящена гл. 10. Строчные формулы можно оформлять любым из следующих способов: $ (формула) $ \( (формула) \) \begin{math} (формула) \end{math} Первый вариант наиболее прост и, к тому же, команда $ крепкая, т. е. не нуждается в защите при ее использовании в перемещаемых параметрах. В отличие от нее команды \ ( и \ ) — хрупкие, но позволяют контролировать начало и конец строчной формулы. Третий вариант оформления применяется крайне редко в силу его громоздкости. Строчная формула образует блок, т. е. ограничивает область действия деклараций внутри нее. Команды, описываемые в этой главе, могут использоваться только в математической моде. Все они, за исключением особо оговариваемых случаев, являются крепкими. Пробелы в математической моде игнорируются. 9.1. Математические стили В TfeX’e имеется четыре стиля оформления математических формул1: \displaystyle \textstyle \scriptstyle — стиль, применяемый в выносных формулах; — стиль, применяемый в строчных формулах; — стиль, применяемый в индексах; гНа самом деле есть восемь стилей оформления математических формул, но заказывать можно только четыре основных стиля. У каждого из основных стилей есть сжатый вариант, который применяется вместо основного в нижних индексах и в знаменателях дробей.
\scriptscriptstyle — стиль, применяемый в индексах второго уровня и выше. Все перечисленные команды являются декларациями. Их можно использовать в математической моде для изменения стиля оформления формул или их частей. При оформлении формул используются шрифты трех размеров: текстового (в стиле \textstyle), индексного (в стиле \scriptstyle) и индексно-индексного (в стиле \scriptscriptstyle). Текстовый размер совпадает с размером окружающего текста, индексный —мельче, а индексно-индексный—еще мельче. Оформление формул в стиле \displaystyle особое: • математические символы выводятся в текстовом стиле; • специальные математические символы типа в выносном стиле крупнее, чем в текстовом; • числитель и знаменатель дробей оформляются в текстовом стиле, в то время как в остальных стилях происходит уменьшение размера шрифта при оформлении дробей. 9.2. Ожирнение математических символов TATgX предоставляет два варианта математических шрифтов: нормальный и ожирненный. Выбор версии шрифтов выполняется вне математической моды декларацией \mathver s ion{ (версия)} Здесь (версия) — normal или bold. При смене версии изменяется жирность тех математических шрифтов, которые представлены в двух вариантах. На текстовые шрифты действие этой команды не распространяется. Пример: math, mathrm, mathbf, mathit, $math$, $\mathrm{mathrm}$, mathsf, mathtt, x2 -I- y2 = 1 $\mathbf {mathbf }$, $\mathit{mathit}$, $\mathsf{mathsf}$, $\mathtt {mathtt }$, $x~2+y~2=l$ math, mathrm, mathbf, mathit, {\mathversion{bold} $math$, mathsf, mathtt, x2 + y2 = 1 $\mathrm{mathrm}$, $\mathbf {mathbf }$, $\mathit{mathit}$, $\mathsf{mathsf}$, $\mathtt{mathtt}$, $x~2+y~2=l$}
Если требуется ожирнить не всю формулу, а только отдельные символы, загрузите пакет Ьш и воспользуйтесь командой \Ъть{{формула}} в математической моде. Пример: Ах = b, а = (ai,..., ап) $\bm{Ax} = \bm{b}$, $\bm\alpha = (\alpha_l,\ldots,\alpha_n)$ 9.3. Специальные математические шрифты В прил. Г на с. 348 представлены символы специальных математических шрифтов, вызываемых командами \math... {{символы}} в математической моде: • Шрифт Blackboard Bold $\mathbb{BLACKBOARD\ BOLD}$ —> BLACHCBOAIRD BOLD Содержит прописные буквы латинского алфавита. Подгружается пакетом amsfonts из коллекции amsfonts. • Стандартный рукописный шрифт $\mathcal{CALLIGRAPHIC}$ —> CACCIQUAP'HIC Содержит прописные буквы латинского алфавита. • Шрифт Ralph Smith’s formal script (RSFS) $\mathrsfs{CALLIGRAPHIC}$ —> Содержит прописные буквы латинского алфавита. Подгружается пакетом calrsfs и подменяет рукописный шрифт на RSFS. Чтобы отказаться от подмены шрифта \mathcal, загружайте пакет так: \let\CMcal=\mathcal \usepackage{calrsfs} \let\mathcal=\CMcal • Шрифт Euler Script $\mathscr{EULER\ SCRIPT}$ —> £U££ft SCW Содержит прописные буквы латинского алфавита. Подгружается пакетом eucal из коллекции amsfonts. По умолчанию рукописный шрифт заменяется на Euler Script, но если при загрузке пакета задать опцию mathscr, то рукописный шрифт остается без изменений, а для шрифта Euler Script создается команда \mathscr.
• Шрифт Euler Fraktur $\mathf rak{EULER\ FRAKTUR}$ —> Содержит все символы ASCII (строчные и прописные буквы латинского алфавита, цифры, специальные символы). Подгружается пакетом amsfonts или eufrak из коллекции amsfonts. Все перечисленные шрифты, кроме \mathbb и \mathrsfs, доступны как в нормальной, так и в ожирненной версии. 9.4. Категории математических символов Высокое качество формул, обеспечиваемое Т^Х’ом, получается благодаря тому, что все математические символы подразделяются на категории, характеризующиеся величинами отступов между их элементами при выводе. Для каждой категории математических символов в ТцХ’е имеется команда вида \math... {{формула}}, позволяющая вывести {формулу} по правилам, установленным для этой категории, т. е. добавить в начало и конец {формулы} пробелы, характерные для символов данной категории. Далее перечисляются эти команды и соответствующие им категории (в скобках перечисляются образцы математических символов указанной категории): \mathbin — бинарная операция (+, -, \times и т.д.); \mathclose — символ закрывающей скобки (], ) и т.д.); \mathinner — внутренний элемент (многоточия); \mathrel — отношение (<, >, = и т.д.); \mathop — математический оператор (\sum, \sin и т.д.); \mathopen — символ открывающей скобки ([, ( и т.д.); \mathord — простой символ (а, \alpha, \forall и т.д.); \mathpunct — символ пунктуации (, и ;). Если математическая формула заключена в фигурные скобки, она рассматривается Т^Х’ом как простой символ. Пустой блок {} также считается простым символом. Элемент категории \mathop имеет особенности в оформлении идущих следом индексов: индексы, записанные после математического оператора, могут выводиться как над и под элементом, так и обычным образом.
Правила вывода индексов для конкретного оператора установлены заранее. Так у оператора \surn индексы размещаются над и под суммой в стиле \displaystyle и рядом с суммой в других стилях. В то же время у оператора \sin оформление индексов всегда обычное. Можно изменить правила вывода индексов с помощью команды \limits, устанавливающей стиль вывода над и под элементом, команды \nolimits, задающей обычный стиль вывода индексов, и команды \displaylimits, работающей как \limits в выносном стиле и как \nolimits в других стилях. Эти команды обычно пишут сразу после математического оператора. 9.5. Базовые математические конструкции 1. В прил. Г на с. 349-353 приводятся команды математических акцентов и математических символов. Много полезных математических символов имеется в пакете amssymb из коллекции amsf onts. Этот пакет автоматически подгружает пакет amsfonts, определяющий некоторые базовые команды работы со шрифтами коллекции (например, \mathfrak, \mathbb), а также создающий некоторые дополнительные символы, которые при переходе от IAT^X-2.09 к lAT^jX 2е были вынесены в отдельный пакет latexsym. Поэтому последний пакет не нужен, если используется пакет amsfonts. Если необходимо поставить математический акцент над буквой i или j, то вместо этих букв следует использовать их варианты без точки: команды \imath и \jmath. Например, символ г был набран так: $\ddot\imath$. 2. Символы-разделители, приведенные на с. 353, 354, используются в параметре команд выбора размера разделителя. Имеется две парные команды (\left и \right) и 16 одиночных команд, создающих разделители четырех категорий в четырех размерах. Обычно парные команды применяют при обрамлении громоздких математических формул, например, матриц. В небольших формулах лучше применять непарные команды управления размером по следующим причинам: • парные скобки обычно оказываются больше, чем требуется; • размеры парных разделителей «плывут» (небольшое изменение высоты содержимого приводит к резкому изменению размеров парных разделителей); • промежутки между фрагментом формулы, обрамленным парными разделителями, и соседними с ним частями формулы существенно больше, чем при обрамлении непарными разделителями;
• парные разделители должны принадлежать одному блоку, что осложняет их использование в многострочных формулах. Следующие примеры демонстрируют недостатки команд \left и \right по сравнению с непарными командами управления размером разделителей: р\ 1/р ai 1/p $\displaystyle \left(\sum_i a_i\leftI\sum_j x_{ij} \right|~p\right)~{l/p}$ УТai УТ Xii i j $\displaystyle \Biggl(\sum_i a_i\biggl|\sum_j x_{ij} \biggr|~p\Biggr)~{l/p}$ 3. Если требуется обрамить формулу парным разделителем только с одной стороны, то с другой стороны надо поставить фиктивный парный разделитель, который задается символом точки. Пример: $f(x)=\left\{ \begin{array}{@{\,}r@{\quad}l@{}} -1, & x<0,\\ 1, & x\ge 0. \end{array}\right.$ 4 4. При использовании непарных команд выбора размера разделителя можно руководствоваться следующими простыми правилами: • Разделители размера \big используются для обрамления формул с индексами, например, f • Если формула громоздкая и содержит несколько внутренних формул, то внешние разделители можно оформлять размером \Big. Пример: Vij — {хг-1/2 < х < xi+l/2> Vj-1/2 < У < Z/j + 1/2^- • Формулу, содержащую дроби, в стиле \di splay style обрамляйте разделителями размера \bigg. Пример: = < s G : B(s, б) С (1 Здесь можно уменьшить размер разделителей до \Big. • Наконец, формулу, содержащую математические операторы переменного размера (\sum, \int, \prod и т.д.), в стиле \displaystyle обрамляйте разделителями размера \Bigg или \bigg.
ЛГ(4) = е X | Ах = о} 5. Варианты разделителей одинакового размера (например, \bigg, \biggl, \biggr, \biggm) надо использовать в соответствии со смыслом формулы: \biggl — слева, \biggr — справа, \biggm—в середине, \bigg — в остальных случаях. Примеры: $N(A) = \Bigl\{x\in X \bigm| Ax=O\Bigr\}.$ $\displaystyle — I — 0. \frac{\partial u}{\partial x} 9a:lt=0 \Big|_{t=O} = 0.$ Сравните, что будет если выбраны неверные варианты разделителей (слева—правильные разделители \biggl и \biggr, справа—оба разделителя \bigg): f( \ ( (Х~а)2\ х ( (* - а)2 /(ж) = exp I---^2— I, /(х) = exp I----- Видно, что знак минус в последнем случае существенно дальше отстоит от дроби и открывающей скобки. Из-за того, что идущий перед ним разделитель интерпретируется как простой символ, ТцХ «решил», что минус — это бинарная операция, а не знак перед дробью. 6. Пакет amsmath предоставляет много дополнительных математических конструкций, упрощающих набор сложных математических формул. Основные конструкции приведены на с. 354-363. В дополнение к ним в гл. 10 описаны средства подготовки выносных формул, предоставляемые пакетом. В коллекции amsmath наряду с пакетом amsmath есть еще несколько других пакетов: amsgen — «внутренняя кухня» коллекции (подгружается автоматически); amstext — определяет команду \text, используемую для вставки текста в математические формулы (подгружается автоматически); amsbsy — создает команды \boldsymbol{(cuAtea/i)}2 и \pmb{(символ)}3, предназначенные для ожирнения символов (подгружается автоматически для совместимости с предыдущими версиями пакета amsmath); 2 Команда \boldsymbol считается устаревшей. Вместо нее рекомендуется использовать команду \bm из пакета bm. 3Команда \prnb, называемая «poor man’s bold», используется для ожирнения символа при отсутствии его жирной версии. Она создает ожирнение методом двойной пропечатки символа со сдвигом.
amsopn — усовершенствует команды вывода математических функций (см. с. 357), добавляет несколько новых функций и средства генерации математических функций (подгружается автоматически); amsxtra — создает команды акцентов в верхнем индексе (см. с. 349), а также команду \асcentedsymbol{(wjvtaHf?a)}{(символ с акцентом)} позволяющую запомнить символ с акцентом в виде команды « 4 и использовать его в дальнейшем для ускоренного вывода , amscd — создает окружение CD для оформления простых коммутативен ных диаграмм0. 7. В коллекции amsmath есть еще пакет amstex. Он содержит средства всех перечисленных выше пакетов, собранные в одном файле. Поэтому его нельзя использовать совместно с другими пакетами данной коллекции. По возможностям пакет amstex несколько отличается от amsmath. Например, у команды \frac в пакете amstex есть дополнительный параметр, позволяющий задавать толщину разделительной линии в дроби. Имеется также команда \fracwithdelims, обрамляющая дробь символами-ограничителями. Зато в пакете amsmath есть команда генерации дробей \genfrac, обеспечивающая те же возможности, что и перечисленные выше команды4 5 6. Пакет amstex считается устаревшим. Вместо него следует использовать пакет amsmath. 8. Интересное решение предлагается в пакете amsmath для вставки горизонтального многоточия в формулу. Команда \dots автоматически выбирает нужный вариант многоточия (вдоль базовой или средней математической линии) и обеспечивает правильный отступ между многоточием и идущей следом частью формулы. Поэтому в статьях на иностранном 4Эта команда уже не актуальна для современных компьютеров. 5 Я не описываю в книге средства этого пакета, поскольку они слишком специализированы. Прочитать о них можно в файле doc\latex\amsmath\amsldoc . dvi. 6Для совместимости с пакетом amstex код определения команды \fracwithdelims добавлен в пакет amsxtra, но добавлен неправильно. Вместо того, чтобы создавать эту команду, когда пакет amstex незагружен, команда создается, когда amstex уже загружен, что бессмысленно, поскольку в пакете amstex эта команда и так имеется.
языке можно использовать команду \dots практически всюду в тексте документа (как в текстовой, так и в математической моде), а специализированные варианты многоточия нужны только в случае, если многоточие заканчивает формулу. Сравните: i = 1,2,..., $i=l,2,\ldots$, \\ г = 1,2,..., $i=l ,2,\dotsc$, Видно, что в первом случае запятая слишком притянута к многоточию. Второй вариант предпочтительнее, но можно обойтись и командой \ldots, если после нее поставить пустой блок: i = 1,2,..., $i=l,2,\ldots{}$, 9. Команда \зтазЪ{{формула)} обнуляет высоту и глубину формулы. Она обычно используется в следующих ситуациях: чтобы, например, избавиться от разрядки между предпоследней и короткой последней строками абзаца, если в предпоследней строке есть формула, сильно выступающая вниз; чтобы устранить нежелательную глубину или высоту символа, например, в подкоренных выражениях (см. с. 361). Фантомы (см. с. 362) обычно используются двояко: \vphantom—в качестве подпорки в формулах; \hphantom—для выравнивания строк многострочных выносных формул, если обычных способов выравнивания недостаточно (подробнее об этом в гл. 10). Полный фантом \phantom используется редко. 10. Пакет amsmath предоставляет много вариантов оформления матриц (см. с. 362). Обычно их вполне достаточно. Если же требуется оформить сложную матрицу, то используйте окружение array (синтаксис окружения описан в гл. 8, а примеры оформления матриц приведены в гл. 10). 11. Если дробь встречается в тексте абзаца, то она получается очень мелкая: Если же увеличить дробь с помощью команды \displaystyle, а Н- Ъ то она получается очень крупная: ---. Промежуточный размер дроби в х + у lATgX’e отсутствует. Решить эту проблему Вам поможет пакет nccmath, расширяющий возможности пакета amsmath. В нем добавлены команды оформления математических операторов и дробей среднего размера (см. с. 356). Сравните дробь, полученную командой \mfrac из пакета nccmath: х + у
Если сравнить правила отечественной полиграфии со стандартами, предлагаемыми lATgX’oM, то наиболее соответствуют этим правилам математические операторы (знаки интеграла, суммы и др.) и дроби, размер которых крупнее, чем в режиме \textstyle, но мельче, чем в \displaystyle. Такого оформления можно добиться, если заказать опцию mediummath при загрузке пакета nccmath. Если Вы используете класс псс, то закажите эту опцию в опциях команды \documentclass. 9.6. Точка или запятая в десятичных числах? TATgX ориентирован на английские стандарты набора десятичных чисел: дробная часть отделяется от целой десятичной точкой, а запятая используется для разделения разрядов многозначных чисел группами по три. Пример: 123,456,789.12334. Отечественные правила предполагают иное использование пунктуации в десятичных числах: дробная часть числа отделяется от целой части запятой, а группы разрядов числа разделяются узким пробелом \». Пример: 123 456 789,123 34. Такой способ набора чисел подходит для текстовой моды, но в математической моде после запятой получается дополнительный пробел: 123 456 789,123 34. В результате создается впечатление, что это не одно число, а два, разделенных запятой. Чтобы убрать в математической моде этот пробел, заключите запятую в фигурные скобки: $123\,456\,789{,}123\,34$. Если документ содержит много десятичных дробей, оформляемых в математической моде, то в качестве разделителя целой и дробной частей 7 десятичного числа проще использовать точку, а не запятую . Возможно и другое решение: переопределить математическую категорию запятой, чтобы она перестала быть символом пунктуации. Но при этом Вы больше потеряете, чем приобретете, поскольку запятая в математических формулах очень часто используется как символ пунктуации (например, как разделитель аргументов функций многих переменных). Третье решение — сделать «умную» запятую, которая сама будет решать вставлять пробел или нет. Есть два пакета, которые обеспечивают такие возможности: пакет icomma из коллекции was и пакет псссошша из коллекции ncctools. При использовании первого пакета запятая будет символом пунктуации, если после нее явно вставить пробел, а в остальных 7В журнале СибЖВМ используется десятичная точка по причине, что журнал содержит статьи как на русском, так и на английском языках, а правила оформления статей должны быть едины для всего журнала.
случаях запятая будет простым символом. При использовании последнего пакета, наоборот, запятая будет простым символом, если после нее идет десятичная цифра, а в остальных случаях она будет интерпретироваться как символ пунктуации. Пакет ncccomma проще в использовании, поскольку единственный случай, где будет необходим пробел после запятой —это перечисление чисел (например, в формуле г = 1,2,..., п). 9.7. Грамотная верстка математических формул 1. Все без исключения строчные математические формулы оформляйте в математической моде. Даже если формула не содержит математических команд, все равно ее следует заключить в доллары! Если Вы этого не сделаете, то формула будет выведена текстовым шрифтом, который существенно отличается от формульного. 2. Независимые формулы должны оформляться независимо. Если знак препинания разделяет независимые формулы, то эти формулы должны оформляться отдельно, а знак препинания должен быть вне формул. Примеры: Пусть X, Y — гильбертовы простран- Пусть $Х$, $Y$~-гильбертовы ства. пространства. Рассмотрим функции Д, • ••, /п- Рассмотрим функции \ldots, 3. Формулы подчиняются тем же правилам грамматики, что и обычный текст. Например, формулы могут быть придаточными предложениями. Чтобы понять, как расставлять знаки препинания, попробуйте прочитать предложение с формулой вслух. Тогда сразу станет ясно, какую роль играет формула в тексте предложения. Пример: Пусть Xi, i = 1,...,т, — банаховы Пусть $X_i$, $i=l ,\dots ,m$, ~- пространства. банаховы пространства. Здесь формула «г = 1,..., т» — уточнение, поэтому ее надо выделять запятыми. 4. Не разбивайте одну формулу на части. Пример: Пусть х,у Е X — произвольные эле- Пусть $х,у \in Х$~-- менты. произвольные элементы. Здесь запятая не разделяет формулу на две.
5. Чем меньше фигурных скобок в формуле, тем лучше. При наборе формул старайтесь использовать как можно меньше фигурных скобок, поскольку это существенно упрощает отладку документа и увеличивает «читабельность» формул. Кроме того, фигурные скобки в формуле, не являющиеся ограничителями параметра команды, изменяют категорию содержащейся в них подформулы, что приводит к неправильным промежуткам между элементами формулы! Обычно начинающий пользователь всегда заключает индексы в формулах в фигурные скобки. Это совсем не обязательно делать, если индексы состоят из одиночных символов или команд, не имеющих параметров. Например, вместо j}$ можно написать просто $x_i~j$. Еще пример: $x_{\alpha}$ —> $x_\alpha$. Однако команду типа \rnax в индексе надо заключать в фигурные скобки: $1_{\шах}$. 6. Символ конца предложения относится к тексту, а не к формуле. Поэтому символ конца предложения необходимо выносить за пределы строчной формулы. В документах, использующих английскую полиграфическую традицию, после символа конца предложения пробел увеличен. Помещая символ конца предложения внутрь формулы, Вы уменьшаете этот пробел. 7. Круглые скобки должны быть прямого начертания. Поэтому ссылка на формулу всегда должна оформляться прямым шрифтом. Ссылка, не обрамляемая круглыми скобками, должна быть того же начертания, что и окружающий текст. Пример: Из теоремы 2.3 и формулы (2.3.5) \itshape Из теоремы~2.3 и формулы следует... $(2.3.5)$ следует Простой способ сделать круглые скобки прямыми — оформить их в математической моде. Однако надо с осторожностью использовать этот прием, поскольку начертания круглых скобок в математической моде могут отличаться от их начертания в текстовой моде, особенно если используются нестандартные гарнитуры шрифтов. Лучший способ оформления ссылки на формулу—использование команды \eqref из пакета amsmath. 8. В международном обозначении микроединиц (10~6) символ ц должен быть того же начертания, что и окружающий текст. Его следует оформлять командой \textmu из пакета textcomp, а не математической командой \mu. Для оформления международного обозначения единиц Ом используйте команду \textohm из этого же пакета, а не математическую команду \0mega.
9. Единицы измерения физических величин должны оформляться в текстовой моде. Если единица измерения содержит большое число математических элементов, то лучше всего оформить ее как единую формулу, а текстовые единицы измерения внутри оформить командой \text или \mbox. Примеры: 35 Н• м2/кг 35~$\mbox{H}\cdot\mbox{M}~2/\mbox{Kr}$ 35 N • m2/kg, 35~N${}\cdot{}$m$~2/$kg В последнем варианте использовалось альтернативное оформление. Обратите внимание на пустые блоки вокруг команды \cdot. Они интерпретируются как пустые математические символы и в результате вокруг точки, генерируемой командой \cdot, вставляются правильные пробелы. Символ «/» можно оформлять и вне математической моды. Но в этом случае он будет чуть тоньше. 10. Градусы Цельсия и Фаренгейта оформляют командой \circ в верхнем индексе, прижатой к следующей за ней букве, оформляемой в текстовой моде. От предшествующего числового значения эту конструкцию отделяют узким пробелом. Пример: 273 К, -20°C, 32°F 273~К, $-20\,~\circ$C, 32\,$~\circ$F Для оформления градусов Цельсия можно также использовать команду \textcelsius из пакета textcomp, но она дает более мелкий символ градуса: °C. 11. Символы градуса, минуты и секунды в градусной мере угла оформляют слитно. Пример: 45°, 15°50'30" 45$~\circ$, $15~\circ 50’ 30”$ 12. Знак дифференциала, приращения и частной производной отделяют от предыдущей формулы узким пробелом. Примеры: f{x)dx, ж Дж, дх ду $\displaystyle \int_a~b f(x)\,dx, \quad x\,\Delta х, \quad \frac{\partial~2u} {\partial x\,\partial y}$
13. Символы плюс и минус играют в математических формулах двоякую роль: как простые знаки перед формулой и в качестве бинарных операций. Т^Х считает такой символ бинарной операцией, если с обоих сторон от него есть элементы, используемые в бинарных операциях. В противном случае он интерпретирует такой символ как простой. Примеры: 1) (—2х — т/), 2) — ж, 3) —ж, 1)~$(-2х-у)$, 2)~$-х$, 3)~${}-х$, 4) я+, 5) х + 4)~$х+$, 5)~$х+{}$ В первом примере первый знак минус интерпретируется как простой символ, поскольку перед ним идет открывающая скобка. Во втором и четвертом примерах, знаки минус и плюс интерпретируются как простые символы, поскольку с одной из сторон от этих знаков символ отсутствует. Добавление пустого блока в третьем и пятом примерах превращает эти символы в бинарные операции. Данное правило относится не только к символам плюс и минус. Любой символ категории \mathbin и \mathrel ведет себя как простой символ, если хотя бы с одной из сторон от него символ либо отсутствует, либо имеет не характерную для такой операции категорию. 14. \vert или \rnid ? Символ вертикальной черты (\vert или просто I) и символ, генерируемый командой \rnid, имеют одинаковое начертание, но разную категорию. Поэтому пробелы вокруг этих символов различаются. Символ \rnid используют в определении множеств для разделения описания элементов и условий их выбора. Еще символ \rnid применяют в функции условной вероятности для разделения событий. Примеры: ^(4) — {х £ X I Ах — $N(A)=\{x\in X\mid Ax=0\}$ Р(А | В) $Р(А \rnid В)$ В остальных случаях используют символ вертикальной черты. Если необходимо создать вертикальную черту той же категории, что и \rnid, но имеющую увеличенный размер, то используют конструкцию типа \bigml. Вертикальную черту также применяют при оформлений следа функции. Примеры: $N(A)=\bigl\{x\in X\bigm| Ax=0\bigr\}$ $\displaystyle \frac{\partial u}{\partial x} \Big|_{y=O}$ W(4) = {z e X | Ax = 0} ди I dx L=o
15. \backslash или \setminus? Если Вам нужна обратная косая черта в текстовой моде, то используйте команду \textbackslash. В математической моде обратная косая черта применяется в операции вычитания множеств. Для нее следует использовать команду \setminus. Однако если требуется увеличить размер такой команды, то используйте команду \backslash в сочетании с командой изменения размера разделителя. Примеры: А\В $А \setminus В$ $\displaystyle I Г| A I \ I И В 1 \Biggl(\big€up_{i=l}~m A_i\Biggr) / \ / \biggm\backslash J \Biggl(\bigcup_{j=l}~n B_j\Biggr)$ 16. \cup (\cap) или \bigcup (\bigcap) ? Команды \cup и \cap используют, соответственно, для обозначения операции объединения и пересечения двух множеств. Пример: АП (В U С) $А \сар (В \сир С)$ Команды \bigcup и \bigcap используются совсем в другом контексте. Они задают объединение и пересечение множеств, указанных следом, и содержат индексы (см. пример из предыдущего подп.). Пользователи часто используют \bigcup и \bigcap вместо \сир и \сар, поскольку последние слишком мелкие. Но большие версии имеют совсем другую категорию и пробелы в формуле оказываются неверными. Если же Вы хотите увеличить размер команд \сир или \сар и обеспечить правильные пробелы, то поступайте так: A J В $А \mathbin{\textstyle\bigcup} В$ 17. Некоторые часто употребимые команды: • оператор Лапласа—\Delta (А); • оператор градиента—\nabla (V); • символ приращения—\Delta (А); • пустое множество—\empt у set (0) или \varnothing (0); • намного меньше—\11 (<С); • намного больше—\gg (^>).
18. Использование скобок. В математических формулах в первую очередь используют круглые скобки ( ), во вторую — квадратные [ ], в последнюю—фигурные { }. Допускается использовать несколько вложенных скобок одинакового начертания, но разных размеров. 19. Согласно отечественным правилам технического набора [И], в математических формулах в основном применяют многоточия, идущие вдоль базовой линии формулы (\ldots). При этом символ математической операции повторяют до и после многоточия (ai + «2 + ... + ап)- Многоточие, идущее вдоль математической линии формулы (\cdots), применяют как сокращение в произведении элементов (aia2*--an). При этом до и после многоточия знак умножения не пишут. 20. В качестве символа умножения в формуле используют команду \cdot (•). Эту команду ставят в тех случаях, когда ее отсутствие может привести к искажению смысла формулы. Например: • перед числовым сомножителем: 35 • 0,18, а • 5; • для выделения какого-нибудь множителя: 2 • Зху • г; • в скалярном произведении векторов: а • Ь; • между аргументом тригонометрической функции и буквенным обозначением: a sin я • bcosy. Команду \cdot как знак умножения не ставят в тех случаях, когда многозначная интерпретация формулы невозможна. Например: • перед буквенными обозначениями: Зас, ас; • перед скобками и после них: 4(а + Ь)(с — d); • перед дробными выражениями и после них: • между множителем и тригонометрической функцией: asinectf. Формулы желательно преобразовать так, чтобы уменьшить в них число знаков умножения.
Выносные математические формулы 10.1. Стандартные средства оформления 1. Выносная ненумерованная формула в ЬМГцХ’е оформляется с помощью любой из следующих эквивалентных конструкций: \[ (формула) \] \begin{displaymath} (формула) \end{displaymath} а нумерованная—окружением \begin{equation} (формула) \end{equation} 2. В выносных формулах для нумерации применяется счетчик equation, стиль вывода которого зависит от класса подготовки документа: в классе article нумерация простая, а в классе book и report — двойная (номеру формулы предшествует номер главы). В любом месте нумерованной формулы с помощью команды \label можно поставить метку, чтобы в тексте документа сослаться на нее. Для ссылки на метку формулы лучше применять команду \eqref из пакета amsmath (см. с. 41). 3. Многострочная выносная формула или группа формул оформляются с помощью окружений \begin{eqnarray} (формулы) \end{eqnarray} \begin{eqnarray*} (формулы) \end{eqnarray*} первое из которых используется для вывода нумерованных формул, а последнее—для ненумерованных. Многострочная формула выводится в три столбца. Ее строки отделяются друг от друга командой \\ (или командой \\*, если требуется в этом месте запретить разбивку страницы), а каждая строка может состоять из трех полей, разделяемых символами &, причем первый столбец формулы выравниваются по правому краю, последний — по левому, а средний — центрируются. Первый и третий столбцы оформляются в стиле \displaystyle, средний — в \textstyle. Расстояния между столбцами многострочной формулы такие же, как у окружения array (2\arraycolsep).
4. Чтобы отказаться от нумерации какой-либо строки нумерованной многострочной формулы, поставьте в любом ее месте (до команды \\) команду \nonumber. Ссылка на нумерованную многострочную формулу оформляется обычным образом с помощью метки, устанавливаемой командой \label, которую можно задать в любом месте формулы. Метке присваивается номер первой из нумерованных строк формулы1. 10.2. Дополнительные возможности Пакет amsmath существенно расширяет возможности оформления выносных формул. Фактически ни одна математическая статья сейчас не обходится без использования этого пакета. 1. Все окружения, предназначенные для оформления выносных формул, имеют две формы: основную и *-форму. В основной форме используется автоматическая нумерация уравнений с помощью счетчика equation. В *-форме автоматическая нумерация не используется. Для подавления нумерации формулы в основном окружении можно использовать команду \nonumber или эквивалентную ей команду \notag. Номер выносной формулы можно изменить с помощью команды \tag{(HOAtep)}, поставив ее внутри формулы. При этом счетчик equation не изменяется. Например, команда \tag{A} задает номер (А) (круглые скобки добавляются автоматически). На этот номер можно в дальнейшем ссылаться, если поставить в формуле метку. Команда \tag имеет *-форму, задающую номер формулы в том виде, который указан в ее параметре (без добавления круглых скобок). Команды \tag и \tag* можно использовать как в основных окружениях, так и в окружениях со звездочкой. 2. Добавлено окружение \begin{equation*} {формула) \end{equation*} оформляющее однострочную ненумерованную выносную формулу. 3. Окружения \begin{multline} {многострочная формула) \end{multline} \begin{multline*} {многострочная формула) \end{multline*} ХВ окружении eqnarray нельзя создать метки, ссылающиеся на разные номера многострочной нумерованной формулы. В пакете nccmath эта недоработка устранена.
оформляют одиночную многострочную формулу, разбитую на строки командой \\. Первая строка такой формулы прижата влево, последняя — вправо, остальные—центрируются по горизонтали. Отступы от краев для первой и последней строк формулы задаются переменной \multlinegap, а минимальная ширина номера формулы — переменной \multlinetaggap. По умолчанию значения этих переменных равны lOpt. Метку можно ставить в любом месте нумерованной формулы. Команду \notag—тоже. В последнем случае окружение mult line будет работать как его *-форма. Номер формулы размещается в последней строке формулы прижатым вправо. Если в классе документа заказана опция leqno, то номер формулы размещается в первой строке прижатым влево. Среднюю строку формулы можно прижать влево или вправо, если оформить ее как параметр команды \shoveleft или \shoveright. Пример: (10-1) \begin{multline} \framebox[.4\columnwidth]<A}\\ \framebox[.6\columnwidth]<B}\\ \shoveleft{ \framebox[.6\columnwidth]{C}}\\ \framebox[.4\columnwidth]<D} \end{multline} 4. Окружения \begin{gather} (формулы) \end{gather} \begin{gather*} (формулы) \end{gather*} оформляют несколько однострочных формул, каждая из которых центрируется по горизонтали. Каждая формула может иметь собственный номер и метку. Формулы, как обычно, разделяются командой \\. 5. Окружения \begin{align} (формулы) \end{align} \begin{align*} (формулы) \end{align*} оформляют группу формул с выравниванием по столбцам. Каждая формула разбивается на две части, между которыми ставится символ &. Точка разбиения формул используется для выравнивания: левая часть формулы прижимается вправо по этой точке, а правая — влево. Это соответствует спецификации rl в описании столбцов (для сравнения, окружение eqnarray оформляет столбцы по спецификации rcl).
В каждой строке можно задать более одной точки выравнивания, т. е. оформить несколько групп формул, каждая из которых выровнена отдельно. Пример: bi = qn — Q22, &2 = #21 — <712, Ьз = <721<712, (10.2) С1 = Г1, С2 = Г2, Сз = Г? - г|. (10.3) Его оформление: \begin{align} b_l&=q_{ll}-q_{22}, &b_2&=q_{21}-q_{12}, &b_3&=q_{21}q_{12},\\ c_l&=r_l~2, &c_2&=r_2~2, &c_3&=r_l~2-r_2~2. \end{align} В этом примере используется три группы формул. Каждая группа состоит из двух столбцов с выравниванием их по символу =. Расстояния между группами формул выбираются автоматически. 6. Чтобы максимально раздвинуть группы формул при выравнивании, воспользуйтесь окружениями f lalign и f lalign*, имеющими тот же синтаксис, что и align. Тот же пример: Ь1 = <711 — <722, Ъ2 = <721 - <712, Ьз = <721(712, (Ю.4) С1 = Г1, С2 = г|, с3 = Г1 - Г2- (10.5) Его оформление: \begin{flalign} b_l&=q_{ll}-q_{22}, &b_2&=q_{21}-q_{12}, &b_3&=q_{21}q_{12},\\ c_l&=r_l~2, &c_2&=r_2~2, &c_3&=r_l~2-r_2~2. \end{flalign} 7. Если Вы хотите задавать расстояния между группами формул вручную (внутри формулы командами \quad, \qquad и т. д.), используйте окружения \begin{alignat} {п} (формулы) \end{alignat} \begin{alignat*}{n} (формулы) \end{alignat*} Параметр п задает число групп формул (число столбцов в этом окружении будет равно 2п). Пример:
—Ди = /, х е Q, (10.6) и = 0, ЖЕГ. (10.7) Его оформление: \begin{alignat}{2} -\Delta u&=f, &\qquad х &\in \0mega,\\ u&=0, & x &\in \Gamma. \end{alignat} 8. В окружениях equation и gather выравнивание не используется. Однако есть возможность оформления отдельной формулы в этих окружениях в виде многострочной формулы с одной точкой выравнивания внутри нее. Для этого используется окружение split. По синтаксису оно аналогично окружению align, но допускает единственный символ & в каждой строке. Пример: (а + 6)3 = (а + Ь)(сь + 6)2 = (<2 + 5)(q2 2q6 + 62) = а3 + За26 + За62 + 63. (10.8) Его оформление: \begin{equation} \begin{split} (a+b)"3 &=(a+b)(a+b)~2 \\ &=(a+b)(a~2+2ab+b~2)\\ &=a~3+3a~2b+3ab~2+b*3. \end{split} \end{equation} Окружение split используется внутри окружений equation, multline, gather и их *-форм. В строке формулы, где используется окружение split, не должно быть других формул. Внутри окружения split можно использовать команды \label и \notag, однако команду \tag можно применять только вне этого окружения. Способ выравнивания номера формулы в строках, занимаемых окружением split, задается опциями centertags и tbtags пакета amsmath. По умолчанию действует режим centertags, означающий центрирование номера уравнения по вертикали. В режиме tbtags номер будет расположен справа на уровне последней строки (как в примере выше) или слева на уровне первой строки, если указана опция leqno.
10.3. Выравнивание внутри формул Для выравнивания материала внутри формулы можно использовать окружение array. Но оно оформляет свои поля в стиле \t ext style, а не в \displaystyle. Более того, между строками выносных формул вставляется дополнительное расстояние величины \jot, а в окружении array это не делается. Поэтому, в пакете amsmath имеются специальные окружения, которые подобны окружению array, но предназначены для использования в выносных формулах: \begin{gathered} [{позиция}] {формулы} \end{gathered} \begin{aligned} [{позиция}] {формулы} \end{aligned} \begin{alignedat} [{позиция}] {п} {формулы} \end{alignedat} По правилам написания формул они похожи на gather, align и alignat соответственно: в gathered задается один столбец формул; в aligned — любое число групп формул, каждая из которых занимает два соседних столбца; в alignedat —число групп формул, указанное в параметре п. Расстояния между каждой группой в окружении aligned задается командой \minalignsep. По умолчанию эта команда содержит величину lOpt. Параметр {позиция} задает способ вертикального выравнивания получающегося бокса относительно остальной части формулы (t, с, Ь; по умолчанию с). 10.4. Управление выносными формулами 1. По умолчанию выносные формулы центрируются, а номера формул прижимаются вправо (за исключением окружения mult line, оформляющего некоторые строки формулы особо). Возможны также другие варианты, задаваемые опциями пакета amsmath: reqno — задает нумерацию справа от формул (действует по умолчанию); leqno — задает нумерацию слева от формул; f leqn — задает выравнивание всех формул по левому краю с отступом на величину \mathindent; centertags, tbtags — управляют размещением номера формулы в строках, генерируемых окружением split. По умолчанию действует centertags.
2. Размещение номера уравнения в многострочных формулах может оказаться весьма сложной задачей. Окружения пакета amsmath пытаются вывести номер уравнения так, чтобы избежать перекрытия номера формулы текстом. При этом номер уравнения может быть сдвинут по вертикали или даже помещен в отдельную строку, что возможно приведет к неудачному размещению. В этом случае Вы можете подправить его позицию командой \raisetag{(расстояние)}^ сдвигающей номер уравнения по вертикали на заданное расстояние. При положительном значении расстояния номер сдвигается вверх, при отрицательном—вниз. Данная команда используется в любом месте формулы, в которой номер размещен неудачно. 3. В стандартном окружении eqnarray разрыв страницы между строками формулы выполняется по обычным правилам: команда \\ разрешает разрыв страницы, а команда \\* запрещает разрыв. В многострочных окружениях пакета amsmath по умолчанию действуют другие правила: разрыв страницы внутри многострочной формулы запрещен, а если необходимо сделать разрыв, то внутрь формулы, которая будет последней на странице, следует поставить команду \displaybreak. Так же как и \pagebreak, команда \displaybreak имеет необязательный числовой параметр, принимающий значения от 0 до 4, означающие степень желательности разрыва. Чтобы разрешить разрыв страницы в окружениях пакета amsmath по тем же правилам, что и в окружении eqnarray (т. е. всюду, где нет явного запрета), добавьте в преамбулу документа команду \allowdislaybreaks. У этой команды также есть необязательный числовой параметр, принимающий значения от 1 до 4. Чем меньше его значение, тем менее желательны разрывы между строками многострочной формулы. По умолчанию используется значение 4. Разрыв страницы в выносных формулах возможен всюду, кроме многострочных формул, подготовленных окружением split. 4. Между строками многострочной формулы можно вставить текст, если воспользоваться командой \intertext{(meKcm)}. Эту команду следует помещать сразу после команды \\ или \\*. Пример: Ai = х + у + г, (10.9) А? = ху -I- xz + yz, (10.10) наконец, А3 = xyz. (10.11)
Его оформление: \begin{align} A_l&=x+y+z,\\ A_2&=xy+xz+yz,\\ \intertext{наконец,} A_3&=xyz. \end{align} 5. По умолчанию в статьях используется сквозная нумерация формул, однако в больших статьях возникает необходимость посекционной нумерации. Чтобы заказать посекционную нумерацию, воспользуйтесь командой \numberwithin{equation}{section} Эта команда подчиняет счетчик уравнений счетчику секций и переопределяет команду \theequation так, чтобы номер формулы имел вид (х.?/), где гг —номер секции, у — номер формулы внутри секции. Данную команду о можно применять и к другим счетчикам . 6. Часто используют стиль нумерации уравнений с подуравнениями: группу логически связанных уравнений объединяют под общим номером, а к каждому из уравнений группы добавляют частный буквенный номер. Например, группа уравнений (9.4) состоит из уравнений (9.4а), (9.46), (9.4в). При ссылке на все уравнения группы используют их общий номер (9.4), а при ссылке на конкретное уравнение группы используют его частный номер, например, (9.46). Для организации такого способа нумерации воспользуйтесь окружением \begin{subequations} (содержимое) \end{subequations} обрамляющим фрагмент текста, содержащего требуемую группу уравнений. Метка, поставленная сразу после начала данного окружения, будет содержать ссылку на всю группу уравнений, а метки, поставленные внутри уравнений группы, —на конкретные подуравнения. Уравнения в группе будут нумероваться по алфавиту, с добавлением строчной буквы к главному номеру группы. На время действия окружения subequations главный номер группы запоминается в команде \theparentequation. 2 Однако если некоторый счетчик уже подчинен какому-либо счетчику, то с помощью команды \numberwithin Вы сможете подчинить счетчик другому счетчику, но не сможете разорвать старую его подчиненность. Для изменения подчиненности лучше воспользоваться командой \countstyle из пакета dcounter (с. 197).
10.5. Средства пакета nccmath Пакет nccmath расширяет возможности пакета amsmath3 и устраняет некоторые недостатки стандартных средств оформления выносных формул. 1. Пакет усовершенствует окружения eqnarray и eqnarray*: • в них можно использовать команду \displaybreak и команды управления нумерацией формул из пакета amsmath; • можно ставить метку в любой нумерованной формуле; • средний столбец оформляется в стиле \di splay style; • расстояния между столбцами уменьшены до величины, характерной для операций отношения. 2. У команды \intertext добавлен необязательный параметр: \intertext [{расстояние}] {{текст}} задающий {расстояние) по вертикали между (текстом) и соседними с ним формулами. Если этот параметр отсутствует, то вставляются стандартные расстояния, как в пакете amsmath. 3. В Т^Х’е используются два размера вертикальных промежутков перед выносными формулами: малый и нормальный. Если последняя строка абзаца короткая и между ней и выносной формулой имеется достаточное расстояние по горизонтали, то вставляется малый промежуток. В противном случае используется нормальный промежуток. Однако если оформляется многострочная формула, то промежуток перед ней всегда будет нормальным, вне зависимости от реальной ширины формулы. Чтобы заставить использовать малый промежуток, в пакете nccmath имеется команда \useshortskip, действующая на ближайшую выносную формулу4. 4. Добавлены окружения \begin{fleqn} [{отступ}] {содержимое) \end{fleqn} \begin{ceqn} {содержимое) \end{ceqn} 3В пакете amsmath есть ошибка: команда \displaybreak в одиночных нумерованных формулах игнорируется. В пакете nccmath эта ошибка устранена. 4Действие команды \useshortskip не распространяется на выносные формулы, оформленные базовыми средствами Т^Х’а, т. е. переключателями $$. . .$$.
изменяющие способ выравнивания содержащихся в них выносных формул: первое задает левостороннее выравнивания с указанным (отступом) от левого края, последнее — центрирование по горизонтали. По умолчанию в окружении fleqn используется нулевой отступ. Эти окружения можно применять как декларации: \fleqn[(отступ)] и \ceqn. 5. Добавлена команда \пг, имеющая тот же синтаксис, что и команда \\: \пг [(расстояние)] \пг* [(расстояние)] По сравнению с \\ эта команда увеличивает расстояние между формулами на 0.5ех, что обычно бывает достаточным, если требуется дополнительно раздвинуть соседние формулы. Команду \пг можно использовать всюду, где используется команда \\. 6. Добавлено окружение \begin{darray} [(позиция)] {(столбцы)} (формулы) \end{darray} расширяющее возможности окружений gathered, aligned и alignedat. Данное окружение оформляет формулы в стиле \di splay style, добавляя между ними расстояние \jot, как в выносных формулах. Количество и способ выравнивания столбцов формул задается параметром (столбцы). Определение окружения darray не зависит от окружения array, хотя и похоже на последнее: параметр (позиция) задает вертикальное выравнивание получающегося бокса относительно остальной части формулы (t, с, Ь; по умолчанию с); в параметре (столбцы) можно использовать спецификации 1, с, г, @, *. Расстояние между столбцами равно расстоянию, характерному для операций отношения. Перед первым и после последнего столбца отступы не делаются. 7. Для совместимости со старым макросом Л/^С добавлены следующие команды: \е q{ (форм ула)} \ е qs {(ф орм ул ы)} \ е qal i gn {(форм ул ы)} = \begin{equation} (формула) \end{equation}; = \begin{eqnarray} (формулы) \end{eqnarray}; = \begin{equation} \begin{darray}{rcl} (формулы) \end{darray} \end{equation}.
У этих команд есть также *-формы, базирующиеся на *-формах соответствующих окружений. Команды \eqs и \eqs* имеют дополнительный параметр, задающий расстояние между столбцами формул. Например, в команде \eqs[Отт]{&& -\Delta u = f, \\ && u|_\Gamma = 0} расстояние между столбцами сделано равным нулю, поскольку используется только последний столбец. Команды \eqalign и \eqalign* также имеют дополнительный параметр, задающий описание столбцов формулы: \eqalign{($t?pAt7/./iw)} = \eqalign [rcl] {{формулы)}. 10.6. Оформление однострочной формулы Далее в этой главе всюду считается, что пакет amsmath загружен. 1. Выносная формула N(A) = {хеХ Ах - 0}, R{A) = АХ, оформлена так: \[ N(A) = \{x\in X: \enskip Ax=O\J, \qquad R(A) = AX, \] Здесь команда \qquad (двойная кегельная) разделяет две несвязанных формулы, а \enskip (полукегельная) ставится после символа : (двоеточие) в описании множества. Если формулы в одной строке связаны между собой, то их обычно разделяют командой \quad (кегельной). Если же формула длинная, то в целях экономии места можно уменьшить расстояния между ее элементами: несвязанные формулы разделять командой \quad, а между связанными — использовать команду \enskip. 2. Формула Vxex, уеР {х,у) = о (ю.12) оформлена так: \begin{equation}\label{e:ort} \forall\,x\in X,\,y\in P\quad Mangle x,y\rangle=0 \end{equation}
Здесь нумерация выполняется автоматически, а номер уравнения запоминается в метке е : ort с помощью команды \label. В дальнейшем ссылка на это уравнение в тексте будет иметь вид \eqref {е: ort}. Имена меток могут быть произвольными, но, чтобы не возникало путаницы, рекомендую все метки уравнений писать с каким-либо префиксом (в данном случае е:). 3. Иногда возникает ситуация, когда требуется пронумеровать две формулы следующим способом: первую—автоматически, вторую—тем же номером, но с добавлением некоторых символов. Например, формулы а + b + с + d — i 4- j 4- k 4-1, (10.13) d 4- c 4- b 4- cl — I 4- k 4~ j 4~ i (КПЗ*) подготовлены так: \begin{gather}\label{e:ijkl} a+b+c+d = i+j+k+1, \\ \tag{\ensuremath{\ref {e:ijkl}’}}\label{e:Ikj i} d+c+b+a = 1+k+j+i \end{gather} Здесь номер в первой формуле ставится автоматически, а во второй — вручную, с использованием механизма меток. Команда \ensur emat h{ (параметр)} гарантирует, что ее параметр оформляется в математической моде. Ссылка на первую формулу в тексте документа выполняется, как обычно, командой \eqref{е:ijkl}, а для ссылки на вторую формулу используется более сложная конструкция: $(\ref{е: lkij})$. Математический режим здесь требуется для того, чтобы символ штриха выглядел так же, как в формуле5. В следующих примерах разбираются способы оформления различных математических конструкций. 4. Управление высотой индексов: о \[ f\in {\stackrel\circ W} ^2 \vphantom-[W}_2~m \] 5 В классе псс (точнее, в пакете ncclatex) установлен математический режим оформления номера формулы и ссылки на формулу вместо текстового, который используется в пакете amsmath по умолчанию. Поэтому в оформлении тэга уравнения (10.13') команду \ensuremath можно убрать, а при ссылке на это уравнение можно использовать команду \eqref.
Здесь кружок над W рисуется командой \stackrel, затем эта команда вместе с параметрами заключается в фигурные скобки, чтобы получить простой символ, а не символ отношения. Индексы выравниваются по вертикальному фантому буквы W. Если \vphantom убрать, то расположение верхнего индекса будет регу- о т лироваться высотой символа, создаваемого командой \stackrel: / 6 W2 • Видно, что без команды \vphantom верхний индекс будет поднят слишком высоко. Вместо \stackrel в этой формуле можно воспользоваться математическим акцентом \mathring: f Е W™ \[ f\in \mathring W_2~m \] Здесь ухищрения с фигурными скобками и фантомами не нужны, но получающийся кружок над W существенно мельче. 5. Использования математических функций. Имена математических функций должны оформляться прямым шрифтом и должны быть отделены от предыдущей формулы и аргумента функции узкими пробелами. Эти правила обеспечивают команды математических функций (см. с. 357). Поэтому всегда следует использовать имеющиеся команды при оформлении стандартных математических функций. Если же Вы хотите написать нестандартную математическую функцию, то оформляйте ее командой \operatorname (или \rnop в макросе А^С). Пример: |х| = xsgnx \[ IхI=x\operatorname{sgn}x \] При многократном использовании нестандартной математической функции имеет смысл сделать для нее команду, поместив ее в преамбулу документа, например, \newcommand{\sgn}{\operatorname{sgn}} Теперь в тексте документа можно писать просто \sgn х. 6. Суммы и интегралы. Формула т рь ikiivr- = 52 / dt i=0 Ja записывается так: \[ \Iх\|~2_{W_2~m} = \sum_{i=0}~m \int_a~b \bigl[х~{(i)}(t)\bigr]~2 dt \]
Здесь дополнительный пробел перед дифференциалом dt не нужен, поскольку верхний индекс уже добавляет визуальный пробел. В стиле \di splay style верхние и нижние индексы размещаются, соответственно, над и под символом суммы, но рядом с символом интеграла. Можно сделать размещение индексов над и под интегралом, если заказать пакет amsmath с опцией intlimits (при использовании класса псс эту опцию указывают в опциях команды \documentclass). Если же требуется изменить стиль размещения индексов для конкретного интеграла, вставьте после команды \int команду \limits. В результате получите: 7. Биномиальный коэффициент в формуле. Формула (х + уГ = Ё г=0 п А г 1 . Н у I / подготовлена так: \[ (х+у)~n=\sum_{i=0}~n \binom{n}{i} x~i y~{n-i} \] Если вместо команды \binom использовать \mbinom из пакета nccmath, получится такой результат: п г=0 8. Матрицы и векторы. Формула с простыми матрицами и векторами А В С\ / х\ / и\ D Е F j I у j = I v | G Н l)\z/ \wj оформлена так: \[\begin{pmatrix} А & В & С\\ D & Е & F\\ G & Н & I \end{pmatrix} \begin{pmatrix} х \\ у \\ z \end{pmatrix} = \begin{pmatrix} u \\ v \\ w \end{pmatrix} \] Окружение pmatrix очень просто в использовании, но не позволяет управлять выравниванием элементов в матрице. Поэтому в сложных случаях предпочтительнее использовать окружение array.
Оформление этой же формулы с помощью окружения array делается так: \[\left (\begin{array}{@{}ccc@{}} A&B&CW D&E&FW G&H&I \end{array}\right) \left(\begin{array}{@{}c@{}} x\\y\\z \end{array}\right) = \left(\begin{array}{@{}c@{}} u\\v\\w \end{array}\right)\] Здесь в параметры описания столбцов добавлены команды @{}, подавляющие вставку пробелов перед первым и после последнего столбцов матриц. Наконец, оформление этой же формулы с прямыми скругленными скобками, АВС D Е F G Н I и v W выполняется так: \[\left\lgroup\begin{matrix} А & В & С\\ D & Е & F\\ G&H&I \end{matrix}\right\rgroup \left\lgroup\begin{matrix} x\\y\\z \end{matrix}\right\rgroup = \left\lgroup\begin{matrix} u\\v\\w \end{matrix}\right\rgroup\] 9. Выравнивание столбцов матриц. Иногда элементы в столбцах матриц лучше выводить с выравниванием по левому или правому краю. Пример: 531,02 33,24 0,53 25,43 132,15 334,82 3,45 -2,55 31,44 Его оформление: \[ \left(\begin{array}{@{}rrr@{}} 531{,}02 & 33{,}24 & 0{,}53 \\ 25{,}43 & 132{,}15 & 334{,}82 \\ 3{,}45 & -2{,}55 & 31{,}44 \end{array}\right). \] Десятичную запятую здесь приходится заключать в фигурные скобки, чтобы сделать ее простым символом (иначе после запятой будет вставлен узкий пробел). Пакет ncccomma позволяет обойтись без заключения запятой в фигурные скобки: при его использовании запятая ведет себя как обычный символ, если следом идет десятичная цифра.
10. Многоточия в матрицах. Матрица / ац ai2 ain «21 «22 • • • «2п \ «7711 «7712 «77171 / оформлена следующим образом: \[ \left(\begin{array}{@{\,}1111@{\,}} a_{ll} & a_{12} & \ldots & a_{ln}\\ a_{21} & a_{22} & \ldots & a_{2n}\\ \hdotsfor[2.5]{4}\\ a_{ml} & a_{m2} & \ldots & a_{mn}\end{array}\right) \] Здесь многоточие в третьей строке матрицы оформляется командой \hdotsfor, задающей мультистолбец шириною в 4 столбца, точки в котором выведены с разрядкой в 2,5 раза большей, чем обычная разрядка. Матрица (7‘ < о — «2 02 —С2 Q «71 — 1 ^71 — 1 «71 — 1 \ «71 Ьп / оформлена так: \[ \left(\begin{array}{@{\,}ссссс@{\,}} b_l & -с_1 \\ -а_2 & Ь_2 & -с_2 & \multicolumn{2}{c}{\raisebox{lex}[0mm][0mm]{\Large 0}}\\ & \ddots & \ddots & \ddots \\ \multicolumn{2}{c}{\raisebox{-2ex}[0mm][0mm]{\Large 0}}& -a_{n-l} & b_{n-l} & -c_{n-l} \\ &&& -a_n & b_n \end{array}\right) \] Как видно из этого примера, в строках окружения array может быть меньше полей, чем задано в описании. Так первая строка состоит из двух полей вместо пяти, а третья —из четырех. Во второй и четвертой строках матрицы символ 0 задан в мультистолбце и выведен шрифтом размера \Large в боксе \raisebox, задающем вертикальный сдвиг этого символа на расстояние, определяемое его первым
обязательным параметром. Дополнительные параметры [Omm] [0mm] задают нулевую высоту и глубину получающегося в результате бокса, что позволяет выполнить наложение этого символа поверх других строк матрицы. Наконец, четвертый параметр команды \raisebox содержит выводимый текст и обрабатывается всегда в текстовом режиме. 11. Альтернатива в формуле. Формула {1 при х > 0, 0 при х = 0, — 1 при х < 0, набрана так: \[ \operatorname{sgn}x = \left\{ \begin{array}{@{\,}r@{\quad}l@{}} 1 & \text{npn } x>0, \\ 0 & \text{npn } x=0, \\ -1 & \text{npn } x<0, \end{array}\right. \] Вместо окружения array здесь можно использовать cases, но тогда для выравнивания первого столбца по правому краю придется в начало первого столбца альтернативы вставлять пружинку \hf ill. Поскольку открывающая фигурная скобка \left\{ не имеет парной ей закрывающей, приходится в качестве правого разделителя задавать пустой разделитель \right., в котором после команды \right пишется точка. 12. Система уравнений. Система из нескольких уравнений, объединенных общей фигурной скобкой, ' a(xi) = Zi, i = 1,... ,N, < fb[ "( мЪ • / [cr ax min. < J a оформлена следующим образом: \[ \left\{\begin{aligned} &\sigma(x_i)=z_i,\quad i=l,\ldots,N,\\ &\int_a~b\bigl[\sigma’’(x)\bigr]~2 dx \to \min. \end{aligned}\right. \] Видно, что интеграл во второй формуле оказался немного сдвинут вправо. Причина в том, что в точке выравнивания в окружении aligned вставляется пустой блок. Поэтому между точкой выравнивания и интегралом
появляется дополнительный пробел как между простым символом и математическим оператором. Можно от него избавиться, если воспользоваться окружением darray из пакета nccmath: {a(xi) = Zi, г — 1,... ,N, f [(/'(х)]2^ —> min. J a Оформление: \[ \left\{\begin{darray}{l} \sigma(x_i)=z_i,\quad i=l,\ldots,N,\\ \int_a~b\bigl[\sigma’’(x)\bigr]~2 dx \to \min. \end{darray}\right. \] Того же эффекта можно добиться с помощью окружения gathered, если прижать последнюю формулу влево с помощью пружинки \hfill: \[ \left\{\begin{gathered} \sigma(x_i)=z_i,\quad i=l,\ldots,N,\\ \int_a~b\bigl[\sigma’’(x)\bigr]~2 dx \to \min. \hfill \end{gathered}\right. \] 10.7. Оформление многострочной формулы Предпочтительными точками переноса в многострочной выносной формуле являются операции отношения (<, >, = и т.д.). Точки переноса второй очереди — многоточие \ldots и операция типа сложения (4-, —, ±). В последнюю очередь можно переносить формулу по знаку умножения. При этом знак умножения оформляют командой \times (х). В английской полиграфической традиции перенос выполняют перед математической операцией, а согласно отечественным правилам знак, на котором сделан перенос, повторяют дважды — в конце предыдущей строки и в начале следующей6. 1. При правосторонней нумерации номер ставят в последней строке многострочной формулы, а при левосторонней—в первой строке. Для такого оформления хорошо подходит окружение multline. Пример: 6Дублирование знаков операций в выносных формулах при переносе мне кажется избыточным. К тому же оно приводит к некрасивым формулам. Поэтому я предпочитаю использовать следующие правила оформления: символ отношения переношу в начало следующей строки (как в английской традиции), а символы других операций оставляю на предыдущей строке. Такое решение позволяет хорошо подчеркнуть структуру формулы, хотя и не согласуется с отечественной полиграфической традицией. Далее в оформлении выносных формул я придерживаюсь этих правил.
Дг£4 4- Q1Z1U4 4- (22^2^4 + С^4 + Ci/iUi 4" С2^2^1 + — 5 /3^хиз 4- d±l±uc, 4- с?2^2^5 + Ь{Щ = 0. (10.14) г=1 Его оформление: \begin{multline}\label{e:ml} \Delta u_4 + a_ll_lu_4 + a_21_2u_4 + \zeta u_4 + c_ll_lu_l + c_21_2u_l + c_3\zeta u_l -{} \\* 2f\beta~2\chi u_3 + d_ll_lu_5 + d_21_2u_5 + \sum_{i=l}~5 b_i u_i = 0. \end{multline} После знака минус, завершающего первую строку, поставлен пустой блок, чтобы этот знак проинтерпретировался как символ бинарной операции и перед ним был добавлен правильный отступ. Звездочка-форма команды \\ запрещает разбивку страницы между строками этой формулы. Окружение mult line следует использовать, если в многострочной формуле нет явных точек выравнивания. 2. В формуле Ja(t) =Ц/п^ [(Г2^)2 + (г2<Лг)2 + (<W + (Г2СЛГ)2 + (СЛЯ)2 + (ив1р)2 + (C7W)2 + (rUtlfi)2 + (rUrip)2 + U2]dr dOdp + П27Г -I — [(rFr)2 + F2]drdp r есть две точки выравнивания: символ равенства и открывающая квадратная скобка. Ее оформление: \begin{align*} \bm J_\alpha(t) =& \iiint_\Pi\frac{l}{r~{2\alpha}}\Bigl[(r~2\bm U_{tt})~2 + (r~2\bm U_{rr})~2 + (\bm U_{\theta\theta})л2 + (r~2\bm U_{tr})~2 + (\bm U_{t\theta})~2 +{} \\*[-.5ex] &\hphantom{{}\iiint_\Pi\frac{l}{r~{2\alpha}}\Bigl [{}} (\bm U_{\theta\varphi})~2 + (\bm U_{\varphi\varphi})~2 + (r\bm U_{t\varphi})~2 + (r\bm U_{r\varphiJ)~2 + \bm U~2\Bigr] dr\,d\theta\,d\varphi+{}\\*
&\int_0~{r_0}\!\!\!\int_0~{2\pi}\frac{l}{r~{2\alpha}} \bigl[(r\bm F_r)~2 + \bm F~2\bigr] dr\,d\varphi \end{align*} Для ожирнения здесь используется команда \bm из пакета bm. С помощью дополнительного параметра [-0.5ех] команды \\ вторая строка формулы подтягивается к первой на расстояние 0.5ех. Командой \hphantom выполняется выравнивание второй строки формулы по квадратной скобке. Пустые блоки в параметре команды \hphantom и в конце первых двух строк обеспечивают точный расчет ширины фантома и правильные отступы. Наконец, в последней строке второй интеграл притянут к первому с помощью нескольких отрицательных узких пробелов \!. 3. Формула с длинной левой и правой частями | [(дзХ, Л) + (Л, GU)] + i([Dp - D*]\V, V) = [ai|xe~*ti|2 + а2|х??и|2 + a3|x£u|2 + a4|xe^/27-u|2] + <*5|хе~сти|2 + a6|xu|2| набрана так: \begin{align*} \lefteqn{\frac{l}{\beta}\bigl[(\hat G_3 X,\Lambda) + (\Lambda,\hat G_3~*X)\bigr]+i\bigl([D_p-D_p~*]\chi V,V\bigr)J \qquad \\* &=\frac{e~{2\xi}}{\beta}\Bigl\{ \tau\Bigl[\alpha_lI\chi e~{-\xi}u|~2 + \alpha_2I\chi\eta u|~2 + \alpha_3I\chi\zeta u|~2 + \alpha_4I\chi e~{-\xi/2}\tau u|~2\Bigr] + {}\\* &\hphantom{{}=\frac{e~{2\xi}}{\beta}\Bigl\{} \alpha_5 |\chi e~{-\xi}\tau u|~2 + \alpha_6 |\chi u|~2\Bigr\} \end{align*} Здесь первая строка формулы выводится командой \lefteqn, оформляющей свой параметр как бокс нулевой ширины с выравниванием его по левому краю. В результате формула в первой строке выходит вправо за пределы первого столбца. Следом за \lefteqn идет команда \qquad, фактически задающая ширину первого столбца и тем самым регулирующая величину отступа знака равенства от левого края формулы.
10.8. Оформление группы формул 1. Группа формул без номера bi = <741 (<722 “ Qu - + М)(1 — 941) “ 9и> &2 — 922 — Mi — Mq • Q41 подготовлена так: \begin{align*} b_l &= q_{41}(q_{22}-q_{ll}-M_l)+M_0(l-q’_{41})-q’_{ll},\\ b_2 &= q_{22} - M_1 - M_0\cdot q_{41} \end{align*} 2. Группа формул с общим номером bi = 941(922 - 911 - Mi) + Mq(1 - 94J - q'n, (iU.io) &2 — 922 — Mi — Mq • Q41 подготовлена иначе: \begin{equation}\label{e:blb2} \begin{aligned} b_l &= q_{41}(q_{22}-q_{ll}-M_l)+M_0(l-q’_{41})-q’_{ll},\\ b_2 &= q_{22} - M_1 - M_0\cdot q_{41} \end{aligned} \end{equation} Окружение aligned оформляет две формулы как единый бокс и центрирует его по вертикали. В результате номер формулы размещается посередине. 3. Группа формул с номерами bi = 941(922 — 911 — Mi) + Mq(1 — Ф41) — g'n, (6) &2 = 922 — Ml — Mq Q41, b3 = ^3-M2g31 (7) оформлена так: \begin{align*} b_l &= q_{41}(q_{22}-q_{ll}-M_l)+M_0(l-q’_{41})-q’_{ll},\tag{6}\\ b_2 &= q_{22} - M_1 - M.OXcdot q_{41},\\ b_3 &= q”_{33} - M_l~2\cdot q_{31} \tag{7} \end{align*}
4. Группа независимых формул a + b + c + d = p + q + r + S) х А- у < z <и — г>, (г, j, k) е Q, оформлена с помощью окружения gather*: \begin{gather*} a+b+c+d \equiv p+q+r+s,\\ x+y \le z \le u-v, \\ (i,j,k)\in \0mega, \end{gather*} 5. Цепочка формул с короткой левой частью 0<cx '' - ZL m /а 1 1И1и"?1И1и"" 0<а = ^II/Lpm||/L₽m (юле) подготовлена так: \begin{align} \bigl\ID Aalpha(fg)\bigr\I_{L_p} &\le \sum_{\beta\le\alpha}\frac{m!}{\beta!\,(\alpha-\beta)!} \bigl\ IDAbeta f\cdot D~{\alphaAbeta}g\bigr\ I _{L_p}\notag \\ &\le \sum_{\beta\le\alpha}\frac{m!}{\beta!\,(\alpha-\beta)!} C_{\alpha,\beta}\cdot\bigl\If\bigr\I_{W_p~m} \bigl\|f\bigr\|_{W_p*m}\notag \\ &\stackrel{\text{df}}{=} C_{\alpha} \bigl\|f\bigr\|_{W_p~m} \bigl\If\bigr\I_{W_p*m} \end{align} 6. Цепочка формул с длинной левой частью + L^u + 4ai2l/i2(Li + L2)u + 6|ai21^12^ = ЬЦ—f — L2U — ZawLwu) + Z/2(—f ~ L±u — 2ai2^i2^) + 4ai2jLi2(I/i + Ij2)u + 6|ai2|jf>i2u
— —Lif — L2f — 2L1L2U + “Ь ^2)^ “Ь 6|ai2|Z/i2u — —Lf — 2(1 + 2а|2 — 3|ai2|)LiL2u оформлена следующим образом: \begin{align*} \lefteqn{(L_l~2+L_2~2)u + 4a_{12}L_{12} (L_l+L_2)u + 61a_{12}IL_{12}~2u}\qquad \\*[.5ex] &= L_l(-f-L_2u-2a_{12}L_{12}u)+L_2(-f-L_lu-2a_{12}L_{12}u)+O\\* &\hphantom{{}={}} 4a_{12}L_{12}(L_l+L_2)u + 61a_{12}IL_{12}~2u \\ &= -L_lf - L_2f - 2L_lL_2u + 2a_{12}L_{12}(L_l+L_2)u + 61a_{12}IL_{12}~2u \\ &= -Lf - 2(1 + 2a_{12}~2 - 31a_{12}|)L_lL_2u \end{align*} 10.9. Как уплотнить формулу? Иногда возникает ситуация, когда формула или ее часть немного не помещается в строку, а при разбивке на более мелкие части получается очень плохой результат. В этом случае, пожалуй, единственный выход из положения—попытаться уплотнить формулу так, чтобы она поместилась в строку. Вот некоторые советы, которые могут помочь это сделать: • Если в формуле есть матрица, то можно уменьшить расстояние между ее столбцами, присвоив переменной \arraycolsep меньшее значение (по умолчанию ее значение 5pt) прямо в формуле непосредственно перед матрицей. • Можно подтянуть формулу вставкой отрицательных расстояний, например, командой \! в местах, где имеется визуальный пробел. Обычно такие пробелы возникают вокруг интегралов. • Наконец, можно уменьшить расстояния вокруг арифметических операций, заключив символы арифметических операций в фигурные скобки.
Глава 11 Теоремы 11.1. Средства генерации математических утверждений В математических работах обычно используются такие математические утверждения как теоремы, леммы, следствия и т. д. Эти утверждения оформляют с помощью специальных окружений, которые генерируются командой \newtheorem в преамбуле документа. В стандартном Г^ТЩХ’е есть два варианта этой команды. 1. Команда \newtheorem{(uAt.H)}{ (заголовок;)} \_(базовый счетчик)] генерирует окружение с заданным (именем), имеющее указанный заголовок. С данным утверждением связывается новый счетчик, имеющий то же (имя), что и само окружение. Параметр (базовый счетчик) задает счетчик, которому будет подчинен счетчик окружения. Если этот параметр отсутствует, то используется сквозная нумерация утверждений данного типа. Если же параметр задан, то нумерация будет составная. Например, команда \newtheorem{theorem}{TeopeMa}[section] создает окружение theorem с заголовком Теорема, использующее счетчик theorem при нумерации данных утверждений. Заказывается нумерация, подчиненная счетчику секций. Например, теоремы секции 1 будут нумероваться так: Теорема 1.1, Теорема 1.2 и т. д. 2. Команда \newtheorem{(u.M.H)} [(счетчик)] {(заголовок)} генерирует окружение, использующее заданный (счетчик), т. е. данный вариант предлагает совместную нумерацию нескольких типов утверждений с помощью одного счетчика. Например, команда \newtheorem{lemma}[theorem]{Лемма} создает окружение lemma с заголовком Лемма, использующее для нумерации счетчик theorem.
3. Вывод математических утверждений в тексте документа выполняется так: \begin{(ujvt^)} [(комментарий)! (текст) \еп&{(имя)} Здесь (имя) — имя ранее сгенерированного математического окружения, (комментарий) — некоторый текст, который будет выведен в круглых скобках после заголовка и номера утверждения. Математическое утверждение выводится в виде выносного текстового элемента. Заголовок и комментарий выводятся жирным шрифтом, текст утверждения—курсивом. Пример: Теорема 1.1 (Пифагор) Сумма \begin{theorem}[Пифагор] квадратов катетов... \label{t :pythagor} Сумма квадратов катетов... \end{theorem} Лемма 1.2 При... \begin{lemma} При... \end{lemma} < ’ ’ > По TeopeMe~\ref{t:pythagor}... По теореме 1.1... 11.2. Расширения механизма генерации утверждений Стандартные средства генерации математических утверждений в большинстве случаев недостаточны, поскольку все генерируемые ими математические утверждения печатаются одинаково, а номер идет всегда после утверждения. В реальных математических изданиях разные математические утверждения необходимо печатать различным образом. Например, текст теорем и лемм оформляют курсивом, а текст замечаний и примеров—прямым шрифтом. В больших математических книгах часто используется единая нумерация всех утверждений по типу рубрикации, например, секция состоит из математических утверждений в виде подсекций, в которых после номера идет название утверждения: 1.1.1. Теорема, 1.1.2. Лемма и т. д. Такой стиль нумерации я называю стилем араг по имени счетчика, используемого для этой цели в пакете nccthm. Имеется несколько конкурирующих пакетов, расширяющих возможности генерации математических утверждений. 1. Пакет theorem из коллекции tools позволяет выбирать стиль генерации конкретного математического утверждения и шрифты, используемые в заголовке и теле утверждения. Принцип генерации следующий: с помощью деклараций
\theoremstyle{ {стиль}} \theorembodyfопг{(выбор шрифта}} \theoremheaderfont{ (выбор шрифта}} устанавливается стиль и шрифты; затем с помощью команды \newtheorem генерируются утверждения данного стиля; далее стиль и шрифты при необходимости изменяются и т. д. Пакет обеспечивает следующие стили оформления заголовков математических утверждений: plain — обычный стиль; change — заголовок и номер утверждения переставлены местами; margin — номер утверждения выводится на полях страницы; break — то же, что plain, но с разрывом строки после заголовка; changebreak — то же, что change, но с разрывом строки после заголовка; marginbreak — то же, что margin, но с разрывом строки после заголовка. 2. В пакете amsthm из коллекции amscls имеются две возможности управления стилем генерации математических утверждений: для изменения порядка заголовка и номера используется команда \swapnumbers, а для изменения стиля оформления применяется \theoremstyle{(cmu^b)}, где {стиль} может принимать одно из следующих значений: plain, remark, definition. Добавлена *-форма команды \newtheorem, генерирующая ненумерованное математическое утверждение. Добавлено окружение \begin{proof} [{заголовок}! {текст} \end{proof} оформляющее доказательство утверждения. Если заголовок доказательства нестандартный, то используется необязательный параметр. Конец доказательства маркируется значком QED (□). Если доказательство заканчивается формулой, то в ней следует использовать команду \qedhere. Пакет amsthm следует загружать после пакета amsmath, если последний используется. 3. Пакет nccthm из коллекции ncctools существенно расширяет возможности генерации математических утверждений. Реализовано две моды вывода утверждений: нормальная и араг-мода. Есть возможность задавать новые типы утверждений, характеризующиеся шрифтами, используемыми при выводе. Наконец, имеется несколько стилей вывода утверждений. Подробности далее в этой главе.
11.3. Динамические счетчики Нумерация утверждений в пакете nccthm базируется на концепции динамических счетчиков, введенной в пакете dcounter из коллекции ncctools. Динамический счетчик—это счетчик, стиль нумерации которого определяется при его первом использовании. Управление стилем нумерации динамических счетчиков выполняется в преамбуле документа командой \countstyle{(6a3oebm счетчик)} Если параметр {базовый счетчик) пуст, то все динамически создаваемые счетчики будут иметь сквозную нумерацию. Если же этот параметр не пуст, то при создании динамические счетчики будут иметь составную нумерацию, подчиненную указанному счетчику. Например, команда \countstyle{section} задает посекционную нумерацию всех динамических счетчиков. Концепция динамических счетчиков позволяет отделить процесс создания новых математических утверждений от их использования. Например, в пакете ncclatex определяется восемь часто используемых математических утверждений, а стиль их нумерации выбирает пользователь в своем документе с помощью единственной команды \countstyle. При необходимости можно выбрать стиль для конкретных счетчиков с помощью команды \countstyle [{список счетчиков)] {{базовый счетчик)} В параметре {список счетчиков) через запятую перечисляются имена счетчиков, а последний параметр задает имя счетчика, которому перечисленные счетчики будут подчинены. Если последний параметр пуст, то счетчики из списка будут иметь сквозную нумерацию. В списке счетчиков можно указывать любые, как еще не созданные, так и уже существующие счетчики. Если счетчик уже существует и подчинен какому-либо счетчику, то его старая подчиненность разрывается. Например, команда \countstyle[section] {} делает счетчик section независимым. Если он был раньше подчинен счетчику chapter, то после этой команды нумерация секций станет сквозной и при начале новой главы счетчик секций не будет обнуляться.
11.4. Математические утверждения в пакете nccthm 1. Поскольку концепция динамических счетчиков позволяет не определять стиль нумерации счетчика при создании математического утверждения, то последний необязательный параметр в команде \newtheorem становится ненужным. В пакете nccthm он имеет другой смысл: задает тип математического утверждения. Синтаксис: \newtheorem{(uALH)} [{счетчик)] {{заголовок)} [{тип)] Имеется два предопределенных типа: theorem и remark. Тип theorem используется по умолчанию, если последний параметр отсутствует. При необходимости можно переопределить уже сгенерированное математическое утверждение с помощью команды \renewtheorem{(uAui)} [{счетчик)] {{заголовок)} [{тип)] 2. Имеются также *-формы этих команд, предназначенные для генерации математических утверждений в apar-моде. Все такие утверждения нумеруются единым счетчиком арат, и номер утверждения помещается перед его заголовком. Поскольку в араг-моде счетчик уже определен, то синтаксис *-форм этих команд проще: \newtheorem*{(ujuji)}{{заголовок)} [{тип)] XYsnewtheaYem* {{имя)} {{заголовок)} [{тип)] 3. Тип математических утверждений определяется командами \newtheoremtype{{тип)}{{стиль заголовка)} {{стиль комментария)}{{стиль тела)} \renewtheoremtype{(mtm)}{{стиль заголовка)} {{стиль комментария)}{{стиль тела)} Первая команда создает новый тип, а последняя — переопределяет существующий тип. Параметры команд задают стили, в которых выводятся заголовок, комментарий и тело утверждения. По умолчанию типы theorem и remark определены следующим образом: \newtheoremtype{theorem}{\bfseries}{}{\itshape} \newtheoremtype{remark}{\itshape}{}{} т. e. заголовок утверждения типа theorem выводится жирным шрифтом, комментарий—нормальным шрифтом, тело—курсивом. У утверждения типа remark заголовок курсивный, а остальные части выводятся нормальным шрифтом.
4. Если в статье есть единственное утверждение какого-либо вида, например, начинающееся со слова Предположение, то нет необходимости в генерации для него специального окружения. Можно это утверждение вывести с помощью команды \ like (тип). Пример: \11ке1Ьеогет{Предположение}{А} ... \qef Данное утверждение оформляется как теорема. Команда \like (тип) определена для каждого типа математического утверждения и имеет основную и *-форму. В основной форме эта команда выводит обычное утверждение, а ее *-форма выводит утверждение в араг-моде. Синтаксис этих команд следующий: \like(тип){(заголовок)}{(номер)} [(комментарий)] \1±ке(тип)*{(заголовок)} [(комментарий)] Если параметр (номер) пуст, то выводится утверждение без номера. Завершать эти утверждения следует командой \qef или \qed. Первая завершает абзац, устанавливает нормальный шрифт и делает вертикальный отступ, а последняя выводит символ QED (□) прижатым к правому краю строки и вызывает \qef. 5. При использовании араг-моды возникает необходимость оформления абзацев, нумерованных в этой моде, но не содержащих математических утверждений. Команда \apar позволяет начать новый абзац с нумерацией счетчиком арат с заданным заголовком или без него: \apar [(заголовок)] 6. Оформление доказательств в пакете nccthm выполняется командой \proof [(комментарий)] Завершается доказательство обычно командой \qed. Например, команда \proof[теоремы 1] Некоторый текст. \qed выглядит так: Доказательство теоремы 1. Некоторый текст. □
11.5. Стили оформления утверждений Стили оформления математических утверждений в пакете nccthm частично задаются через опции, а частично—при генерации утверждений и при выводе. Опции margin и nomargin определяют позицию номера в утверждениях араг-моды. Первая—на полях, последняя—в начале абзаца. По умолчанию установлена опция nomargin. Опции indent и no indent управляют абзацным отступом в заголовке математических утверждений. Если указана опция indent, то в заголовке используется абзацный отступ, в противном случае заголовок выводится без абзацного отступа. По умолчанию действует опция noindent. Если заказана комбинация опций margin и indent, то в араг-утвержде-ниях последняя опция игнорируется. После заголовка и комментария математического утверждения можно сделать разрыв строки, если перед генерацией утверждения поставить декларацию \TheoremBreakStyle. Чтобы отказаться от разрыва строки, при генерации используется декларация \TheoremNoBreakStyle (она действует по умолчанию). При выводе любого математического утверждения можно изменить его стиль разрыва с помощью модификаторов \breakafterheader и \nobreakafterheader, помещаемых перед утверждением. Первый модификатор задает разрыв строки перед телом идущего следом утверждения, последний — оформляет заголовок утверждения в подбор с текстом. 11.6. Quod Erat Demonstrandum Символ QED (что и требовалось доказать) часто используется при завершении доказательства математического утверждения. Некоторые авторы любят завершать специальным значком и сами математические утверждения. Пакет nccthm позволяет заказать два типа символа QED: черный () и белый (□). По умолчанию QED-символ белый. Для его вывода используются следующие команды: \qed — завершает строку QED-символом, прижатым к правому краю, и вызывает команду \qef, завершающую абзац, устанавливающую нормальный шрифт и выполняющую вертикальный оФступ; \qed* — делает то же, что и \qed, но не вызывает команду \qef; \qedsymbol — выводит собственно QED-символ.
Используются эти команды следующим образом: команда \qed завершает доказательство утверждения, если последнее заканчивается обычным абзацем; команда \qed* применяется в случае, если последний абзац доказательства—элемент некоторого списка (в конце этого элемента ставится \qed*, а после списка—\qef); команда \qedsymbol используется в случае, если доказательство завершается формулой (внутри этой формулы ставьте \tag*{\qedsymbol}, а после формулы— \qef). Если вы загружаете пакет nccthm с опцией blackqed, то добавятся команды \blackqed и \blackqedsymbol. Опция whiteqed создает команды \whiteqed и \whiteqedsymbol. Команды \qed и \qedsymbol будут генерировать черный или белый QED в зависимости от того, какая из этих опций указана последней в списке. Например, команда \usepackage[blackqed,whiteqed]{nccthm} заказывает обе версии QED-символа и устанавливает белый вариант по умолчанию. 11.7. Настройка пакета nccthm По правилам отечественной полиграфии заголовок математического утверждения принято завершать точкой, а комментарии в заголовке не всегда заключают в скобки (например, в качестве комментария может быть ссылка на источник цитирования). Для настройки таких оформительских деталей пакет nccthm предоставляет набор команд, используемых в преамбуле документа: \TheoremCommentDelimiters{ (левъш) }{{правый)} \AfterTheoremHeader Char {(символ)} \AfterTheoremHeaderSkip{(KOMaHda-npo6e./ia)} \Proof StyleParameters{ (стиль)}{(заголовок;)} \hp ^xStyleP^xainet ex (стиль)} {(префикс)} {{суффикс}} По умолчанию значения этих команд следующие: \TheoremCommentDelimiters{(}{)} \AfterTheoremHeaderChar{} \AfterTheoremHeaderSkip{\hspace{lem plus 0.2em minus 0.2em}} \ProofStyleParameters{\bfseries}{Proof} \AparStyleParameters{\bfseries}{\bfseries}{\enskip}
Они означают, что комментарий заключается в круглые скобки, после заголовка математического утверждения символ не ставится, заголовок доказательства (Proof) выводится жирным шрифтом, номер apar-секций и заголовки выводятся жирным шрифтом. В пакете ncclatex устанавливаются иные умолчания: \TheoremCommentDelimiters{}{} \AfterTheoremHeaderChar{.} \AfterTheoremHeaderSkip{\hspace{.7em plus .2em minus .lem}} \ProofStyleParameters{\bff}{\proofname} \AparStyleParameters{\bff}{\bff}{.\enskip} Комментарии не обрамляются круглыми скобками, заголовки математических утверждений заканчиваются точкой, после номера apar-секции ставится точка. Команда \bff заказывает жирный текстовый и математический шрифты, а команда \proofname содержит заголовок доказательства (Proof или Доказательство). 11.8. Математические утверждения пакета ncclatex На базе пакета nccthm в пакете ncclatex реализовано восемь математических утверждений в трех стилях: с автоматической, ручной и араг-ну-мерацией (табл. 11.1). Любое математическое утверждение можно оформлять двумя способами: как декларацию (\{имя) ... \qef) и как окружение (\begin{(uALH)} ... \еп&{(имя)}). Таблица 11.1. Математические окружения пакета ncclatex Английский заголовок Русский заголовок Имя окружения с нумерацией в стиле Тип авто вручную apar Theorem Теорема theorem Theorem atheorem theorem Lemma Лемма lemma Lemma alemma theorem Proposition Предложение proposition Proposition proposition theorem Corollary Следствие corollary Corollary acorollary theorem Definition Определение definition Definition adefinition remark Statement Утверждение statement Statement astatement remark Example Пример example Example anexample remark Remark Замечание remark Remark aremark remark
Утверждения с автоматической нумерацией используются так: \begin{(uju.a)} [(комментарий)] (тело) \епй{(имя)} Счетчики всех утверждений совпадают с названиями окружений и являются динамическими. Утверждения с ручной нумерацией оформляются так: \Ъе£±п{(имя)}{(номер)} [(комментарий)] (тело) \еп&{(имя)} Если (номер) пуст, то печатается утверждение без номера. Если необходимо оформить нестандартное утверждение как теорему, то можно воспользоваться командой \liketheorem. Аналогично, для оформления утверждения как замечания имеется команда \likeremark. Их синтаксис: \11кеЬЬеогеш{(заголовок)}{(нол<ер)} [(комментарий)] (тело) \qef \Икегетагк{(заголовок)}{(нол4ер)} [(комментарий)] (тело) \qef Утверждения в стиле араг оформляются аналогично утверждениям с автоматической нумерацией, но нумеруются с помощью динамического счетчика араг. Для оформления нестандартных утверждений в этом стиле используются команды \liketheorem*{(3aao^oeo?c)}[(комментарий)] (тело) \qef \Икегетатк*{(заголовок)} [(комментарий)] (тело) \qef
Графика Иллюстрации (графики, чертежи, схемы, фотографии и др.) можно создавать различными способами: псевдографическими средствами DT^X’a (базирующимися только на возможностях T^jX’a и специальных шрифтах, имеющихся в DTeX’c и позволяющих рисовать несложные рисунки), вставкой графических объектов, подготовленных в каком-либо графическом редакторе, наконец, использованием специальных средств языков PostScript и PDF. Вставка графических объектов наиболее популярна и проста в освоении. Другие методы существенно сложнее и, в основном, используются опытными пользователями DT^jX’a. Начинающему пользователю будет достаточно прочитать п. 12.1, 12.2 данной главы, чтобы научиться вставлять рисунки в документ. Для более полного освоения возможностей коллекции graphics следует прочитать п. 12.3-12.7. Простые иллюстрации, называемые далее чертежами, можно создавать средствами псевдографики DT^jX’a, описанными в п. 12.8, 12.9. Наконец, некоторые экзотические возможности работы с графикой описаны в п. 12.10. 12.1. Оформление иллюстраций Иллюстрации обычно оформляют в виде плавающих элементов с подрисуночной подписью. Подрисуночную подпись нумеруют, если в тексте есть ссылки на связанную с ней иллюстрацию. Ссылка на иллюстрацию оформляется так: рис. 1. При повторной ссылке добавляют см. и при необходимости указывают номер страницы (см. пример на с. 41). Если иллюстрация единственная, то она не нумеруется, и при ссылке на нее пишут рисунок, на рисунке и т. д. Ненумерованные иллюстрации обычно используют в изданиях художественной литературы. Подпись при этом может отсутствовать, если смысл иллюстрации понятен и без нее. Иллюстрации обычно готовят в графических файлах. Для вставки таких иллюстраций лучше использовать пакет graphicx из стандартной коллекции graphics. Загрузите этот пакет в преамбуле документа командой \usepackage{graphicx}
Затем вставьте иллюстрацию в текст документа, например, так: \begin{figure}\centering \includegraphics[{список ключей)!{{имя файла)} \caption{(подрисуночная подпись)}\1&Ъъ1{{метка)} \end{figure} Команда \includegraphics выполняет вставку графического объекта из указанного файла. В списке ее ключей обычно задается информация о размерах графического объекта (подробности далее). При вставке создается бокс требуемых размеров и в нем размещается графический объект. Если заказан режим черновика (опция draft в классе документа или в опциях пакета graphicx), то вместо графического объекта рисуется рамка с именем графического файла в верхнем левом углу. Подрисуночная подпись оформляется командой \caption, которая идет следом за иллюстрацией. Команда \label создает метку, которую можно будет использовать в тексте при ссылке на иллюстрацию. Команду \caption можно использовать только внутри плавающих элементов. В стандартном JATfjX’e не предусмотрено оформление ненумерованной подрисуночной подписи, а в макросе A/^C подпись без номера оформляется командой \caption*. 12.2. Особенности вставки графических объектов 1. В Т^Х’е нет специальных графических команд. Для вставки графических объектов и выполнения других действий, не поддерживаемых Т^Х’ом (например, для вставки гиперссылок), используется команда \зрес±а1{{что-нибудъ)}, заносящая содержимое своего параметра в dvi-файл. Интерпретация этого параметра перекладывается на dvi-драйвер, который будет показывать и выводить документ на печать. Поэтому возможности вставки графических объектов сильно зависят от dvi-драйвера, который интерпретирует dvi-файл. Эта принципиальная несовместимость между разными драйверами устраняется через опции пакета graphicx при его загрузке. Например, команда \usepackage[dviwin]{graphicx} означает, что пакет graphicx загружается в совместимости с драйвером dviwin, и все команды lAT^X’a, зависящие от dvi-драйвера, будут использовать в параметрах команд \special язык драйвера dviwin.
В двух случаях имя драйвера указывать не обязательно: если после трансляции файла используется драйвер dvips1, конвертирующий dvi-файл в формат ps (PostScript), и если документ транслируется программой pdf latex в формат pdf (Adobe Portable Document Format). Эти варианты как раз самые популярные, причем за последние годы формат pdf приобретает все большую популярность, постепенно вытесняя ps. Файлы формата ps можно сразу печатать на принтере2, а pdf-файлы можно, например, просматривать и печатать программой Adobe Acrobat Reader [12]. Файлы формата pdf занимают существенно меньше места на диске, чем ps-файлы (примерно в 10 раз меньше). 2. Форматы графических файлов подразделяются на векторные и растровые. В файле векторного формата изображение хранится в виде последовательности команд отрисовки (линий, прямоугольников, эллипсов, текста, команд закраски областей и др.). В растровом формате изображение состоит из точек разных цветов. Качество растрового изображения определяется разрешением, означающим количество точек, помещающихся в одном дюйме (dots per inch, сокращенно dpi). Векторный формат (eps, ps, pdf) обычно предпочтительнее растрового (bmp, png, jpg, gif и др.), поскольку качество векторного изображения не зависит от степени его увеличения, а качество растрового изображения при увеличении ухудшается. Поэтому рисунки в растровом формате необходимо готовить с хорошим разрешением. Обычно разрешение должно быть не менее 600 dpi для черно-белых рисунков и не менее 300 dpi для цветных. 3. При вставке графического файла векторного формата в списке ключей достаточно указать его ширину и высоту: \includegraphics [width=(uzuptma), height=(ebicoma)] {(имя файла векторного формата)} Эти ключи не обязательны. Если их не указывать, то размеры графического объекта будут взяты из файла. Если указана только ширина или 1Если Вы установили на своем компьютере Ghost Script, то программа YAP, используемая в MiKTeX’e для просмотра и печати dvi-файлов, будет понимать команды драйвера dvips. 2Не все принтеры понимают язык PostScript. В этом случае Вам поможет программа Ghost View [14], которая позволяет просматривать ps-файлы и печатать их на любых принтерах.
высота, то объект пропорционально масштабируется до заданного размера. Пример: \includegraphics{oldmen. eps}*/, \includegraphics [width=30mm] {oldmen. eps}*/, \includegraphics [height=20mm] {oldmen. eps}‘/. \includegraphics [width=30mm, height=15mm] {oldmen.eps} Результат: При вставке графического файла растрового формата необходимо указать параметры ограничивающего бокса объекта в списке ключей: \includegraphics [ЬЪ=О 0 {ширина} {высота}'] {{имя файла растрового формата}} Так, если рисунок oldmen.eps, имеющий размеры 50x50 мм, перевести в формат bmp, то команда вставка его в документ будет следующей: \includegraphics[ЬЬ=О 0 50mm 50mm]{oldmen.bmp} Подробности о ключах команды \includegraphics приведены в п. 12.7 на с. 214. 4. К сожалению, разные dvi-драйверы «дружат» с графическими файлами разных форматов. Так драйвер dvips обрабатывает файлы форматов eps, ps, bmp. В то же время для pdftex’a подходят файлы форматов pdf, png, jpg. Программа YAP обрабатывает файлы формата bmp, а если установлен Ghost Script [14], то и форматов eps и ps3. 3При печати eps- или ps-рисунка через YAP на принтере, не поддерживающем PostScript, размеры и позиционирование рисунка могут интерпретироваться неверно. Надеюсь, что со временем эта ошибка будет устранена.
Такой разнобой в обрабатываемых форматах графических файлов затрудняет подготовку документа, который можно было бы транслировать разными способами без каких-либо изменений в исходном тексте. Однако универсальное решение все-таки имеется. Достаточно подготовить несколько вариантов каждого графического файла в разных форматах (например, oldmen.eps для dvips и oldmen.pdf для pdf latex) и при вставке его командой \includegraphics указать имя файла без расширения. Подходящий вариант графического файла при трансляции будет выбран автоматически. Рассмотрим такой сценарий работы с документом: для оперативной правки документа будем использовать YAP, а окончательную версию документа будем создавать в форматах ps и pdf. В этом случае стоит воспользоваться пакетом epstopdf из коллекции oberdiek4. Все, что Вам будет нужно — загрузить данный пакет, подготовить графические файлы в формате eps, и вставить их в документ, не указывая расширения .eps. При трансляции документа Т^Х’ом, его просмотре в YAP’e или преобразовании в PostScript с помощью dvips будут использоваться eps-версии графических файлов, а при трансляции документа в pdf latex’e из новых графических файлов формата eps будут автоматически созданы файлы формата pdf и вставлены в документ. 5. Как уже было сказано выше, графические файлы векторного и растрового форматов вставляются в документ с разными ключевыми параметрами: для векторных форматов используются ключи width и height, а для растровых—bb. От такого разнобоя можно избавиться, если загрузить пакет nccpic из коллекции ncctools. Этот пакет расширяет пакет graphicx и ослабляет требования к ограничивающему боксу: если графический объект растровый, то достаточно указать только его размеры в документе без определения ограничивающего бокса. В результате получается, что графические файлы всех типов можно вставлять в документ одинаково, командой \includegraphics [width= (размер), height=(размер)] {(имя)} Для совместимости со старой версией Л/£С-1АТЩХ, в пакете nccpic определяется команда 4 Автор этой коллекции Heiko Oberdiek. В ней можно найти несколько полезных пакетов для работы с pdftex.
\put image (w, h) {(им я)} 5 параметры w и h которой задают размеры графического объекта в графических единицах \unitlength (по умолчанию—в пунктах, при использовании класса псс или пакета ncclatex—в миллиметрах). В режиме черновика, указанный в параметре команды файл может отсутствовать6. Это позволяет готовить макет документа и графические объекты раздельно. Управление режимом черновой и чистовой графики выполняется декларациями \draftgraphics и \finalgraphics. При использовании пакета nccpic под Windows можно все графические файлы размещать не в корневой папке документа, а подпапке graphics. Чтобы не загромождать папку с транслируемым файлом, все текстовые файлы, связанные с графикой, также можно помещать в подпапку graphics, снабжая их расширением .pic. Для вставки таких файлов служит команда \±р±с{(имя)} где (имя) — имя файла без расширения. При вставке к этому файлу добавляется расширение .pic и поиск файла осуществляется сначала в папке, содержащей транслируемый файл, а затем в подпапке graphics. В редакции ИВМиМГ СО РАН используется следующая технология работы с графикой: каждый графический файл заносится в подпапку graphics в двух форматах: bmp и png. В этой же папке для каждого графического файла создается текстовый файл с расширением .pic, содержащий команду \putimage, а в текст документа добавляется команда \ipic с именем pic-файла. Такая технология позволяет просматривать и печатать документ с графикой в YAP’e, преобразовывать его в PostScript программой dvips и в pdf — программой pdf latex, причем без каких-либо модификаций текста документа. 12.3. Коллекция пакетов graphics В коллекции graphics поддерживается более десятка различных драйверов, но наиболее популярны два из них: dvips и pdftex. Первый используется, если dvi-файл преобразуется программой dvips в ps-формат, а последний — если исходный файл транслируется программой pdf latex в 5 Команда \put image содержит еще четыре дополнительных параметра, обеспечивающих совместимость с ее старой версией. Здесь эти параметры не описываются. 6Команда \includegraphics требует, чтобы файл графического объекта существовал, даже если включен режим черновика.
pdf-формат. Если Вы не указываете драйвер при загрузке пакетов коллекции graphics, то Т^Х-система выбирает драйвер самостоятельно. По умолчанию используется драйвер dvips, а при трансляции файла программой pdf latex —драйвер pdf tex. Коллекция graphics состоит из следующих пакетов: color — работа с цветом; graphics — стандартные средства работы с графикой; graphicx — расширение предыдущего пакета; epsfig — расширение предыдущего пакета, реализующее команду \psfig для совместимости со старой версией пакета, работавшей под 1ЭДЩХ-2.09; keyval — средства поддержки синтаксиса ключ=значение (используется в graphicx); Iscape — определяет окружение landscape, внутри которого содержимое страниц повернуто на 90° против часовой стрелки; pstcol — «заплатка» к пакетам коллекции PSTricks, обеспечивающая совместимость с пакетом color; trig — «внутренняя кухня» коллекции, вычисляющая синус, косинус и тангенс углов. С точки зрения использования интерес представляют пакеты color, graphics, graphicx, Iscape. Среди пакетов graphics и graphicx лучше выбрать последний, поскольку он имеет более удобный интерфейс, и возможности трансформации текста и графики в нем шире, чем в первом. О пакете Iscape уже все необходимое сказано. Далее описываются средства пакетов color и graphicx. Дополнительную информацию о перечисленных пакетах можно найти в файле doc\latex\graphics\grfguide.ps. 12.4. Работа с цветом 1. Цветовые модели. Пакет color обеспечивает работу с цветом. Выбор цвета в нем базируются на цветовой модели. Поддерживаются следующие модели цвета: rgb — модель Red-Green-Blue. Интенсивности компонент цвета задаются тремя вещественными числами из диапазона [0,1], разделенными запятыми;
стук — модель Cyan-Magent a- Yellow-blacK. Интенсивности задаются списком из четырех вещественных чисел из диапазона [0,1]; gray — оттенки серого цвета. Интенсивность задается одним вещественным числом из диапазона [0,1]; named — именованные цвета. Указывается конкретное имя цвета. Не все драйверы поддерживают эту модель. Можно использовать только те имена цветов, которые известны драйверу. 2. Определение цветов. По умолчанию определены следующие базовые цвета: black, white, red, green, blue, cyan, magenta, yellow. Для определения собственных цветов используется команда \бе±±песо1ох{(имя)}{(модель)}{(описание)} Пример: \definecolor{light-blue}{rgb}{0.8,0.85,1} 3. Использование цветов. Аналогично командам выбора начертания шрифта имеются два варианта команды изменения цвета текста: декларация, изменяющая цвет текста в пределах текущего блока, и команда с параметром, выводящая текст заданным цветом. Декларации \со1ог{(ил(я)} \color [(.модель)] {(описание)} устанавливают цвет текста. Первая версия использует ранее определенное имя цвета, а последняя—заказывает цвет непосредственно, указывая модель и описание компонент цвета. Команды \textcolor{(uALH)}{ (текст)} \textcolor [(модель)'] {(описание)}{(текст)} выводят (текст) заданным цветом. Опять же первый вариант использует ранее определенное имя цвета, а последний —непосредственно заказывает цвет. Команды \pagecolor{(ujvt^)} \pagecolor [(модель)] {(описание)}
изменяют цвет фона страницы. Это глобальные декларации. Они действуют на фон текущей страницы, а также всех последующих страниц. Чтобы снова сделать цвет фона страницы белым, воспользуйтесь командой \pagecolor{white}. 4. Заливка фона боксов. Команды \со1огЬох{(ил(я)}{ (текст)} \со1охЪох[(моделъ)]{(описание)}{(текст)} заливают фон бокса заданным цветом, а команды \fсо1огЬох{(им.я 1)}{(имя 2)}{(текст)} \f colorbox [(.модель)] {(описание 1)}{(описание 2)}{(тпекстп)} заливают фон бокса вторым цветом, а обводят его первым цветом. Пусть, например, определены следующие цвета: \definecolor{light-gray}{gray}{.9} \def inecolor{gray}{gray}{.5} Тогда команда \fcolorbox{gray}{light-gray}{TeKCT} создает такой бокс: I текст |. Величины отступов от текста до рамки и толщина линии обводки регулируются переменными \fboxsep и \fboxrule (см. с. 113). 5. Расширенные возможности манипуляции с цветом предоставляются пакетом xcolor. В нем добавлено несколько цветовых моделей, возможности смешивания цветов, получения дополнительные цветов, разделения цветов. 12.5. Вращение текста Вращение текста реализовано в пакете graphics и усовершенствовано в пакете graphicx (в команду вращения бокса добавлен необязательный параметр). Команда \rotatebox [(список ключей)] {(угол)}{(текстп)} осуществляет поворот текста на заданный (угол) против часовой стрелки. По умолчанию вращение выполняется вокруг точки, находящейся в начале бокса на уровне базовой линии. Пример поворота текста на 15°: В списке ключей можно указывать точку, вокруг которой выполняется вращение, и задавать единицы измерения угла вращения.
Ключ origin^ [позиция] задает вращение относительно одной из 12 основных точек бокса, определяемых вертикальной и горизонтальной позициями в боксе. Вертикальное положение центра вращения задается одной из букв t (верхняя граница), b (нижняя граница), с (центральная линия), В (базовая линия), а горизонтальное — буквой 1 (левая граница), с (середина) или г (правая граница). Букву с можно не указывать. Примеры: origin=c — вращение относительно центра бокса; origin=tr — вращение относительно верхнего правого угла бокса; origin=B — центр вращения лежит на базовой линии в середине бокса. Ключи х=[размер] и у=[размер] явно задают расстояния центра вращения от точки, находящейся в начале бокса на уровне базовой линии. Если один из этих ключей не задан, то подразумевается центр бокса. Можно комбинировать эти ключи с ключом origin. В значениях этих ключей можно использовать макросы \width, \height, \depth и \totalheight, величины которых равны ширине, высоте, глубине и полной высоте вращаемого бокса соответственно. Наконец, ключ units=(число] задает единицы измерения угла вращения через их количество, укладывающееся в поворот на полный круг против часовой стрелки. Примеры: units=-360 — угол задается в градусах по часовой стрелке; units=6.283185 — угол задается в радианах. 12.6. Масштабирование текста Масштабирование текста реализовано в пакете graphics. 1. Команда \scalebox{/i} {[текст]} создает горизонтальный бокс, изменяя размеры текста в нем в заданных пропорциях: по ширине текст растягивается в h раз, а по высоте —в v раз. Если параметр и не указан, то он полагается равным h. Отрицательные значения параметров означают масштабирование, совмещенное с отражением по соответствующему направлению. Примеры: xXyZx X xyz X X XVX X xxXsx x \scalebox{2}{xyz} x\\ x \scalebox{l}[1.5]{xyz} x\\ x \scalebox{-l.5}[1]{xyz} x\\ x \scalebox{l}[-1.5] {xyz} x
2. Команда \reflectbox{ (текст}} эквивалентна команде \scalebox{-l}[1]{(текст}}. Она отражает текст по горизонтали относительно середины. 3. Команда \res izebox{ (ширина}}{(высота}}{(текст}} масштабирует бокс так, чтобы он имел заданную (ширину) и (высоту). Допустимы отрицательные значения этих параметров, означающие отражение текста. Вместо (ширины) ((высоты)) можно указывать восклицательный знак. При этом масштабирование бокса будет пропорциональным, а пропорция будет вычисляться по (высоте) ((ширине)). В параметрах (ширина) и (высота) можно использовать макросы \width, \height, \depth и \totalheight, величины которых равны ширине, высоте, глубине и полной высоте масштабируемого бокса соответственно. 4. Команда \resizebox*{(ширина)}{(полная высота)}{(текст)} отличается от предыдущей тем, что во втором ее параметре задается полная высота требуемого бокса. 12.7. Подробнее о вставке графических объектов 1. Вставка графического объекта в пакете graphicx выполняется командой \includegraphics [(список ключей)] {(файл)} Если расширение у (файла) не указано, то Т^Х-система перебирает расширения, соответствующие выбранному графическому драйверу, до тех пор, пока не найдет графический файл. Например, список расширений у драйверов dvips и pdftex следующий: dvips .eps,.ps,.eps.gz,.ps.gz,.eps.Z pdftex .png,.pdf,.jpg,.mps,.tif
Здесь .eps и .ps —расширения файлов в формате Encapsulated PostScript и PostScript. Расширения .eps.gz, .ps.gz, .eps.Z используются для PostScript файлов, упакованных архиватором gzip. Драйвер dvips понимает также растровые графические файлы в формате .bmp. Программа pdftex может вставлять графические объекты в форматах .pdf, .png, .jpg, .mps и .tif. 2. Для корректной вставки графического объекта в документ 1АТеХ’у необходима информация о позиции объекта в графическом файле, задаваемой с помощью ограничивающего бокса четырьмя значениями, разделенными пробелами и определяющими координаты левого нижнего и правого верхнего углов объекта. В файлах с расширениями .ps и .eps такая информация содержится внутри в виде ‘/.‘/.BoundingBox: (lx) (ly) (rx) (ry) Параметры этой команды — целые числа. Они означают следующее: (1х), (1у) — координаты левого нижнего угла объекта; (гх), (гу) — координаты правого верхнего угла объекта. Оси системы координат направлены по горизонтали вправо, по вертикали—вверх. В качестве единиц измерения в .ps и .eps файлах используются большие пункты Ьр (72 bp = 1 in). Для упакованных .ps и .eps файлов необходимо создать одноименные файлы с расширением .ps.bb и .eps.bb, в которые следует записать команду 7,'/,BoundingBox: ... (например, скопировав ее из ps-файла). Наконец, размеры ограничивающего бокса можно задавать непосредственно в дополнительном параметре команды \includegraphics с помощью ключа bb = (1х) (1у) (гх) (гу) В параметрах этого ключа можно использовать как числа (без единиц измерения), так и размеры (с единицами измерения). Если единицы измерения не заданы, используются единицы Ьр. Пример: ЬЬ = 0 0 56.6mm 45mm Ограничивающий бокс определяет фрагмент объекта, над которым выполняются дальнейшие преобразования.
3. Ключи viewport = (vlx) (vly) (vrx) (vry) trim = (tlx) (tly) (trx) (try) выделяют фрагмент графического объекта: viewport выделяет фрагмент внутри ограничивающего бокса объекта (отсчет параметров идет от левого нижнего угла ограничивающего бокса), a trim обрезает ограничивающий бокс на заданные величины, если эти величины положительны, а иначе добавляет пространство с соответствующей стороны объекта. Следующие примеры дают одинаковый результат, но разными способами: bb = 0 0 720 360, viewport = 100 -20 600 400 bb = 0 0 720 360, trim = 100 -20 120 -40 Все дальнейшие манипуляции производятся с исходным или выделенным фрагментом объекта. Все, что выходит за пределы этого фрагмента, будет печататься с наложением на окружающий текст. Чтобы обрезать выступающие части объекта, задайте ключ clip или используйте *-форму команды \includegraphics. 4. Ключи angle = (поворот) origin = (позиция) задают поворот фрагмента объекта: angle определяет величину поворота в градусах против часовой стрелки, a origin задает центр вращения по тем же правилам, что и в команде \rotatebox (см. с. 213). Если ключ origin отсутствует, то поворот будет выполнен относительно левого нижнего угла фрагмента объекта (origin=lB). 5. Ключи scale = (число) width = (размер) height = (размер) totalheight = (размер) определяют размеры фрагмента объекта в документе: scale задает масштабирование фрагмента объекта в заданное число раз, a width и/или height определяют требуемую ширину и/или высоту фрагмента объекта.
Если заданы оба ключа (width и height), то фрагмент объекта масштабируется точно до указанных размеров. Ключ keepaspectratio предотвращает непропорциональное масштабирование: фрагмент объекта пропорционально масштабируется так, чтобы его высота и ширина не превосходили заданных размеров. Ключ totalheight используется вместо height, если требуется задать полную высоту фрагмента объекта. Обычно полная высота совпадает с высотой бокса объекта, т. е. глубина равна нулю. Однако после поворота глубина может стать ненулевой. 6. При использовании опции draft в классе документа или в пакете graphics/graphicx, графические объекты отрисовываются в режиме черновика: как прямоугольники с рамкой и именем графического файла в верхнем левом углу. Опция final отключает этот режим. Ключ draft = (true\ false) управляет режимом отрисовки конкретного объекта: draft=false отключает режим черновика, a draft=true или просто draft включает этот режим. 7. Все ключи обрабатываются в порядке их записи в дополнительном параметре команды \includegraphics. Поэтому при изменении порядка ключей поворота и масштабирования получатся разные результаты. Например, ключи [angle=90, height=30mm] сначала задают поворот объекта на 90°, а затем масштабируют результат до высоты в 30 мм. В то же время ключи [height=30mm, angle=90] сначала масштабируют объект до высоты в 30 мм, а затем поворачивают его на 90°. 8. Команда \graphicspath{(папки)} задает дополнительные папки, в которых будет выполняться поиск графических объектов, если они отсутствуют в папке, где находится транслируемый документ. Параметр (папки) задает список папок, заключенных в фигурные скобки. Пример: \graphicspath{{eps/}{tiff/}}
9. Если в опциях команды \includegraphics не заданы размеры ограничивающего бокса и графический файл растровый, то 1АТЩХ пытается найти файл с расширением .bb, чтобы извлечь из него размеры ограничивающего бокса, записанные в команде 7.7.BoundingBox. Если же такой файл не найден, то будет выдано сообщение об ошибке: ! LaTeX Error: File ‘(имя) .bb’ not found. 12.8. Подготовка чертежей Для подготовки простых чертежей применяется окружение picture. В чертежах используются графические единицы измерения, размерность которых задается переменной \unitlength. По умолчанию в lAT^jX’e \unitlength=lpt, а в классе псс и пакете ncclatex — 1mm. Далее все размеры в примерах задаются в миллиметрах. 1. Заказ чертежа выполняется так: \begin{picture}(rdim, т/dim) (команды) \end{picture} Здесь (^dim? ?/dim) — размеры бокса чертежа в единицах \unitlength, (г о, У о) — координаты левого нижнего угла чертежа в этих же единицах измерения (рис. 12.1). Если параметр (хъ,уъ) отсутствует, то левый нижний угол будет иметь координаты (0,0). Содержимое чертежа может выходить за пределы его бокса7. (ХО “Ь ^dim, УО J/dim) Базовая линия Бокс чертежа 2/dim (хо,уо) ^dim Рис. 12.1 2. Команды вывода примитивов чертежа. Содержимое чертежа оформляется командами \put и \multiput, выводящими некоторый текстовый или графический элемент один раз (\put) или многократно со сдвигом (\multiput). В дальнейшем элемент, выводимый данными командами, 7В пакете nccboxes имеется команда \picbox{(команды}}, эквивалентная чертежу нулевых размеров.
будет называться примитивом чертежа, а точка, относительно которой этот элемент выводится, — точкой привязки примитива. Команда \риг(ж, у} {(примитив}} выводит примитив с привязкой к точке с координатами (х,у}. Команда \multiput(ж, у) (Дж, Ау) {п}{(примитив}} выводит примитив п раз, начиная с точки привязки (х, у} и каждый раз сдвигая эту точку на вектор (Дж, Дт/). Другими словами данная команда эквивалентна n-кратному применению команды \put с точками привязки: (ж, у}, (ж + Дж, у + Д?/), ..., (ж + (п — 1)Дж, у + (п — 1)А?/). Наряду с данными командами в чертеже можно использовать и другие команды, не выводящие текст, например, декларации изменения шрифтов и толщины линий чертежа. 3. Примитивы чертежа. В качестве примитива чертежа может выступать обычный текст, а также боксы, таблицы и другие элементы, которые оформляют в горизонтальной моде. Все эти элементы выводятся так, что точка привязки примитива совмещается с их началом (левым краем) и находится на уровне базовой линии. Например, при выводе обычного текста точка привязки будет помещаться слева от первого символа на уровне подножия строки (в этом примере и далее стрелка указывает точку привязки примитива): ^Некоторый текст \put (7,4.3) {Некоторый текст} (7,4-3) Наряду с обычными средствами оформления текста, в качестве примитивов могут выступать и специальные команды, создающие различные графические элементы (см. далее). В чертежах также используются специальные формы текстовых боксов, отличающиеся от обычных тем, что их размеры задаются в единицах чертежа, а также имеется больше вариантов размещения текста в них. Все специальные команды, используемые в чертежах, — хрупкие.
4. Чертежные боксы. В качестве примитива чертежа используется специальная форма бокса \makebox(zdim, з/aim) [(позиция)] {(текст)} Здесь (^dim, ?/dim)— размеры бокса, параметр (позиция) определяет способ размещения текста в боксе, обычно состоящий из двух букв, одна из которых отвечает за горизонтальное, а другая—за вертикальное размещения текста в боксе. Варианты горизонтального размещения—1, с или г; вертикального—t, с или Ь. Порядок букв, задающих способ размещения текста, не существенен. Кроме того, букву с можно не задавать (например, [Ь] и [cb] эквивалентны), а если данный параметр вообще опустить, то будет подразумеваться размещение [сс]. Размеры бокса #dim и З/dim не должны быть отрицательными, но могут быть и нулевыми. Случай нулевых размеров особенно интересен тем, что дополнительный параметр этой команды будет задавать способ размещения текста относительно точки привязки этого примитива. Пример: Сени|Сени \put(5,2){\makebox(0,0)[It]{Амбар}} (5 2) (25,13) (43,1) \put(25,13){\makebox(0,0){Сени Сени}} Баркас^/ \put(43,l){\makebox(0,0) [rb]{Баркас}} Амбар Для сохранения чертежного бокса используется специальная форма команды \savebox: \БачеЪох{(команда)} (zdim, ?/dim) [(позиция)] {(текст)} Указанная здесь (команда) должна быть предварительно создана с помощью команды \newsavebox. Для использования сохраненного бокса в качестве примитива чертежа применяется команда \изеЪох{(команда)}. С помощью команды \frame{ (текст)} можно поместить текст в бокс и обвести его снаружи рамкой. Эта команда несколько похожа на \fbox (см. с. ИЗ), но отличается следующими деталями: • рамка рисуется вплотную к тексту; • толщина линий рамки регулируется другими средствами, а не переменной \fboxrule; • базовая линия результирующего бокса сдвигается на нижнюю кромку рамки, а команда \f box оставляет базовую линию на месте.
На основе команд \frame и \makebox реализован чертежный бокс с рамкой: \f ramebox(xdim, j/dim) [(позиция)] {(текст)} Пример: Амбар NW ^(25,3) Баркас \put(0,3){\framebox(20,6)[ct]{Амбар}} \put(25,3){\framebox(20,6)[rb]{Баркас}} Наконец, команда \dashbox{(длина штриха)} (xdim> ?/dim) [(позиция)] {(текст)} обводит бокс штриховой линией с длиной штриха, задаваемой в единицах \unitlength. Пример: Г Амбар 1 Г 1 I_________। I_____Б аркад ’(0,3) ^(25,3) \put(0,3){\dashbox{2}(20,7)[ct]{Амбар}} \put(25,3){\dashbox{2}(20,7)[rb]{Баркас}} 5. Линии. Команда Mine (zdir, 2/dir) {(длина)} рисует из точки привязки прямую линию, идущую вдоль направляющего вектора (^dir, ?/dir)-Г, Линия Размеры линии определяются параметром (длина): если линия вертикальная (zdir — 0), то 2/dir> этот параметр задает ее действительную длину; Точка^^ ^iir (длина) если же линия не вертикальная (a?dir 7^ 0), то привязки он задает длину ее горизонтальной проекции Рис. 12.2 (рис. 12.2). Наклонные линии рисуются с помощью псевдографики (символами специального шрифта). Поэтому коэффициенты направляющего вектора (zdir, ?/dir) не могут быть произвольными: они должны задаваться целыми числами из диапазона [—6,6], причем a^dir и 2/dir должны быть взаимно простыми числами (не должны иметь общего делителя, отличного от единицы). Например, нельзя в качестве направляющего вектора использовать пару (2, —4). Вместо нее надо писать (1, —2). Поскольку наклонные линии рисуются символами псевдографики, то длина наклонных линий должна быть не меньше lOpt (3.51mm).
6. Векторы. Команда \ ve с t or (Xdir, ?/dir) {(длина)} рисует вектор заданной длины по направлению (xdir, З/dir)- Сначала рисуется линия, а затем в конце нее помещается стрелка. Параметры Xdir и у^т должны быть взаимно простыми целыми числами из диапазона [—4,4]. 7. Окружности и круги. Команды \с±хс1е{(диаметр)} \с±хс1е*{(диаметр)} рисуют соответственно окружность и круг заданного диаметра. Точка привязки находится в центре примитива. Диаметр окружности варьируется в пределах от Ipt (0.351mm) до 40pt (14.04mm), а максимальный диаметр круга равен 15pt (5.26mm). Градации диаметров в пунктах таковы: 1, 2, ..., 15, 16, 20, ..., 40. При отрисовке выбирает ближайшую по размеру окружность или круг из имеющихся. В следующем примере приведены круги и окружности максимального диаметра (их размеры заданы в миллиметрах): \put(10,7){\circle{15}J \put(25,7){\circle*{6}} 8. Овалы. Команда \oval(zdim,?/dim) [(-часть)] рисует овал (прямоугольник со скругленными углами) с центром в точке привязки. Высота или ширина овала должны быть не меньше, чем 2pt (0.7mm). В противном случае lAT^X выдаст предупредительную диагностику «Oval too small» и овал будет отрисован неправильно. Если параметр (часть) задан, то рисуется «половинка» или «четвертинка» овала: 1 — левая г — правая t — верхняя b — нижняя С □ It — левая верхняя 1Ь — левая нижняя rt —правая верхняя rb—правая нижняя
9. Управление толщиной линий. В 1АТцХ’е имеется два варианта шрифтов псевдографики, используемых для отрисовки чертежных примитивов с тонкими и толстыми линиями. Чтобы изменить толщину линий, используются декларации \thinlines —тонкие линии □ \thicklines —толстые линии □ По умолчанию действует декларация \thinlines. Можно также непосредственно задавать толщину чертежных линий командой \linethickness{ {толщина}} Действие этой команды распространяется только на горизонтальные и вертикальные линии чертежных примитивов, поскольку остальные линии рисуются средствами псевдографики и их толщина не может произвольно изменяться. 10. Рисование квадратичных кривых. В окружении picture наряду с \put и \multiput можно использовать команду рисования квадратичных кривых Безье \qbezier[n] (ri,j/i) (х2,?/2) С^з , 2/з) Здесь i — 1,2, 3, — опорные узлы кривой Безье. Кривая рисуется с помощью точек. Их количество выбирается автоматически так, чтобы кривая выглядела непрерывной линией. При необходимости можно явно указать количество точек кривой с помощью параметра п. Узлы (a?i,?/1) и (а?з, З/з) задают конечные точки кривой, а узел (г2,т/2) определяет касательные к кривой в ее начале и конце: если нарисовать треугольник, соединяющий эти узлы, то кривая Безье будет касаться сторон этого треугольника, соседних с вершиной (г2,?/2). Пример: /^(22,24) \qbezier(10,12)(22,24)(34,0) (10,12) (34,0)
12.9. Расширенные возможности подготовки чертежей Пакет epic, расширяет возможности рисования чертежей, добавляя новые команды, используемые непосредственно в окружении picture. Все координаты и размеры в командах этого пакета также задаются в единицах \unitlength. 1. Для вывода нескольких объектов с равным шагом служит команда \multiputlist (х ,у) (Дх, Д?/) [{позиция}] {(список объектов}} Здесь (х,у}— координаты начальной точки на чертеже; (Дг, Д?/) — шаги приращения; (список объектов} — объекты (примитивы) чертежа, разделенные запятыми (объект, содержащий запятую, заключайте в фигурные скобки), (позиция} — метод позиционирования объектов относительно точки вывода (варианты горизонтального позиционирования—1, с, г; вертикального— t, с, Ь; по умолчанию объекты центрируются). Объекты выводятся командой \makebox(0,0) [{позиция}] {{объект}}. Команда \matrixput (г,у) (Да?1, Д?/1){nil (Д^2, Д3/2) {пъ} {{объект}} выводит {объект} в координатах (х + г'Дг1 + jД^2,у + iAyi + JД?/2) при г = 0,..., rii — 1, j = 0,... , П2 — 1. 2. Для рисования ломаной линии из точек служит команда \dottedline [(символ)]{{paccm.}}(xi, yi) . . . {хп^уп) Символ, которым рисуется линия, задается параметром {символ}. По умолчанию используется специальный маленький черный квадрат \picsquare (его размеры изменяются при изменении толщины линий командами \thinlines, \thicklines и \linethickness). Параметр (расстояние} задает расстояние между точками. Пары (rri, ?/i), • • •, (хп, уп} задают точки, через которые проходит ломаная линия. Команда \dashline [{сжатие}] {{длина}} [{расст.}] (xi, у О . . . (хп, уп} рисует ломаную штриховую линию. Длина штриха задается параметром {длина}. Каждый штрих рисуется с помощью точек, расстояние между которыми выбирается так, чтобы штрих получился непрерывным. Параметр {расстояние} явно задает расстояние между точками штриха. С его помощью можно сделать штрих состоящим из отдельных точек. Параметр
(сжатие} определяет количество штрихов вдоль линии и задается целым числом, не меньшим —100. При нулевом значении расстояние между штрихами равно длине штриха. Отрицательное число означает на сколько процентов надо уменьшить общее число штрихов, а положительное — на сколько увеличить. Например, сжатие —25 уменьшит количество штрихов на 25%, а сжатие 100 увеличит количество штрихов вдвое (в результате штрихи сольются). Величина сжатия, используемая по умолчанию, задается в макросе \dashlinestretch, значение которого можно переопределить командой \renewcommand. Команда \drawline [{сжатие}] (rci, з/i) • • • (жп, уп) рисует непрерывную ломаную линию. В отличие от предыдущей команды, линия рисуется с помощью стандартных символов псевдографики, а не точками. Поскольку количество углов наклона у символов псевдографики ограничено, то символ псевдографики может идти не точно вдоль линии, поэтому линия может получиться волнистой. Степень «волнистости» регулируется параметром {сжатие}, также являющимся целым числом не меньшим —100: при его увеличении волнистость уменьшается. Величина сжатия по умолчанию задается в макросе \drawlinestretch, значение которого можно переопределить командой \renewcommand. 3. В вершинах ломаной линии можно поместить произвольные объекты, если воспользоваться окружениями \begin{dottedjoin} [(сюивол)] {{расст.}} {команды} \end{dottedj oin} \begin{dashjoin} [{сжатие}] {{длина}} [{расст.}] {команды} \end{dashjoin} \begin{drawjoin} [{сжатие}] {команды} \end{drawj oin} Вершины ломаной, а также объекты, в них помещаемые, задаются внутри этих окружений командой \jput (х, у) {{объект}} 4. Для рисования графиков функций, рассчитанных на компьютере, удобно использовать команду \putf Ие{{имя файла}}{{символ}}
В файле должны быть перечислены пары координат точек графика, разделенные пробелами. Функция рисуется поточечно с помощью заданного (символа) (например, с помощью символа \picsquare). 5. При отладке может помочь команда \grid(w, h} (kw, Д/г) [Хо, Vo] которую следует использовать в качестве примитива команды \put. В точке привязки рисуется сетка с шагом Aw по горизонтали и Д/г по вертикали. Ширина и высота бокса сетки определяются параметрами w и /г. Если используются параметры Хо и Yq, то вдоль границ бокса наносится оцифровка: с левым нижним углом связываются координаты (Xq, Yq)5 а приращения координат изменяются на величины Aw и Д/г. При использовании оцифровки параметры Дw, Д/г, Хо, То должны быть целыми числами. 6. Рисование ломаных линий средствами пакета epic — дорогостоящая процедура. Получающийся в результате чертеж состоит из большого числа мелких элементов. Усовершенствование этого механизма предоставляет пакет eepic, ускорение в котором достигается благодаря тому, что графические элементы рисуются dvi-драйвером, а не Т^Р^’ом. Команды этого пакета обрабатывают не все dvi-драйверы8. В пакете eepic сняты ограничения на угол наклона и минимальную длину линий, используемых в команде \line; можно рисовать круги и окружности любых размеров; можно устанавливать любую толщину линий с помощью команды \allinethickness{(moyit^uHa)}, действующей на все примитивы чертежа; добавлены новые графические примитивы, в частности, команды отрисовки эллипсов и залитых эллипсов \ellipse{a7diam]"t?/diam]’ llipse*{a7diam}'t?/diam} и команда отрисовки дуги окружности \ахс{(диаметр)}{01}{02} Точка привязки дуги располагается в центре окружности, начальный и конечный углы и #2 задаются в радианах и должны удовлетворять неравенствам 0 < #1 < 2тг, #1 < #2 < #1 + 2тг. Угол измеряется против часовой стрелки. Пакет eepic не загружает пакет epic. Поэтому, если Вы хотите использовать возможности обоих пакетов, загружайте их в таком порядке: \usepackage{epic,eepic} 8YAP и dvips обрабатывают эти команды, a pdf tex не обрабатывает.
12.10. Дополнительные графические возможности 1. При вставке графических объектов в документ иногда требуется наложить поверх некоторый текст, подготовленный в DT^X’e. Например, «легенду» у графика желательно готовить теми шрифтами, что используются в IM^X’e. Есть несколько путей решения этой задачи. Если рисунок растровый, то можно подготовить легенду в графическом файле9 и с помощью какого-либо графического редактора наложить ее на рисунок. Если рисунок в формате eps, то можно воспользоваться пакетом psfrag, позволяющим при трансляции подменять фрагменты текста в eps-файле на надписи в I^jX’e. Наконец, пакет overpic определяет окружение \begin{overpic} [{список ключей)'] {{имя файла)} {команды окружения picture) \end{overpic} соединяющее команду \includegraphics с окружением picture. Список ключей этого окружения передается в команду \includegraphics. Содержимое окружения наносится поверх рисунка. В списке ключей можно дополнительно использовать ключ grid, рисующий сетку поверх рисунка (это очень удобно при подготовке рисунка). Единицы измерения внутри окружения overpic могут быть абсолютными или относительными. Вариант выбора зависит от опции, с которой загружается пакет: опция abs задает абсолютные единицы измерения (размер \unitlength не изменяется), опция percent задает единицы измерения в процентах от максимального размера (ширины или высоты) рисунка, а опция permil —в десятых долях процента. По умолчанию действует опция percent. Пакет использует пакеты graphicx и epic. При просмотре в YAP’e рисунка с наложением текста подложка текста перекрывает находящийся под ней рисунок. Однако при печати из YAP’a и конвертации в форматы ps и pdf подложка текста становится прозрачной и не перекрывает рисунок. 2. Среди специализированных графических расширений весьма популярна коллекция PStricks, использующая средства языка PostScript для подготовки чертежей. Возможности, предоставляемые пакетами этой коллекции, очень впечатляющие. Чтобы оценить их, оттранслируйте файл 9Для этого надо подготовить легенду в ДОТвХ’е, с помощью dvips преобразовать документ с легендой в PostScript, затем открыть его в Ghostview и с помощью элемента меню File/Convert. . . сохранить страницу в каком-либо графическом формате в нужном разрешении.
doc\generic\pstricks\test-pst.tex в lAT^’e, а затем преобразуйте его в формат ps с помощью dvips. Описанию возможностей этой коллекции посвящена гл. 4 книги [4]. Возможности коллекции PStricks можно использовать и при подготовке документов в формате pdf, но с помощью специального адаптирующего пакета ps4pdf. Этот пакет следует загружать до пакетов коллекции PStricks. Все относящиеся к PostScript’y команды загрузки пакетов надо оформлять в виде параметра команды \PSforPDF, например: \PSforPDF{\usepackage{pstcol,pst-node,pst-tree,multido}} PostScript-чертежи также следует оформлять в параметре команды \PSforPDF, но при этом ее синтаксис богаче: \PSforPDF [{список ключей)] {{PostScript графика)} где {список ключей) — ключи для команды \includegraphics, которая будет вставлять динамически формируемый eps-файл. Идеи PStricks положены в основу пакета pgf (Portable Graphics Format), предоставляющего средства подготовки чертежей, рассчитанные на использование с драйверами dvips и pdftex. Возможности этого пакета сопоставимы с коллекцией PStricks, а использование проще: пакет одинаково хорошо работает как с dvips, так и с pdftex, причем без каких-либо адаптеров.
Глава 13 Плавающее размещение таблиц и рисунков При обработке простого текста обычно не возникает проблем с размещением его элементов на странице, поскольку разбивка документа на страницы возможна практически всюду. Однако если в документе содержатся рисунки или таблицы, то могут возникнуть большие сложности с их размещением. Поэтому в полиграфии принято размещать рисунки и таблицы в плавающем стиле: если нет места на текущей странице, то таблица или рисунок помещается на следующую страницу или несколько рисунков и таблиц выводятся на отдельной странице. Таблицы и рисунки при этом снабжаются нумерованными заголовками, номера которых используются в тексте для ссылок на них. 13.1. Вывод плавающих элементов 1. Для оформления рисунков и таблиц в плавающем стиле используются окружения \begin{figure} [{размещение}] {содержимое} \end{figure} \begin{table} [{размещение}] {содержимое} \end{table} Необязательный параметр {размещение} состоит из нескольких букв, задающих допустимые способы размещения плавающего элемента на странице (в порядке убывания их приоритета): h — разместить в точке вызова окружения; t — разместить вверху страницы; b — разместить внизу страницы; р — вывести на отдельной странице, содержащей только плавающие элементы. Порядок букв в этом параметре неважен, поскольку последовательность перебора вариантов определяется их приоритетами. В стандартных классах по умолчанию используется размещение [tbp], а в классе псс— [ht].
2. Если используется размещение h, то сначала lAT^X пытается разместить плавающий элемент в точке вызова окружения, а при неудаче откладывает вывод элемента до следующей страницы, где использует другие разрешенные варианты. Поэтому при наличии буквы h буква t означает размещение вверху следующей страницы. Если же вариант h не используется, то t означает размещение вверху текущей страницы, а если нет на ней места, то вверху следующей страницы. То же самое относится к размещению Ь. JATgjX может разместить плавающий элемент вверху страницы, если его размер не превышает 0,7 высоты страницы (в классе псс —0,8). Размещение плавающего элемента внизу страницы возможно, если его размер не превышает 0,3 высоты страницы (в классе псс —0,6). Если эти условия нарушаются, а разместить плавающий элемент вверху или внизу страницы необходимо, воспользуйтесь принудительным размещением, задав требуемый вариант совместно с восклицательным знаком ([t!] или [Ь! ]). Восклицательный знак можно также использовать с размещением h. Размещение р означает, что вывод плавающего элемента откладывается до тех пор, пока не наберется достаточного количества плавающих элементов с таким размещением, занимающих суммарно не менее 0,5 высоты страницы. Как только это условие выполнено, накопленные плавающие элементы будут выведены на отдельной странице. Максимальное количество плавающих элементов, выводимых на странице, задается счетчиком totalnumber (в стандартных классах его значение равно трем, а в классе псс — шести). 3. Если в документе много плавающих элементов, то может возникнуть ситуация, когда 1АТЩХ не справится с их размещением. При этом плавающий элемент, который 1АТеХ’у не удалось разместить, и все последующие элементы того же типа уйдут в конец документа (или главы документа). Если воспользоваться командой \clearpage, то она завершит текущую страницу документа как команда \newpage, а затем принудительно выведет все накопленные плавающие элементы. Непосредственное использование команды \clearpage приводит к формированию недозаполненных страниц. Чтобы избежать этого, загрузите пакет afterpage и вызовите команду \clearpage так: \afterpage{\clearpage} В результате команда \clearpage будет вызвана после того, как форматирование текущей страницы будет завершено.
4. По правилам полиграфии плавающий рисунок или таблица должен размещаться внутри той рубрики документа, где есть ссылка на него. Поэтому бывает, что какое-либо размещение недопустимо на некоторых страницах документа. Запретить его можно командой \suppressfloats [(размещение)] необязательный параметр которой либо t, либо Ь. Использование этой команды с параметром означает запрет указанного размещения на текущей странице документа. Если же эта команда используется без параметра, то все последующие плавающие элементы будут выведены после завершения текущей страницы. 5. При выводе текста в две колонки плавающие элементы размещаются в пределах текущей колонки, причем размещение р означает создание колонки, состоящей только из плавающих элементов. Если необходимо вывести плавающий элемент, занимающий по ширине обе колонки, то используются *-формы окружений: figure* и table*. В таких окружениях можно задавать только размещения t и р. Команда \afterpage в этом режиме не работает. При верстке текста в несколько колонок (внутри окружения multicols из пакета milticol) можно использовать только *-формы плавающих элементов. 6. Оформление заголовка плавающего элемента выполняет команда \capt ion [(элемент содержания)] {{текст заголовка)} Однострочный заголовок центрируется, а многострочный—оформляется в виде абзаца без абзацного отступа. В (тексте заголовка) нельзя использовать команды разбивки строк, а хрупкие команды (элемента содержания) следует защитить командой \protect. Если дополнительный параметр отсутствует, то в список таблиц или рисунков заносится (текст заголовка). Команду \caption нельзя использовать вне плавающих элементов. Текст оформляемой ею надписи предваряется заголовком, зависящим от типа плавающего элемента: в окружении figure заголовок будет Figure N: или Рис. N:, а в table — Table N: или Таблица N:. Здесь N — порядковый номер рисунка или таблицы, а точнее, текст, выводимый командами \thefigure и \thetable. Команда \caption использует счетчики figure и table, стиль нумерации которых зависит от класса оформления документа: в классе article нумерация сквозная, а в классах book и report —двойная, состоящая из номеров главы и плавающего элемента, разделенных точкой.
13.2. Приемы оформления плавающих элементов 1. Обычно плавающие рисунки и таблицы центрируют по горизонтали. Для этого достаточно задать декларацию \centering в начале окружения с плавающим элементом. Плавающие таблицы необходимо оформлять шрифтом уменьшенного кегля: обычно используется шрифт размера \footnotesize. Поэтому оформление таблицы как плавающего элемента должно быть таким: \begin{table}\centering\footnotesize \caption{...\label{...}} \begin{tabular}...\end{tabular} \end{table} Рисунок оформляется немного иначе: \begin{figure}\centering\footnotesize (рисунок) \caption{...\label{...}} \end{figure} 2. Для вывода двух узких таблиц рядом, воспользуйтесь следующим шаблоном: \begin{table}\centering\footnotesize \parbox[t] {(ширина)} {\cent ex \caption{. . .} \begin{tabular}...\end{tabular}}\hfil\hfil \parbox[t] {(ширина)} {\cent ex ing \caption{. . .} \begin{tabular}...\end{tabular}} \end{table} Здесь две команды \hfil раздвигают таблицы по горизонтали так, что с обеих сторон от каждой из них будет одинаковое пространство. Если требуется максимально раздвинуть таблицы, то замените \hfil\hfil на команду \hfill. 3. Шаблон для вывода двух узких рисунков следующий: \begin{figure}\centering\footnotesize \parbox[b] {(ширина)}{\сепЪех±п% (рисунок) \caption{...}}\hfil\hfil \parbox[b] {(uzupuHa)}{\centering (рисунок) \caption{...}} \end{figure}
4. Два рисунка с общим заголовком, имеющие частную алфавитную нумерацию: \begin{figure}\centering\footnotesize \parbox[b] {{ширина)}{\centering {рисунок)\\ [1mm] a}*/. \hfil\hfil \parbox [b] {(mupuHa)}{\centering {рисунок)\\ [1mm] 6} \caption{...} \end{figure} 13.3. Размещение рисунков и таблиц в оборку с текстом Рисунки и таблицы небольшого размера желательно оформлять с обтеканием, т. е. в оборку с текстом. По правилам полиграфии такие объекты следует размещать на внешней стороне страницы: в одностороннем режиме — справа, в двустороннем — слева для четных страниц и справа для нечетных. Имеется несколько конкурирующих пакетов, позволяющих оформлять рисунки и таблицы в оборку. Здесь описываются два из них, использующие автоматическое размещение. Средства ручного размещения описаны в следующем пункте. 1. Пакет floatflt предоставляет окружения \begin{floatingf igure} [{размещение}] {{ширина)} {содержимое) \end{floatingfigure} \begin{floatingtable} [{размещение)] {{ширина}} {содержимое) \end{floatingtable} с помощью которых можно оформить рисунок и таблицу в оборку. Внутри этих окружений можно использовать команду \caption. Параметр {ширина) задает ширину объекта, а {размещение) определяет способ размещения объекта (1 —слева, г—справа, р—слева для четных страниц и справа для нечетных). Если размещение не задано, то используются правила размещения, установленные опциями этого пакета: г fit — размещать с правого края; If It — размещать с левого края; vf It — размещать слева для четных страниц и справа для нечетных. По умолчанию действует опция vfIt. Данные окружения применяются между абзацами документа и помещают плавающий объект в оборку со следующими за ним абзацами.
2. Пакет wrapfig предоставляет окружения \begin{wrapf igure} [п] {{размещение)} [{выступ)] {{ширина)} {содержимое) \end{wrapfigure} \begin{wraptable} [п] {{размещение)} [{выступ)] {{ширина)} {содержимое) \end{wr apt able } Параметр п задает число строк текста в оборке (выносная формула считается за 3 строки). Если этот параметр отсутствует, то требуемое число строк вычисляется автоматически. Параметр [{выступ)] задает величину выступа объекта на поля страницы. По умолчанию выступ нулевой. Параметр {ширина) задает ширину объекта, а {размещение) определяет способ размещения объекта: одну из букв IrioLRIO. Варианты 1 и г означают размещение слева и справа, i и о —с внутренней стороны документа (около переплета) и с наружной. Прописные буквы означают аналогичное размещение, что и для строчных букв, но с запретом сдвига объекта по вертикали, т. е. объект размещается начиная с той строки абзаца, в которой он задан. Данные окружения можно использовать как между абзацами, так и внутри абзаца (в точке предполагаемого разрыва строки). 13.4. Средства пакета nccfloats Пакет nccfloats предоставляет сервисные средства для оформления плавающих элементов. 1. Команда \FloatingStyle{(cmuyiu)} определяет стиль оформления плавающих элементов. Этот стиль распространяется на все объекты, оформленные средствами данного пакета, но не действует на базовые макросы, т. е. на окружения figure и table. По умолчанию установлен стиль \FloatingStyle{\footnotesize\centering}. 2. Команды \minifig и \minitabl обеспечивают подготовку материала в виде министраницы и разрешают использование команды \caption внутри. Тело этих команд оформляется в стиле, установленном командой \FloatingStyle. Синтаксис этих команд соответствует синтаксису команды \parbox (см. п. 7.2, с. 116): \minif ±%[{позиция)] [{высота)] [(ей. поз.)] {{ширина)}{{текст)} \minitabl [(позиция)] [{высота)] [(вн. поз.)] {{ширина)}{{текст)} Все другие команды плавающего оформления пакета nccfloats базируются на этих командах.
3. Команды \sidef ±£[{позиция)"1 (wi) (W2){{рисунок)}{{текст)} \sidetabl[{позиция)"] (wi) (W2){{таблица)}{{текст)} оформляют объект (рисунок или таблицу) в оборку с заданным текстом. Объект размещается на внешней стороне страницы (при одностороннем оформлении — справа, при двустороннем — в зависимости от четности номера страницы). Если объект оказался на внутренней стороне страницы (такое возможно, если абзац, в котором находится данный объект, попал на разрыв страницы), то для изменения его позиции на противоположную воспользуйтесь *-формой этих команд (\sidefig* или \sidetabl*), имеющей идентичный синтаксис. В начало {текста) вставляется абзацный отступ, если команда начинает новый абзац. В начало и конец текста вставляются также подпорки \strut, чтобы обеспечить нормальный интерлиньяж со строками текста, обтекающими такую команду сверху и снизу. Все параметры в квадратных и круглых скобках необязательны. Параметр {позиция) определяет вертикальное выравнивание плавающего элемента относительно текста (t, b или с; по умолчанию с). Он может также содержать дополнительные буквы: j означает растяжку последней строки текста (используется, если абзац продолжается вне элемента с обтеканием), п отменяет вставку подпорок \strut. Параметры гщ и W2 задают ширину объекта и текста соответственно в виде размера или числа. Если единицы измерения отсутствуют, то ширина вычисляется в графических единицах (\unit length). Если W2 отсутствует, то ширина текстовой части вычисляется так, чтобы между объектом и текстом было расстояние в 1.5ет. Если оба параметра отсутствуют, то ширина объекта и текста берутся равными. Суммарная ширина объекта и текста может превышать ширину строки. В этом случае будет наложение боксов объекта и текста. 4. При подготовке плавающих элементов в оборку иногда требуется знать, где именно окажется плавающий элемент—слева или справа, и выполнять несколько различное оформление в разных случаях. Команда \if left sidefloat {{слева)}{{справа)} дает такую информацию. Она исполняет параметр {слева), если плавающий элемент оказался слева и {справа) в противном случае. Эта команда, естественно, используется внутри команд \sidef ig и \sidetabl.
5. Команды \f ^[{размещение)] (w){{рисунок)} \tabl [{размещение)] (w){{таблица)} оформляют рисунок или таблицу в виде плавающего элемента заданной ширины w. Ширина задается в виде размера или числа, измеряемого в единицах \unitlength. Если этот параметр отсутствует, то ширина плавающего элемента совпадает с шириной строки. Параметр {размещение) имеет тот же смысл, что и в окружениях figure и table. Фактически команды \f ig и \tabl являются надстройками над окружениями figure и table. У этих команд есть *-формы, использующие окружения figure* и table*. 6. Команды \f igs[{размещение)] (гщ) (wz} {{рисунок 1)}{{рисунок 2)} \tabls [(размещение)] (гщ) (W2){{таблица 1)}{{таблица 2)} размещают два плавающих элемента рядом. Параметры w\ и W2 задают ширину левого и правого элементов соответственно в виде размера или числа. Если W2 отсутствует, то ширина правого элемента вычисляется так, чтобы между элементами было расстояние в lem. Если оба параметра отсутствуют, то ширина обоих плавающих элементов берется равной. Наложение плавающих элементов также возможно, если суммарная их ширина превышает ширину строки. У команд \f igs и \tabls также есть *-формы, использующие окружения figure* и table*. 13.5. Использование пакета nccfloats 1. Ширина надписи, оформляемой командой \caption, не должна сильно превышать ширину плавающего объекта, к которому эта надпись относится. Задать ширину надписи можно в дополнительном параметре (w) команды \f ig или \tabl. Например, команда \fig(100mm){...} задает рисунок, ширина которого не превышает 100 мм. Ширина подрисуночной подписи в нем также не будет превышать 100 мм.
2. Если ширина рисунка близка к 50% ширины строки, то такой рисунок размещают либо в оборку с текстом, либо рядом с другим рисунком, либо рядом с подрисуночной подписью, если подпись достаточно длинная. Для размещения двух рисунков рядом воспользуйтесь командой \figs, задавая в параметрах (гщ) и (юг) ширину левого и правого боксов рисунков. Чтобы разместить узкий рисунок рядом с подрисуночной подписью, воспользуйтесь командой \sidefig, поместив ее внутрь команды \f ig: \f ig{\sidef ig[bn] ({ширина)){{рисунок)}{\с&рЪ±оп{. . .}}} Рисунок и подрисуночная подпись здесь выравниваются по низу, а буква п в параметре команды \sidef ig отключает вставку подпорок перед и после команды \caption. Если оказалось, что рисунок попал не на внешнюю сторону страницы, то используйте *-форму команды \sidef ig. 3. По сравнению с автоматическими средствами оформления плавающих элементов в оборку с текстом (см. п. 13.3), команды \sidef ig и \sidetabl использовать сложнее. Однако ручное оформление, предоставляемое данными командами, более гибкое и позволяет верстать сложные элементы в оборку, например выносные формулы. Оформление рисунка или таблицы в оборку с текстом выполняется за несколько шагов: 1. Определите строку, после которой Вы хотите оформить плавающий элемент в оборку и вставьте в месте завершения этой строки команду \sidefig или \sidetabl, задав в ней выравнивание [t], ширину плавающего элемента, сам плавающий элемент в первом обязательном параметре и достаточно большой фрагмент текста в последнем обязательном параметре. 2. Оттранслируйте документ, определите место, где должна заканчиваться оборка, и перенесите закрывающую фигурную скобку последнего параметра команды \sidef ig или \sidetabl в это место. 3. Измените параметр выравнивания с [t] на [с]. Если завершение оборки попало внутрь абзаца, то в параметр выравнивания добавьте букву j. Если оборка начинается или заканчивается выносной формулой, то в параметр выравнивания добавьте букву п, чтобы убрать подпорки. При этом, возможно придется в начало или конец текстового параметра добавить подпорку вручную командой \strut. 4. Если после повторной трансляции оказалось, что плавающий элемент попал на внутреннюю сторону страницы, то поставьте звездочку после команды \sidef ig или \sidetabl.
Глава 14 Верстка больших документов Если при верстке статьи вся текстовая информация обычно содержится в одном файле, то более крупные документы состоят из многих файлов. Файл, содержащий команду \documentclass, назовем главным файлом документа. Он обычно содержит задание для трансляции документа. Папку, содержащую главный файл документа назовем базовой папкой. 14.1. Типичное задание для трансляции книги Пусть, например, Вы хотите подготовить книгу, состоящую из трех глав, двух приложений и списка литературы. В процессе подготовки книги Вы, наверняка, захотите создать собственные команды для упрощения набора и верстки. Для этой цели в базовой папке создайте файл с расширением . sty (например, macro. sty) и занесите в него команду \endinput1. Задание для трансляции книги будет выглядеть так: \documentclass [{список опций)] {book} {загрузка пакетов) \usepackage{macro} 7, Загрузка локального пакета \pagestyle{headings} 7. Автоматические колонтитулы \begin{document} \include{title} \setcounter{page}{3} \include{content} \include{chapterl} \include{chapter2} \include{chapter3} \appendix \include{appendl} \include{append2} \include{refer} \end{document} Команда \include используется для вставки фрагмента документа, начинающегося с новой страницы. Она работает только с файлами, имеющи хПо команде \endinput Т^Х прекращает чтение файла.
ми стандартное расширение .tex. Это расширение не следует указывать в именах файлов. Фрагментов, начинающихся с новой страницы, здесь восемь: титульный лист и аннотация — в файле title.tex, содержание — в файле content.tex, главы документа—в файлах chapterW.tex, приложения — в файлах appendjy.tex, список литературы —в файле refer.tex. Теперь подготовьте содержимое файла title.tex, используя команды \title, \author и \maketitle (подробности см. в п. 4.1, с. 69). Следом за титулом в файле title.tex идет аннотация. В классе book средства подготовки аннотации отсутствуют, поэтому Вам придется сделать ее вручную. Страница с аннотацией должна быть ненумерованная. Чтобы убрать номер страницы, воспользуйтесь командой \thispagestyle{empty}. Титульный лист и аннотация — это первая и вторая страницы книги, поэтому нумерация содержимого книги начинается с третьей страницы (\setcounter{page}{3}). Файл content.tex предназначен для сборки содержания. Он состоит из двух команд: \tableofcontents \endinput Команда \tableof contents выполняет сборку содержания документа. Она извлекает информацию из aux-файлов, создаваемых при трансляции документа, заносит ее в файл с расширением .toe и печатает этот файл. Далее идут файлы с содержимым документа: главы, приложения и список литературы. Команда \appendix указывает, где заканчиваются главы документа и начинаются приложения. Она заменяет имя «Глава» на «Приложение» у рубрики, оформляемой командой \chapter, и задает нумерацию приложений прописными буквами. Файл refer. tex содержит окружение thebibliography, используемое для подготовки библиографического списка (см. п. 4.6, с. 77). 14.2. Частичная трансляция документа Использование команды \include для вставки фрагментов документа, начинающихся с новой страницы, позволяет применить частичную трансляцию документа. С этой целью задайте в преамбуле документа команду \includeonly{(cnucoK файлов)} в (списке файлов) которой укажите через запятую названия транслируемых фрагментов документа. Например, команда
\includeonly{chapterl,chapter2} приведет к трансляции файлов chapterl.tex и chapter2.tex. Порядок имен файлов в этом параметре несущественнее. Важно только, что указанные файлы вставляются в документ командой \include. Команда \include работает следующим образом: при трансляции файла, указанного в ее параметре, весь контекст меток, рубрик и счетчиков, используемых в файле, заносится в одноименный файл с расширением .aux. Например, при трансляции файла chapterl.tex, вставленного командой \include{chapterl}, создается файл chapterl.aux. В дальнейшем этот файл используется при частичной трансляции документа. Вот некоторые подробности работы lATgX’a с контекстами фрагментов документа: • При обработке команды \begin{document} считываются аих-файлы всех его фрагментов. Тем самым во время трансляции любого фрагмента документа lATgX будет иметь полную информацию о метках, используемых в документе, что позволяет из одного фрагмента ссылаться на метки, определенные в другом фрагменте. • Если некоторые аих-файлы отсутствуют, то ЬХГцХ выдаст сообщение No file (шля). aux. и продолжит работу дальше. Такая ситуация на начальном этапе набора документа возникает довольно часто. Например, Вы можете перечислить в главном файле командами \include все предполагаемые в данном документе фрагменты, а затем уже готовить некоторые из них, не имея при этом файлов других фрагментов. • Далее выполняется обработка документа. Если встретилась команда \include, то имя указанного в ней файла сравнивается со списком имен, заказанных командой \includeonly. • Если имя файла отсутствует в списке, то команда \include пропускается, но при этом счетчики, используемые в этом фрагменте документа, изменяются так, кай если бы этот фрагмент был обработан. • Если имя найдено в списке или в преамбуле документа не использовалась команда \includeonly, то выполняется трансляция этого файла с записью его контекста в одноименный аих-файл. После того, как документ подготовлен полностью, команду \includeonly можно убрать или закомментировать символом 7. и оттранслировать документ целиком.
14.3. Особенности рубрикации в книгах В классах book и report на одну рубрику больше по сравнению с классом article (см. п. 4.4, с. 74): добавлена команда \chapter \_{элемент оглавления)] {{заголовок)} \chapter*{ {заголовок)} начинающая новую главу. Основная ее форма, как и другие команды рубрикации, выводит заголовок главы в текст документа, помещает его в колонтитул, если заказан стиль оформления страниц headings, и заносит в aux-файл с целью сборки содержания документа. Ее *-форма только выводит ненумерованный заголовок в текст документа. В классе book каждая глава начинается с новой нечетной страницы (опция openright). Чтобы разрешить вывод новых глав с любой страницы, добавьте опцию орепапу в список опций команды \documentclass. Рубрика chapter в классах book и report имеет уровень 0, a part — уровень -1 (в классе article рубрика part имеет уровень 0). Весь документ может подразделяться на три части —вступительную, основную и заключительную, открываемые командами \frontmatter \mainmatter \backmatter Все части начинаются с новой нечетной страницы (если заказана опция орепапу, то заключительная часть начинается с любой страницы). Команда \frontmatter устанавливает прописную римскую нумерацию страниц, а \mainmatter — арабскую. Главы нумеруются только в основной части документа. 14.4. Оформление колонтитулов и сборка содержания 1. В книгах обычно используют стиль оформления страниц headings, означающий автоматическое оформление колонтитулов документа: когда начинается новая глава или секция, ее заголовок заносится в колонтитул (название главы—в левый колонтитул, секции — в правый). Рубрика \part очищает колонтитулы документа и выводит страницу в стиле plain (номер страницы внизу, по центру). Рубрика \chapter также устанавливает стиль plain, но только для стартовой страницы главы. В отечественной полиграфии принято опускать номер страницы на стартовой странице главы. Для этого задайте команду \thispagestyle{empty} сразу после команды \chapter.
2. Команды рубрикации заносят содержимое своих параметров в три направления (в текст, в колонтитул и в аих-файл), а содержат только два параметра. Поэтому могут возникнуть сложности при оформлении рубрики, у которой требуется специальное оформление для каждого из направлений вывода. Например, если заголовок главы или секции очень длинный, то он не поместится в колонтитул, и его надо будет сократить. Если же при сборке содержания возникло переполнение строки, то в дополнительном параметре команды рубрикации потребуется вставить команду \protect\linebreak. При этом в колонтитул пойдет дополнительный параметр, а не основной, что, конечно, неверно. Чтобы устранить все эти коллизии, воспользуйтесь командами \chaptermark{ (текст колонтитула)} \sectionmark{(meKcm колонтитула)} поставив их в основном параметре команд \chapter и \section соответственно (при этом необходимо явно задать параметр для сборки содержания!). Следующий пример показывает, как надо оформлять рубрики старших уровней в сложных случаях: \section[Длинный заголовок секции...] {Длинный заголовок секции... \sect1ошпагк{Сокращенный заголовок}} 3. В отечественной литературе часто используют ненумерованные рубрики, которые заносятся в содержание документа, например, рубрики «Предисловие», «Введение», «Заключение». В книге эти рубрики оформляются как главы. Если Вы воспользуетесь *-формой команды \chapter, то заголовок такой рубрики не попадет ни в колонтитул, ни в содержание документа, что, конечно, неверно. Решить эту задачу лучше всего так: перед командой \chapter задать отрицательное значение счетчика secnumdepth глубины нумерации рубрик, чтобы отключить нумерацию главы, а после команды \chapter восстановить его прежнее значение, которое в классе book равно двум. Еще надо будет с помощью команды \markright задать правый колонтитул, поскольку команда \chapter его очищает. Пример: \setcounter{secnumdepth}{-l} \chapter{BBefleHne} \markr i ght{Вв едение} \setcounter{secnumdepth}{2}
4. Для сборки содержания документа, списков таблиц и рисунков применяются команды \tableofcontents \listoftables \listoffigures Первая помещает в содержание элементы оглавления, подготовленные командами рубрикации, извлекая их из aux-файлов документа. Две другие собирают списки из элементов оглавления, подготовленных командой \caption: элемент оглавления попадет в список рисунков или таблиц в зависимости от того, внутри окружения какого типа используется команда \caption—figure или table. В содержание документа попадают не все рубрики, а только те, глубина которых не превышает значения счетчика toedepth. В классе book его значение равно 2, т. е. в содержание пойдут рубрики до подсекции включительно. Если Вы хотите добавить какой-либо текст внутрь этих списков, то воспользуйтесь командой \addtocontents{ (тип)}{(текст)} Параметр (тип) принимает одно из следующих значений: toe (содержание), lot (список таблиц), lot (список рисунков). Хрупкие команды в (тексте) надо защищать командой \protect. Конечно, эту команду надо применять после той команды рубрикации или команды \caption, после которой Вы хотите добавить этот текст. 14.5. Использование пакета nccsect Пакет nccsect из коллекции ncctools существенно расширяет возможности управления рубрикацией и сборкой содержания. Его команды подразделяются на два уровня: команды пользовательского уровня служат для управления рубрикацией, команды дизайнерского уровня используются для изменения оформления рубрик документа и его содержания. В данной главе описан только пользовательский уровень, а элементы уровня дизайна приведены в прил. В.9 на с. 311. Пакет переопределяет все команды рубрикации, кроме команды \part для класса book или report. Кроме того в пакете переопределена команда \caption.
1. С помощью декларации \sectionstyle{(cmtL/ib)} можно изменить стиль оформления выносных рубрик документа, т. е. всех рубрик, кроме параграфов и подпараграфов. Возможны следующие стили оформления: hangindent — стандартный стиль Г^ЩХ’а (рубрика с висячим номером); hangindent* — аналогично предыдущему, но без правого выравнивания; par indent — рубрики сдвинуты на величину абзацного отступа; par indent* — аналогично предыдущему, но без правого выравнивания; center — рубрики центрируются. В стилях со звездочкой длинный текст рубрик будет иметь рваный правый край, т. е. в их заголовках не будет возникать переносов слов. Эту декларацию можно использовать всюду в документе. Как обычно, она действует в пределах текущего блока. 2. Абзацным отступом после выносной рубрики управляют декларации \indentaftersection \noindentaftersection Первая разрешает абзацный отступ, последняя — запрещает. По умолчанию абзацный отступ после выносных рубрик запрещен для совместимости со стандартным режимом рубрикации Г^ТвХ’а. 3. Оформление всех рубрик документа, а также заголовков, выводимых командой \caption, можно изменить с помощью специальных модификаторов. Команды-модификаторы ставятся непосредственно перед командой рубрикации или командой \ с apt ion2: • Чтобы не заносить текст рубрики в колонтитул, воспользуйтесь модификатором \norunninghead. • Чтобы заменить текст, поступающий в колонтитул, на другой текст, используйте модификатор \runninghead{(me?ccm)}. • Чтобы сделать ненумерованную рубрику, которая появится в колонтитуле и в содержании документа, воспользуйтесь модификатором \noheadingtag. 2 Модификаторы не действуют на *-форму команд рубрикации и команды \caption.
• Чтобы оформить рубрику с нестандартным номером, используйте модификатор \headingtag{(dp?/eou номер}}. Такая рубрика заносится в колонтитул и содержание, а счетчик рубрики не изменяется. • Чтобы полностью подменить оформление номера рубрики, воспользуйтесь модификатором \headingtag*{(dp?/eou номер}}. При этом текст рубрики не будет поступать в колонтитул и содержание. • Чтобы подавить запись текста рубрики в содержание, используйте модификатор \skipwritingtoaux. 4. Иногда в книгах перед заголовком главы помещают эпиграф. С этой целью можно воспользоваться командой \bef cxechept ex {{что-нибудь}} помещаемой перед командой \chapter. Содержимое параметра этой команды вставляется перед заголовком главы вместо вертикального отступа. Вы вольны здесь выбирать любой способ оформления эпиграфа. Пустой параметр означает отказ от эпиграфа. Команда \epigraph [{ширина}] {{текст эпиграфа}}{{автор{ы}}} надстроена над предыдущей командой и по умолчанию обеспечивает оформление эпиграфа в виде пар-бокса, прижатого к правому краю страницы, в котором строка с авторами также прижата к краю и выведена курсивом. По умолчанию эпиграф занимает 45% ширины текстовой области. 5. В команду \caption внесены следующие изменения: • В тексте оформляемого ею заголовка можно использовать команды разбивки строк. • Есть возможность управления стилем вывода заголовков (см. далее). • Добавлена команда \caption*{{текст заголовка}}, оформляющая заголовок без номера. Ее следует использовать, если в документе есть только одна таблица или рисунок. • Заголовки таблиц и рисунков оформляются по-разному: в окружении table вертикальный промежуток вставляется после заголовка, а в окружении figure —перед заголовком. Тем самым предполагается, что заголовок таблицы помещается перед таблицей, а заголовок рисунка—после рисунка.
6. Имеется возможность динамического управления стилем оформления заголовков плавающих элементов с помощью деклараций \capt ionwidth [(тип)] {{размер}} \captiontagstyle [(тип)] {{стиль}} \captionstyle [(тип)] {{стиль}} Необязательный параметр {тип} задает тип плавающего элемента (figure или table), к которому следует применить декларацию. Если этот параметр отсутствует, то при использовании вне плавающих элементов декларация применяется ко всем типам, а внутри —к плавающему элементу текущего типа. Декларация с типом имеет преимущество перед декларацией без типа. Команда \captionwidth задает ширину заголовка. Команда \captiontagstyle определяет стиль оформления подзаголовка с номером: para — подзаголовок выводится в подбор с текстом заголовка; left — подзаголовок выводится отдельной строкой слева; center — подзаголовок выводится отдельной строкой по центру; right — подзаголовок выводится отдельной строкой справа. Команда \captionstyle задает стиль оформления текста заголовка: default — стандартное оформление (однострочный заголовок центрируется, длинный — оформляется в виде абзаца); para — заголовок выводится абзацем без абзацного отступа; left — заголовок прижат влево без выравнивания правого края; center — заголовок центрируется; right — заголовок прижат вправо без выравнивания левого края; center last — заголовок выводится абзацем без абзацного отступа, а его последняя строка центрируется. По умолчанию действуют следующие декларации: \captionwidth{\linewidth} \captiontagstyle{para} \captionstyle{default}
Пример использования деклараций: \captiontagstyle[table]{right} \begin{table}[ht]\centering \captionwidth{0.8\linewidth} \captionstyle{centerlast} \сарЬ1оп{Пример в стиле right + centerlast} \caption{IIpHMep в стиле right + centerlast с очень очень очень длинным заголовком} \captionstyle{center} \caption{IIpHMep в стиле right + center с очень очень очень длинным заголовком} \end{table} Результат: Таблица 14.1 Пример в стиле right + centerlast Таблица 14.2 Пример в стиле right + centerlast с очень очень очень длинным заголовком Таблица 14.3 Пример в стиле right + center с очень очень очень длинным заголовком 14.6. Улучшенное оформление колонтитулов 1. Чтобы отделить верхний или нижний колонтитул от текста декоративной линией, загрузите пакет nccfancyhdr3 из коллекции ncctools. В списке опций пакета укажите те стили оформления страниц документа, для которых хотите добавить декоративную линию. Последний из перечисленных стилей будет установлен после загрузки в качестве основного стиля. Например, команда \usepackage[myheadings,headings]{nccfancyhdr} переопределяет стили myheadings и headings и заказывает последний из них. 3 Пакет nccfancyhdr представляет собой улучшенную версию пакета fancyhdr. В нем устранены ошибки пакета fancyhdr и добавлены сервисные средства.
2. По умолчанию в улучшенных стилях декоративная линия есть только в верхнем колонтитуле. Ее толщина равна 0.4pt и задается командой \headrulewidth. Толщина нижней декоративной линии равна нулю и задается командой \f ootrulewidth. Чтобы изменить толщину декоративных линий, переопределите эти команды. Пример: \renewcommand\headrulewidth{0.6pt} Расстояние между декоративными линиями и текстом колонтитулов регулируется с помощью подпорок, размер которых по умолчанию равен 0.3\normalbaselineskip и задается в командах \headstrutheight и \footstrutheight. Чтобы изменить это расстояние, переопределите данные команды. 3. Ширина колонтитулов обычно совпадает с шириной текстовой области. Однако можно сделать так, что колонтитулы будут выступать за пределы текстовой области и нависать над областью заметок на полях. Декларации \normalheaders \extendedheaders изменяют ширину колонтитулов: первая—устанавливает нормальную ширину, равную ширине текстовой области, последняя—расширяет колонтитул на ширину поля заметок. Ширина колонтитула содержится в переменной \headwidth. 4. Пакет nccfancyhdr определяет стиль оформления fancy, который работает подобно стилю empty, но добавляет декоративные линии в колонтитулы. На стиле fancy базируются все другие стили с улучшенным оформлением колонтитулов. В улучшенных стилях Вы можете раздельно изменять 12 полей в колонтитулах: левое, центральное и правое поля для верхнего и нижнего колонтитулов у четной и нечетной страниц. С этой целью лучше всего создать свой стиль оформления страниц, который будет базироваться на каком-либо улучшенном стиле и переопределить в нем поля колонтитулов. Команда \newpagestyle{(cmtL/ib)} [(базовый стиль)] {(декларации)} создает новый (стиль), который сначала вызывает (базовый стиль), азатем добавляет к нему некоторые собственные (декларации). В качестве базового стиля можно использовать любой стиль с улучшенным оформлением. Если необязательный параметр отсутствует, то новый стиль будет основан на стиле fancy.
5. В декларациях можно использовать следующие команды изменения колонтитулов4: \lhead[('четный маркер)] {{нечетный маркер)} \chead [(четный маркер)] {{нечетный маркер)} \хЪеъЛ[{четный маркер)] {{нечетный маркер)} \lfoot [{четный маркер)] {{нечетный маркер)} \cfoot [{четный маркер)] {{нечетный маркер)} \rf oot [{четный маркер)] {{нечетный маркер)} Первые три команды задают, соответственно, левое, центральное и правое поля верхнего колонтитула, а последние—аналогичные поля нижнего колонтитула. Параметр {нечетный маркер) задает оформление поля на нечетной странице, а {четный маркер) — на четной. Если {четный маркер) отсутствует, то он совпадает с {нечетным маркером). Параметр {четный маркер) используется только при двустороннем оформлении документа. Поля колонтитулов, оформляемых этими командами, могут перекрываться. 6. В тексте маркеров можно использовать команду \nouppercase{ (текст)} отменяющую замену строчных букв на прописные. В следующем примере на базе улучшенного стиля headings создается стиль lheadings, в котором строчные буквы в маркерах не будут преобразовываться в прописные: \usepackage[headings]{nccfancyhdr} \newpagestyle{lheadings} [headings] {*/. \chead[\nouppercase{% \fancycenter{\thepage}{}{\slshape\leftmark}}] {\nouppercase{‘/. \f ancycenter{\slshape\rightmark}{H\thepage}}}‘/. } \pagestyle{lheadings} Здесь при оформлении верхнего колонтитула использовалась команда \fancycenter{(^ee. маркер)}{{ср. маркер)}{{прав, маркер)} 4Описание других команд оформления колонтитулов см. в документации к пакету nccfancyhdr.
оформляющая все три поля колонтитула вместе. Особенность этой команды в том, что все поля оформляемых ею колонтитулов не перекрываются, причем при наличии достаточного свободного места центральное поле будет центрироваться, а если свободного места мало для точного центрирования, то будет смещаться в сторону более короткого бокового поля. 14.7. Сборка предметного указателя 1. Большие документы обычно завершаются предметным указателем, в котором приводятся ссылки на используемые термины для облегчения их поиска. Предметный указатель как правило упорядочен по алфавиту, имеет гнездовую структуру и оформляется в несколько столбцов (стандартно— в два столбца). Сборка указателя выполняется в несколько шагов: 1. Вставка элементов указателя в текст документа. В точках, на которые планируется сделать ссылки в указателе, вставьте команду \index{(описание элемента}}. 2. Сбор информации для указателя. Добавьте в преамбулу документа команду \makeindex и оттранслируйте документ. В результате будет создан файл с расширением . idx, в который поступят ссылки, подготовленные командой \index. 3. Сортировка указателя. Запустите программу make index, подав ей в качестве параметра имя файла, сгенерированного на предыдущем шаге. Эта программа создаст сортированный указатель и занесет его в файл с расширением . ind. 4. Вывод указателя. Закажите в преамбуле документа пакет makeidx и перед командой завершения документа добавьте команду \printindex. Лучше всего занести эту команду в отдельный файл, например в index.tex, и вставить в документ командой \include{index}. Оттранслируйте документ (команду \makeindex можно уже убрать или закомментировать). Шаги 2-4 лучше выполнять на заключительной стадии подготовки документа, поскольку после любых изменений в документе их придется повторять. 2. Если в документе есть элементы предметного указателя на русском языке и Вы используете входную кодировку символов, отличающуюся от
cpl251-light, то такие элементы будут отсортированы неверно5. Использование кодировки cpl251-light решает большинство проблем с подготовкой индекса на русском языке, но не все: make index упорядочивает русские слова по кодам символов, поэтому элементы, начинающиеся с прописных русских букв будут идти раньше элементов, начинающихся со строчных русских букв. Если Вы используете другую входную кодировку кириллицы, то для сортировки предметного указателя воспользуйтесь программой xindy, которую можно найти на серверах CTAN [13]. 3. Программа TeXify6 упрощает подготовку указателя: она при необходимости сама запустит программу make index, если Вы добавили в преамбулу документа команду \makeindex. Поэтому при ее использовании процедура сборки предметного указателя существенно облегчается: достаточно просто выполнить шаги 1 и 4, вставить в преамбулу документа команду \makeindex и запустить TeXify. 4. Указатель в отсортированном файле оформлен с помощью окружения \begin{theindex} (элементы указателя} \end{theindex} Все элементы указателя подразделяются на группы, между которыми вставляется команда \indexspace. В группу объединяются элементы, начинающиеся с одинаковой буквы. Структура элементов в группе гнездовая. Элементы указателя имеют три уровня вложенности: элементы старшего уровня начинаются командой \item, среднего — командой \subitem, младшего—командой \subsubitem. 5. Текст ссылки, содержащейся в параметре команды \index, в общем случае содержит несколько полей. В тексте ссылки используются управляющие символы !, @ и I, смысл которых поясняется далее на примерах. Далее в правой колонке примеров указывается номер страницы и команда ссылки, в левой —текст, который будет выведен в предметном указателе. 5Причина в том, что в других кодировках, поддерживающих кириллицу, русские буквы объявлены активными символами и при выводе в idx-файл происходит их замена на команды, начинающиеся с \CYR. Поэтому сортировка будет выполнена по названиям этих команд, а не по алфавиту. 6В редакторе WinEdt эта программа запускается нажатием на иконку с медведем.
6. Пример оформления простых ссылок: Alpha, ii C. ii: \index{Alpha} alpha, iv, 15, 23 C. iv: \index{alpha} Alphabet, 15 C. 15: \index{alpha} alphabet, 28 \index{Alphabet} alphas, 23 C. 23: \index{alpha} \index{alphas} C. 28: \index{alphabet} 7. Чтобы создать гнезда с учетом совпадающих слов в терминах, разделите поля в ссылке символом ! (восклицательный знак). Можно использовать не более трех полей в ссылке. При сортировке указателя программа make index анализирует все ссылки на совпадение их полей и при необходимости формирует гнезда требуемых уровней вложенности. Пример: Файл в формате MSP, 32 PCX, 28 словаря, 10 терминов, 5 С. 5: \1пдех{Файл!словаря!терминов} С. 10: \1пдех{Файл!словаря} С. 28: \1пдех{Фаил!в формате’PCX} С. 32: \1пдех{Фаил!в формате!MSP} 8. Каждое поле ссылки в общем случае имеет вид где строка а управляет сортировкой ссылки в предметном указателе, а строка 8 задает текст, выводимый вместо данного поля. Пример: alpha, 23 о, 28 alphas, 12 С. 12: \index{alphas} С. 23: \index{alpha} С. 28: \index{alpha@$\alpha$} Здесь ссылка на символ а помещается после ссылки на текст alpha. Две ссылки считаются совпадающими, если у них совпадают как подполя, по которым идет сортировка, так и подполя, выводимые в предметный указатель. Если у двух ссылок совпадают подполя сортировки, но не совпадают подполя вывода, то порядок вывода их в предметный указатель определяется с помощью сортировки их по подполям вывода. При этом ссылка с простыми полями (не содержащими символа @) будет выводиться раньше, чем ссылка со сложными полями. 9. Имеется возможность управления форматированием номеров страниц, на которых появляются ссылки. Для этого после описания всех полей ссылки поставьте символ | (вертикальная черта) и следом задайте управляющую строку:
• Одиночная открывающая или закрывающая круглая скобка означает, соответственно, начало или конец диапазона номеров страниц. • Можно задать имя любой команды с одним параметром (без обратной косой черты). Например, строка «textbf» означает вывод номера страницы жирным шрифтом. • После открывающей круглой скобки можно писать имя команды. Это означает начало диапазона, в котором номера страниц оформлены указанной командой. • Можно организовать перекрестные ссылки в указателе с помощью управляющей строки «see», после которой в фигурных скобках задается текст, на который выполняется ссылка. Пример: gnat, vi-x, 22 C. vi: \index{gnatI(} gnats, см. gnat C. x: \index{gnatI)} gnus \index{gnatsIsee{gnat}} bad, 22 C. 22: \index{gnatItextbf} good, 28-32 \index{gnus!bad|(} \index{gnus!bad I)} C. 28: \index{gnus!good I(textit} C. 30: \index{gnus!good} C. 32: \index{gnus!good I)} Элемент индекса, в котором используется имя команды \see, можно помещать в любое место документа. 14.8. Использование макроса МсС Стандартный lATgX хорошо приспособлен к оформлению документов в соответствии с правилами английской полиграфии. Однако эти правила во многом отличаются от принятых в отечественной полиграфии. Поэтому при подготовке документов на русском языке приходится пользоваться различными «заплатками», которые бы изменяли оформление документа в соответствии с отечественными правилами. Одна из таких заплаток предоставляется пакетом misccorr7 из коллекции t2. Здесь же речь пойдет о другой такой «заплатке» —коллекции ncclatex, состоящей из пакета ncclatex, класса псс и некоторых вспомогательных пакетов. 7Пакет misccorr, в частности, изменяет некоторые базовые команды Г^ЩХ’а, вставляя точку после номеров рубрик, рисунков, таблиц и теорем.
1. Пакет ncclatex можно использовать совместно со стандартными классами Г^СЩХ’а. Он выполняет все необходимые модификации стиля в соответствии с правилами отечественной полиграфии и предоставляет много дополнительных возможностей, подгружая следующие пакеты из коллекции ncctools: dcounter (динамические счетчики, см. п. 11.3, с. 197), desclist (список desclist, см. п. 6.9, с. 106), extdash (дополнительные команды дефисов и тире, см. п. 5.4, с. 88), nccboxes (дополнительные боксы, см. п. 7.4, с. 119, а также п. 8.18, с. 153), nccfoots (сноски с ручной нумерацией, см. с. 122), nccmath (дополнительные математические команды, см. п. 10.5, с. 179), nccpic (расширение пакета graphicx, см. с. 208), nccthm (расширенные средства генерации математических утверждений, см. п. 11.4-11.7, с. 198-201), nccsect (улучшенная рубрикация, см. п. 14.5, с. 243), nccfloats (дополнительные средства плавающего оформления рисунков и таблиц, см. п. 13.4, с. 234). Вместе с пакетами коллекции ncctools подгружаются amsmath (математические средства и graphicx (вставка графических объектов). Пакет ncclatex генерирует также восемь типов математических утверждений (см. п. 11.8, с. 202). Счетчик equation в нем динамический. Опции пакета: Т2А, Т2В, Т2С — выбор кодировки шрифтов схемы Т2. По умолчанию выбирается кодировка Т2А. Эти опции действуют совместно с опцией russian. russian — заказ поддержки русского языка. При этом подгружается пакет fontenc с выбранной кодировкой шрифтов и загружается пакет babel с опцией russian8. small — рубрики документа оформляются уменьшенными шрифтами. Эту опцию обычно используют в малоформатных документах. В пакете определяются также некоторые дополнительные команды: \cref {(метка)} — используется при оформлении сложных списков цитирования (см. с. 83); \тор{(оператор)} — применяется как синоним команды \operatorname; \No — используется для оформления символа номера «№»9; \NCC — производит логотип Л/^С; 8 Если Вы не зададите явно входную кодировку кириллицы с помощью пакета inputenc, то перед началом документа будет установлена кодировка cpi25i-light. 9Если опция russian не указана, то команда \No выводит текст «No.».
\acknow — используется при оформлении благодарностей, начиная новый абзац с заголовка «Благодарности» или «Acknowledgements» в зависимости от выбранного языка оформления. 2. Класс псс «един в трех лицах»: он объединяет функциональность классов article, book и report. С его помощью можно готовить статьи, препринты, книги, отчеты. Стиль подготавливаемого документа определяется заказом одной из опций article (статья), preprint (препринт), book (книга), report (отчет). Стиль «препринт» отличается от стиля «статья» тем, что титул и аннотация оформляются на отдельных страницах. Стиль «отчет» отличается от стиля «книга» односторонним оформлением страниц документа. Вот полный список всех опций класса псс (подробности см. в п. 4.2, 4.10, 10.4, 11.5, 12.3) с учетом опций, передаваемых в его пакеты (альтернативные опции разделяются вертикальной чертой, а опции, устанавливаемые по умолчанию, подчеркнуты): Стиль документа Кегль основного шрифта Формат страницы Альбомная ориентация Пересчитать по формату Чистовик / черновик Одна или две стороны Режим старта глав Одна или две колонки Открытая библиография Кодировка кириллицы Русскоязычный документ Уменьшенные размеры рубрик Левое выравнивание формул Позиция номера в формулах Выравнивание номера в split Позиция индексов в интегралах Позиция индексов в суммах и др. Позиция индексов в операторах Уменьшены дроби, суммы и др. Белый QED-символ Черный QED-символ Абзацный отступ в теоремах Позиция номера в араг-теоремах Все опции пакета graphicx article | preprint | book | report lOpt | llpt | 12pt | 14pt a4paper | абрарег | a5a4paper | b5paper | letterpaper | legalpaper | executivepaper landscape fittopage final | draft oneside | twoside openany | openright onecolumn | twocolumn openbib T2A | T2B | T2C russian small f leqn leqno | regno centertags | tbtags intlimits | nointlimits sumlimits | nosumlimits namelimits | nonamelimits mediummath whiteqed blackqed noindent | indent nomargin | margin
Ядром класса псс служит пакет ncclatex, поэтому все, что доступно в пакете ncclatex, можно применять в классе псс. 3. Во всех стилях оформления документа, кроме «статьи», действует стиль оформления страницы headings, а в статьях —myheadings. Текстовая область центрируется на странице без учета размеров областей заметок на полях и нижнего колонтитула. Размеры текстовой области и ее расположение на странице можно изменить командой \ToCenter [(Л/m)] {{ишрина}} {{высота}} Необязательный параметр {hfm} содержит любую комбинацию из этих трех букв, означающих названия областей, которые должны быть учтены при центрировании текста: h—учитывать верхний колонтитул (header), f — учитывать нижний колонтитул (footer), m—учитывать область заметок на полях. Вместо команды \ToCenter можно использовать команду \FromMargins [(Л/m)] {{слева}} {{справа}} {{сверху}} {{снизу}} задающую отступы от краев страницы. Обе эти команды имеют *-форму, не содержащую параметра {hfm}. В этом случае размеры и позиция поля текста вычисляются без учета дополнительных областей, устанавливается \pagestyle{empty} и подавляется вывод информации в аих-файл. 4. Для оформления колонтитулов с линейкой в классе псс вместо пакета nccfancyhdr следует использовать пакет ncchdr: \usepackage [{список стилей страницы}] {ncchdr} В дополнительном параметре указывается список стилей страницы, для которых требуется линейка в колонтитуле10. Имеется также возможность указать для конкретной страницы специальный колонтитул с помощью команды \thispageheading{ {текст}} В таком колонтитуле можно выводить многострочный текст. 10Стили headings и myheadings имеют общую основу в макросе MqC. Указав один из них в параметрах загрузки пакета, Вы автоматически заказываете линейку и для другого.
5. Дополнительные команды класса псс: \openrightorany исполняет команду \clearpage или \cleardoublepage в зависимости от open-моды, выбранной в опциях класса (openright или орепапу). Если создается пустая четная страница, то текст в ее колонтитуле будет пуст. \AuthorBeforeTitle, \TitleBeforeAuthor управляют порядком вывода названия и списка авторов командой \maketitle. По умолчанию в статьях сначала идет название, а затем авторы. В остальных стилях все наоборот. \noeqbreak, \alloweqbreak [(число)] управляют возможностью разрыва страницы перед выносной формулой. Первая команда запрещает разрыв, а вторая разрешает. Параметр (число) задает степень разрешения разрыва и может быть целым числом от 0 до 4. Чем больше это число, тем больше шанс разрыва перед выносной формулой. По умолчанию действует \alloweqbreak[4]. Эти декларации можно использовать как окружения. \setyear{(eod)} задает год издания; \theyear печатает год издания. По умолчанию команда печатает текущий год. \SetTOCStyle{((?eK^apa74uu)} задает стиль оформления содержания, списка рисунков и таблиц. По умолчанию стиль не задан. Например, чтобы вывести содержание размером \small, воспользуйтесь командой \SetTOCStyle{\small}. \PnumPrototype{(4uc^o)} задает прототип номера страницы, используемого для вычисления величины правого отступа в содержании документа. По умолчанию прототип равен 99. Если в документе более 99 страниц, то вставьте команду \PnumPrototype{999} в преамбулу документа. 6. Окружение thebibliography в классе псс базируется на окружении \begin{biblist} [(начальный номер)] {(прототип)} . . . \end{biblist} которое выводит библиографию без заголовка. Библиографические ссылки будут нумероваться, начиная с номера, на единицу больше заказанного. По умолчанию начальный номер равен нулю.
Стиль оформления библиографии задается командой \bibliststyle, которую Вы можете переопределить командой \renewcommand. По умолчанию задан стиль \ small. 7. В классе псс некоторые команды определяются только в отдельных стилях оформления документа. В стиле «статья» определены команды \setseries{(me?ccm)}, \setissue{(me?ccm)}, \setvolume{(meKcm)}, задающие серию, выпуск и том серийного издания. Эти команды обычно задаются в локальном файле nccadd.sty, который автоматически загружается в стиле «статья». Вывод этой информации выполняется, соответственно, командами \theseries, \theissue, \thevolume. В стиле «препринт» команда \preprint{(номер)} задает номер препринта. Если номер задан, то под титулом препринта будет добавлен его номер. Номер препринта можно напечатать командой \thepreprint. В стилях «книга» и «отчет» определены команды из стандартного класса book: \frontmatter, \mainmatter, \backmatter. Команда \bookeditor{ (текст)} позволяет вставлять фрагмент текста на титульной странице под заголовком монографии и списком автором. Наконец, можно управлять способом вывода названия главы в колонтитуле и содержании книги. По умолчанию название состоит только из номера главы. Но можно сделать, чтобы перед номером шел префикс «Глава». Для этого служит команда \ChapterPrefixStyle{(список)} в списке которой через запятую можно указывать два слова: header и toe. Указав header, Вы включаете вывод префикса в колонтитуле, а указав toe, задаете вывод префикса в содержании. 8. Стандартный метод сборки предметного указателя основывается на команде \twocolumn, включающей вывод в две колонки. Эта команда имеет существенный недостаток в применении к сборке указателей: колонки на последней странице указателя не выровнены по высоте. Устранить эти проблемы поможет пакет nccindex, который переопределяет метод сборки предметного указателя на базе пакета multicol. Он применяется только совместно с классом псс или классами на нем базирующимися. Для управления форматированием предметного указателя в этом пакете служат следующие декларации.
Декларация \indexparameters{(n)}{(paccmo.flHue)}{(omcm?/nl )}{(отступ2)} {(отступЗ)} {(стиль)} определяет параметры формирования предметного указателя: (п) задает число столбцов; (расстояние) определяет расстояние между группами; (omcmynl) и (отступ2) задают величину левого отступа для гнезд первого и второго уровней (\subitem и \subsubitem); (отступЗ) определяет величину левого отступа для второй и последующих строк многострочного элемента; (стиль) задает стиль оформления, в котором можно задать размер шрифта, изменить расстояние между столбцами с помощью переменной \columnsep, задать вертикальную черту между столбцами индекса с помощью переменной \columnseprule и т.д. По умолчанию действует настройка \indexparameters{2}{4ex plus lex minus 0.5ex}{2em}{4em}{5em} {\small} Декларация \startindexwith{ (текст)} вставляет указанный текст в начало первой колонки предметного указателя. Параметр этой команды длинный, т. е. может содержать несколько абзацев текста. С ее помощью можно добавить сопроводительную информацию в указатель и изменить настройки (например, с помощью команды \raggedright убрать растяжку и переносы в многострочных элементах указателя). 9. Наряду со сборкой предметного указателя, в Г^СЩХ’е есть средства подготовки словаря терминов: команда \glossary{(onucaHue элемента)} используется для формирования элемента словаря, а команда \makeglossary собирает элементы словаря терминов в файл с расширением .gio. Дальнейшая обработка этого файла не автоматизирована. Для его сортировки Вам придется сделать специальный стилевой файл для программы makeindex. Продемонстрируем сборку второго указателя с использованием пакета nccindex. Пусть требуется создать два указателя: предметный и авторский. Один из них (например, предметный) будем формировать стандартными средствами (командами \index, \makeindex, \printindex, см. п. 14.7, с. 250), а другой —командами \glossary и \makeglossary.
Пусть головной файл называется mono.tex. Тогда при трансляции книги с включенным режимом \makeglossary в файл mono.gio будут помещены несортированные элементы авторского указателя. Создадим файл, содержащий строку keyword "Wglossaryentry" назовем этот файл glossary.def и поместим его в папку, где находится головной файл. Теперь создадим в этой же папке файл makeglossary.bat и занесем в него следующую команду: makeindex -s glossary.def -о mono.gls mono.gio При исполнении этого файла программа make index отсортирует файл mono.gio и сформирует в файле mono.gls окружение theindex, содержащее сортированный авторский указатель. Теперь, чтобы его вывести, надо сделать следующее: изменить заголовок указателя, который содержится в макросе \indexname; при необходимости изменить оформление указателя директивами \indexparameters и \startindexwith; наконец, вставить авторский указатель в документ командой \ input {mono. gls} и оттранслировать документ. Пример: {\renewcommand\indexname{ABTopcKHfi указатель} \indexparameters{3}{4ex plus lex minus 0.5ex}{0mm}{0mm}{2em} {\small} \startindexwith{\raggedright} \input{mono.gls}} Здесь авторский указатель подготавливается в три колонки; предполагается, что гнезда в нем одноуровневые; выравнивание правого края элементов указателя не делается. 14.9. Титульные страницы в классе псс 1. В классе псс окружение titlepage работает следующим образом. В прологе окружения выполняется команда \clearpage, устанавливается оформление документа в одну колонку, выбирается стиль страниц empty (с пустыми колонтитулами) и обнуляется счетчик страниц. В эпилоге снова вызывается команда \clearpage, восстанавливается стиль страниц, количество колонок и номер страницы, бывшие перед этим окружением.
Окружение titlepage рассчитано на создание нескольких титульных страниц. Внутри него могут быть вложенные окружения titlepage, которые, в отличие от внешнего окружения, не изменяют стиль страниц и номер страницы. Имеется также окружение titlepage* *, работающее как titlepage, но не изменяющее счетчик страниц. 2. Верхний или нижний колонтитул в тексте документа обычно не пусты, а на титульных страницах они не используются. Поэтому по правилам дизайна текстовую область титульных страниц следует расширить на верхний и/или нижний колонтитулы, в зависимости от того, какие колонтитулы заняты в тексте документа. В классе псс реализовано два варианта решения этой задачи: разовое расширение текстовой области одной страницы на верхний колонтитул командой \StartFromHeaderArea без изменения макета страницы и расширение текстовой области декларацией \ExpandTextArеа[ (hfm) ] где (hfm) определяет области, на которые следует расширить текстовую область: h—на верхний колонтитул, f — на нижний колонтитул, m—на область заметок на полях. В этом параметре можно указывать любую комбинацию из перечисленных букв. Если дополнительный параметр отсутствует или имеет вид [*], то команда \ExpandText Area работает как \StartFromHeaderArea, т. е. разово расширяет текстовую область на верхний колонтитул. Декларация \ExpandTextArea глобально изменяет макет страницы вплоть до декларации \RestoreTextArea восстанавливающей исходный макет. Все перечисленные здесь команды должны использоваться в начале страницы. 3. Декларация \ExpandTextArea—одноразовая11. Повторное ее использование игнорируется. Однако если макет страницы восстановлен с помощью \RestoreTextArea, то следом можно снова применять \ExpandTextArea. 11 Это не точно. Данную декларацию можно многократно применять с параметром [*] или без параметра.
Если макет страницы изменен внутри окружения titlepage или его *-формы, то по завершении окружения старый макет автоматически восстанавливается. После команд \StartFromHeaderArea и \ExpandTextArea можно пропускать вертикальное пространство командой \vspace. Оно не будет удалено, хотя и попадает на начало страницы. 4. Применения. В книге, использующей верхние колонтитулы, поставьте в начало титульной страницы команду \ExpandTextArea или \ExpandTextArea[h] При оформлении титульной страницы в книге с нижними колонтитулами применяйте декларацию \ExpandTextArea[f ] . Если в книге используется область заметок на полях и колонтитулы страницы расширены (см. с. 248), то предметный указатель можно оформлять так: \clearpage \ExpandTextArea[m] \normalheaders \printindex \RestoreTextArea \extendedheaders 14.10. Подготовка специальных страниц в классе псс В классе псс в стилях «препринт», «книга» и «отчет» титул документа оформляется на отдельной странице. Отдельную страницу занимают также аннотация и страница с выходными данными. Для их подготовки имеются специальные средства, о которых далее пойдет речь. По умолчанию специальные страницы расширяются на область верхнего колонтитула. Чтобы изменить это правило, переопределите команду \titleareadef ault, например, так: \renewcommand\titleareadef ault{f } В результате специальные страницы будут расширены на нижний колонтитул, а не на верхний.
1. На рис. 14.1 показан макет, а на рис. 14.2—пример титульной страницы. Титульная страница состоит из полей, оформляемых командами \titlehead{(meKcm)} \author{( авторы)} \title{(3azo./ioeoK)} \t it lecomment {(текст)} \t it lesign{ (текст)} \t it lef oot {(текст)} Все поля, кроме поля \title необязательны. В стиле «препринт» номер препринта помещается в поле \titlecomment, а в стилях «книга» и «отчет» команда \bookeditor эквивалента команда \titlecomment. Положение титула на странице регулируется командой \titlestretch{(4uc^o)} задающей соотношение расстояния, пропускаемого над титулом, с расстояниями до и после поля \titlesign. По умолчанию \titlestretch{l}. При уменьшении этого числа титул будет смещаться вниз, а при увеличении— вверх. \titlehead РОССИЙСКАЯ АКАДЕМИЯ НАУК СИВИРСКОЕ ОТДЕЛЕНИИ ИНСТИТУТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И МАТЕМАТИЧЕСКОЙ ГЕОФИЗИКИ \author \title \titleconnnent \vspace{\stretch{...}} \titlesign । \vspace{\stretch{...}} \titlefoot В.П. Ильин ЧИСЛЕННЫЙ АНАЛИЗ Часть 1 НОВОСИБИРСК, 2<МИ \vfill Рис. 14.1. Макет титульной страницы Рис. 14.2. Пример титульной страницы
Стиль оформления титульной страницы задается командой \t it lestyle{ (декларации)} По умолчанию \titlestyle{\centering}. Титульная страница, показанная на рис. 14.2, подготовлена следующим образом: \setyear{2004} \titlehead{\scriptsize РОССИЙСКАЯ АКАДЕМИЯ НАУК\\[-.2ех] \stretchwith{\,}{СИБИРСКОЕ\ 0TflEHEHHE}\par\vspace{3pt} \footnotesize ИНСТИТУТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ\\ [-.2ех] И МАТЕМАТИЧЕСКОЙ ГЕОФИЗИКИ} \titlefoot{\footnotesize НОВОСИБИРСК,\quad\theyear} \author{\LARGE В.П. Ильин} \title{\huge\bf ЧИСЛЕННЫЙ АНАЛИЗ\\[1.5ех] \LARGE Часть 1} \maketitle Разрядка сделана командой \stretchwith из пакета nccstretch. 2. Страница с аннотацией состоит из трех полей: библиографического индекса, собственно аннотации и описания авторских прав. Библиографический индекс и описание авторских прав задаются командами \bibindex [(стиль)] {(текст)} \copyrighttable [(стиль)] {(левый столбец)}{(правый столбец)} По умолчанию (стиль) равен \footnotesize. В левом столбце описания авторских прав обычно указывается ISBN, а в правом —перечисляются авторские права. Разбиение столбцов на строки задается явно командой \\. Символ © указывается в строках правого столбца командой \item. Страница с аннотацией оформляется с помощью окружения abstract. Библиографическая ссылка внутри аннотации оформляется командой \fulltitle [(стиль)] {(авторы)}{(название)} Стиль оформления текста аннотации задается командой \abstractstyle{(стиль аннотации)} По умолчанию аннотация оформляется шрифтом размера \small. Страница с аннотацией, приведенная на рис. 14.3, оформлена следующим образом:
\abstractstyle{\footnotesize} \bibindex{YflK 519.6\\ ББК \pbox[lt]{22.19\\И 46}} \copyrighttable{ISBN 5-901-548-21-3} {\item В.П. Ильин, \theyear\\ \item ИВМиМГ СО РАН, \theyear} \begin{abstract} \fulltitle{HnbHH В.П.}{Численный анализ...} Излагаются теоретические основы... \qef \fulltitle{Il’in V.P.}{Numerical Analysis...} The theoretical background... \end{abstract} УДК 719 6 БВК 72 19 И 4<> Ильин В.П. Численный ыыиз Чать 1 — Новосибирск И« ИВМиМГ СО РАН, 2004 - 335 с Тм1и— 157, Figure —28, Table — 16, Index —263 Reference — 109 Рецензенты д ф -м и , профессор А Ф Воеводин, д ф м н nprxfreronp А М Мкцпкнн, д ф м и профессор В В Смелов ISB\ 5-901-54 ^21-3 © В П Ильин 2«М © ИНМиМГ СО Р5Н 2004 Рис. 14.3. Пример страницы с аннотацией Тематический план выпуска изданий СО РАН на 2004 г., 3 Научное издание ИЛЬИН Валерий Павлович ЧИСЛЕННЫЙ АНАЛИЗ Часть 1 Оформлено в системе макрос NCC Редан юр Л И Бессильных. Полная компьютерная подготовка к изданию Л И Бессильных, М В Зверева Компьютерная графика Л И Бессильных Обложка П.В Ильина Рис. 14.4. Пример страницы с выходными данными 3. Страница с выходными данными по структуре похожа на титульную страницу документа. Она состоит из полей \lastpagehead{(meKcm)} \author{(aemopw)}
\title{(sazo./ioeoK)} \t it lecomment{ (текст)} \lastpageinfо[_(стиль)1 {(редакторы)}{(вых. дан.)}{(издатель)} Параметр (стиль) по умолчанию равен \small. Вертикальная позиция титула на последней странице регулируется командой \lastpagestretch{('4uc^o)} (по умолчанию 1). Стиль оформления последней страницы задается командой \lastpagestyle{(cmu^b страницы)} (по умолчанию \centering). Выводится страница с выходными данными командой \makelastpage Страница с выходными данными, приведенная на рис. 14.4, оформлена следующим образом: \author{\large ИЛЬИН Валерий Павлович} \title{\LARGE\bf ЧИСЛЕННЫЙ АНАЛИЗ\\[1.5ех]\large Часть 1} \lastpagehead{TeMaTH4ecKHH план выпуска изданий СО РАН\\ на 2004 г., \No~3\\[15mm]\large Научное издание\\[-15mm]} \lastpageinfo{{\footnotesize Оформлено в системе \LaTeX, макрос NCC\par}\qef ...} {Лицензия ИД \No~02202 от 30.06.2000\,г. ...} {Институт вычислительной математики и математической\\ геофизики СО РАН, ...} \makelastpage
Приложение А Оформление библиографии по ГОСТам А.1. Библиографическая ссылка В отечественной полиграфии принято оформлять библиографическое описание в соответствии с ГОСТ 7.1-841. В научных публикациях применяют сокращенное описание в виде библиографической ссылки. По месту расположения внутри документа различают внутритекстовые (являющиеся частью текста), подстрочные (в сносках) и дотекстовые (вынесенные за текст документа или его части) библиографические ссылки. Оформление ссылок, конечно, зависит от их расположения в документе. Если в ссылках первого и второго типа основной критерий оформления—краткость, то в затекстовых ссылках можно позволить более полное библиографическое описание, поскольку затекстовое описание часто играет самостоятельную роль в научной публикации (например, в качестве библиографического указателя по теме исследований). Далее речь пойдет об оформлении затекстовых библиографических ссылок. При написании этого приложения использовались справочники [8, 11]. Библиографическая ссылка состоит из областей описания, между которыми ставится разделитель «точка и тире». Точку прижимают к предыдущей области, а тире отделяют небольшими пробелами с обеих сторон (допустимы межсловные пробелы). Разрыв строки между точкой и тире недопустим. Можно вместо разделителя «точка и тире» использовать «точку» при условии, что правила использования этого разделителя должны быть единообразны для всех библиографических ссылок в издании. Каждый отдельный фрагмент описания в библиографической ссылке начинается с прописной буквы. А.2. Ссылка на однотомное непериодическое издание Такая ссылка может состоять из следующих областей описания, перечисленных в указанном порядке: ХВ 2000 г. в этот ГОСТ внесено изменение, но оно не касается оформления библиографических ссылок.
(область заглавия) содержит основную информацию об издании; (область издания) содержит сведения о переиздании. Если произведение издано впервые, эта область отсутствует; (область выходных данных) содержит информацию об издательствах и годе издания. Обязательный элемент; (область количественной характеристики) содержит информацию об объеме издания. Хотя эта область и считается обязательной, но в библиографических ссылках ее можно опускать (см. [11, п. 25.21.1/4]); (область серии) содержит информацию о серии, в рамках которой выпущено данное издание. После всех указанных областей в библиографическом описании могут следовать области примечаний, но в библиографических ссылках они опускаются. Затекстовая библиографическая ссылка завершается точкой. Область заглавия имеет следующую структуру: (заголовок) содержит информацию о коллективе авторов. Инициалы автора пишутся после фамилии, дополнительные идентифицирующие признаки (даты жизни, область деятельности, слова сын, отец, старший, младший) указываются после инициалов в круглых скобках в сокращенной форме. Примеры: Дюма А. (сын), Кузнецов Н.И. (1911-1941), Лаврентьев М.М. (мл.) Информация об авторах отделяется запятыми. Завершается заголовок точкой. Если авторов более трех, то заголовок обычно не приводят. В этом случае информацию об авторах помещают в сведения об ответственности. (основное заглавие) содержит заглавие с титульного листа издания. Если заглавие состоит из нескольких фраз, то при описании они разделяются точками. Если дата и название места на титульном листе относятся к заглавию, не заключены в круглые скобки и не отделены от заглавия знаками препинания, то дата и место отделяются запятыми. Например, заглавие на титульном листе МАТЕРИАЛЫ II СЪЕЗДА ВСЕСОЮЗНОГО ОБЩЕСТВА ЛЮБИТЕЛЕЙ КНИГИ Москва 15-16 ноября 1979 года
в библиографическом описании будет таким: Мат. II съезда Всесоюз. общ-ва любителей книги, Москва, 15-16 нояб. 1979 г. Дополнительные сведения, относящиеся к основному заглавию, отделяются символом «двоеточие». Если сведений несколько, то они также разделяются символом «двоеточие». {сведения об ответственности) содержат сведения о лицах и организациях, участвовавших в подготовке издания. Они отделяются от основного заглавия символом «косая черта» (/), который отделяется с обеих сторон межсловными пробелами. Желательно, чтобы пробел после этого разделителя был неразбиваемым (~). Сначала идут сведения об авторах издания, если {заголовок) у ссылки отсутствует или сокращен. Затем идут сведения о редакторах и других лицах. В заключении перечисляются организации. Все независимые группы сведений разделяются символом «точка с запятой», а однородные элементы внутри каждой группы—символом «запятая». Сведения о лицах оформляются иначе, чем в {заголовке) ссылки: сначала инициалы, затем фамилия. Правила сокращения списка однородных элементов: • Список из двух элементов не сокращают; • Список из трех авторов в {заголовке) можно не сокращать. Если же сокращают, то до {первый автор) и др. • При числе авторов большем трех {заголовок) можно убрать. В этом случае список авторов помещают в {сведения об ответственности). Допустимо указывать в {заголовке) и более трех авторов. При этом список авторов либо приводят полностью, либо сокращают до {три первых автора) и др. • Список авторов в {сведениях об ответственности) приводят полностью, если число авторов меньше пяти. Если же авторов больше, то список сокращают до {три первых автора) и др. • Список других элементов, состоящий из более двух элементов, сокращают до {первый элемент) и др.
Область издания содержит сведения о переиздании произведения. Примеры: 3-е изд., испр. и доп. 2nd ed., согг. 4th ed. После сведений о переиздании могут идти сведения об ответственности, если при подготовке конкретного переиздания участвовали новые лица и организации и это оговорено в издании. Область выходных данных содержит информацию об издателях произведения. Форма: (издатели), (год издания) Поле (издатели) содержит информацию о местах издания и издательствах. Название издательства отделяют от предыдущего поля символом «двоеточие». В названиях мест издания используют следующие сокращения: Москва М. Ростов на Дону Ростов н/Д Ленинград Л. Санкт-Петербург СПб. Информацию о стране, которой принадлежит место издания, при необходимости дают следом после места издания в круглых скобках. Пример: Maccelesfield (UK) Название издательства сокращают, а слово «издательство» отбрасывают вместе с кавычками, обрамляющими название. Кавычки оставляют только в случае, если произведение издано не в издательстве, а, скажем, в фирме. Уточняющую информацию об издательстве (отделение или филиал) пишут после названия издательства и отделяют точкой. Примеры: Издательство «Художественная литература» Издательство Московского государственного университета Ставропольское книжное издательство Сибирское отделение издательства «Наука» Худож. лит. Изд-во МГУ Ставрополь: Кн. изд-во Наука. Сиб. отд-ние Если произведение издано одним издательством в нескольких местах, то места издания разделяют «точкой с запятой». Например, «М.; Л.». Если мест издания больше двух, то оставляют одно и добавляют и др. Если произведение издано несколькими издательствами в одном месте, то издательства разделяют символом «двоеточие». Например, «М.: Вече: АСТ». Если издательств больше двух, то выбирают основное или первое в списке и добавляют и др.
Наконец, если издание выполняется совместно издательствами, находящимися в разных городах, то сначала дают информацию о первом издательстве, затем о втором. Разделяют их «точкой с запятой». Пример: М.: Книга; Лейпциг: Фахбухферлаг Если место издания, издательство или год издания неизвестны, то вместо них пишут Б. м., Б. и., Б. г. соответственно. В ссылке на публикацию, изданную на правах рукописи (например, на диссертацию), поле издательства отсутствует, т.е. сразу за местом издания идет год издания через запятую. Область количественной характеристики содержит информацию об объеме и других количественных характеристиках издания. Основная часть количественной характеристики — число страниц. Если в издании используется несколько нумераций (например римская и арабская), то указывается число страниц для каждой нумерации числами соответствующей нумерации. Примеры: 320 с. XXIV, 368 с. Другие количественные характеристики необязательны и здесь не описываются. В библиографических ссылках область количественной характеристики необязательна. Область серии описывает принадлежность издания к серии публикаций, объединенных нумерацией и общим заголовком. Например, книги из серии «Lecture Notes in Mathematics», препринты какого-либо научно-исследовательского института, сборники трудов и др. Форма: {{заглавие серии) {сведения об ответственности)] {номер выпуска)) {Номер выпуска) пишут арабскими цифрами с тем же обозначением, что используется в серии: Т. 5 Вып. 12 1242 А.З. Ссылка на отдельные тома многотомного издания Такая ссылка может оформляться несколькими способами. Первый способ: {описание многотомного издания)] {номер тома): {описание тома)
{Описание многотомного издания) оформляется по правилам описания однотомного издания, но со следующими дополнениями. В конец поля основного заглавия добавляется элемент «В N т.» (или в «В N ч.», если издание состоит из частей, а не томов), отделяемый от основного заглавия символом «двоеточие». Здесь N — число томов (частей). В области выходных данных вместо года издания может быть диапазон лет издания, например, 1998-2002. Если изданы еще не все тома многотомного издания, то правая дата опускается, а вместо нее оставляется пробел соответствующей ширины. Описание заканчивается точкой с запятой, если следующее за ним описание тома идет в подбор, или точкой, если описание тома начинается с новой строки. {Номер тома) имеет вид «Т. М» («Ч. М»), где М — номер тома (части). {Описание тома) оформляется по правилам однотомного издания. Инициалы авторов в его {заголовке) идут после фамилии при оформлении с новой строки и перед фамилией при оформлении в подбор. Второй способ: {область заглавия многотомного издания).— {номер тома).— {описание тома) Здесь заглавие многотомного издания должно быть основной частью заглавия каждого тома. В заглавии отдельного тома при этом указывают только частную информацию, относящуюся к тому. Третий способ: {описание тома).— {{область заглавия многотомного издания)-, {номер тома)) В этом варианте многотомное издание рассматривается как серия книг. Данный вариант предпочтительнее, если частное заглавие каждой книги важнее, чем общее заглавие многотомного издания. А.4. Ссылка на составную часть издания Здесь речь идет об оформлении ссылки на отдельное произведение в книге, статью в газете, сборнике. Форма: {заглавие составной части) // {заглавия издания).— {место и год издания).— {идентификация издания).— {страницы)
{Заглавие составной части) состоит из заголовка и названия произведения. Двойная косая черта (//) отделяется с обеих сторон межсловными пробелами. Желательно, чтобы пробел после нее был неразбиваемым (~). {Заглавие издания) состоит из основного заглавия издания и сведений об ответственности. {Место и год издания) состоит из места и года издания, разделенных запятой. Место издания может отсутствовать для многотомных или серийных изданий. {Идентификация издания) дается только для многотомных или серийных изданий. При ссылке на статью в газете она состоит из даты и месяца. При ссылке на статью в периодическом издании эта область состоит из идентификационных элементов данного издания, перечисленных через запятую (например, Т. 6, № 4). После этих элементов может идти частное заглавие издания, отделенное символом «двоеточие». Наконец, область {страницы) начинается текстом (7., после которого идет номер страницы или диапазон номеров. При описании библиографической ссылки на иностранном языке все служебные элементы описания даются на этом языке. Сокращение «и др.» в языках с латинской основой в списке авторов заменяют на «et al.», а в других местах на «etc.». А.5. Примеры библиографических ссылок В качестве разделителя областей описания здесь используется «точка и тире». С целью экономии места можно заменять этот разделитель на точку. Всюду далее область количественной характеристики отсутствует, поскольку она не является обязательной при оформлении библиографических ссылок. Альтернативные варианты оформления одной и той же ссылки имеют одинаковые номера. Отдельное издание: [1] Василенко В. А. Сплайн-функции: теория, алгоритмы, программы. — Новосибирск: Наука. Сиб. отд-ние, 1983. [2] de Boor С. A Practical Guide to Splines. —Berlin etc.: Springer, 1978.—(Appl. Math. Sciences; 27); К. де Бор. Практическое руководство по сплайнам. —М.: Радио и связь, 1985. [3] Ахиезер Н.И., Глазман И. М. Теория линейных операторов в гильбертовом пространстве. — М.: Гостехиздат, 1950. [4] Light IV. A., Cheney Е. W. Approximation Theory in Tensor Product Spaces.— Berlin etc.: Springer, 1985.—(Leet. Notes Math.; 1169).
[5] Завьялов Ю. С., Квасов Б. И., Мирошниченко В. Л. Методы сплайн-функ-ций. —М.: Наука, 1980. [5] Завьялов Ю. С. и др. Методы сплайн-функций / Ю.С. Завьялов, Б. И. Квасов, В. Л. Мирошниченко. —М.: Наука, 1980. [6] Welsh J., Elder J., Bustard D. Sequential Program Structures. —London: Prentice-Hall, 1984. [6] Welsh J. et al. Sequential Program Structures / J. Welsh, J. Elder, D. Bustard.— London: Prentice-Hall, 1984. [7] Пакет прикладных программ по аэрогидродинамике ГАММА / Т. Г. Волконская, В. М. Пасконов, Г. С. Росляков, М. В. Шустова. —М.: Изд-во МГУ, 1985. [8] Диалектический и исторический материализм / А.П. Шептулин, Н.И. Азаров, И. Д. Андреев и др.; Под общ. ред. А.П. Шептулина. —М.: Политиздат, 1985. [9] Применение ЭВМ в курсах математического анализа и высшей математики: (оперативно-информ, материал) / Подгот. Б. А. Вертгейм; АН СССР. Сиб. отд-ние. ВЦ. —Новосибирск, 1981. Диссертация, автореферат: [10] Чеблаков Б. Г. Система разработки математического обеспечения языковыми средствами высокого уровня: Дис. ... канд. физ.-мат. наук: 01.01.10.— Новосибирск, 1980. [11] Сорокин С. Б. Математические модели с сопряженно-операторной структурой для стационарных задач механики сплошной среды: Автореф. дис. ... докт. физ.-мат. наук: 05.13.18. —Новосибирск, 2001. Препринт: [12] Бежаев А. Ю. Воспроизводящие отображения и векторные сплайн-функ-ции. —Новосибирск, 1989. —(Препринт / АН СССР. Сиб. отд-ние. ВЦ; 830). [13] Mulansky В., Neamtu М. Interpolation and Approximation from Convex Sets.— Dresden, 1996.—(Preprint / Technishe Universitat; MATH-NM-02-1996). Том многотомного издания: [14] Кнут Д. Искусство программирования для ЭВМ / Пер. с англ. Г.П. Бабенко, Ю.М. Банковского; Под ред. В.С. Штаркмана. —М.: Мир, 1976; Т. 1: Основные алгоритмы. [14] Кнут Д. Искусство программирования для ЭВМ / Пер. с англ. Г.П. Бабенко, Ю.М. Банковского; Под ред. В.С. Штаркмана. —М.: Мир, 1976. Т. 1: Основные алгоритмы.
[14] Кнут Д. Искусство программирования для ЭВМ. — Т. 1. Основные алгоритмы: Пер. с англ. —М.: Мир, 1976. [14] Кнут Д. Основные алгоритмы: Пер. с англ. — М.: Мир, 1976. — (Искусство программирования для ЭВМ / Д. Кнут; Т. 1). Стандарт: [15] ГОСТ 7.1-84- Библиографическое описание документа. Общие требования и правила составления. —Взамен ГОСТ 7.1-76; Введ. 01.01.86. —М.: Изд-во стандартов, 1984. Депонированная научная работа: [16] Кузнецов Ю. С., Курбатов Н. Н. Червинский Ю. Ф. Изменение скорости звука в холодильных расплавах / Моск, хим.-технол. ин-т. — М., 1972. — Деп. в ВИНИТИ 01.06.82, № 2691. Авторское свидетельство: [17] А. с. 1254521 СССР, МКИ G03G15/00. Электрографический микрофильмирующий аппарат. [17] Электрографический микрофильмирующий аппарат / А. с. 1254521 СССР, МКИ G03G15/00. Тезисы доклада: [18] Аминов Ю. А. Оценка внешнего диаметра поверхностей // Тез. докл. 5-й Все-союз. конф, по современным проблемам геометрии, Самарканд, окт. 1972 г.— Самарканд, 1972. —С. 9-10. Статья в трудах конференции: [19] Михайлов Г. А. Построение и оптимизация методов Монте-Карло на основе модификации фазового пространства // Тр. Междунар. конф, по вычисл. матем. МКВМ-2004 / Под ред. Г. А. Михайлова, В. П. Ильина, Ю.М. Лаев-ского. — Новосибирск: Изд. ИВМиМГ СО РАН, 2004.-Ч. I.-C. 215-220. [20] Tyrtyshnikov Е. Е. Mosaic ranks and skeletons // Numerical Analysis and its Applications. Proc. WNAA-96. — 1996. — P. 505-516. — (Leet. Notes in Comp. Sci.; 1196). Статья в сборнике, книге: [21] Марчук Г. И. Некоторые математические проблемы охраны окружающей среды // Комплексный анализ и его приложения. — М., 1978. — С. 375-381. [22] Walther J. S. A unified algorithm for elementary functions // The best computer papers of 1971. —Princeton etc., 1972. —P. 69-81.
Статья в газете: [23] Ершов А.П. Зачем вам ЭВМ // Коме, правда. —1986. —28 марта. Статья в продолжающемся издании: [24] Тен С. В. Сравнение алгоритмов идентификации выражений языка Ада // Прикладная информатика. —М., 1986. —Вып. 1(10). —С. 107-125. [25] Тарасенко Г. С. Исследование релаксационных алгоритмов случайного поиска общего вида // Проблемы случайного поиска. — Рига, 1978. —Вып. 7: Задачи адаптации в технических системах. —С. 67-96. [26] Шахбазян К. В., Тушкина Т А. Обзор методов составления расписаний для многопроцессорных систем // Зап. науч, семинаров ЛОМИ / Тр. Мат. ин-та им. В. А. Стеклова. Ленингр. отд-ние.—1975. —Т. 54. —С. 229-258. [27] Ostapkevich М. Expulsive tree data structures for fast data search by a key // Bull. Novosibirsk Comp. Center. Ser. Computer Science. — Novosibirsk, 1999.-Iss. 10.-P. 73-82. Статья в периодическом издании: [28] Кружков С.Н., Королев А. Г. К теории вложения анизотропных функциональных пространств // Докл. АН СССР. — 1985. — Т. 285, № 5. —С. 1054-1057. [29] Schaback R. Improved error bounds for scattered data interpolation by radial basis functions // Math. Comp.—1999. —Vol. 68. —P. 201-216. [30] Азизов И. Алгоритмы вычисления Е-оптимального решения в линейной максиминной задаче со связанными переменными // Изв. АН БССР. Сер. физ.-мат. наук. — 1986. — № 1. —С. 14-19. [31] Marcotty М., Sayward F. G. The definition mechanism for standard PL/I // IEEE Trans. Software Eng.-1977.-Vol. SE-13, № 6.-P. 416-450. [32] Роженко А. И. Сплайн-аппроксимация в тензорном произведении пространств // Сиб. журн. вычисл. матем. / РАН. Сиб. отд-ние. —Новосибирск, 1998.-Т. 1, № 4.-С. 373-390. А.6. Ссылка на электронную публикацию Оформление такой ссылки регламентирует ГОСТ 7.82-2001. В целом правила оформления совпадают с обычными правилами. Отличия: после основного заглавия добавляется фраза [Электронный ресурс]\ перед областью выходных данных добавляется (область вида и объема ресурса), а после выходных данных— (область физической характеристики). Заканчивается описание (областью примечания).
Область вида и объема ресурса задает вид описания электронного ресурса. Примеры вида ресурса: Электрон, текстовые дан. Электрон, граф. дан. Электрон, журн. Электрон, картогр. дан. Электрон, прикладная прогр. Электрон, поисковая прогр. Сведения об объеме ресурса приводятся в круглых скобках за видом ресурса. Область физической характеристики используется только при описании ресурса локального доступа. Пример: 1 электрон, опт. диск (CD-ROM) Область примечания для ресурса локального доступа содержит описание минимальных системных требований, а для ресурса удаленного доступа—информацию о режиме доступа, начинающуюся словами Режим доступа. Примеры: [33] Большой толковый словарь английского и русского языков [Электронный ресурс]: 2 в 1. —Электрон, дан. и прогр. —Maccelesfield (UK): Europa House, [1999?]. —1 электрон, опт. диск (CD-ROM). — Систем, требования: PC 486: 4 Mb RAM; VGA; Windows 95/98/NT; CD-ROM дисковод; mouse; 4 Mb hard disk. [34] Исследовано в России [Электронный ресурс]: Многопредмет. науч. журн. / Моск. физ.-техн. ин-т. — Электрон, журн. — Долгопрудный: МФТИ, 1998- . — Режим доступа к журн.: http://zhurnal.mipt.rssi.ru/. А.7. Ссылка на ресурс Интернет Наряду со ссылками на электронные публикации, в научных статьях могут встречаются ссылки на ресурсы Интернет. По-видимому, для таких ссылок допустима упрощенная форма библиографического описания, состоящая из области заглавия и адреса в Интернете. Примеры: [35] Comprehensive Т^Х Archive Network. —http://www.ctan.org/. [36] MiKTeX Project Page. —http://www.miktex.org/.
Приложение Б Макросы в ПСЩХ’е Б.1. Создание новых команд Для создания новых команд применяется команда \newcommand. С ее помощью можно определять команды без параметров, с параметрами, а также с первым необязательным параметром. Иногда требуется переопределить уже существующую команду. В этом случае применяется команда \renewcommand. Перечисленные команды имеются в двух разновидностях: в виде основной и *-формы. Если параметры у создаваемой команды могут быть длинными (состоять из нескольких абзацев), то используйте основную форму. Если же у создаваемой команды не может быть длинных параметров, то используйте *-форму. Наконец, если создаваемая команда не имеет параметров, то различий между основной и *-формой этих команд нет. Команды \newcommand и \renewcommand можно использовать в любом месте документа. Они подчиняются тем же правилам, что и декларации, т. е. их область действия ограничена текущим блоком. При попытке определить уже существующую команду с помощью команды \newcommand или переопределить еще несуществующую команду с помощью команды \renewcommand ЕТцХ выдаст сообщение от ошибке. 1. Для создания команды без параметров используется команда \newc ommand{ (команда)}{(определение)} Первый параметр задает команду, а второй —значение, которое будет подставляться вместо этой команды. Пример: \newcommand{\clap}{\makebox[Omm][с]} Хотя в определении команды \clap нет параметров, но при ее использовании параметр потребуется, поскольку она завершается командой \makebox, у которой есть параметр. Команда \clap работает как горизонтальный бокс нулевой ширины, выводящий текст центрировано с наложением, т. е. следующие две команды будут работать одинаково: \clap{ (текст)} \makebox [0mm] [с] {(текст)}
2. Переопределение уже существующей команды без параметров выполняется так: \renewcommand{ (команда)} {(определение)} Например, команда \renewcommand{\indexname}{ABTopcKHH указатель} изменяет заголовок указателя, оформляемого окружением the index. 3. Для определения новой команды с параметрами используются команды \печсотптаи1(1{(команда)} [(п)] {(определение)} \newcommand*{(KOAtaHda)} [(п)] {(определение)} а для переопределения существующей команды — \renewcommand{(KOAiaHda)} [(п)] {(определение)} \renewcoimand*{( команда)} [(h)] {(определение)} Параметр (п) задает целое число из диапазона от 1 до 9 и определяет количество параметров у создаваемой команды. Все параметры создаваемой команды обязательные. Макроподстановка параметров в (определении) команды выполняется так: #1, #2 и т. д., где число после символа # задает порядковый номер параметра. Пример: \newcommand*{\sfгас}[2]{\dfrac{\tstrut#l}{\bstrut#2}} Здесь создается команда \sfх^с{(числителъ)} {(знаменатель)} с короткими параметрами (поскольку используется \newcommand*), задающая дробь в стиле \displaystyle (с помощью команды \dfrac из пакета amsmath), в числителе и знаменателе которой добавлены подпорки (команды \tstrut и \bstrut из пакета nccboxes). 4. Для определения/переопределения команды, у которой первый параметр необязательный (задается в квадратных скобках) используется полная форма перечисленных выше команд: \newcommand{(KOMaHda)} [(h)] [(значение 1)] {(определение)} \newcommand*{( команда)} [(п)] [(значение 1)] {(определение)} \renewcommand{(KOAtaHda)} [(п)] [(значение 1)] {(определение)} \renewcommand*{( команда)} [(h)] [(значение 1)] {(определение)}
Параметр (значение 1} задает значение первого параметра в случае, если он отсутствует. Пример: \newcommand*{\Rule}[2][0.4pt]{\rule{#l}{#2}} Синтаксис этой команды таков \Rule \_(тполщина}] {.(ширина}} Если параметр (толщина} отсутствует, то толщина линейки будет 0.4pt. Кстати, определить эту команду можно проще: \newcommand*{\Rule}[1][0.4pt]{\rule{#l}} используя тот факт, что команда \rule сама затребует второй свой параметр при исполнении команды \Rule. 5. Иногда требуется создать команду, которую можно было бы без опаски использовать в перемещаемых параметрах, т. е. заносить в колонтитул, содержание, предметный указатель и выводить в сносках. Для этой цели применяется команда \DeclareRobustCommand, синтаксис которой идентичен синтаксису команды \newcommand. В отличие от последней, команда \DeclareRobustCommand создает заданную команду без проверки на то, что она новая. Команда имеет *-форму, используемую для создания команд с короткими параметрами. 6. Для создания математической команды, которую можно было бы использовать и в текстовой моде, оформите ее определение в виде параметра команды \ensuremath. Например, команда \newcommand{\R}{\ensuremath{\mathbb R}} выводит символ IR и может использоваться как в тексте, так и в математической моде. Б.2. Создание новых окружений Для создания новых и переопределения существующих окружений применяются команды \newenvironment и \renewenvironment и их ♦-формы. Синтаксис всех четырех вариантов идентичен, а смысл аналогичен использованию команд \newcommand и \renewcommand. Поэтому я ограничусь описанием основного варианта команды \newenvironment:
\newenvironment{(Ha3eaHue)} [(h)] [{значение 1}] {{пролог}} {{эпилог}} Макроопределение, задаваемое в {прологе}, исполняется при открытии окружения командой \Ъъ%гп.{{название}}, а {эпилог} выполняется командой \еп&{{название}}. Параметры, если они есть, относятся к {прологу} макроопределения. Чтобы проигнорировать пробелы после пролога окружения, завершите {пролог} командой \ignorespaces, а чтобы проигнорировать пробелы после эпилога, завершите {эпилог} командой \ignorespacesafterend. Б.З. Работа с переменными 1. Команда \ne wlengt h{ (переменная}} создает новую переменную длины, т. е. переменную имеющую растяжимость и сжимаемость1. При создании переменная получает нулевое значение. Пример: \newlength{\mylength}. Значение, присваиваемое переменной — это размер или длина. 2. Размер задается следующим образом: {размер} : {явный размер} I {знак} {размер} I {переменная размера} I {число}{переменная размера или длины}2 Здесь {знак} — символ «+» или «-»; {число} — положительное или отрицательное вещественное число, дробная часть которого отделяется точкой; {явный размер} {число}{единицы измерения} В качестве {единиц измерения} можно использовать: ХВ переменные типа «размер» считаются «внутренней кухней». Поэтому ко- манда, позволяющая создавать новый размер не описана ни в одном руководстве по ИТ^Х’у. В то же время команда создания новой длины считается доступной для пользователей. Она защищена от попытки объявить существующую команду как длину. 2{Число} умножается на основной размер {переменной).
mm миллиметры ст сантиметры in дюймы (lin = 25.4mm) pt пункты3 (Ipt « 0.351mm) bp большие пункты (Ibp « 0.353mm, 72bp = lin) dd пункты Дидо (Idd « 0.376mm) pc пики (Ipc = 12pt) cc цицеро (lee = 12dd) sp сканированные пункты (65536sp = Ipt) em ширина буквы M текущего шрифта (приблизительно) ех высота буквы х текущего шрифта (приблизительно) 3. Длина состоит из трех элементов: основного размера, величины растяжимости и величины сжимаемости. Длину можно сравнить с пружинкой. Без нагрузки она имеет основной размер. Ее можно растянуть на величину растяжимости, либо сжать на величину сжимаемости4. Синтаксис: {длина) : {переменная длины) I {знак){переменная длины) I {размер) plus {приращение) I {размер) minus {приращение) I {размер) plus {приращение) minus {приращение) Здесь {размер) — основной размер, «plus {приращение)» — растяжимость, «minus {приращение)» — сжимаемость длины, {приращение) {размер) I {бесконечный размер) {бесконечный размер) {число) {бесконечные единицы измерения) {бесконечные единицы измерения) fil I fill I filll 4. Арифметические операции с переменными. Изменить значение переменной можно с помощью деклараций \set length{ (переменная)}{{расстояние)} \addtolength{ (переменная)}{(расстояние)} 3Единицы измерения pt означают английские пункты. В отечественной полиграфии используются более крупные пункты, которые здесь носят название пунктов Дидо. 4Длина в результате сжатия может стать отрицательной, если величина сжимаемости больше основного размера.
Первая присваивает (переменной) указанное (расстояние), а последняя добавляет (расстояние). Все размеры при вычислении расстояний преобразуются в сканированные пункты sp. Приведение типов у расстояний выполняется автоматически. Если длина преобразуется к размеру, то величины ее растяжимости и сжимаемости игнорируются. Если же размер преобразуется к длине, то растяжимость и сжимаемость получают нулевые значения. При сложении длин их основные размеры, растяжимости и сжимаемости складываются независимо. При сложении бесконечного приращения с конечным последнее игнорируется. Если складываются две «бесконечности» одинаковой силы, то их числовые коэффициенты складываются5. Если складываются «бесконечности» разной силы, то более слабая «бесконечность» игнорируется. 5. С помощью деклараций \зеЪЪоъ±&ЪЪ{(переменная)}{(текст)} \settoheight {(переменная)}{(текст)} \settodepth{ (переменная) }{(текст)} переменной можно присвоить значение ширины, высоты или глубины некоторого текста соответственно. 6. Пакет calc позволяет использовать арифметические выражения в параметре (расстояние) команд \setlength и \addtolength в привычной математической нотации. Выражение может содержать расстояния, целые числа, арифметические операции «+», «-», «*», «/» и круглые скобки «(», «)». В операциях сложения и вычитания оба операнда должны быть расстояниями. В операциях умножения и деления первый операнд должен быть расстоянием, а второй—целым числом. Пример: \setlength\topmargin {(297mm-\textheight)/3 - lin - \headheight -\headsep} Б.4. Работа со счетчиками Основная функция счетчиков в lATEX’e — это обеспечение автоматической нумерации однотипных элементов. Счетчик имеет буквенное имя. Со счетчиком фактически связывается две составляющих: регистр счетчика, хранящий его текущее значение, и команда печати этого значения, 5Например, при сложении «5pt plus Ifil» с «lOpt plus -Ifil» получаем «15pt».
имя которой формируется из имени счетчика и приставки the. Например, значение счетчика page, служащего для нумерации страниц документа, можно вывести с помощью команды \thepage. 1. Команда \the(счетчик) обычно печатает значение счетчика с помощью одной из следующих команд: \^хз.Ъ±с{(счетчик)} — арабскими цифрами (1, 2, 3, ...); \roman{(счетчик)} — строчными римскими цифрами (i, ii, iii, iv, ...); \Roman{(счетчик)} — прописными римскими цифрами (I, II, III, IV, ...); \alph{(счетчик)} — строчными латинскими буквами (а, Ь, с, ...); \к1рЪ{(счетпчик)} — прописными латинскими буквами (А, В, С, ...); \fnsymbol{(счетчик)} — символами сносок (значение счетчика должно быть меньше 10): Значение 1234567 8 9 Символ * t t § И II ** tt tt 2. При загрузке пакета babel с опцией russian создаются команды \asbuk{(счетчик)} и \Asbuk{(счетчик)}, с помощью которых можно печатать значение счетчика, соответственно, строчными и прописными русскими буквами (от «а» до «я», исключая «ё», «й», «ъ», «ы», «ь»). При использовании пакета ncclatex с опцией russian в командах \alph и \Alph задается нумерация русскими буквами, а латинская нумерация доступна через команды \alphlatin{(счетчик)} и \Alphlatin{(c4em4UK)}. 3. Команда \печсоипЪех{(счетчик)} [(главный счетчик)'] создает новый (счетчик), присваивает ему нулевое значение и задает в команде \the(счетчик) стиль нумерации \arabic{ (счетчик)} Если (главный счетчик) задан, то создаваемый счетчик будет подчинен ему, т. е. при изменении значения главного счетчика он будет обнуляться. Пример: \newcounter{mycount}[section] \renewcommand\themycount{\thesection.\roman{mycount}}
Создаваемый здесь счетчик my count подчинен счетчику section, а команда \themycount печатает значение счетчика в виде \thesection.i, \thesection.ii и т. д. 4. Арифметические операции со счетчиками: \set counter{ (счетчик)}{(целое)} присваивает (счетчику) заданное (целое) число; \zddtocountex {(счетчик)} {(целое)} прибавляет к (счетчику) заданное (целое) число; \stepcounter{(c'4em'4UK)} увеличивает значение (счетчика) на единицу; \ref&ЪерсоипЪех{(счетчик)} сначала увеличивает значение (счетчика) на единицу, а затем запоминает его печатное значение в специальном макросе, который в дальнейшем используется командой \label при создании метки. Значение параметра (целое), используемого в командах \setcounter и \addtocounter, —целое число или \уа1ие{(счетчик)} равное числовому значению (счетчика). 5. Пакет calc позволяет использовать в параметре (целое) арифметические выражения в привычной математической нотации. Выражение может содержать целые числа, команду \value, арифметические операции «+», «-», «*», «/» и круглые скобки «(», «)». Операция «/» выполняет деление нацело. Все арифметические операции со счетчиками выполняются глобально, т. е. не ограничиваются текущим блоком.
ВЩХ и его расширения В этом приложении речь пойдет о некоторых классах и пакетах IM^X’a, имеющихся в полном дистрибутиве MiKTeX’a. Из всего многообразия пакетов я отбирал только пакеты общего назначения, которые грамотно написаны и содержат полезные расширения. Все пакеты, о которых пойдет речь, содержатся во внутренних папках папки tex\latex, считая от корня Т^Х-системы. Документацию к пакетам можно найти в папке doc\latex, а также в папке source\latex. Если Вы обнаружили файл с расширением . dtx, то оттранслировав его в ТМЁХ’е, получите документацию к пакету. В.1. Базовые классы и пакеты ШЁХ’а ЬУГррС, его базовые классы и пакеты содержатся в папке base. С некоторыми из них Вы уже познакомились ранее. 1. Класс article (см. п. 4.2, с. 71) служит для подготовки статей. Он является базовым для многих других классов. Так на нем базируются класс proc, предназначенный для подготовки трудов конференций1; Itnews, использующийся в выпусках «lATgX News»; Itxdoc, служащий для оформления dtx-файлов; Itxguide, используемый при подготовке инструкций к lAT^jX’y (cfgguide.tex, clsguide.tex, cyguide.tex, fntguide.tex). Перечисленные инструкции и выпуски «lATgX News» Вы можете найти в папке с документацией к базовым классам и пакетам. 2. Классы book и report служат для подготовки книг и отчетов. По сравнению с классом article в них добавлена рубрика \chapter, используемая для оформления глав документа. Новая глава всегда начинается с новой страницы. Если заказана опция openright, то глава будет начинаться с правой (нечетной) страницы, а если заказана опция орепапу, то с любой страницы. Опция openright играет роль только при двустороннем оформлении документа. 1 Особенности класса ргос: оформление в две колонки, запрещены малые размеры страницы аБрарег и ЬБрарег, запрещен вывод титула на отдельной странице, заголовок аннотации оформляется как ненумерованная секция.
Между собой классы book и report различаются совсем мало: в первом заказано двустороннее оформление, режим openright и стиль оформления страниц headings, в последнем — одностороннее оформление, режим орепапу и стиль страниц plain. В классе book добавлены команды \frontmatter, \mainmatter и \backmatter (см. п. 14.3, с. 241). Окружение abstract отсутствует в классе book, но есть в классе report. 3. Класс letter используется для подготовки писем и определяет специальные команды для этого. Класс slides применяется для подготовки слайдов2. По сравнению с классом article в этих классах нет команд рубрикации, оформления титула, аннотации, содержания, приложений. 4. Пакет fontenc используется для выбора схемы кодировки шрифтов, которая будет основной в документе. Схема кодировки заказывается в списке опций этого пакета: \usepackage [(список схем кодировки)] {fontenc} Если в списке указано несколько схем кодировки, то основной считается последняя из них. В отличие от других пакетов пакет fontenc можно многократно загружать командой \usepackage (другие пакеты загружаются только один раз, а последующие попытки их загрузки игнорируются). Фактически этот пакет делает следующее: загружает требуемые схемы кодировки и переопределяет команду \encodingdefault, задающую основную кодировку документа. Для схем кодировки с кириллицей пакет дополнительно задает соответствие между строчными и прописными буквами, тем самым позволяя использовать кириллицу в параметрах команд \MakeUppercase и \MakeLowercase. 5. С помощью пакета inputenc задается входная кодировка, используемая при наборе документа: \usepackage [(кодировка)] {inputenc} В пакете также определяется декларация \inputencoding{( кодировка)} изменяющая входную кодировку символов, что позволяет обрабатывать документы, в которых используется несколько разных входных кодировок. 2В классе slides используются шрифты увеличенных размеров, поэтому опции выбора базового размера шрифтов отсутствуют.
6. При сборке предметного указателя (см. п. 14.7, с. 250) можно воспользоваться пакетами makeidx и showidx: первый пакет определяет команду \printindex и некоторые вспомогательные команды, а последний—показывает индексные элементы на полях страниц, тем самым облегчая подготовку предметного указателя. 7. Пакет alltt определяет окружение alltt, работающее почти как окружение verbatim. В нем служебные символы \, {, } сохраняют свой обычный смысл, тем самым позволяя использовать команды. Если в документе часто используется команда \verb, то можно существенно упростить набор документа, если воспользоваться пакетом short verb. Например, если Вы применяете в документе символ I только в качестве ограничителя параметра команды \verb, то добавив в преамбулу строки \usepackage{shortverb} \MakeShortVerb{\I} Вы теперь сможете вместо «\verb I (текст) | » писать просто « I (текст) | ». Можно объявить несколько символов в качестве verb-команд, а также отказаться от использования их в этом качестве с помощью команды \DeleteShortVerb{\(cujueoyi)} 8. Пакет textcomp определяет дополнительные текстовые символы (см. с. 346), а пакет latexsym—некоторые редко используемые текстовые символы3. Если Вы хотите, чтобы при наборе математических формул в мелких и крупных размерах символы ограничителей масштабировались, т. е. изменяли свой размер вместе с кеглем формулы, то загрузите пакет exscale. 9. Еще в базовой коллекции есть следующие пакеты: graphpap определяет команду \graphpaper, рисующую сетку в чертежах; flatter запрещает появление плавающего элемента раньше ссылки на него; newlfont и oldlfont изменяют стиль работы «старых» команд выбора шрифтов (\rm, \tt и т. д.) соответственно на «новый» (1АТеХ2^) и на «старый» (IATeX-2.09); fixltx2e делает некоторые изменения во «внутренней кухне» ЬХГвХ’а4; ifthen добавляет команды условной обработки документа. 3В пакете amsfonts определяются все символы пакета latexsym. 4 Разработчики признают, что эти изменения улучшают работу I^T^X’a, но не вносят их в основой код ЮТ^Х’а из-за того, что результат форматирования документов может измениться.
В.2. Русский этаж Вавилонской башни 1. Многоязыковая поддержка в lAT^X’e выполняется через пакет babel5. Цели пакета: поддержка переноса слов на разных языках; локализация IM^X’a, заключающаяся в замене в макросах английских служебных слов таких как «Chapter», «Appendix», «Contents» на слова конкретного языка; специализация Г^ТвХ’а в соответствии с конкретной полиграфической традицией. Средства поддержки переносов из пакета babel используются не только в ЕЩ^Х’е, но и в других макрорасширениях TgX’a. Они «зашиты в формат» этих макрорасширений, т. е. в файлы с расширением .fmt, генерируемые при установке Т^Х-системы. Поэтому, если Вы подключили или отключили таблицы переносов каких-либо языков, то после этого следует перегенерировать все имеющиеся форматы. В MiKTeX’e это делается программой «MiKTeX Options»6. Пакет babel поддерживает более 50 языков и диалектов7. Языки и диалекты, которые Вы планируете использовать при подготовке документа, указываются в списке опций при загрузке пакета, причем в качестве основного языка устанавливается последний язык из списка. Например, команда \usepackage[english,russian]{babel} загружает средства поддержки английского и русского языков и устанавливает русский язык в качестве основного языка документа. Если английский язык не является основным языком документа, то опцию english можно не указывать. 2. Для смены языка можно использовать декларацию \selectlanguage{(.H3b6K)} где (язык) — название языка или диалекта, поддерживаемого пакетом. Примеры языков и диалектов: russian, english, USenglish, UKenglish, american, british, french, german, ngerman. По этой команде выбираются таблицы переноса, локализация и специализация для соответствующего 5Слово «Babel» в переводе на русский— «Вавилонская башня», т. е. означает смешение всех языков мира. 6Состав таблиц переносов изменяется в закладке «Languages», а перегенерация форматов выполняется в закладке «General» нажатием на кнопку «Update Now». Подробности см. в файле doc\generic\babel\babel.dvi. Названия языков и диалектов приведены в п. 1.1 в столбце Option(s).
языка. Команду можно использовать только для тех языков, которые были явно указаны в списке опций при загрузке пакета babel. Окружение \begin{otherlanguage}{ (язъбк)} (абзацы) \end{otherlanguage} работает аналогично команде \selectlanguage, изменяя язык у (абзацев) текста. 3. Команда \f orе ignlanguage {(язык)} {(текст)} изменяет язык только для фрагмента текста, указанного в последнем ее параметре. Точнее, изменяются таблица переносов и специализация языка, а локализация остается прежней. Если фрагмент текста состоит из нескольких абзацев, то вместо этой команды используйте окружение \begin{otherlanguage*}{(.fl3b£K)} (абзацы) \end{otherlanguage*} Эти команды можно применять для языков, указанных в списке опций пакета babel, а также для английского языка. 4. Чтобы сменить только таблицы переносов, используйте окружение \begin{hyphenrules}{^3b£K)} (абзацы) \end{hyphenrules} Здесь можно указывать любой из языков, «зашитых в формат» DTgX’a. Специальный вариант языка—nohyphenation—отключает переносы слов. 5. В пакете babel в настоящий момент поддержаны три языка кириллической группы: русский (russian), украинский (Ukrainian) и болгарский (bulgarian). Эти языки различаются по таблицам переносов и локализации, а специализация у них одинакова. Поэтому все команды специализированного набора текста для русского языка относятся также к украинскому и болгарскому языкам. Для нормальной работы с языками кириллической группы необходима коллекция макросов cyrillic и соответствующие ей шрифты. Если Вы планируете транслировать документы в форматы PostScript или PDF, то будет полезно установить коллекцию cm-super8. 8В MiKTeX’e поддержка кириллицы устанавливается в конфигурации large, а коллекция cm-super—в конфигурации full.
При заказе любого из этих языков пакет babel проверяет, была ли до этого загружена какая-либо схема кодировки шрифтов кириллицы. Если кириллица не была загружена, то пакет загружает схему Т2А и устанавливает ее в качестве основной схемы кодировки шрифтов в документе. Тем самым команда \usepackage[Т2A]{fontenc} перед вызовом пакета babel становится необязательной. Но не надо забывать, что эта команда не только загружает схему Т2А, но и задает соответствие между строчными и прописными буквами кириллицы. Поэтому данную команду убирать не стоит. При подготовке текста с кириллицей, необходимо также задать входную кодировку символов с помощью пакета inputenc. Ее обычно указывают перед загрузкой пакета babel. Если этого не сделать, то пакет выдаст предупреждение No input encoding specified for Russian language и продолжит работу. Поэтому входную кодировку кириллицы можно задать и после загрузки пакета babel. Если Вы набираете русский текст в кодировке СР1251 и не используете буквы «ё» и «Ё», то входную кодировку можно вообще не задавать. 6. Языковая локализация состоит из смены кодировки шрифтов, замены стандартных текстовых заголовков и переопределения команды \today, печатающей текущую дату. Обычно в языках кириллической группы принято использовать алфавитную нумерацию кириллицей, а не латиницей. В русском и украинском языках этой цели служат команды \asbuk и \Asbuk (см. с. 284). В болгарском языке используется другой прием: команда \enumBul переключает стандартную буквенную нумерацию на кириллицу, а \enumLat —на латиницу. 7. Специализация языков кириллической группы заключается в следующем: устанавливается режим \frenchspacing (отключение вставки увеличенного пробела после конца предложения), символ двойной кавычки (") объявляется активным и с его помощью задаются специальные команды (см. далее). При необходимости можно сделать этот символ неактивным, воспользовавшись декларацией \shorthandoff {"}• Повторная активация этого символа выполняется декларацией \shorthandon{"}-
Внутри окружения hyphenrules символ двойной кавычки становится неактивным. Чтобы сделать его активным, добавьте в начало этого окружения декларацию \languageshorthands{russian}. Вот полный список команд, определяемых через символ двойной кавычки: "<..."> Кавычки «елочки» " ‘ ... " ’ Кавычки „лапки“ "= Дефис между словами, разрешающий перенос слов Неразбиваемый дефис Точка переноса, разрешающая перенос в остальной части слова " " Как " - , но не выводит символ переноса при разбивке в этой точке Тире, начинающее прямую речь "-- Тире между словами в предложении Тире между словами составного слова " I Вставляется между символами, образующими лигатуру, с целью ее отключения (не препятствует переносу слова) Подробнее о применении этих команд написано в гл. 5 на с. 88-90. В схемах кодировки Т2А, Т2В, Т2С и Х2 «елочки» и „лапки“ можно также задавать с помощью лигатур: <<елочки>> —> «елочки» ,,лапки‘‘ —> „лапки“ Для этой же цели можно использовать и специальные команды, опреде-« 9 ляемые для языков кириллической группы : \flqq eno4KH\frqq —> «елочки» \glqq nanKH\grqq —> „лапки“ 8. Заказ языка russian с помощью пакета babel не обеспечивает полную специализацию lATEX’a под отечественную полиграфическую традицию: точки после номеров рубрик и теорем не ставятся; установлена алфавитная нумерация латиницей, а не кириллицей; кириллицу нельзя использовать в именах меток и в математической моде; для сортировки предметного указателя приходится использовать нестандартные программы, например, xindy. В пакетах коллекции t2 предлагается решение этих проблем: пакет misccorr обеспечивает более полную специализацию РЩтрСа под отечественную полиграфическую традицию, citehack позволяет использовать 9Команды \f Iqq, \f rqq, \glqq, \grqq определены также в некоторых других языках, например в немецком.
активные символы в именах меток, наконец, mathtext разрешает использование кириллицы в математической моде10. Альтернативное решение предлагается в макросе Л/^С: пакет ncclatex обеспечивает специализацию LM^jX’a под отечественную полиграфическую традицию, а входная кодировка cpl251-light позволяет использовать русские буквы в метках и в математической моде, а также сортировать предметный указатель с помощью стандартной программы make index. В.З. Математические расширения DTfjX’a Хотя в TgX’e есть большое число математических символов и конструкций, но их оказывается недостаточно, если учесть все разнообразие математических дисциплин. Поэтому по заказу Американского математического общества был разработан Лд^-Т^Х, в котором было добавлено большое число новых математических команд. Затем основные математические конструкции Лд4<$-ТЕ[Х’а были перенесены в lATgX и фактически стали стандартом для подготовки математических текстов. Математическое расширение состоит из трех коллекций пакетов: amsfonts (доцолнительные математические шрифты и символы, см. приложение Г), amsmath (дополнительные математические конструкции, см. с. 161 и гл. 10) и amscls (классы AjVfS-I^T^X’a и дополнительные пакеты к нему). В большинстве случаев перечисленных коллекций достаточно для подготовки математических текстов любой сложности. Остаются только детали, такие как улучшение внешнего вида каких-либо математических конструкций или добавление новых символов или иных начертаний имеющихся символов. 1. Пакет esvect добавляет команды \vv {{формула}} \vv*{{формула}}{{нижний индекс}} выводящие красивые векторы над формулами: АВ, ~ег. При загрузке пакета можно выбрать один из восьми возможных вариантов стрелок: Опция abcdefgh Стрелка По умолчанию используется опция d. 10Пакет mathtext следует загружать до загрузки схемы кодировки шрифтов кириллицы.
2. Пакет upgreek из коллекции was добавляет греческие символы прямого начертания. Названия команд для них образуются из названий стандартных греческих символов с добавлением префикса up: \alpha —> \upalpha, \Gamma —> \Upgamma. 3. Пакет ushort добавляет команду \иБЪохЪ{{формула)}, работающую в математической моде как \underline, но производящую более короткое подчеркивание. Сравните: а и а. В пакете также добавлена команда двойного подчеркивания \ushortd{(^opAt?/^a)} и некоторые другие команды. 4. Пакет stmaryrd добавляет математические символы (см. с. 363), используемые в качестве дополнения к символам пакета amssymb11. Если Вы используете только некоторые символы пакета, то при его загрузке укажите опцию only и перечислите имена требуемых команд. Например, команда \usepackage [only ,mapsf rom, lightning] {stmaryrd} определяет только два символа: \mapsf rom и \lightning. 5. Пакет nccmath из коллекции ncctools расширяет пакет amsmath (см. п. 10.5, с. 179). Кроме того, в пакете определяются команды оформления дробей и математических операторов среднего размера, промежуточного между \displaystyle и \t ext style (см. с. 356). Если Вы хотите, чтобы такое оформление использовалось всюду в документе, добавьте опцию mediummath при загрузке пакета. Эта опция действует на операторы переменного размера, а также на команды \f гас и \binom, причем на последние— только в стилях \textstyle и \displaystyle. Внутри дробей команды \f гас и \binom работают в стандартном режиме. В.4. Вокруг плавающих элементов Довольно много пакетов lATgX’a посвящено плавающим элементам. Пакет here из коллекции Itxmisc определяет размещение Н (поместить только здесь), используемое в дополнительном параметре окружений figure и table. Фактически оно означает отказ от плавающего размещения рисунка или таблицы. Это размещение нельзя использовать совместно с другими вариантами. 11 Пакет немного конфликтует с amssymb, поскольку команда \boxdot определяется в обоих пакетах.
Пакет dpfloat позволяет размещать двустраничные плавающие элементы на развороте книги, т. е. первую часть на левой (четной), а вторую—на правой (нечетной) странице. Для оформления таких элементов используются окружения leftfullpage и fullpage: \begin{figure}[р] \begin{leftfullpage} {левый плавающий элемент) \end{leftfullpage} \end{figure} \begin{figure}[p] \begin{fullpage} {правый плавающий элемент) \end{fullpage} \end{figure} Пакет endfloat помещает все плавающие элементы в конец статьи. С помощью пакета subfig12 можно создавать рисунки и таблицы, состоящие из нескольких частей, имеющих алфавитную нумерацию. Пакет subfloat определяет окружения subfigures и subtables, внутри которых соответствующие плавающие элементы имеют составную нумерацию, например, рис. 1а, рис. 16 и т.д. Для оформления плавающих элементов в оборку (с обтеканием текстом) можно использовать пакеты floatflt, wrapfig (см. п. 13.3, с. 233), а также пакет picinpar. Все они предоставляют аналогичные возможности. Заголовок таблицы и подрисуночную подпись обычно оформляют командой \caption, помещаемой внутрь плавающего элемента. Стиль оформления таких заголовков в стандартных классах ЬХЩХ’а следующий: однострочный заголовок центрируется, а многострочный — оформляется обычным абзацем. Изменить стиль можно с помощью пакета caption13, предоставляющего много интересных вариантов оформления14. 12 Ранее этот пакет назывался subfigure. Его новая версия не совместима со старой и поэтому называется иначе. 13Наряду с пакетом caption используют также пакет caption2, имеющий существенно другое управление. Автор обоих пакетов—Axel Sommerfeldt. Сначала им был написан пакет caption, затем его вторая версия была названа caption2, а третья версия — снова caption. Поэтому пакет caption2 теперь устаревший. 14Пакет caption не следует использовать совместно с пакетом nccsect, поскольку последний тоже переопределяет команду \caption.
В.5. Управление сносками 1. При печати документа в две колонки помещает сноску в подножие той колонки, в которой есть ссылка на нее. Однако предпочтительнее, чтобы сноски на одной странице были собраны вместе и размещались в подножии правой колонки. Чтобы обеспечить такое размещение сносок, загрузите пакет ftnright из коллекции tools. 2. Режим постраничной нумерации сносок можно задать несколькими способами: загрузить пакет footmisc с опцией perpage; загрузить пакет pfnote из коллекции yaf oot; воспользоваться пакетом perpage15 следующим образом: \usepackage{perpage} \MakePerPage{footnotе} Последнее решение, пожалуй, самое красивое и универсальное. С помощью команды \MakePerPage можно обеспечить обнуление любого счетчика в начале новой страницы, а не только счетчика footnote. 3. Пакет footmisc наряду с постраничной нумерацией предоставляет много других возможностей оформления сносок. Большинство из них заказывается через опции пакета. Вот некоторые из опций: para позволяет оформлять сноски в подбор (этот режим удобен в документах, содержащих большое число коротких сносок); side печатает сноски в виде заметок на полях; ragged выводит сноски в подножии страницы без выравнивания правого края абзацев; symbol задает алфавитную нумерацию сносок (количество разных номеров таких сносок ограничено!); symbol* задает алфавитную нумерацию, не приводящую к ошибке при выходе номера за пределы алфавита (это опция используется при отладке документа вместо предыдущей опции). Если страница заканчивается плавающим элементом и сносками, то сноски располагаются над плавающим элементом. Чтобы поместить сноски под плавающим элементом, загрузите пакет footmisc с опцией bottom16. В пакете footmisc имеется несколько опций, управляющих выводом номера у сносок: на полях (marginal), без отступа (flushmargin), с висячим номером (hang). 15Этот пакет пока не входит в полную версию MiKTeX’a, поэтому его придется загрузить с сервера CTAN [13]. 16Пакет fnpos из коллекции yaf oot предоставляет расширенные возможности позиционирования таких сносок. Подробности в файле doc\latex\yafoot\yafoot-man.dvi.
Еще одна интересная опция пакета footmisc связана с использованием нескольких сносок подряд. Если загрузить пакет с опцией multiple, то после трансляции фрагмента Некоторый текст\1оогпоге{Сноска l.}\footnote{CHOCKa 2.} Вы получите следующий результат: Некоторый текст17,18 Видно, что номера соседних сносок автоматически разделяются запятой. 4. Интересную возможность оформления сносок в две колонки предоставляет пакет dblfnote из коллекции yaf oot. 5. Пакет endnotes из коллекции Itxmisc определяет команды для оформления сносок, печатаемых в конце документа. Смысл добавляемых команд аналогичен командам вывода обычных сносок: \endnote [(номер сноски)'] {(текст сноски)} \endnotemark [(номер сноски)] \endnotetext [(номер сноски)] {(текст сноски)} В процессе трансляции документа тексты сносок накапливаются в специальном файле. Вы можете добавить в этот файл произвольный текст командой \addtoendnotes{(me?ccm)}. Содержимое файла со сносками выводится командой \theendnotes. Можно организовать вывод сносок по главам, если в конце каждой главы вызывать команду \theendnotes, а в начале—обнулять счетчик endnote. Обнуление будет автоматическим, если этот счетчик подчинить счетчику chapter командой \numberwithin{endnote}{chapter} из пакета amsmath, либо командой \countstyle[endnote]{chapter} из пакета dcounter. Но при этом нумерация сносок будет двойная. Поэтому следует также переопределить команду \theendnote, например, так: \renewcommand\theendnote{\arabic{endnote}} 17 Сноска 1. 18 Сноска 2.
В.6. Многоуровневые сноски Иногда возникает необходимость использования нескольких типов сносок, например, цифровых и буквенных. В тексте документа маркеры таких сносок идут в произвольном порядке, а сноски в подножии страницы сгруппированы по типам, т. е. сначала перечисляются сноски одного типа, затем другого и т. д. Сноски одного типа, группируемые при выводе вместе, я буду называть уровнем. 1. Стандартные средства ЬУГвХ’а предоставляют только один уровень сносок в тексте документа. Дополнительные уровни можно создать с помощью пакета manyfoot из коллекции ncctools. Пакет позволяет создавать сноски двух стилей: обычные сноски (plain) и оформляемые в подбор (para), т. е. при выводе группируемые в один абзац. Чтобы использовать сноски стиля para, следует загружать пакет с опцией para или para*. Различия между этими опциями проявляются в оформлении абзаца со сносками стиля para: основная опция задает вывод с абзацным отступом, а ее *-форма—без абзацного отступа. Дополнительные уровни сносок отделяются при выводе вертикальным отступом от основной группы и друг от друга. Если загрузить пакет с опцией ruled, то между всеми уровнями сносок при выводе будет вставлена такая же горизонтальная линейка, что и перед основной группой сносок. 2. Дополнительные уровни сносок выводятся под стандартными сносками в том порядке, в котором они создаются в преамбуле документа. Создание новых уровней сносок выполняется командой \newf ootnote [(стиль)] {(суффикс)} где (стиль) — plain или para (по умолчанию plain). Стиль para доступен, если пакет загружен с опцией para или para*. Параметр (суффикс) задает суффикс, состоящий из латинских букв, который будет добавлен к названию команды, выводящей сноски этого уровня. Имя команды образуется из слова Foot note text и указанного суффикса. Обычно в качестве суффикса используют прописные латинские буквы А, В, С и т.д. Пример: \usepackage[para,ruled]{manyfoot} , \newfootnote{A} \newfootnote[para]{B} Здесь создано два дополнительных уровня сносок и две команды для их вывода: \FootnotetextA и \FootnotetextB. Синтаксис этих команд аналогичен синтаксису команды \Footnotetext (см. с. 122):
\Footnotetext{суффикс}{.(маркер сноски}}{(текст сноски}} Маркер сноски в тексте документа задается командой \Footnotemark. 3. Команда \¥ ootnotetext {суффикс} обеспечивает минимально необходимый интерфейс для оформления сносок дополнительного уровня, но на практике она не удобна, поскольку не предусматривает использование автоматической нумерации. Сервис с автоматической нумерацией сносок предоставляет команда \DeclareNewFootnote [{стиль}] {{суффикс}} [{нумерация}] которая создает новый уровень сносок через \newf ootnote, создает счетчик и генерирует несколько команд для вывода сносок. Так команда \DeclareNewFootr.ote{A} создает: • счетчик f ootnoteA с арабской нумерацией сносок. Стиль нумерации задается параметром {нумерация} (по умолчанию arabic) и содержит имя команды печати номера счетчика (см. с. 284); • команды \f ootnoteA, \f ootnotemarkA, \f ootnotetextA с автоматической нумерацией сносок, аналогичные командам вывода сносок базового уровня (т. е. командам без суффикса); • команды \FootnoteA, \FootnotemarkA, \FootnotetextA с ручной нумерацией сносок, аналогичные командам ручной нумерации из пакета nccfoots (см. с. 122). Еще пример: \DeclareNewFootnote[para]{В}[alph] Здесь создаются сноски стиля para с нумерацией строчными буквами. Обычно буквенная нумерация сносок должна быть постраничной, т. е. начинаться с начала при переходе на новую страницу. Такой режим нумерации можно сделать с помощью пакета perpage: \usepackage{perpage} \MakePerPage{footnoteB} Если загрузить пакет manyfoot с опцией perpage, то все сноски, создаваемые командой \DeclareNewFootnote, будут нумероваться постранично.
4. При создании нового уровня сносок можно выбирать линейку, которой этот уровень будет отделен от предыдущих, но для этого, конечно, надо сначала создать дополнительные линейки. Это можно сделать с помощью команд пакета nccrules из коллекции ncctools. Здесь приводятся только примеры создания новых линеек (описание возможностей пакета дано на с. 335). Следующие команды создают 6 разных линеек для сносок: \newfootnoterule{starred}{\mboxfill [1.5\width][s] {$*$}} \newfootnoterule{dotted}{\mboxfill[2\width] [s] {.}} \newfootnotedashrule{double}{}{.4 1 .4} \newfootnotedashrule{dashed}{3 3}{.4} \newfootnotedashrule{dotdashed}{4 2124 -4}{.6} \newfootnotedashrule{ddotdashed}{6 212126 Имена генерируемых ими команд составлены из префикса (первого параметра команд) и текста footnoterule. Выводимые линейки таковы: ******************** \starredfootnoterule .......................... \dottedfootnoterule = \doublet ootnoterule \dashedfootnoterule \dotdashedfootnoterule \ddotdashedfootnoterule 5. В пакете manyfoot предопределены две линейки: с префиксом default (\defaultfootnoterule) и с префиксом extra (\extrafootnoterule), где первая совпадает с линейкой по умолчанию, а вторая — пустая (не рисует ничего). Если при загрузке пакета указана опция ruled, то последняя линейка совпадает с первой. По умолчанию линейка \ext г at ootnoterule вставляется перед каждым новым уровнем сносок. Однако если перед командой \newfootnote или \DeclareNewFootnote вставить команду \SelectFootnoteRule [(приоритет)] {(префикс)} [(действие)] то будет выбрана линейка с этим префиксом. Параметр (приоритет) определяет приоритет линейки по сравнению с линейками предыдущих уровней. По умолчанию задается нулевой приоритет. Можно также задать некоторое (действие), которое будет выполнено перед выводом сносок этого уровня. При верстке сносок выбор линейки выполняется так. Сначала выбирается линейка по умолчанию (\defaultfootnoterule), которая имеет приоритет 1. Если есть сноски базового уровня, то эта линейка выводится,
затем выводятся базовые сноски и приоритет этой линейки становится отрицательным (это означает, что базовая линейка уже свое «отыграла»), в противном случае ее приоритет не изменяется. Далее последовательно проверяются сноски других уровней и каждый раз выполняются такие действия: приоритет линейки анализируемого уровня сравнивается с приоритетом предыдущей выбранной линейки; если предыдущий приоритет не больше, то выбирается новая линейка, а иначе остается старая; затем проверяется, есть ли сноски для анализируемого уровня; если сноски есть, то выбранная линейка выводится вместе со сносками и ее приоритет становится отрицательным. Следующий пример демонстрирует алгоритм выбора линейки: \DeclareNewFootnote{A} \DeclareNewFootnote[para]{В}[alph] \SelectFootnoteRule[1]{double} \DeclareNewFootnote{C}[roman] \DeclareNewFootnote{D}[Roman] Сноски уровней А и В не отделяются линейкой от сносок основного уровня. Линейка \doublef ootnoterule всегда вставляется перед сносками уровней С и D. Между этими уровнями линейка отсутствует. Приоритет основной линейки можно изменить. Для этого достаточно переопределить команду \footnoterulepriority, например, так: \renewcommand\f ootnot eruleprior ity{0} 5. Можно также вмешиваться в процесс вывода сноски дополнительного уровня с помощью специального «хука», задаваемого перед командой создания уровня: \SetFootnoteHook{ (действия)} Пример: \SetFootnoteHook{\hangindent=l.8em\noindent} \DeclareNewFootnote{A} \SetFootnoteHook{\noindent\textbf{Варианты:}\quad} \DeclareNewFootnote[para]{В}[alph] Действия, выполняемые при выводе каждой сноски уровня А, приводят к оформлению таких сносок в виде списка (со втяжкой на 1.8ет и висячими номерами сносок), а при сборке сносок уровня В в один абзац в начало абзаца помещается текст «Варианты:», выделенный ожирнением.
В пакете many foot есть еще несколько специфических возможностей по оформлению сносок стиля рага: разбивка длинных сносок, резервирование дополнительного пространства на странице (из-за особенностей алгоритма возможны переполнения страницы при использовании таких сносок). Подробности приведены в документации к пакету. Там же приведены замечания по совместимости пакета с пакетом footmisc и с выводом текста в несколько колонок. В.7. Вокруг пакета verbatim Стандартное окружение verbatim имеет имеет два недостатка: в команде \end{verbatim} нельзя вставлять пробелы после \end; алгоритм обработки текста внутри окружения не позволяет выводить большие фрагменты текста. Эти недостатки устраняются в пакете verbatim из коллекции tools. Пакет переопределяет окружения verbatim и verbatim*, а также добавляет окружение comment и команду \verbatiminput (см. п. 6.5, с. 100). Идеи, используемые в пакете verbatim, послужили основой для многих других пакетов, наиболее интересные из которых описаны далее. 1. В пакете moreverb добавлены следующие расширения: обработка символов табуляции (с кодом 9), нумерация строк текста при выводе, запись фрагмента текста в файл без обработки и вывод текста в рамке. Окружение \begin{verbatimtab}[(п)] текст \end{verbatimtab} выводит текст как он есть, но заменяет символ табуляции на один или несколько пробелов так, чтобы выровнять идущий следом текст по ближайшей позиции табуляции. По умолчанию табуляция выполняется через 8 позиций. Шаг табуляции можно изменить с помощью параметра (п). Аналогично, команда \verbatimtabinput [(п)] {{имя файла)} печатает текст из файла с обработкой символов табуляции. Окружение \begin{listing} [(шаг)] {{старт}} текст \end{listing} печатает текст как он есть, но сопровождает его номерами строк, которые печатаются слева на полях. Параметр {старт) задает номер первой строки, а (шаг) — интервал печати номеров. По умолчанию используется
единичный интервал, т. е. номер печатается перед каждой строкой. Если же шаг отличен от единицы, то печатаются номера только тех строк, которые кратны шагу. Исключение —строка с номером 1, перед которой номер выводится всегда. Окружение \begin{listingcont} текст \end{listingcont} используется для печати листинга с продолжением нумерации, использовавшейся в предыдущем листинге. Команда \listinginput [(шаг)] {(старт)}{{имя файла)} служит для печати листинга файла. У всех перечисленных «листингов» есть *-форма, печатающая пробелы как и. Окружение XbeginfverbatimwriteH^ALa файла)} текст \end{verbatimwrite} заносит текст в файл, а окружение \begin{boxedverbatim} текст \end{boxedverbatim} выводит текст в рамке. 2. Пакет fancyvrb существенно расширяет возможности дословного вывода текста. Первая интересная возможность, предоставляемая пакетом,—команда WerbatimFootnotes. Поставив ее после \begin{document}, Вы сможете использовать в тексте сносок команду \verb, окружение verbatim, а также их аналоги . В основе пакета лежит возможность модификации метода обработки текста с помощью большого числа параметров, имеющих синтаксис (ключ)=(значение). Установка значений параметров выполняется декларацией \fvset{(cnucoK ключей)} а также в дополнительном параметре команд и окружений из этого пакета. Ключи, установленные декларацией \fvset, рассматриваются как значения по умолчанию. Ключи в дополнительном параметре используются в конкретной Verb-команде или окружении и изменяют значения по умолчанию. В пакете определяются следующие команды и окружения, выводящие текст дословно: 19Возможны конфликты команды WerbatimFootnotes с пакетом footmisc.
\Verb [{список ключей)] {символ){текст){символ) \Verb* [{список ключей)] {символ){текст){символ) \begin{Verbatim} [{список ключей)] {текст) \end{Verbatim} \begin{BVerbatim} [{список ключей)] {текст) \end{BVerbatim} \Verbatiminput [{список ключей)]{{имя файла)} \begin{VerbatimOut} [{список ключей)] {{имя файла)} {текст) \end{VerbatimOut} Звездочка-форма есть только у команды \Verb (оставлена для удобства). В остальных случаях для вывода пробелов в виде u используется ключ showspaces. Команда \Verb и окружение Verbatim аналогичны стандартным. Окружение BVerbatim оформляет содержимое в виде вертикального бокса. Команда Werbatimlnput используется для вставки текста из файла в дословном режиме, а окружение VerbatimOut заносит содержимое в файл. Вот перечень основных параметров, задаваемых в списке ключей (возможные варианты значений разделяются вертикальной чертой |; подчеркиванием выделен вариант по умолчанию): showspaces=true I false — печатать пробелы как ы (true) или как обычные пробелы (false); commentchar=\(cuAteo^) — символ комментария. По умолчанию комментарии отсутствуют. Если символ комментария задан, то все комментарии при выводе игнорируются. Пример: commentchar=\*Z; foriaa.tcoTa= {команда) — команда, исполняемая перед выводом каждой строки. Пример: formatcom=\color{red}; соптап&сЪахз=\{символ)\{символ)\{символ) — задать символы, используемые как признак и ограничители параметров команд. Например, окружение Verbatim с параметром commandchars=\\\{\} будет работать как окружение alltt. ^^^^^^^^^^^^^^^Вырезани^фрагментг^текста^^^^^^^^^^^^^ gobble=n — игнорировать в каждой строке текста первые п символов (п < 9); firstline=m — обрабатывать строки, начиная с m-й, т.е. игнорировать первые т — 1 строк текста; lastline=fc — заканчивать обработку на k-и по счету строке.
Выбор шрифта I fontf amily=tt I courier I Helvetica I (гарнитура) — гарнитура шрифта: tt —\ttf amily; courier и Helvetica—PostScript шрифты «Courier» и «Helvetica»20; (гарнитура) — любая другая гарнитура. Пример: fontfamily=cmtt; fontseries=auto I (ряд) — ряд (жирность) шрифта. Стандартные варианты—m, b, Ъх; fontshape=auto I (форма) — форма шрифта. Стандартные варианты — п, it, si, sc, ui; fontsize=auto I (команда) — размер шрифта. По умолчанию размер не изменяется. Пример: fontsize=\small; baselinestretch=auto I (число) — множитель интерлиньяжа шрифта. Пример: baselinestretch=l. 25. Обрамление рамкой (Verbatim, Webatimlnput) | frame=noneI leftline I topline I bottomline I lines I single — рамка соответственно отсутствует, выводится слева, сверху, снизу, сверху и снизу, со всех сторон; framerule=(размер) — толщина линии рамки. По умолчанию 0.4pt; framesep=(pa3Atep) — расстояние от рамки до текста. По умолчанию framesep=\fboxsep; rule color = (команда) — цвет рамки. Пример: rulecolor=\color{red}; f illcolor= (команда) — цвет заливки пространства между текстом и рамкой, ширина которого определяется параметром framesep. Пример: fillcolor=\color{yellow}; Ярлыки (Verbatim, Webatimlnput) | label={ [(текст)] (текст)} — текст ярлыков. Ярлык выводится посередине верхней и/или нижней линии рамки, если соответствующая линия рисуется. Если ярлык простой (label=(текст)), то по умолчанию он выводится в верхней линии. Составной ярлык выводится так: текст в квадратных скобках—в верхней линии, остальной текст—в нижней линии; 20 Эти шрифты используются в схеме кодировки Т1 и не содержат кириллицу.
labelposition=none It opline I bottomline I all — размещение ярлыка соответственно пусто, сверху, снизу, сверху и снизу. По умолчанию: попе, если ярлык отсутствует; topline, если ярлык простой; all, если ярлык составной. Нумерация строк (Verbatim, Webatimlnput) | numbers=none I left I right — нумерация строк соответственно отсутствует, печатается слева, справа; numbersep=(/xz3Atep) — расстояние от номера до текста. По умолчанию 12pt; f irstnumber=auto I last I {целое) — номер, присваиваемый первой строке: auto —начинать сначала (с единицы), last — продолжать предыдущую нумерацию; {целое) — начинать с конкретного номера; stepnumber=(mae) — шаг печати номеров. По умолчанию 1; numberblanklines=true I false — нумеровать ли пустые строки? По умолчанию пустые строки нумеруются. Изменение боковых отступов (Verbatim, Webatimlnput) | xleftmargin=(/xz3Aiep) — увеличить левый отступ на {размер); xrightmargin=(/xz3Atep) — увеличить правый отступ на {размер); resetmargins=true I false — перед изменением левого отступа, обнулить его (true) или не обнулять (false). Вариант true используется внутри списков, чтобы дословный текст занимал всю ширину колонки. Запрет разрыва страницы (Verbatim, Webatimlnput) | samepage=true I false — запретить разрыв страницы при выводе текста (true) или не запрещать (false). Ширина и позиционирование бокса (BVerbatim) | boxwidth=auto | {размер) — ширина создаваемого бокса определяется по содержимому (auto), либо задается явно {{размер)). В последнем случае блок текста горизонтально центрируется в боксе; baseline=b| 11 с — вертикальное выравнивание соответственно по нижней линии, по верхней линии, центрировано.
Обработка символов табуляции | tabsize=(^eyioe) — шаг табуляции. По умолчанию 8; showtabs=true I false — выводить символ табуляции как (true) или как обычный пробел (false); obeytabs=true I false — выравнивать текст по позициям табуляции (true) или интерпретировать символы табуляции как обычные пробелы (false). 3. Пакет fancyvrb предоставляет много других возможностей по обработке дословного текста, в частности, определение verb-символов (как в пакете short verb), запоминание текста и последующее воспроизведение его (решает проблему вывода дословного текста в параметрах команд, например, в сносках на полях). Предоставляются также широкие возможности модификации обработки текста (подробности см. в документации к пакету, а также в коде самого пакета21). 4. Пакет listings используется для печати текстов программ. Он «понимает» более 60 языков программирования и их диалектов, т. е. может распознавать синтаксис и семантику языка программирования и специальным образом оформлять ключевые слова, комментарии и др. Чтобы использовать язык программирования в листингах, его следует загрузить командой \lstloadlanguages{(cmicoK языков программирования)} в параметре которой перечисляются через запятую языки программирования в виде [(диалект)~\ (язык). Если (диалект) отсутствует, то выбирается основной диалект. Примеры языков программирования: [ANSI]С, [Visual]C++, [Sharp]С, Java, [Visual]Basic, [x86masm]Assembler, Fortran, [Borland6]Pascal, Delphi, HTML, XML, Perl, PHP, SQL, Matlab, [LaTeX]TeX По принципам работы пакет похож на fancyvrb: управление обработкой текстов программ задается через список ключей командой \lstset{(cnucoK ключей)} а также в дополнительном параметре команд печати листингов: 21К сожалению, в документации к пакету fancyvrb отражены далеко не все его возможности.
\lstinline [(список ключей)] (символ) (текст) (символ) \begin{lstlisting} [(список ключей)] (текст) \end{lstlisting} \lst inputlisting [(список ключей)]{(имя файла)} Команда \lstinline работает как \verb; окружение Istlisting соответствует окружению verbatim, а 1st input listing—verbatiminput из пакета verbatim. Для выбора языка используется параметр language=^3M?c). Если выбирается диалект языка , то значение этого параметра следует заключить в фигурные скобки. Пример: \lstinputlisting[language={[Sharp] C}] {sample.cs} Возможности пакета весьма обширны, поэтому я только перечислю некоторые из них. Возможна вырезка диапазона строк, «съедание» начальных символов, нумерация строк, оформление листинга в рамке (гораздо больше вариантов, чем в fancyvrb, в частности, двойные линии, рамки с закругленными углами, с тенью), вывод заголовков, заливка цветом, широкие возможности выделения идентификаторов, оформление листингов в виде плавающих элементов. В.8. Управление макетом страницы К управлению макетом страницы можно отнести: установку переменных, определяющих размеры и положение областей макета страницы (см. п. 2.10, с. 44), оформление колонтитулов, вывод «водяных знаков» и других позиционируемых объектов. 1. Пакет geometry позволяет задать размер страницы и выбрать макет страницы. Все параметры макета страницы задаются через синтаксис (ключ)=(значение) в списке опций при загрузке пакета или с помощью команды \geometry{(список ключей)}. В пакете определяется несколько десятков ключей, позволяющих задавать макет страницы разными способами. По-моему, интерфейс этого пакета гораздо сложнее задачи, которую он решает. Простую альтернативу предоставляет пакет tocenter из коллекции ncctools. Он определяет две команды для расчета макета, \ToCenter и \FromMargins (см. с. 256), изменяющие размеры текстовой области и отступы от краев страницы. В большинстве случаев этого вполне достаточно для настройки макета страницы.
2. Красивое оформление колонтитулов страницы, состоящих из трех полей (левого, центрального и среднего) и отделяемых декоративными линиями, обеспечивает пакет fancyhdr. Улучшенная реализация этих возможностей предлагается в пакете nccfancyhdr из коллекции ncctools (см. п. 14.6, с. 247). 3. В стиле оформления plain номер страницы печатается в нижнем колонтитуле по центру. Чтобы сместить номер страницы к правому краю, загрузите пакет rplain. 4. Пакет chngpage из коллекции Itxmisc позволяет изменять макет страницы «на лету», т. е. в процессе ее форматирования. Например, команда \changetext{\baselineskip}{}{}{}{} увеличивает высоту (\textheight) текущей и последующих страниц на одну строку. Другие параметры этой команды изменяют ширину текстового поля (\textwidth), отступ для четной страницы (\еvensidemargin), отступ для нечетной страницы (\oddsidemargin) и расстояние между колонками (\columnsep). Команду лучше использовать в начале страницы. В пакете также определяется команда \changepage с 9-ю параметрами, в которой дополнительно к перечисленным переменным изменяются отступ сверху (\topmargin), высота верхнего колонтитула (\headheight), расстояние между колонтитулом и полем текста (\headsep) и расстояние до подножия нижнего колонтитула (\footskip). Изменить ширину отдельных абзацев текста можно с помощью окружения \begin{adjustwidth}{(cyieea)}{(cnpaea)} (абзацы) \end{adjustwidth} Параметры (слева) и (справа) определяют на сколько следует увеличить отступы от краев страницы с соответствующей стороны. Чтобы расширить абзацы за пределы текстового поля, задайте отрицательные значения этих параметров. 5. Пакет chappg из коллекции Itxmisc вводит нумерацию страниц документа по главам, каждая новая нумерованная глава начинается с первой страницы. Номер страницы, выводимый командой \thepage, печатается как \thechapter-\arabic{page}, т. е. страницы, скажем, 5-й главы будут нумероваться так: 5-1, 5-2 и т.д.
Сразу после начала главы без номера используйте команду \pagenumbering [{префикс}] {bychapter} Если {префикс} не задан, страницы главы будут нумероваться без префикса: 1, 2 и т. д. Задав {префикс}. Вы получите нумерацию в виде: (префикс}-1, {префикс}-2 и т. д. 6. Страница документа состоит из двух частей: основного потока, заполняющего текстовую область и область заметок на полях, и позиционируемых объектов, размещаемых в колонтитулах страницы. Иногда требуется поместить на страницу дополнительные позиционируемые объекты, например, водяные знаки или техническую рамку. С этой целью можно использовать несколько пакетов. Пакет textpos определяет окружение textblock, выводящее вертикальный бокс на текущей странице в абсолютных или относительных координатах. Абсолютно позиционируемые боксы можно располагать как под текстом страницы (создавать водяные знаки), так и над текстом страницы. Пакет eso-pic выводит позиционируемые объекты под текстом страницы с помощью команд окружения picture. Команда \AddToShipoutPicture{(KOAtaH^ чертежа}} добавляет указанные команды к «подложке» текущей и последующих страниц документа. Звездочка-форма этой команды добавляет команды только к подложке текущей страницы. Начало системы координат находится в нижнем левом углу страницы. Команда \ClearShipoutPicture удаляет все команды чертежа, добавленные ранее. При выводе команд чертежа часто необходимо позиционировать их относительно какого-либо из углов страницы или текстового поля. Для этой цели полезны команды \AtPageUpperLef Ъ{{команды}} \AtTextUpperLef Ъ{{команды}} \AtPageLowerLef ъ{{команды}} \AtTextLowerLef ^{{команды}} \AtPageCenter{ (команды)} \AtTextCenter{(KOAtaHdb0} сдвигающие начало системы координат для команд в их параметре в соответствующую точку страницы или текстовой области. Координаты точки привязки в команде \put и в других чертежных командах задаются в единицах \unitlength. Это не всегда удобно. Иногда надо указать явный размер или вычислить его каким-либо иным способом. Команда \LenToUnit{{размер}} позволяет это делать. Пример: \put(\LenToUnit{20mm},\LenToUnit{0.5\pageheight}){...}
7. Пакеты textpos и eso-pic используют специальные «хуки», определяемые в пакете everyshi из коллекции ms22. С помощью этих хуков можно поместить в «подложку» страницы или поверх ее любой объект и сделать многое другое. В отличие от перечисленных пакетов, пакет watermark из коллекции ncctools помещает объекты в подложку в момент вывода верхнего колонтитула (подробности см. на с. 333). В.9. Управление рубрикацией К рубрикации относятся команды оформления рубрик документа (частей, глав, секций, подсекций и т.д.) и команды сборки содержания, списков таблиц и рисунков. Команду \caption, используемую в оформлении таблиц и рисунков, также следует отнести к командам рубрикации. Она хотя и не создает рубрику документа, но участвует в оформлении списка таблиц и рисунков. Средства рубрикации ТАТ^Х’а имеют много недостатков: • предлагается единственный стиль оформления выносных рубрик (секций, подсекций и подподсекций) в виде абзаца с висячим номером; • оформление номера рубрики фиксировано (нельзя, например, добавить символ § перед номером и точку после номера); • отсутствуют средства управления текстом колонтитула (в колонтитул поступает тот же текст, что и в содержание документа); • чтобы занести текст ненумерованной рубрики в колонтитул и в содержание документа, требуются дополнительные усилия (см. с. 242); • оформление заголовков таблиц и подрисуночных подписей различается только словами «Таблица» и «Рис.», хотя эти заголовки используются по-разному: заголовок таблицы — перед таблицей, а подрисуночная подпись — после рисунка; • отсутствует *-форма команды \caption; • оформление элементов содержания не гибкое (нет возможностей управления отступами и оформлением номера рубрики). Все перечисленные недостатки устранены в пакете nccsect из коллекции ncctools. Пользовательский уровень этого пакета описан в п. 14.5 на с. 243. Здесь же приводятся команды дизайнерского уровня. 22 Автор коллекции— Mart in Schroder.
1. Пакет предоставляет возможность переопределения команд рубрикации и заголовков плавающих элементов, а также создания дополнительных уровней рубрикации с помощью команды \DeclareSect ±оп{{уровень}}{{тип}} [{отступ}] {{префикс}} {{длина 1}}{{длина 2}}{{стиль}} {уровень} — уровень рубрики (целое число): секция имеет уровень 1, подсекция—2, подпараграф—5. Рубрика нулевого уровня это часть (в статьях и препринтах) или глава (в книгах и отчетах). Отрицательное значение уровня используется для создания заголовков плавающих элементов (см. далее). {тип} — тип рубрики (имя счетчика); {отступ} — величина абзацного отступа (по умолчанию Opt); {префикс} — вставляется непосредственно перед номером рубрики. При оформлении рубрики нулевого уровня префикс вставляется перед командой \@chapapp (в книгах и отчетах), выводящей текст «Глава» или «Приложение», либо перед командой \partname (в статьях и препринтах), выводящей текст «Часть». Следом после этих команд идет неразбиваемый пробел, а затем —номер рубрики; {длина 1} — расстояние, пропускаемое перед рубрикой; {длина 2} — расстояние, пропускаемое после рубрики; {стиль} — команды, устанавливающие стиль оформления рубрики. Этот параметр применяется непосредственно к заголовку рубрики, идущему следом в фигурных скобках23. Поэтому последней в стиле может идти команда с параметром. Например, команда \MakeUppercase, указанная последней, преобразует строчные буквы в заголовке рубрики в прописные. Все рубрики делятся на выносные и оформляемые в подбор с текстом. Вариант оформления определяется расстоянием {длина 2}: если это расстояние положительно, то рубрика выносная. В противном случае рубрика оформляется в подбор, и после заголовка рубрики вставляется горизонтальный промежуток величины — {длина 2}. 23 При оформлении рубрики нулевого уровня стиль применяется только к тексту заголовка, но не к его номеру.
Расстояния {длина 1) и {длина 2) обычно задают в относительных единицах (ех), определяющихся через размер шрифта, установленный до команды рубрикации. Выносные рубрики, создаваемые данной командой, имеют такое же оформление как в стандартном ТМ^Х’е. Они не подчиняются команде \sectionstyle, описанной в п. 14.5 на с. 243. 2. У команды \DeclareSection есть *-форма, в синтаксисе которой отсутствует дополнительный параметр {отступ). Этот вариант команды позволяет создавать выносные рубрики, управляемые командой \sect ionstyle. Обычно для создания выносных рубрик применяется *-форма, а для остальных—основная форма команды \DeclareSection. Примеры: \DeclareSection*{l}{section}{}7. {3.5ех plus lex minus . 2ех} {2.3ех plus .2ex}{\Large\bff} \DeclareSection{5}{subparagraph}[\parindent]{} {\NCC@runskip}{-lem}{\normalsize\bff} Здесь дополнительно используются: команда \NCC@runskip из «внутренней кухни» макроса Л/^С, задающая стандартный отступ перед рубриками, оформляемыми в подбор24; команда \bff, выполняющая ожирнение текста и математических конструкций. Еще пример: \DeclareSection*{0}{chapter}{\vspace{3ex}\huge\bff} {10ех}{8ех plus .2ex}{\Huge\bff} Эта команда оформляет секцию нулевого уровня (в данном случае главу). Расстояние, задаваемое в префиксе (\vspace{3ex}), вставляется после строки «Глава N». Эта строка оформляется шрифтом размера \huge, а основной текст заголовка—размером \Huge. 3. В командах рубрикации с положительными уровнями после номера вставляется специальный суффикс, который можно изменить командой \SectionTagSuff±х{{суффикс)} Например, команда \SectionTagSuff ix{. \enskip} добавляет точку после номера и отделяет номер от текста заголовка полу кегельной. 24 Этот же отступ используется при оформлении математических утверждений, которые, по сути, также являются элементами рубрикации документа.
4. При оформлении рубрик документа наряду с командами \part, \chapter, ..., \subparagraph можно использовать унифицированный синтаксис: \startsection{(?/poeeHb)} [{элемент оглавления)'] {{заголовок)} \st art sect ±ст{{уровень)}*{ {заголовок)} т. е. вместо команд \part, \chapter, \section и т.д. использовать команду \startsection{-l}, \startsection{0} и т.д. Если уровень отрицательный, то вызывается команда \part. В остальных случаях оформляется рубрика соответствующего уровня. Кстати, для рубрик уровня выше пятого это единственный способ их оформления. Однако при добавлении новых уровней рубрикации легко сделать для них соответствующие команды. Пример: \newcounter{subsubparagraph}[subparagraph] \renewcommand\thesubsubparagraph{\alph{subsubparagraph}} \DeclareSection{6}{subsubparagraph}[2\parindent]{} {\NCC@runskip}{-lem}{\normalsize\itshape} \newcommand\subsubparagraph{\startsection{6}} 5. Способ оформления эпиграфа командой \epigraph (см. с. 245) можно изменить с помощью команды \epigraphparameters{ {стиль)}{{ширина)}{{высота)} {{стиль автора)}{{действие)} Параметр {стиль) применяется в начале эпиграфа и действует на все его элементы; {ширина) задает ширину эпиграфа по умолчанию; {высота) устанавливает минимальную высоту бокса эпиграфа; {стиль автора) задает стиль оформления строки с авторами25; {действие) выполняется после вывода эпиграфа (обычно это вертикальный отступ). Ширина конкретного эпиграфа при его обработке сохраняется в команде \epigraphwidth, которую Вы можете использовать в параметрах команды, например, для вывода декоративной линейки. По умолчанию задано следующее оформление эпиграфа: \epigraphparameters{\StartFromHeaderArea\small\raggedleft} {.45\linewidth}{5\baselineskip} {\raggedleft\itshape}{\vspace{2ex}} 25Строка с авторами при оформлении заключается в фигурные скобки. Поэтому последней в параметре {стиль автора) может идти команда, требующая один параметр, которой будет передана в качестве этого параметра строка с авторами эпиграфа.
Команда \StartFromHeaderArea применяется в начале страницы и расширяет текстовую область до верхнего колонтитула. Тем самым эпиграф начинается на уровне колонтитула, который на стартовой странице главы обычно пуст. Еще полезна команда \StartFromTextArea, также применяемая в начале страницы и позиционирующая вывод в начало текстовой области. Команда \чзрьсе{{расстояние)}, помещаемая следом, будет давать корректный вертикальный отступ26. 6. Команду \DeclareSection можно также использовать для переопределения заголовков плавающих элементов, выводимых командой \caption. Особенности ее применения таковы: параметр {уровень) должен быть отрицательным, параметр {тип) задает тип плавающего элемента (figure или table); необязательный параметр {отступ) игнорируется; параметр {префикс) выводится непосредственно перед командой \figurename или \tablename, за ним идет неразбиваемый пробел, а за ним номер; параметры {длина 1) и {длина 2) задают вертикальные отступы до и после заголовка плавающего элемента, {стиль) применяется один раз в начале оформления заголовка. В отличии от оформления рубрик текст заголовка не идет следом за стилем. Примеры: \DeclareSection{-2}{table}{\bff}{0pt}{2.5ex}{\small} \DeclareSection{-l}{figure}{\bff}{2.5ex}{0pt}{\small} Здесь стартовая часть заголовка с номером оформляется шрифтом \bff, остальной текст заголовка оформляется нормальным шрифтом, весь заголовок выводится размером \small, а расстояния до и после заголовков таблиц и рисунков различаются: у таблиц вертикальное пространство добавляется после, а у рисунков — перед заголовком. 7. Так же как и для команд рубрикации, в заголовках плавающих элементов после номера идет некоторый суффикс, который можно переопределить командой \Capt ionTagSuf f ix{ (суффикс)} Например, в пакете ncclatex задается следующий суффикс: \CaptionTagSuffix{.\hspace{.6em plus .2em minus .lem}} 26Если команду \vspace поместить в начале страницы, то TgX ее проигнорирует. Если же воспользоваться командой \vspace*, то пропускаемое ею вертикальное пространство оказывается больше, чем указано в ее параметре.
8. Для управления выводом элементов содержания служит команда \DeclareTOCEntry{(z/poeeHb)}{ (действие) }{(префикс)} {(прототип)}{(стиль)} [(следующий)] (уровень) — уровень команды рубрикации, которой соответствует определяемый элемент содержания. Отрицательные значения используются для переопределения способа оформления списка плавающих элементов: -1 —figure, -2 —table; (действие) — действие, выполняемое перед выводом элемента содержания; (префикс) — при выводе элемента содержания вставляется перед его номером, если элемент нумерованный; (прототип) — прототип наиболее широкого номера в элементах содержания данного уровня; (стиль) — команды, применяемые к элементу содержания и номеру страницы при выводе. Этот стиль применяется как к тексту элемента, так и к номеру страницы. Чтобы обеспечить различное оформления текста элемента содержания и его номера, используйте в этом параметре команду \applystyle{(стиль текста)}{(стиль номера)} Последней в стиле может идти команда с параметром, например, \MakeUppercase. (следующий) — прототип, используемый для вычисления величины сдвига элемента содержания следующего уровня относительно текущего уровня. При оформлении элемента содержания его номер выводится с выступом. Величина выступа складывается из трех составляющих: (префикса), (прототипа) и суффикса. Последний определяется командой \NumberlineSuff ±х{(суффикс для расчета)}{(реальный суффикс)} Первый параметр используется при расчете величины выступа (он обычно более широкий), а последний—вставляется при выводе элемента содержания. Такой прием позволяет выравнивать текст в элементе содержания даже в том случае, если его номер оказался шире прототипа. Например, в пакете ncclatex задается следующий суффикс:
\NumberlineSuff ix{.\hspace{.6em}}{.\hspace{.4em}} Элемент содержания следующего уровня сдвигается влево относительно текущего уровня на ширину прототипа в параметре {следующий). Если этот параметр отсутствует, то величина сдвига равна величине выступа текущего элемента содержания, т. е. складывается из ширины префикса, прототипа и суффикса. Пример: \DeclareT0CEntry{-2}{}{}{9.9}{}7, table \DeclareT0CEntry{-l}{}{}{9.9}{}7. figure \DeclareTOCEntry{0}{\runinsectionskip\def\@dotsep{100017. \aftergroup\penalty\aftergroup\@highpenalty}{}{9} {\applystyle{\bff}{}}7. chapter \DeclareT0CEntry{l}{}{}{9.9}{} [9.9]7. section \DeclareT0CEntry{2}{}{}{9.9.9}{}7. subsection \DeclareT0CEntry{3}{}{}{}{} [\qquad]7. subsubsection При оформлении элемента содержания нулевого уровня здесь использовалось несколько трюков: команда \runinsectionskip пропускает вертикальное пространство величины \NCC@runskip (как при оформлении рубрики \paragraph); макрос \@dotsep задает расстояние между соседними точками отточий (значение 1000 слишком велико и отточия в этом элементе содержания исчезают); с помощью команды \aftergroup после вывода этого элемента содержания вставляется штраф \penalty величины \@highpenalty, предотвращающий разбивку страницы после данного элемента содержания; наконец, в стилевом параметре с помощью команды \applystyle задаются разные стили оформления текста и номера. Лесенка отступов, получающаяся в результате, такова: 1. Текст главы 1.1. Текст секции 1.1.1. Текст подсекции Текст подподсекции Текст параграфа 9. Кроме задания лесенки отступов, важно также определить ширину поля, отводимого под номер страницы, и величину правого отступа в многострочном элементе содержания. Эти действия выполняет команда \PnumPrototype{(npomomun номера)}
Команда \newfloat из пакета float создают новый тип плавающего элемента: параметр {tp} задает размещение по умолчанию (вверху или на отдельной странице); {lop} —расширение файла, в котором собирается список заголовков программ; [chapter] означает, что счетчик программ будет подчинен счетчику глав. Команда \f loatname из пакета float определяют текст, который будет выводиться в нумерационном подзаголовке этого плавающего элемента. Команда \RegisterFloatType регистрирует новый тип плавающего элемента в пакете nccsect. При регистрации этот тип получает очередной порядковый номер (номер 3, поскольку номера 1 и 2 зарезервированы для figure и table). Далее определяются команда оформления заголовка, вывода элемента содержания и стиль оформления заголовка (см. с. 246). Нумерационный подзаголовок оформляется мелкопрописным шрифтом, а текст заголовка—курсивом. Заголовок оформляется шрифтом размера \small. Вывод списка программ выполняется командой \listof{program}{IIepe4eHb программ} первый параметр которой задает тип плавающего элемента, а последний — заголовок списка. 11. Пакет nccsect позволяет изменять все команды рубрикации, кроме команды \part в книгах и отчетах. В классе псс в стилях документа book и report имеется возможность переопределения этой команды: \DeclarePart {(до)}{ {после) }{(префикс)}{ (стиль)} Действие (до) применяется в начале страницы перед выводом заголовка части, действие (после) вызывается после вывода заголовка, (префикс) вставляется непосредственно перед подзаголовком «Часть 7V», а (стиль) применяется к названию части. Последней командой в (стиле) может быть команда с параметром (например, \MakeUppercase). Расстояние между номером и текстом заголовка задается в (префиксе) командой \vspace. По умолчанию действует следующее оформление: \DeclarePart{\StartFromTextArea\vspace{\stretch{.5}}\centering} {\vfill\newpage}{\vspace{2em}\LARGE\bff}{\Huge\bff} В отечественной литературе не принято оформлять новую часть отдельной страницей. Например, декларация
\DeclarePart{\StartFromHeaderArea\centering} {\vspace{2mm}\noindent\hrulefill\par \ add v spac е { Бппп} } {\vspace{.5em}\LARGE\bff}{\Huge\bff} оформляет новую часть на уровне колонтитула и отделяет ее от текста декоративной линейкой. Если после части сразу идет команда \chapter, то можно совместить их на одной странице командой \beforechapter: \beforechapter{\part{Заголовок части}} \сЬарЪег{Название главы} Модификаторы, помещаемые в параметр команды \beforechapter, будут относиться к оформлению части, а вне этой команды — к оформлению главы. Пример: \beforechapter{\noheadingtag\part{Приложения}} \chapter{Ha3BaHne приложения} Оформление части в содержании документа можно изменить командой \DeclareTOCPart{(deucmeue)} [(отступ)] {(префикс)} {(прототип)}{(стиль)} Параметр (действие) применяется перед выводом элемента содержания, (отступ) задает величину вертикального отступа после вывода этого элемента (по умолчанию используется отступ \NCC@runskip), (префикс) вставляется перед словом «Часть», (прототип) используется для расчета ступеньки в многострочном заголовке части, (стиль) применяется дважды: ко всему тексту заголовка и к номеру страницы. В стиле можно использовать команду \applystyle (см. с. 316). По умолчанию задано следующее оформление: \DeclareT0CPart{\NCC@secskip{4ex plus . 2ех}7. \def\@dotsep{1000}} {}{\partname\ II}{\large\bff} Пропуск расстояния перед выводом части выполняется внутренней командой \NCC@secskip. Переопределяя команду \@dotsep, мы отказываемся от вывода многоточий. Конечно все эти действия можно выполнять только внутри какого-либо пакета, где символ «@» относится к буквам.
В. 10. Дополнительные шрифты Как отмечалось в гл. 3, все, что T^jX’y необходимо знать о шрифте, содержится в файле метрик шрифта. Заботы же по поиску, подготовке и вставке символов шрифтов в документ ложатся на dvi-драйвер. Такой подход позволяет использовать в документе шрифты самых разных типов, как исконно ТЭКовские (генерируемые программой METAFONT), так и шрифты PostScript и TrueType. lATgX’y, кроме файлов метрик шрифтов, необходима дополнительная информация, которая содержится в файлах, с расширением . fd27. Через f d-файлы lATgX подгружает необходимые шрифты, которые Вы выбираете в своем документе. Все многообразие шрифтов можно условно разделить на три группы: 1. Текстовые шрифты; 2. Математические шрифты; 3. Специальные шрифты. 1. Текстовые шрифты предназначены для набора текста. Чтобы использовать такой шрифт, достаточно в JATQgX’e указать его характеристики: кодировку, гарнитуру, серию, форму и размер (см. гл. 3, а также с. 343). Для управления основной кодировкой, гарнитурами и начертаниями шрифтов используются следующие команды, значения которых можно изменить с помощью \renewcommand (в скобках приводятся значения по умолчанию): \encodingdef ault \rmdefault \sfdefault \ttdefault \bf def ault \mddef ault \itdefault \sldefault \scdefault \updefault \familydefault \seriesdefault \shapedefault основная кодировка шрифтов (0T1) основная гарнитура с засечками (спи) основная гарнитура без засечек (cmss) основная гарнитура шрифта телетайпа (cmtt) серия шрифтов с ожирнением (Ьх) серия шрифтов без ожирнения (ш) курсивная форма шрифтов (it) наклонная форма шрифтов (si) мелкопропиская форма шрифтов (sc) прямая форма шрифтов (п) гарнитура по умолчанию (\rmdef ault) серия по умолчанию (\mddef ault) форма по умолчанию (\updef ault) 27Сокращение от Font Definition.
2. В 1АТЩХ’е есть большое число пакетов, изменяющих основные текстовые шрифты документа. Так коллекция psnfss содержит пакеты, подключающие стандартные латинские PostScript шрифты фирмы Adobe. Особо отмечу два современных пакета, txfonts и pxfonts, используемые для подготовки документов с PostScript-шрифтами на языках с латинским алфавитом. Первый заказывает гарнитуру «Times», последний— «Palatino». Эти гарнитуры устанавливаются также и в математических шрифтах, причем остальные гарнитуры 1АТвХ’а также подменяются на соответствующие PostScript версии. 3. В дистрибутиве MiKTeX’a имеются следующие шрифты с кириллицей: коллекция cyrillic содержит описания стандартных шрифтов кириллицы; комплект PostScript-шрифтов cm-super содержит PostScript-версии шрифтов «Computer Modern», в том числе и кириллицу; пакет literat подключает PostScript гарнитуру «Литературная» в качестве основной текстовой гарнитуры. Можно также установить комплект PostScript-шрифтов PsCyr [18], содержащий 14 русифицированных шрифтов в кодировках 0Т1 и Т2А. Пакет pscyr версии 0.4с определяет следующие декларации выбора текстовых шрифтов и соответствующие им команды \textхх{{текст}}: Декларация Команда Гарнитура Шрифт \acfamily \textac{.. f ас Academy \adfamily \textad{.. fad Advertisement \aqfamily \textaq{.. f aq AntiquaPSCyr \arfamily \textar{.. far ArialMT \cofamily \textco{.. f co College \cpfamily \textcp{.. f cp CooperPSCyr \crfamily \textcr{.. f cr CourierNewPSMT \erfamily \texter{.. f er ERKurierPSCyr \hafamily \textha{.. fha HandbookPSCyr \jnfamily \textjn{.. f jn JournalPSCyr \lzfamily \textlz{.. flz Lazurski \maf amily \textma{.. fma MagazinePSCyr \tmf amily \texttm{.. f tm TimesNewRomanPSMT \txfamily \texttx{.. f tx TextbookPSCyr При загрузке пакета устанавливаются: \rmdefault — «AntiquaPSCyr», \sfdefault — «TextbookPSCyr», \ttdefault— «ERKurierPSCyr». Чтобы отказаться от переопределения основных гарнитур документа, поступайте так:
\usepackage{pscyr} \renewcommand\rmdefault{cmr} \renewcommand\sfdefault{cmss} \renewcommand\ttdefault{cmtt} 4. Чтобы при смене текстовых шрифтов получить сбалансированный документ, необходимо выбрать и подходящие математические шрифты. В пакетах txfonts и pxfonts такая подстановка выполняется автоматически, а в пакете pscyr —не выполняется. Поэтому замену математических шрифтов при использовании пакета pscyr придется выполнять вручную. Пример: \usepackage{txfonts,pscyr} \renewcommand\rmdefault{ftm} Здесь сначала загружаются шрифты пакета txfonts, затем пакет pscyr подгружает русифицированные шрифты, а затем в качестве основной текстовой гарнитуры выбирается «TimesNewRomanPSMT». 5. Специальные шрифты обычно используются для оформительских целей. В lAI^X’e есть много пакетов с такими шрифтами. Часть из них я просто перечислю, а на некоторых остановлюсь подробнее. Пакет allrunes содержит символы рунического письма. Пакет eurosym определяет символ «Евро» в различных начертаниях, выбираемых с помощью опций. Пакет keystroke определяет символы клавиатуры компьютера. 6. На с. 365-368 приведены таблицы символов некоторых специальных шрифтов. Все эти шрифты имеют кодировку U (unknown). Заказ шрифта выполняется командой \usefont, приведенной перед таблицей символов шрифта, а выбор символа по его коду выполняется командой \symbol{(ftod)} В качестве (кода) можно использовать десятичное, шестнадцатеричное (в виде "хх) или восьмеричное (в виде ’ххх) число. Шестнадцатеричный код символа в указанных таблицах получается из кода строки, в которой он находится, с заменой буквы х на символ из заголовка столбца. Например, символ ф из фонетического шрифта находится на пересечении строки "1х и столбца с заголовком 2. Вывод этого символа выполняется так: {\usefont{U}{ipa}{m}{n}\symbol{”12}}
У шрифта «Martin Vogel’s Symbols» (MVS) отсутствует fd-файл. Поэтому для использования его символов задайте в преамбуле документа следующие команды: \DeclareFontFamily{U}{mvs}{} \DeclareFontShape{U}{mvs}{m}{n}{<-> fmvr8x}{} Для работы с символами перечисленных здесь шрифтов можно также использовать специализированные пакеты, в которых определяются команды вывода символов, а также вводятся дополнительные возможности. Пакет ipa используется для работы с фонетическим алфавитом (см. с. 365). Дополнительную информацию об использовании акцентов можно найти в документации к пакету. Пакет wasysym определяет символы шрифта «Waldys Symbol Fonts» (см. с. 366), но при этом конфликтует с командами пакета amsmath. Дополнительную информацию можно найти в документации к пакету. Пакет marvosym28 определяет символы шрифта MVS (см. с. 366) и добавляет команду выбора знака зодиака по номеру месяца. Пакет ifsym определяет специальные символы, относящиеся к категориям misc, electronic, alpine, geometry, clock, weather. Имена требуемых категорий указываются в опциях пакета. Символы первых трех категорий содержатся в шрифте ifsym, а другие категории —в отдельных шрифтах. На с. 367 приведены символы шрифтов ifsym, ifwea и if elk. Дополнительная информация содержится в коде пакета. Пакет bbding определяет специальные символы шрифта «Dingbats» (см. с. 368). 7. Пакет pifont из коллекции psnf ss добавляет несколько команд и окружений, использующих специальные шрифты кодировки U, ряда m и формы п (\usef ont{U}{(eapHumppa)}{m}{n}): \Pisymbol{ (гарнитура)}{(код)} \Pif Ш{(гарнитрра)}{(код)} \РИ1пе{(гарнитрра)}{(код)} \begin{Pilist}{(eapHwnppa)}{(Kod)} . . .\end{Pilist} \begin{Piautolist}{(eapHumppa)}{(Kod)} . . . \end{Piautolist} Первая команда выводит символ с указанным кодом. Например, символ ф фонетического алфавита можно напечатать так: 28Для шрифта MVS устанавливается кодировка 0Т1, а не U, что неправильно.
\Pisymbol{ipa}{"12} Команда \Pif ill работает как \dotfill, но вместо точек печатает указанный символ, повторяя его с шагом в 0.2 дюйма. Команда \Piline выводит разделительную линию, повторяя в ней заданный символ. Пример: х ООООО х x\Pifill{ding}{"60}x & \Piline{ding}{"60} Как видите, символы специального шрифта позиционируются строго друг под другом. Это один из возможных режимов «заливки», имеющихся в T^jX’e. Возможны и другие варианты, о которых сказано в п. В. 13. Окружения Pilist и Piautolist используются для оформления списков с символами специального шрифта в качестве маркеров: в первом списке все маркеры одинаковы, а в последнем—код символа увеличивается на единицу для каждого следующего маркера. Пример: \begin{Piautolist}{ifsym}{"31} I Первый элемент; \item Первый элемент; с? Второй элемент. \item Второй элемент. \end{Piautolist} Для работы со шрифтом «ZapfDingbats» (см. с. 368) в пакете имеются упрощенные версии перечисленных выше команд и окружений: \ding{(ftod)} \dingf Н1{(код)} \dingline{(wd)} \begin{dinglist}{(wd)} . . .\end{dinglist} \begin{dingautolist}{(Kod)} ...\end{dingautolist} Пример: \begin{dingautolist}{"AC} ® Первый элемент; \item Первый элемент; ® Второй элемент. \item Второй элемент. \end{dingautolist} B.ll. и электронные документы В I^TEX’e можно готовить документы не только для печати на принтере, но и электронные документы для просмотра их на экране компьютера. Такие документы можно условно разделить на два типа: обычные документы с гиперссылками, предназначенные как для просмотра на экране,
так и для печати, и презентации, специально подготовленные для показа на экране. Документы, подготовленные в DT^X’e, можно преобразовать в форматы PDF, PostScript, HTML, XML и др. В отличие от первых двух форматов, при конвертировании в другие форматы появляется много ограничений на использование команд DT^X'a и пакетов. Формат PostScript постепенно выходит из обращения, а популярность формата PDF постоянно растет, что связано с малыми размерами PDF-файла по сравнению с PostScript-файлом и возможностью просмотра и печати PDF-файла с помощью бесплатно распространяемой программы Adobe Acrobat Reader. Поэтому я ограничусь только подготовкой электронных документов в формате PDF. 1. Центральной частью большинства пакетов и классов, предназначенных для подготовки электронных публикаций, служит пакет hyperref. Он позволяет вставлять в документ гиперссылки, а также полнее использовать возможности формата PDF (управлять окном просмотра и закладками). Пакет также превращает в гиперссылки перекрестные ссылки в тексте документа. Пакет определяет большое число опций вида (ключ)=(значение), которые можно указывать как при его загрузке, так и в параметре команды \hypersetup{(список опций)} Если (значение) у (ключа) не задано, то подставляется true. Значение, содержащее пробелы или команды, желательно заключать в фигурные скобки. Пример: \usepackage[unicode]{hyperref} \hypersetup{pdftitle={HeH3BecTHoe об известном}, pdfauthor={H.Е. Известный}} Далее приводятся только основные опции пакета. Дополнительную информацию можно найти в файле doc\latex\hyperref\manual.pdf. 2. Опции draft и final управляют механизмом гиперссылок: первая отключает, а последняя включает вставку гиперссылок. У класса документа также есть эти опции и их действие распространяется на hyperref, но, указав явно draft или final в опциях пакета или команды \hypersetup, можно изменить режим управления гиперссылками, наследуемый от опций класса.
Пакетом поддерживается много разных драйверов, один из которых можно выбрать в опциях. При трансляции с помощью pdf latex его драйвер (pdftex) указывать необязательно. Если же Вы транслируете документ в DT^jX’e, а затем переводите его в PostScript, то драйвер dvips надо явно задавать. По умолчанию используется драйвер hypertex, инструкции которого, например, понимает YAP. Гиперссылки в тексте PDF-документа по умолчанию обрамляются рамкой. Опция colorlinks включает выделение гиперссылок цветом, а не рамкой. При этом выбор цветов задается следующими опциями (после равенства указан цвет по умолчанию, а в скобках—команда DTgX’a, в которой используется эта опция): citecolor=green — цвет библиографической ссылки (\cite); f ilecolor=magenta — цвет ссылки на локальный файл; linkcolor=red — цвет перекрестной ссылки (\ref); pagecolor=red — цвет ссылки на номер страницы (\pageref); urlcolor=cyan — цвет ссылки на URL. В значениях этих опций можно использовать либо базовые цвета, либо предварительно определенные командой \def inecolor из пакета color (см. с. 211). Для подготовки PDF-доку мента с закладками (в программе Adobe Reader закладки выводятся в специальном окне слева от текста) задайте опцию bookmarks. Уровень «раскрытия» дерева закладок устанавливается следующими опциями: bookmarksopen — показать закладки всех уровней; bookmarksopenlevel=(^eyioe) — уровень, до которого показать закладки. Информация о PDF-документе задается следующими опциями: pdftitle={(meftcm)} — название документа; pdf author={(meKcm)} — авторы; pdf subject={(meftcm)} — тема; pdfkeywords={(meKcm)} — ключевые слова. Если значения этих опций содержат кириллицу, то необходимо также использовать опцию unicode. Опция pdf pagemode управляет режимом показа PDF-документа при его открытии программой Adobe Reader. Возможные значения: None —режим
не задан; UseThumbs — показывать иконки страниц; UseOutlines — показывать закладки документа; FullScreen — показывать документ на весь экран (используется в слайдах и презентациях). Опции pdf st art view и pdf view определяют, какая часть страницы PDF-документа будет показана при старте и при переходе внутри документа по ссылке. Некоторые возможные варианты: Fit —показать страницу целиком; FitН—подогнать увеличение по ширине страницы; FitV — подогнать увеличение по высоте страницы; Fit В —показывать содержимое страницы; FitВН —подогнать увеличение по ширине содержимого страницы; FitBV — подогнать увеличение по высоте содержимого страницы. 3. Для вставки гиперссылки на URL (адрес ресурса в Интернете) применяются команды \href {(url)}{(текст)} \url{(ur/)} Последняя команда эквивалентна \href {(url)}{(url)}. Параметр (url) задает адрес ресурса, а (текст) — текст, с которым связывается гиперссылка. Пример: \href{http://www.miktex.org/}{MiKTeX} В качестве (url) можно подставлять адрес локального ресурса. Например, если Вы планируете подготовить несколько PDF-файлов и поместить их в одну папку, то для ссылки на другой файл укажите в параметре (url) имя этого файла вместе с расширением (перед именем желательно вставлять символы «./»). Чтобы перейти на конкретную метку или страницу в другом файле, добавьте в конец ссылки символ #, а затем имя метки, либо конструкцию page, (номер страницы). Пример: \href{./sample.pdf#page.5}{Пятая страница документа sample} Команды DTEX’a \ref, \pageref, \cite создают локальные гиперссылки внутри файла. Чтобы создать аналогичную гиперссылку, но с иным текстом, воспользуйтесь командой \hyperlink{(uAtJZ метки)}{(текст)} где (имя метки) — имя метки, созданной командой \label или командой \hypertarget{(имя метки)}{(текст)}
Последняя команда создает гипертекстовую метку, связывая ее с заданным фрагментом текста. В пакете hyperref добавлены *-формы команд \ref и \pageref, которые не создают гиперссылок. Типичное их использование—в текстовом параметре команды \hyperlink: Подробности в \hyperlink{s:math}{приложении \ref*{s:math}} 4. Для подготовки слайдов и презентаций можно использовать несколько классов и пакетов. Пакеты pdfscreen и pdfslide расширяют возможности пакета hyperref, добавляя в электронный документ меню навигации и некоторые визуальные эффекты для программы Adobe Reader. Пакет texpower добавляет в электронный документ динамические эффекты, в частности, пошаговое отображение страницы. Пакет можно использовать совместно с hyperref, загружая последний до texpower. Класс powersem из коллекции texpower служит для подготовки презентаций с интерактивными элементами. Его можно использовать совместно с пакетами hyperref, texpower, а также пакетом ifmslide. Последний добавляет возможности управления меню навигации. Загружать эти пакеты следует в том порядке, в котором они здесь перечислены. В качестве альтернативы можно использовать класс prosper, также позволяющий создавать презентации с интерактивными элементами. Совместно с этим классом применяют пакет HA-prosper, расширяющий возможности класса. Наконец, есть и другой путь добавления динамических эффектов в презентацию: подготовка презентации с использованием пакетов коллекции ppower4, а затем постобработка с помощью специализированной Java-программы. На первом шаге Вы вставляете в документ команды создания динамических эффектов и транслируете документ в PDF-формат. На втором шаге постпроцессор обрабатывает этот документ и создает другой PDF-документ с динамическими эффектами. Этот путь конечно сложнее, чем все другие методы создания презентаций, но его возможности гораздо шире. В. 12. Обзор коллекции tools Коллекция пакетов tools поддерживается разработчиками DT^X’a. Она содержит следующие пакеты: afterpage — определяет команду \afterpage{(meKcm)}, выводящую (текст) после завершения текущей страницы (см. с. 128);
array — расширяет возможности использования матриц и таблиц (см. с. 149); bm — определяет команду \Ьш{{формула}}, выводящую формулу с ожирнением (см. с. 157); calc — позволяет использовать арифметические выражения при вычислении расстояний и значений счетчиков (см. с. 283, 285, а также документацию к пакету); dcolumn — вводит новый тип столбца в таблицах с выравниванием по десятичной точке (см. с. 152); delarray — расширяет синтаксис окружения array, позволяя проще задавать ограничивающие скобки вокруг матриц (см. с. 151); enumerate — расширяет возможности управления нумерацией элементов списка в окружении enumerate (см. с. 105); ftnright — выводит сноски в правом столбце при печати текста в две колонки (см. с. 296); hhline — определяет команду \hhline{(описание}}, позволяющую рисовать сложные линии между полями таблицы (см. документацию к пакету); indentfirst — задает вывод первого абзаца после выносных команд рубрикации с абзацным отступом (в макросе A/^C иное управление абзацным отступом, см. с. 244); layout — определяет команду \layout, выводящую схему макета страницы текущего документа; longtable — определяет окружение longtable, позволяющее выводить многостраничные таблицы (см. с. 152 и документацию к пакету); multicol — определяет окружение multicols, позволяющее выводить содержащийся в нем текст в несколько столбцов (см. с. 130); rawfonts — эмулирует заказ шрифтов в стиле 1ЭД?еХ-2.09 (вводит такие команды как \tenrm); showkeys — печатает на полях страницы названия меток, использующихся в командах \label, \ref, \pageref, \cite, \bibitem и др.; tabularx — определяет окружение tabularx, в котором можно исполь- зовать Х-столбцы (см. с. 151);
theorem — расширяет возможности команды \newtheorem (см. с. 195); trace — используется для трассировки пакетов при их разработке; varioref — добавляет «умные» аналоги команд \ref и \pageref, позволяющие при печати ссылок на соседние страницы заменять их номера на текст «на следующей странице», «на предыдущей странице» и др. (см. документацию к пакету); verbatim — изменяет алгоритм работы окружения verbatim, позволяя выводить фрагменты текста неограниченной длины (см. с. 102); xr — организует перекрестные ссылки между несколькими документами (см. документацию к пакету); xspace — используется разработчиками пакетов для определения команд, которые анализируют следующий символ и при необходимости вставляют пробел (см. документацию к пакету). В. 13. Обзор коллекции ncctools Коллекция пакетов ncctools была разработана автором этой книги. В нее вошли пакеты, которые можно использовать совместно со стандартными классами ГМГвХ’а и классами, на них базирующимися. Текущая версия коллекции—3.2. К моменту написания этой книги коллекция содержала следующие пакеты: dcounter — позволяет определять динамические счетчики, стиль нумерации которых определяется командой \countstyle (см. с. 197). Стиль нумерации нединамического счетчика также можно сделать зависящим от этой команды. Пример: \DeclareDynamicCounter{equation}; desclist — определяет окружение desclist (см. с. 106); extdash — вводит несколько команд дефисов и тире, а также растяжимый узкий пробел, и определяет для них сокращения \-/, \—, \=>, \=/, \==, \=== (использование этих команд иллюстрируется в гл. 5); many foot — позволяет создавать многоуровневые сноски (см. с. 298); mb oxfill — предоставляет возможность «заливки» горизонтального пространства заданным шаблоном (см. с. 334);
nccbbb — определяет некоторые математические символы шрифта Pure Blackboard Bold (эти команды использовались в старой версией Л/^С-1М^Х; см. документацию к пакету); nccboxes — определяет дополнительные боксы и средства улучшенного оформления «шапок» таблиц (см. с. 119, 153); ncccomma — определяет «умную» запятую (см. с. 164); ncccropbox — определяет команду \cropbox[(ширина)] [(высота)] {(текст)} создающую бокс с кропмарками в виде «уголков». Может использоваться для вывода визиток (см. документацию к пакету); ncccropmark — используется совместно с пакетом watermark для вы- вода технической рамки страницы в виде уголков (см. с. 333); nccfancyhdr — расширяет возможности оформления колонтитулов (см. с. 247); nccfloats — содержит дополнительные команды оформления плавающих элементов (см. с. 234); nccfoots — вводит команды ручной нумерации сносок (см. с. 122); nccmath — расширяет возможности пакета amsmath (см. с. 163, 179, 356, 363); nccparskip — определяет команду \SetParskip{(d^uua)}, задающую расстояние между абзацами и устраняет избыточные вертикальные отступы в списках; nccpic — расширяет возможности пакета graphicx (см. с. 208); nccrules — определяет команды вывода штриховых линий и команды генерации разделительных линеек в сносках (см. с. 335); nccsect — переопределяет механизм рубрикации, вывод заголовков плавающих элементов и оформление элементов содержания (см. с. 243, 311); nccstretch — определяет команду \stretchwith{(ueumo)}{(meKcm)}, вставляющую {нечто) между символами {текста), т. е.
nccthm tocenter watermark выполняющую разрядку текста. Пробелы в тексте игнорируются. Символы, заключенные в фигурные скобки, не разреживаются. Фигурные скобки первого уровня в процессе разрядки убираются. Пример использования команды приведен на с. 264; — расширяет возможности генерации математических утверждений (см. с. 198); — определяет две команды управления макетом страницы, \ToCenter и \FromMargins (см. с. 256); — определяет команду \thispageheading и команды вывода графических объектов в подложке страниц (см. ниже). Вывод объектов в подложке страницы. Пакет watermark близок по функциональности к пакету eso-pic (см. с. 310): с его помощью также можно вывести графический объект до вывода текста на странице. Для этой цели служат команды \watermark{(графические объекты}} \leftwatermark{(графические объекты}} \rightwatermark{(графические объекты}} \thiswatermark{(графические объекты}} Первая команда задает графические объекты для всех страниц документа, вторая—для левых (четных) страниц, третья—для правых (нечетных) страниц, последняя—только для текущей страницы. Графические объекты—это объекты окружения picture. Начало координат во всех этих командах установлено в начало верхнего колонтитула на уровне его базовой линии. С помощью команды \thispageheading{ (лшогострочный текст}} можно заменить верхний колонтитул текущей страницы. Техническую рамку страницы можно вывести с помощью команды \cropmarkL(hfm}l {(слева}}{{справа}}{(сверху}} {(снизу}} {(длина}} из пакета ncccropmark, поместив ее в параметр команд \. . .watermark. Параметр (hfm} содержит комбинацию из букв h (header), f (footer) и m (margins), определяющую какие дополнительные области страницы учитывать при обрамлении технической рамкой. Следующие 4 параметра
определяют расстояния от обрамляемой области до уголков технической рамки. Последний параметр задает длину и направленность уголков: при положительном значении уголки будут смотреть внутрь страницы, а при отрицательном — наружу. Например, команды \usepackage{watermark,ncccropmark} \watеrmark{\cropmark [h] {1 Omm}{1 Omm}{1 Omm}{1 Omm}{1 Omm}} задают техническую рамку, отстоящую на 10 мм по всем направлениям от текстовой области и верхнего колонтитула. Длина линий в уголках также 10 мм. Горизонтальная заливка. Свободное горизонтальное пространство в абзаце обычно заполняется пробелами. Но можно также выполнять его «заливку» повторением некоторого шаблона. Например, \hrulef ill выводит горизонтальную линию, \dotfill выполняет заливку точками, \Pifill из пакета pifont — символом шрифта. При заливке свободного пространства с помощью шаблона часто получается небольшой остаток, поскольку ширина свободного пространства обычно не кратна ширине шаблона. В ТвХ’е есть три способа распределения этого остатка: табулированная заливка (используется в содержании документа и обеспечивает одинаковые позиции шаблонов в разных строках), центрированная заливка (остаток делится пополам и размещается по обе стороны от строки из шаблонов) и растянутая заливка (остаток равномерно делится между всеми шаблонами строки заливки). Пакет mb oxfill определяет команду \mboxf ill \_{ширина}1 [(тип)] {{шаблон}} реализующую все перечисленные способы заливки. Последний параметр, задает шаблон заливки. Параметр {ширина} задает требуемую ширину шаблона, и он обычно больше реальной ширины шаблона. Если дополнительные параметры отсутствуют, то требуемая ширина совпадает с реальной. В параметре {ширина} можно использовать макросы \width, \height, \depth, \fullheight, как в команде \makebox. Если {тип} не задан, то используется табулированная заливка. Заливки других типов определяются так: с—центрированная, х —растянутая, s — максимально растянутая. Примеры: \noindent\mboxfill{*}\mbox{}\\ \mbox{}\mboxfill [2\width]{+}\mbox{}\\
\mbox{}\mboxfill[2\width]{\hfill+}\mbox{}\\ \mbox{}\mboxfill[2\width]{+\hfill}\mbox{}\\ Некоторый TeKCT\mboxfill[1.5\width]{*}\mbox{}\\ \mbox{}\mboxfill[1.5\width]{*}\mbox{}\\ \mbox{}\mboxfill[1.5\width][c]{*}\mbox{}\\ \mbox{}\mboxfill[1.5\width][x]{*}\mbox{}\\ \mbox{}\mboxfill[1.5\width][s]{*}\mbox{}\\[-2ex] \mbox{}\hrulefill Результат: ******************************************************************* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Некоторый текст ********************************** ********************************************* ********************************************* ********************************************* ********************************************* Дополнительные линейки. Пакет nccrules определяет несколько команд вывода линеек. Команда \dashrule [(подъем)] {{шаблон ширины)}{{шаблон толщины)} позволяет задавать различные линии. По синтаксису эта команда похожа на \rule и действует также, если в двух последних параметрах задать размеры. Параметр (подъем) задает вертикальный сдвиг линии, а два других параметра — шаблоны ширины штрихов и толщины линий. Каждый из шаблонов состоит из размеров, разделенных пробелами. Последовательность размеров интерпретируется так: первый —задает величину (ширину или толщину) линии, второй—величину промежутка, третий — величину следующей линии и т. д. Единицы pt в шаблонах можно не указывать. Примеры: х------X х-х X = ; = X x\dashrule [. 5ех] {10mm}{lpt}x\\ x\dashrule{5mm 333 5mm}{.4}x\\ x\dashrule{l}{3 2 3}x\\ x\dashrule{2 2}{2 2}x\\ x\dashrule{5 3135 10}{l 1 0.4 1 l}x
Если последний параметр в шаблоне задает величину промежутка, то половина этого промежутка перемещается при выводе в начало шаблона. Команда \dashrulef ill [(подъем)] [(тип)] {(шаблон ширины}} {(шаблон толщины}} выполняет заливку горизонтального пространства штриховой линией. Параметр (тип} такой же, как в команде \mboxfill, а остальные параметры— как в команде \dashrule. Примеры: \noindent x\dashrulefill{2 4}{2}\mbox{}\\ xxxxx\dashrulefill[.4ex]{2 4}{2}\mbox{}\\ \mbox{}\dashrulefill[.4ex]{4 4}{2}\mbox{}\\ \mbox{}\dashrulefill[.4ex][c]{4 4}{2}\mbox{}\\ \mbox{}\dashrulefill[.4ex][x]{4 4}{2}\mbox{}\\ \mbox{}\dashrulefill[.4ex][s]{4 4}{2}\mbox{}\\ \mbox{}\dashrulefill{5 313 5}{1 1 0.4 1 l}\mbox{}\\ \mbox{}\dashrulefill[0mm][s]{4 2124 -4}{l}\mbox{}\\ \mbox{}\hrulefill Результат: x............................................................... XXXXX .......................................................... В пакете также имеются две команды генерации разделительных линеек для сносок: \newf ооЪпоЪех\11е{(префикс}} [(ширина)] {(команды}} \newf ootnotedashrule{(npe^uKc)} [(ширина}] {(шаблон ширины}} {(шаблон толщины}} Имя генерируемой команды состоит из указанного (префикса) и текста footnoterule. Если (ширина) не задана, то используется стандартная ширина (0.4\columnwidth). В последнем параметре первой команды обычно
используется команда \mboxfill, а последняя команда применяется для создания штриховых линеек. Если в ней (шаблон ширины) пуст, то рисуется непрерывная линейка. Примеры приведены на с. 300. В.14. Разное В заключении я перечислю некоторые интересные пакеты, для которых не нашлось места в предыдущих пунктах этого приложения. 1. Коллекция Itxmisc содержит много полезных пакетов, некоторые из которых были упомянуты ранее. Здесь я остановлюсь еще на двух пакетах этой коллекции. Пакет excludeonly вводит команду \excludeonly{(список файлов)}^ в которой указывается, какие файлы не надо транслировать. Эта команда полезна, когда надо оттранслировать почти все главы книги. Пакет relsize добавляет декларацию \ге1з1ге{(целое)}, параметр которой задает, на сколько ступеней надо увеличить или уменьшить текущий размер шрифта. Например, если текущий размер \normalsize, то \relsize{2} означает \Large. Сервисные команды \smaller [(целое)] и \larger [(целое)] означают соответственно уменьшение и увеличение размера шрифта на требуемое число ступеней. Например, \smaller = \relsize{-l}, \smaller[2] = \relsize{-2}, \larger = \relsize{l}, \larger[2] = \relsize{2}. Пакет содержит и другие команды масштабирования (подробности в коде пакета в конце файла). 2. Пакет moresize добавляет два новых размера шрифтов \ssmall и \HUGE: первый — между \tiny и \scriptsize, последний—крупнее, чем \Huge. Пакет рассчитан на использование шрифтов современных кодировок (Т1, Т2 и др.), в которых есть крупные размеры шрифтов, и обрабатывает стандартные опции lOpt, llpt и 12pt. Размеры, введенные в данном пакете, распознаются пакетом relsize. 3. Коллекция cite содержит несколько пакетов для работы с библиографическими ссылками. Я упомяну здесь весьма полезный пакет из нее — cite, переопределяющий команду \cite так, что перечисленные в ней ссылки автоматически упорядочиваются по возрастанию номеров и группы последовательных номеров заменяются на диапазоны номеров. Например, ссылка [1, 3, 7, 5, 4] будет преобразована к виду [1, 3-5, 7].
4. Пакет minitoc позволяет оформлять содержание книги по главам. Например, в оглавлении всей книги дается краткое содержание всех глав, а в начале каждой главы — более подробное ее содержание. Пакет нельзя использовать совместно с пакетами, переопределяющими команды рубрикации, например, с nccsect. 5. Пакет last page добавляет метку Last Page на последнюю страницу документа, позволяя ссылаться на ее номер. В классе псс в стиле «статья» также добавляется метка последней страницы, называемая NCC@lastpage. 6. Пакет isotope определяет команду вывода изотопов химических элементов \isotope [(сверху)! [(снизу)! {(текст)} где содержимое дополнительных параметров оформляется соответственно в верхнем и нижнем индексах перед (текстом), который выводится прямым шрифтом. Примеры: \isotope [228] {Ra} —> 228Ra, \isotope[228][88]{Ra} —> 2g|Ra. Команду можно использовать как в тексте, так и в формулах. Стиль оформления текстового параметра задается макросом \isotopestyle со значением по умолчанию \rm. 7. По правилам полиграфии названия химических элементов всегда выводятся прямым шрифтом. Поможет в этом пакет chemsym, который вводит для каждого химического элемента свою команду, название которой совпадает с обозначением химического элемента. Эти команды можно использовать как в тексте, так и формулах. Пакет также дает возможность использования команд оформления верхнего и нижнего индексов в текстовой моде, т.е. Вы можете писать просто \H_2\0 вместо \Н$_2$\0. Пакет также определяет некоторые дополнительные команды и переименовывает шесть стандартных команд ЬМГвХ’а, имена которых совпадают с названиями химических элементов. Для вывода структурных химических формул можно использовать коллекцию пакетов xymtex. 8 8. Для вывода коммутативных диаграмм применяют пакеты dcpic, pb-diagram, amscd; для оформления древовидных диаграмм — пакеты tree-dvips и trees. Пакет bytefield позволяет оформлять диаграммы сетевых протоколов, a msc — диаграммы передачи сообщений.
Пакет scalebar рисует специальные шкалы, используемые в геодезии. Пакеты coordsys и logsys из коллекции coordsys применяются для от-рисовки систем координат в равномерной и логарифмических шкалах соответственно. Пакет paralist существенно расширяет возможности списков: позволяет создавать списки в абзацном стиле, в подбор и компактные списки (без вертикальных отступов между элементами). Пакет answers весьма полезен для подготовки сборников задач и методичек, в которых ответы должны выводиться отдельно от задач. Он позволяет готовить ответы вместе с задачами, а печатать их раздельно.
Справочник основных элементов ПТЩХ’а Г.1. Стандартные счетчики page part chapter section subsection subsubsection paragraph subparagraph secnumdepth toedepth equation footnote mpfootnote enumi enumii enumiii enumiv figure table topnumber dbltopnumber bottomnumber totalnumber Номер страницы Номер части Номер главы (отсутствует в классе article) Номер секции Номер подсекции Номер подподсекции Номер параграфа Номер подпараграфа Глубина нумерации рубрик документа Глубина сборки содержания Счетчик выносных формул Счетчик сносок Счетчик сносок на мини-странице Счетчик перечисления уровня 1 Счетчик перечисления уровня 2 Счетчик перечисления уровня 3 Счетчик перечисления уровня 4 (исп. в библиогр.) Счетчик рисунков Счетчик таблиц Макс, число плавающих элементов вверху страницы То же для двухстолбцовых плавающих элементов Макс, число плавающих элементов внизу страницы Макс, число плавающих элементов на всей странице Г.2. Управление текстовыми шрифтами Декларации выбора размера шрифта | \tiny \scriptsize \footnotesize \small \normalsize \large мельчайший \Large Большой 2 Индексный е» О п \LARGE БОЛЬШОЙ 3 Ь сносках Маленький \huge ОгрОМНЫЙ 1 Большой 1 \Huge ОГРОМНЫЙ 2
Гарнитуры, жирность и начертания шрифтов \rinf amily \sffamily \ttfamily \mdseries \bfseries \upshape \itshape \slshape \scshape \normalfont \em \textrm{ (текст)} \textsf {.(текст)} \t ext tt {(текст)} \t extmd{ (текст)} \t extbf текст)} \textup{(meKcm)} \text it {(текст)} \textsl{(meKcm)} \textsc{( текст)} \textnormal{ (текст) } \emph{( текст)} шрифт с засечками шрифт без засечек шрифт моноширинный нормальная жирность увеличенная жирность прямое начертание курсивное начертание наклонное начертание мелкопрописное начертание шрифт по умолчанию выделение текста Математические текстовые шрифты \mathrm{ (текст)} \mathbf {(текст)} \mathi t {(текст)} \mathsf {(текст)} \mathtt {(текст)} прямой шрифт семейства \rmf amily жирный прямой шрифт семейства \rmf amily курсивный шрифт семейства \rmf amily прямой шрифт семейства \sffamily прямой шрифт семейства \ttf amily Старый стиль выбора шрифтов \rm — \normalf ont\rmf amily \bf \normalfont\bfseries \it = \normalfont\itshape \sl = \normalfont\slshape \sc = \normalf ont\s c shape \sf = \normalfont\sffamily \tt = \normalfont\ttfamily Стандартные схемы кодировки текстовых шрифтов 0T1 T1 0T2 T2A T2B T2C X2 Старая кодировка с латиницей Современная кодировка с латиницей Старая кодировка с кириллицей Современная кодировка с кириллицей. Версия А Современная кодировка с кириллицей. Версия В Современная кодировка с кириллицей. Версия С Современная кодировка с полной кириллицей
Гарнитура «Computer Modern Roman» \usefont{T2A}{cmr}{m}{n} Прямой \usefont{T2A}{cmr}{m}{it} Курсивный \usefont{T2A}{cmr}{m}{sl} Наклонный \usefont{T2A}{cmr}{m}{sc} Мелкопрописной \usefont{T2A}{cmr}{m}{ui} Прямой курсив \usefont{T2A}{cmr}{b}{n} Жирный, нерастянутый \usefont{T2A}{cmr}{bx}{n} Жирный \usefont{T2A}{cmr}{bx}{it} Жирный, курсивный \usefont{T2A}{cmr}{bx}{sl} Жирный, наклонный \usefont{T2A}{cmr}{bx}{sc} Жирный, мелкопрописной Гарнитура «Computer Modern Sans» | \usefont{T2A}{cmss}{m}{n} Прямой \usefont{T2A}{cmss}{m}{sl} Наклонный \usefont{T2A}{cmss}{bx}{n} Жирный \usefont{T2A}{cmss}{bx}{sl} Жирный, наклонный \usefont{T2A}{cmss}{sbc}{n} Полужирный, сжатый Гарнитура «Computer Modern Typewriter» \usefont{T2A}{cmtt}{m}{n} Прямой \usefКурсивный \usefont{T2A}{cmtt}{m}{sl} Наклонный \usefont{T2A}{cmtt}{m}{sc} Мелкопрописной Гарнитура «Computer Modern Fibonacci» \usef ont{T2A}{cmf Прямой \usef ont{T2AHcmf ibHm}{sl} Наклонный Гарнитура «Computer Modern Funny Roman» \usef ont{T2A}{cmfFunny Roman, прямой \usefont{T2A}{cmfFunny Roman, icypcwsuuu Гарнитура «Computer Modern Dunhill» \usefont{T2A}{cmdh}{m}{n} Computer Modern Dunhill
«Внутренняя кухня» выбора шрифта {смена шрифта) : {модификаторы)\зе1есЛЛont {модификатор) : \f ont encoding{ {кодировка)} I \f ontf ami ly{( гарнитура)} I \f ontseries{(/Zfld)} I \f ontshape{($opAta)} I \f ont s±ze{{кeгль)} {{интерлиньяж)} I \linespread{(AtH03/cumeyib)} {кегль) {интерлиньяж) {множитель) {число) I {размер) {размер) {число) Г.З. Пробелы и специальные символы Пробелы Команда Размер Описание и II Межсловный пробел \и II Межсловный пробел II Неразбиваемый межсловный пробел \! II Отрицательный узкий пробел (мат.) \, II Узкий пробел \: II Средний пробел (мат.) \; II Широкий пробел (мат.) \enspace 1 1 Неразбиваемая полукегельная (0.5ет) \enskip 1 1 Полукегельная (0.5ет) \quad 1 1 Кегельная (1ет) \qquad 1 1 Двойная кегельная (2ет) Кавычки Образец Результат Описание ‘текст’ ‘текст’ Стандартные одиночные кавычки ‘‘текст’’ “текст” Стандартные двойные кавычки "<текст"> «текст» «Елочки» [russian]1 "‘текст"’ „текст“ «Лапки» [russian] 1 Здесь и далее [russian] означает использование пакета babel с опцией russian.
Дефисы и тире Образец Результат Описание Стандартный дефис "= - Межсловный дефис [russian] " ~ - Неразбиваемый дефис [russian] \-/ - Межсловный дефис (псс) \=/ - Межсловный неразбиваемый дефис (псс) - Стандартное короткое тире \-- - Межсловное короткое тире (псс) \== - Межсловное неразбиваемое короткое тире (псс) --- — Стандартное длинное тире — Межсловное длинное тире [russian] — Длинное тире в прямой речи [russian] \------------ — Длинное тире (псс) \=== — Неразбиваемое длинное тире (псс) Г.4. Текстовые акценты и символы Некоторые из приведенных далее команд акцентов и символов доступны не во всех схемах кодировки. После таких команд в верхнем индексе указана схема кодировки: Tl, Т2А, Т2В, Т2С; Т2 означает, что команда доступна во всех версиях кодировок схемы Т2. Также приведены текстовые акценты и символы кодировки TS1, загружаемые командой \usepackage{textcomp}. Чтобы напечатать символ, доступный в отдельной кодировке, необходимо перед его командой установить требуемую кодировку. Пример: D {\fontencoding{Tl}\selectfont\NG} Текстовые акценты 0 \‘{о} б \-{о} б \v{o} а \г{а} а \f{a}T2 6 \’{о} О \={о} б \Н{о} о \d{o} а \С{а}Т2 б \-{о} б \.{о} 9 \с{о} о \Ъ{о} й \U{a}T2 б \"{о} б \и{о} 4 \к{а} об \t{oo} Команды, доступные в текстовой и математической модах # \# \_ § \s © \соруright $ \$ { t \dag \dots % \7. } t \ddag \ldots к \& К \р £ \pounds № \No2 2Команда \No определяется при загрузке пакета babel с опцией [russian].
Текстовые символы европейских языков | а \аа d \djT1 ce \oe J \j А \АА D \DJT1 (E \0E « \guillemotleft ае \ае 1 \1 В \ss » \guillemotright ж \АЕ L \L SS \SS < \guilsinglleftT1 5 \dhT1 0 \o 4 \ngT1 > \guilsinglrightT1 D \DHT1 0 \0 D \NGT1 , \quotesinglbaseT1 Ь \thT1 I> \THT1 i \i „ \quotedblbase Команды, доступные в текстовой моде | — \ су r dash12 > \textgreater < \cyrlangleT2 < \textless I \CYRpalochkaT2 № \textnumeroT2 ,TS1 > \cyrrangleT2 а \textordfeminine \textasciicircum Q \textordmasculine — \textasciitilde I \textparagraph * \textasteriskcentered \textperiodeentered \ \textbackslash %00 \textpertenthousand 1 \textbar %0 \textperthousand { \textbraceleft L \textquestiondown } \textbraceright 11 \textquotedbl • \textbullet а \textquotedblleft I \textcircled{a} \textquotedblright © I \textcopyright t \textquoteleft Q \textcurrencyT2,TS1 \textquoteright t \textdagger ® \textregistered t \textdaggerdbl § \textsection $ \textdollar £ \textsterling \textellipsis А \textsuperscript{A} — \textemdash тм \texttrademark - \textendash \textunderscore i \textexclamdown \textvisiblespace Дополнительные текстовые акценты (textcomp) | $ \capitalcedilla{a} Q \capitalogonek{a} a \capitalgrave{a} a \capitalacute{a} a \capitalcircumflex{a} a \capitaltilde{a} a \capitaldieresis{a} a \capitalhungarumlaut{a} a \capitalring{a} a \capitalcaron{a} a \capitalbreve{a} a \capitalmacron{a} a \capitaldotaccent{a} ОО \capitaltie{oo} a \newtie{a} а V capitalnewtie{a}
Дополнительные текстовые символы (textcomp) \textacutedbl \textasciiacute \textasciibreve \textasciicaron \textasciidieresis \textasciigrave ~ \textasciimacron В \textbaht || \textbardbl О \textbigcircle Ь \textblank ★ \textborn | \textbrokenbar °C \textcelsius ф \textcent 0 \textcentoldstyle (p) \textcircledP (D \textcolonmonetary (6) \textcopyleft = \textdblhyphen = \textdblhyphenchar \textdegree + \textdied Z \textdiscount 4- \textdiv o|o \textdivorced $ \textdollaroldstyle 4 \textdong 4 \textdownarrow 8 \texteightoldstyle 6 \textestimated €) \texteuro 5 \textfiveoldstyle f \textflorin 4 \textfouroldstyle / \textfractionsolidus \textgravedbl (K \textguarani ? \textinterrobang 4, \textinterrobangdown ( \textlangle [ \textlbrackdbl 0 \textleaf \textleftarrow £ \textlira -> \textlnot [ \textlquill gd \textmarried U \textmho — \textminus p \textmu J \textmusicalnote N \textnaira 9 \textnineoldstyle Q \textohm 2 \textonehalf 1 \textoneoldstyle J \textonequarter 1 \textonesuperior о \textopenbullet ₽ \textpeso 1 \textpilcrow ± \textpm ' \textquotesingle , \textquotestraightbase и \textquotestraightdblbase ) \textrangle ] \textrbrackdbl R \textrecipe ж \textreferencemark —> \textrightarrow ] \textrquill 5M \textservicemark 7 \textsevenoldstyle 6 \textsixoldstyle / \textsurd 3 \textthreeoldstyle J \textthreequarters — \textthreequartersemdash 3 \textthreesuperior \texttildelow x \texttimes — \texttwelveudash 2 \texttwooldstyle 2 \texttwosuperior t \textuparrow W \textwon ¥ \textyen о \textzerooldstyle
Символы кириллицы а \cyra A \CYRA jj \cyrlhkT2B,c Л \CYRLHKt2B>c •е \cyrabhchT2C •e \cyrabhcht2C л> \cyrljeT2A,B Jb \CYRLJET2A,b \cyrabhchdscT2C \cyrabhchdscT2C м \cyrm M \CYRM 3 \cyrabhdzeT2B 3 \cyrabhdzeT2B-c m; \cyrmdscT2C M \cyrmdscT2C Q \cyrabhhaT2C (q \cyrabhhat2C nj \cyrmhkT2C M \cyrmhkT2C ае \cyraeT2A ж \cyraeT2A н \cyrn H \CYRN б \cyrb Б \CYRB ц \cyrndsc 4 \CYRNDSC Ц \cyrc Ц \CYRC ir \cymgT2A’B H1 \CYRNGT2A’b ч \cyrch 4 \CYRCH у \cyrnhkT2B’C U \CYRNHKT2B>c V \cyrchldscT2B 4 \cyrchldscT2B h> \cyrnjeT2A’B bb \CYRNJET2A’b Ц \cyrchrdsc 4 \CYRCHRDSC ji \cyrnlhkT2c H \cyrnlhkT2C ч \cyrchvcrsT2A 4 \CYRCHVCRSt2A 0 \cyro 0 \CYRO Д \cyrd Д \CYRD e \cyrotld e \CYROTLD 5 \cyrdeltaT2B 6 \CYRDELTAt2b n \cyrp n \CYRP 5 \cyrdjeT2A ъ \cyrdjeT2A П) \cyrphkT2C Ц) \cyrphkT2C S \cyrdzeT2A S \cyrdzeT2A q \cyrq Q \CYRQ Ц \cyrdzheT2A’C Ц \CYRDZHET2A,c p \cyrr p \CYRR е \cyre E \CYRE p \cyrrdscT2C ? \cyrrdscT2C с \cyrepsT2B 8 \cyrepsT2B £ \cyrrhkT2C S \cyrrhkT2C э \cyrerev Э \CYREREV p \cyrrtickT2c p \CYRRTICKt2c ы \cyrery Ы \CYRERY c \cyrs c \CYRS ф \cyrf Ф \CYRF c \cyrsacrsT2B c \CYRSACRSt2B г Г \CYRG э \cyrschwa Э \CYRSCHWA г \cyrgdscT2B 8 \CYRGDSCt2b 9 \cyrsdscT2A Q \CYRSDSCT2A г \cyrgdschcrsT2B 8 \cyrgdschcrsT2B h \cyrsemisftsnT2C ъ \cyrsemisftsnT2C г \cyrghcrsT2A’B F \CYRGHCRSt2a,b ь \cyrsftsn ь \CYRSFTSN 5 \cyrghkT2B’C Б \cyrghkT2B,c ш \cyrsh Ш \CYRSH Г \cyrgupT2A Г \cyrgupT2A щ \cyrshch Щ \CYRSHCH X \cyrh X \CYRH h \cyrshha h \CYRSHHA х; \cyrhdsc X, \CYRHDSC т \cyrt T \CYRT X \cyrhhcrsT2B X \cyrhhcrsT2B T \cyrtdscT2c T \cyrtdscT2C \cyrhhkT2B \cyrhhkT2B ц \cyrtetseT2c Tt \CYRTETSEt2C ъ \cyrhrdsn Ъ \CYRHRDSN h \cyrtsheT2A ъ \cyrtsheT2A и \cyri И \CYRI у \cyru У \CYRU е \cyrieT2A e \cyrieT2A у \cyrushrtT2A’B У \CYRUSHRTt2A’b i \cyrii I \CYRII в \cyrv в \CYRV й \cyrishrt Й \CYRISHRT w \cyrw w \CYRW Ц \cyrishrtdscT2C ц \cyrishrtdscT2C Y \cyryT2A,B Y \CYRYT2A’b j \cyrje J \CYRJE я \cyrya Я \CYRYA к \cyrk К \CYRK Y \cyryhcrsT2A Y \CYRYHCRST2A тс \cyrkbeakT2A К \CYRKBEAKt2a 1 \cyryiT2A I \CYRYIT2a К \cyrkdsc К, \CYRKDSC ё \cyryo Ё \CYRYO к \cyrkhcrsT2c к \cyrkhcrsT2C ю \cyryu Ю \CYRYU Ъ \cyrkhkT2B 15 \CYRKHKt2B з \cyrz 3 \CYRZ к \cyrkvcrsT2A к \cyrkvcrsT2A ? \cyrzdscT2A ? \CYRZDSCT2A л \cyrl Л \CYRL ж \cyrzh Ж \CYRZH Д \cyrldscT2B’c Д \CYRLDSCT2B,c ж; \cyrzhdscT2A,B Ж \CYRZHDSCt2a’b
Г.5. Специальные математические шрифты \mathbb{ (символы}} \mathcal{ (символы)} \mathrsf в{(символы}} \mathscr {{символы}} \mathf rak{ (символы}} Требует пакет amsfonts Стандартная команда Требует пакет calrsfs Требует пакет eucal с опцией mathscr Требует пакет amsfonts или eufrak Шрифт Blackboard Bold \mathbb А—А В—В I -I J —J Q-Q R—R Y-Y Z-Z С-С D —D К-К L-L S-S т-т Е — Е F —F М-М N-N U-U V—V G-G Н-Н 0-0 Р-Р W-W Х-Х Рукописный шрифт \mathcal Л —А В-В Т-I J-J Q-Q p-r 3>-Y Z-Z С-С D-D Х-К C — L 5-S Т-Т £—Е T-F At —М A-N U-С V—V Q-G Н-Н 0-0 Р-Р W-W А-Х Шрифт RSFS \mathrsfs з^-А ^-В -С 0-D S —Е Jf-F %-G J- I z-J ОС —К Jf-L g-0 ^-Р ^-Q —R у-3 <Т-Т -и у -V SC-X — Y ^-Z Шрифт Euler Script \mathscr Ю 'J X 1111 *!<О « > N ЬЭ 1111 tSJ с-1 СО С-С D-D Х-К £> —L S-S т-т 8-Е T-F М-М N-N U-U V—V 9-G Jf-H 0-0 Т-Р W-W Х-Х Шрифт Euler Fraktur \mathf так 21 а-А <вь-в С с —С ® 0 —G 3 i — I ЯЛпг-М 91n-N Do —0 е s - S Т t-T Uu-U 2) tj-Y 3 з-z о - 0 4-4 5 -5 6-6 DO —D £ e - E Sf-F J j J Я £ — К £ I-L <Pp-p O q -Q fRt-R 2Jo —V 2Dro -w Xy-X i - 1 2 - 2 з-з 7 -7 8 - 8 9-9
Г.6. Математические акценты и символы Математические акценты а \acute{a} а \gravefa} а \ddot{a} а \tilde{a} а \bar{a} а \check{a} а \hat{a} а \vec{a} а \breve{a} а \dot{a} а \mathring{a} Широкие математические акценты (amsfonts)3 \ч±&еЬ&ъ{(формула)} А W АА WW \ч±&еЪ±1&е{{формула)} А W АА WW W W W Двойные математические акценты (amsmath)4 \acute{\acute{X}} x \check{\check{X}} X \tilde{\tilde{X}} X \bar{\bar{X}} X \dot{\dot{X}} X \vec{\vec{X}} £ \breve{\breve{X}} x \ddot{\ddot{X}} it \dot{\bar{X}} \grave{\grave{X}} X \hat{\hat{X}} Дополнительные акценты из точек (amsmath) X \dddot{X} X \ddddot{X} Акценты в верхнем индексе (amsxtra) | (ХУ)“ (XY)\spbreve (ХУ)’” (XY)\spdddot (XK)V (XY)\spcheck (хур (XY)\sphat (AY)' (XY)\spdot (XK)'" (XY)\sptilde (ХУ)- (XY)\spddot Строчные греческие буквы5 a \alpha с \zeta Л \lambda w \varpi V \upsilon P \beta ‘П \eta V \mu p \rho Ф \phi У \gamma е \theta и \nu q \varrho V \varphi 6 \delta -д \vartheta е \xi a \sigma X \chi € \epsilon L \iota о 0 \varsigma ф \psi e \varepsilon К, \kappa 7Г \pi t \tau UJ \omega Прописные греческие буквы6 | г \Gamma Л \Lambda S \Sigma Ф \Psi д \Delta Е \Xi T \Upsilon Q \Omega 0 \Theta П \Pi Ф \Phi 3Без использования пакета amsfonts доступны только три первых размера из пяти. 4Пакет amsmath обеспечивает правильное позиционирование двойных акцентов. 5Не изменяют начертания при смене математического шрифта (кроме буквы о). 6Изменяют начертание при смене математического шрифта.
Прописные курсивные греческие буквы (amsmath) Г \varGamma Л \varLambda Л \varDelta S \varXi 0 \varTheta П \varPi Е \varSigma \varPsi Т \varUpsilon J? \var0mega Ф \varPhi Дополнительные греческие и еврейские буквы (amssymb) | F \digamma х \varkappa □ \beth П \daleth J \gimel Разные математические символы N \aleph V \forall / \prime d \partial fi \hbar 3 \exists /* \braceld <x> \infty г \imath V \nabla 4. \bracelu \lnot или \neg 3 \jmath \surd \bracerd A \triangle 1 \е11 т \top \braceru * \clubsuit Р \wp 1 \bot b \f lat 0 \diamondsuit 5? \Re z \angle \natural <7 \heartsuit 5 \Im 0 \emptyset « \sharp ♦ \spadesuit Дополнительные математические символы (amssymb) □ \ square или \Box7 \blacksquare ★ \bigstar 0 \lozenge или \Diamond7 ♦ \blacklozenge k \Bbbk V \triangledown ▼ \blacktriangledown h \hslash \ \backprime ▲ \blacktriangle D \Game z \measuredangle < \sphericalangle Э \eth $ \nexists J \Finv u \mho7 0 \varnothing c \complement / \checkmark7 / \diagup \diagdown ¥ \yen7 \circledS ® \circledR7 * \maltese7 Символы бинарных операций + + * * или \ast \cdot e \oplus • \bullet — - V \lor или \vee n \cap e \ominus о \circ ± \pm A \land или \wedge u \cup 0 \otimes 0 \bigcirc T \mp A \bigtriangleup l±J \uplus 0 \oslash \ \setminus X \times V \bigtriangledown П \sqcap © \odot t \dagger 4- \div \triangleleft и \sqcup о \diamond i \ddagger ★ \star > \triangleright П \amalg \wr 7Команда определена в пакете amsfonts.
Дополнительные символы бинарных операций (amssymb) 4- \dotplus Л \curlywedge © \circledcirc T \intercal < \lessdot Y \curlyvee \circledast X \ltimes > \gtrdot Л \barwedge О \circleddash XJ \rtimes □ \boxdot у \veebar \leftthreetimes < \lhd8 ffi \boxplus Л \doublebarwedge х \rightthreet imes > \rhd8 в \boxminus iyj \Cup или \doublecup * \divideontimes < \unlhd8 й \boxtimes fnl \Сар или \doublecap \smallsetminus > \unrhd8 \centerdot Символы отношений : или \colon -< \prec >- \succ ± \perp < < \preceq >2 \succeq | \mid > > C \subset D \supset II \parallel = = C \subseteq D \supseteq = \doteq < \leq или \le c \sqsubseteq □ \sqsupseteq \cong > \geq или \ge e \in Э \ni или \owns oc \propto \neq или \ne i- \vdash 4 \dashv Cx] \bowtie Ml \sim \simeq 1= \models \gg \approx x \asymp = \equiv \smile \frown Дополнительные символы отношений (amssymb) < \leqslant > \geqslant \backsim < \leqq > \geqq — \backsimeq < \lesssim > \gtrsim о \circeq < \lessapprox > \gtrapprox □X \eqcirc < \eqslantless > \eqslantgtr \eqsim \111 или \llless \ggg или \gggtr \approxeq \lessgtr \gtrless A \triangleq < \lesseqgtr < \gtreqless \bumpeq < \lesseqqgtr \gtreqqless о \Bumpeq \precsim \succsim A \vartriangle \precapprox >- \succapprox oc \varpropto \preccurlyeq \succcurlyeq 1 \shortmid \curlyeqprec \curlyeqsucc II \shortparallel □ \sqsubset8 □ \sqsupset8 M \Join8 \Subset 5) \Supset Э \backepsilon 8Команда определена в пакете amsfonts.
с: \subseteqq D \supseteqq rh \pitchfork \trianglelefteq > \trianglerighteq —O \multimap о \vartriangleleft > \vartriangleright \therefore ◄ \blacktriangleleft ► \blacktriangleright \because \smallsmile \smallfrown (J \between ih Wdash llh Wvdash 1= \vDash \risingdotseq \thicksim \fallingdotseq \thickapprox = \Doteq или \doteqdot Отрицания символов отношений \not< \not\prec \not\succ 2 \not\perp \not> \not\preceq \not\succeq и \not\mid \ne \not\subset \not\supset * \not\asymp £ \not\le <L \not\subseteq 2 \not\supseteq ir \not\parallel 2 \not\ge £ \not\sqsubset 2 \not\sqsupset \not\propto £ \not\equiv E \not\sqsubseteq 2 \not\sqsupseteq £ \not\models \not\approx \notin \not\ni e \not\smile ¥ \not\cong V \not\vdash 7* \not\dashv \not\frown * \not\doteq \not\sim \not\simeq Отрицания символов отношений (amssymb) \nless 2 \ngtr ф \nsim \nleqslant \ngeqslant \ncong \nleq \ngeq { \nmid i \nleqq \ngeqq t \nshortmid < \lneq \gneq If \nparallel \lneqq \gneqq к \nshortparallel \lvertneqq \gvertneqq Y- \nvdash \lnsim Ф \gnsim \nVdash \lnapprox \gnapprox К \nvDash \nprec \nsucc \nVDash \npreceq \nsucceq yS \ntriangleleft \precneqq >- \succneqq {/> \ntriangleright ~ф \precnsim Ф \succnsim \ntrianglelefteq \precnapprox \succnapprox \ntrianglerighteq £ \nsubseteq \nsupseteq £ \varsubsetneq c \subsetneq D \supsetneq J \varsupsetneq \nsubseteqq I \nsupseteqq \varsubsetneqq c \subsetneqq D \supsetneqq \varsupsetneqq
Символы стрелок9 <— \leftarrow или \gets i— \longleftarrow t \uparrow -> \rightarrow или \to —> \longrightarrow 1 \downarrow \leftrightarrow i—> \longleftrightarrow \updownarrow <= \Leftarrow <= \Longleftarrow ft \Uparrow \Rightarrow => \Longrightarrow \Downarrow О \Leftrightarrow <=> \Longleftrightarrow $ \Updownarrow н-> \mapsto ।—> \longmapsto \nearrow 2 \leftharpoonup \rightleftharpoons \searrow к \rightharpoonup \hookleftarrow у/ \swarrow Ч \1ef tharpo ondown c->. \hookrightarrow \nwarrow —7 \rightharpoondown <=> Дополнительные символы стрелок (amssymb)10 1 \Lsh r \Rsh \nleftarrow \Lleftarrow \Rrightarrow \nrightarrow «—( \leftarrowtail >—» \rightarrowtail \nLeftarrow «- \twoheadleftarrow \twoheadrightarrow \nRightarrow <-p \looparrowleft \looparrowright \nLeftrightarrow s= \leftleftarrows =4 \rightrightarrows \nleftrightarrow \leftrightarrows Т-» \rightlef tarrows <- — \dashleftarrow11 TT \upuparrows Ц \downdownarrows ---> \dashrightarrow11 о \curvearrowleft rv \curvearrowright \leftrightharpoons 0 \circlearrowleft 0 \circlearrowright \rightsquigarrow или 1 \upharpoonleft r \upharpoonright \leadsto11 J \downharpoonleft I \downharpoonright \leftrightsquigarrow Г.7. Математические разделители Размер Команда простая левая средняя правая Чуть больше нормального \big \bigl \bigm \bigr \big х 1,5 \Big \Bigl \Bigm \Bigr \big x 2 \bigg \biggl \biggm \biggr \big x 2,5 \Bigg \Biggl \Biggm \Biggr Переменный \left12 \right12 9Вертикальные стрелки относятся к разделителям, а остальные—к отношениям. 10Все дополнительные стрелки являются символами отношений. 11 Команда определена в пакете amsfonts. 12Команды \left и \right парные. Остальные—одиночные.
Символы-разделители т [ или \lbrack { или \lbrace <13 или \langle ] или \lbrack } или \rbrace >13 или \rangle ft It \lfloor \rfloor \uparrow \downarrow \updownarrow \Uparrow \Downarrow Wpdownarrow I или \vert \ | или Wert \backslash Большие символы-разделители14 15 ( \lgroup J \lmoustache j \rgroup \rmoustache | \arrowvert | \bracevert || \Arrowvert Дополнительные символы-разделители (amsfonts) \ulcorner \urcorner \llcorner j \lrcorner Г.8. Математические операторы и дроби Операторы переменного размера15 £ \surn п А \bigcap о О \bigodot п п \prod и и \bigcup ® 0 \bigotimes II II \coprod U U \bigsqcup ф ф \bigoplus V V \bigvee Л Л \bigwedge и и \biguplus I / Mnt16 <Ь \oint16 / / \smallint17 Дополнительные операторы переменного размера (amsmath) \iint яя Ш/ Х1шм \iiint \idotsint 13Используется как разделитель после команды управления размером. 14Доступны, начиная с размера \Big. 15Крупный размер используется в стиле \displaystyle, а мелкий — в других стилях. 16Индексы оформляются в режиме \nolimits. 17Команда \smallint принадлежит к данной группе чисто формально. Фактически ее следует использовать в качестве математического символа (${\smallint}$), а не оператора.
Дроби и биномиальные коэффициенты (amsmath)18 \±хьс{{числ.)}{{знам.)}18 19 \tfr &с{{числ.)}{{знам.)} $\frac{a+b}{x-y}$ $\tfrac{a+b}{x-y}$ a -f- b q -f- b x-У x-y a+b x-y a+b a + b x~y x-y \&±хьс{{числ.)}{{знам.)} $\dfrac{a+b}{x-y}$ a + b X-y \Ь1пош{('числ.)}{(знал(.)}19 \ t binom{ {числ.)}{(знам.)} $\binom{n}{m}$ $\tbinom{n}{m}$ a) u) (”) Э 3 '—у 3^ \dbinom{('4ucji.)}{(3HaA<.)} $\db inom{n}{m}$ (n\ Генератор дробей (amsmath) | \genfгас{(л. разд.){п. разд.)}{{толщина)}{{стиль)}{{числ.)}{{знам.)} Здесь {левый разделитель) и {правый разделитель) задают символы-разделители, обрамляющие дробь; {толщина) задает толщину горизонтальной линии; {стиль) определяет стиль дроби: пусто означает переменный стиль (как у \frac), 0—\displaystyle, 1 —\textstyle, 2—\scriptstyle, 3—\scriptscriptstyle. Примеры: $\genfracO{H2ptH0}{a+bHx+y}\quad \genf гас [] {OptHlHA}{B}\quad \genfrac<>{0pt}{}{a}{b}$ Цепные дроби (amsmath) | \cf гас [{позиция)] {{числитель)} {{знаменатель)} Здесь {позиция) задает способ горизонтального выравнивания числителя дроби (1, с, г; по умолчанию с). Пример: $\cfrac{l}{\sqrt 2 + \cfrac{l}{\sqrt 2 + \cfrac{l}{\sqrt 2 + \dotsb}}}$ 18 В стандартном HTf^X’e определена только команда \frac. Остальные определены в пакете amsmath. Команды, унаследованные от Plain-Т^Х’а, здесь не приводятся, поскольку они считаются устаревшими. 19Оформление зависит от текущего математического стиля. В примере показаны варианты оформления в стилях \scriptscriptstyle, \scriptstyle, \textstyle и \displaystyle.
Операторы и дроби среднего размера (nccmath)20 \medmath{ (формул а) }21 $\medmath{\cfrac{l}{\sqrt 2 + \cfrac{l}{\sqrt 2 + \cfrac{l}{\sqrt 2 + \dotsb}}}}$ \medop{(оператор переменного размера}}22 $\sum_{i=l}''n \medop\sum_{i=l}''n n n n n {\displaystyle EXi 5X=i zLi-i 52 У2 \sum\nolimits_{i=l}~n}\quad 1=1 i=i t=i \sum\limits_{i=l}''n \displaystyle \medop\sum_{i=l}''n \sum_{i=l}~n$ \medint{(оператор интеграла)}23 //HU ffJf-ff X X Y $\int_{i=l}~n\ \medint\int_{i=l}~n\ {\displaystyle \int_{i=l}~n}\quad \int\limits_{i=l}''n\ \displaystyle \medint\int\limits_{i=l}~n\ \int\limits_{i=l}~n$ $\medint\iiint_X\ \medint\idotsint_X\ \medint\oint_Y\quad \medint\iiint\limits_X\ \medint\idotsint\limits_X\ \medint\oint\limits_Y$ \mfrac {.(числитель)}{.{знаменатель}} \mb±nom{ (числитель)} {(знаменатель)} a+b a + b a + Ь x + y x + у x + у $\tfrac{a+b}{x+y} \mfrac{a+b}{x+y} \dfrac{a+b}{x+y}\quad \tbinom nm \mbinom run \dbinom nm$ 20 Эти команды уменьшают кегль формулы примерно в 1,2 раза, позволяя создавать математические операторы и дроби, размер которых меньше, чем в стиле \displaystyle, но больше, чем в \textstyle. 21 Устанавливает стиль \displaystyle при выводе (формулы). 22о За исключением интегралов. 23За исключением \smallint.
Стандартные математические функции24 \arccos \cos \csc \exp \ker \limsup24 25 \min25 \sinh \arcsin \cosh \deg \gcd25 Mg \ln \Pr25 \sup25 \arctan \cot \det25 \hom \lim25 \log \sec \tan \arg \coth \dim \inf25 \liminf25 \max25 \sin \tanh Дополнительные математические функции (amsmath) | inj lim \injlim25 Нцх \varinjlim25 lim \varliminf25 proj lim \projlim25 l<im \varprojlim25 lim \varlimsup25 Дополнительные математические функции [russian] | \arctg \sh \ctg \tg \cosec P \Prob \arcctg \ch \cth \th26 D Wariance Генератор математических функций (amsmath) \operatorname {{имя функции)} \operatorname*{(iM^ функции)} Первая команда генерирует функцию с оформлением индексов в стиле \nolimits, а последняя—в стиле \displaylimits. Примеры: $\operatorname{sgn} x\quad sgnz ess^sup$(z) \displaystyle\operatorname*{ess\,sup} _{x\in X} \Phi(x)$ В пакете ncclatex у этой команды есть синоним—\rnop. Тот же пример: $\mop{sgn} x\quad sgn х es^suP $(x) \displaystyle\mop*{ess\,sup} _{x\in X} \Phi(x)$ Объявление новой математической функции (amsmath) | \DeclareMathOperator {{команд а)} {{имя функции)} \DeclareMath0perator*{(KOAtaHda)}{(uA^ функции)} Первая команда создает обычную функцию, последняя — функцию с индексами, оформляемыми в стиле \displaylimits. Пример: \DeclareMathOperator{\Lim}{Lim} 24Имя функции совпадает с именем команды. Например, $\sin х$ —> sinх. 25Индексы оформляются в стиле \displaylimits. 26Конфликтует с символом \th из схемы кодировки Т1.
Опции управления стилем вывода индексов (amsmath) | Следующие опции включают режим \displaylimits или выключают его (если начинаются с по...) при загрузке пакета amsmath для следующих групп операторов (опции по умолчанию подчеркнуты): • для интегралов— intlimits, nointlimits; • для операторов типа \sum— sumlimits, nosumlimits; • для математических функций типа \max—name limits, nonamelimits. Г.9. Разные математические конструкции Индексы "{(верхний индекс)} или \зр{(верхний индекс)} _{(нижний индекс)} или \зЪ{(нижний индекс)} х2п ху2 х2п хУ1 $x~{2n}\quad x''{y''2}\quad х_1Л\а1рЬа$\\ $x_{2n}\quad x~{y_l}\quad x~\alpha_l$ Производные | и" -h аи' = f и" + аи' — f $u’’+au’=f\quad u~{\prime\prime}+au~\prime=f$ Текст в формуле27 28 | 7Вх ИЛИ 1Вых $I_{\textnormal{Bx}J\quad\text{HHH} \quad I_{\textnormal{Bbix}}$ Корни | \sqrt [(степень)] {{подкоренное выражение)} $\sqrt{x+y}\quad \sqrt[n]{2}$ Vх + У Сдвиг показателя степени в корнях (amsmath) I \lef t root {(число)} \иргъъхА.(число)}2* Параметр задает сдвиг в специальных малых математических единицах измерения mu (18mu = lem). Пример: f- $\sqrt [\beta] {k}\quad vk vk \sqrt [\lef troot{2}\uproot{4}\beta] {k}$ 27Команда \text определена в пакете amstext. 28Эти команды используются только в дополнительном параметре команды \sqrt.
Многоточия29 \ldots или \dots30 \cdots : \vdots \ddots Дополнительные многоточия (amsmath) | Пакет amsmath определяет «умную» команду \dots, которая анализирует следующий символ и выбирает подходящий вариант многоточия: \cdots или \ldots (об отечественных правила набора см. с. 170). Дополнительные команды применяются в тех случаях, когда многоточие заканчивает формулу. Использование: \dotsb — с бинарными операциями или отношениями (ai + 02 + • • •); \dotsm — как операция умножения (Н1Н2 • • •); \dotsc — со знаками пунктуации (Fi, F2,..., некоторый текст)] \dotsi — с интегралами (J • •); \dotso — в остальных случаях31. Формула в рамке (amsmath) \boxed{ (формула}} а2 Ь2 $\boxed{\fгас{х~2}{а~2} + \frac{y~2}{b~2} = 1}$ Разделитель над и под формулой а + b + с \overleftarrow{a+b+c} а + b + с \overrightarrow{a+b+c} а + b + с \overline{a+b+c} а + b + с \overbrace{a+b+c} а + b + с \underbrace{a+b+c} а + b + с \underline{a+b+c} п раз т раз $\overbrace{l,\dots,l}~{\text{$n$ раз}}$ $\underbrace{0,\dots,0}_{\text{$m$ раз}}$ 29 Все многоточия этой группы имеют категорию \mathinner. 30В стандартном Т^ТвХ’е команды \ldots и \dots эквивалентны. 31 Команду \dotso можно использовать в текстовой моде.
Дополнительные стрелки сверху и снизу (amsmath) | а + b + с \underleftarrow{a+b+c} а + Ъ + с \overleftrightarrow{a+b+c} а + b + с \underrightarrow{a+b+c} а + b + с \underleftrightarrow{a+b+c} Формула над и под формулой \stackrel{($opAt?/./ia сверху)}{{базовая формула)} \\ш&егге!{{базовая формула)}{.{формула снизу)}32 X Y X —> Y а $X\stackrel{a’}\longrightarrow Y\quad X\underrel\longrightarrow{a}Y$ Стрелки переменной длины (amsmath) \xlef tarrow [{формула снизу)] {{формула сверху)} \xrightarrow [{формула снизу)] {{формула сверху)} Т $A\xleftarrow{n+\mu-l} В \xrightarrow[T]<n\pm i-l}C$ Индексы над и под формулой (amsmath) \overset {(индекс)}{{формула)} \ under set {{индекс)}{{ формула)} W{X) W{X) W{X) $\overset\circ{W}(X)\quad \underset\bullet{W}(X)\quad {\mathop{W}\limits~\circ _\bullet}(X)$ Индексы слева и справа (amsmath) \ side set {{индексы слева)} {{индексы справа)} {{оператор)}33 $\displaystyle \sideset{}{ ’ }\sum_{i=l}''{n} \quad\sideset{_*~*}{_*~*}\prod$ 32 Команда \underrel определена в пакете nccmath. 33Команда \sideset применяется к операторам \surn и \prod.
Многострочные индексы (amsmath) | \substьск{{столбец индексов)} \begin{ sub array} {(позиция)} {столбец индексов) \end{ subarray} Параметр {позиция) задает горизонтальное выравнивание (1, с, г). Пример: Е п $\displaystyle \sum_{\substack{l\le i\le n,\\i\ne j}}\quad 1<г<п, гбА, 0<j<n \prod_{\begin{subarray}{l} i\in A,\\O<j<n \end{subarray}}$ Сравнение по модулю (amsmath) \pmod{($opA«/./ia)}34 \то&{{формула)} \pod{ {формула)} , к / j \ $\gcd(n,m\bmod n),\quad gcdin, m mod n), x = у (mod n), . , r n ч , r n 4 v f // 7 x=y\pmod{n},\quad x=y\mod{n},\quad x = y mod n, x — у (n) \ , r n * * ’ y v 7 x=y\pod{n}$ Логические связки (amsmath)35 | X <=> Y X \iff Y36 X => Y X \implies Y X & У X \And Y X <= Y X \impliedby Y Создание новых символов отношений (nccmath) ] \mrel{ {столбец)} х^у $х \mrel{<\\[-.7ех]>} у$ Команда \ smash | \ smash{ (формула)} Обнуляет высоту и глубину формулы при выводе. В пакете amsmath у команды добавлен необязательный параметр, принимающий значения t (обнулить только высоту) или b (обнулить только глубину). Пример: >— $\sqrt{x_j}\quad vXi Xi \sqrt{\smash[b]{x_j}}$ 34Команда \pmod стандартная. В пакете amsmath расстояние между операндом и операцией сравнения по модулю уменьшено вдвое в режиме, отличном от выносного. 35 У команд данной группы отступы увеличены на величину широкого пробела по сравнению с соответствующими стрелками. 36Команда \iff стандартная.
Фантомы37 | \рЬапЪот{{формула}} \ЬрЬапЪот{{формула)} \чрЬапЪот{{формула)} Команда \phantom формирует пустой бокс, совпадающий по размерам с {формулой}. Команда \hphanom вставляет горизонтальную отбивку, величина которой равна ширине {формулы}. Команда \vphantom вставляет подпорку, высота и глубина которой равны высоте и глубине {формулы}. Пример: о W 1 2 ${\stackrel\circ WJXvphantom W_2~l$ Г.10. Матрицы Матрицы (amsmath)38 АВС D Е F А В D Е FJ А В С D Е F. АВС D Е F А В С\ def] АВС D Е F \begin{matrix} А & В & С\\ D It Е & F \end{matrix} \begin{pmatrix} А & В & С\\ D & Е & F \end{pmatrix} \begin{bmatrix} А & В & С\\ D & Е & F \end{bmatrix} \begin{vmatrix} А & В & С\\ D & Е & F \end{vmatrix} \begin{Bmatrix} А & В & С\\ D & Е & F \end{Bmatrix} \begin{Vmatrix} А & В & С\\ D & Е & F \end{Vmatrix} Альтернатива (amsmath) \begin{cases} (содержимое) \end{cases} x < О, x > 0. = j J’ $f(x)=\begin{casesj -1,& x<0,\\ \hfill 1,& x\ge 0.\end{cases}$ 37Фантомы, а также команду \smash, можно использовать вне математической моды. Но если такая команда начинает абзац, перед ней следует вставить пустой бокс \mbox{}. 38Максимальное число столбцов в матрицах задается счетчиком MaxMatrixCols. По умолчанию его значение равно десяти.
Обрамление матриц39 А D В С\ Е F/ $\left< \begin{matrix}A&B&C\\ D&E&F\end{matrix} \right>$ Многоточия в матрицах (amsmath) \hdotsf or [{растяжка}] {.{число столбцов}} Параметр {растяжка) задает степень растяжки точек в многоточии по сравнению с обычной величиной. Пример: А В С D Е $\begin{matrix}A&B&C&D\\ E&\hdotsfor[2]{3}\end{matrix}$ Окружение smallmatrix (amsmath) A В \ C D) $\bigl(\begin{smallmatrix}A&B\\ C&D\end{smallmatrix}\bigr)$ Матрицы среднего размера (nccmath) \begin{medsize} {формула) \end{medsize} \begin{mmatrix} {содержимое) \end{mmatrix} Fa b! |c d\ $\begin{medsize}\begin{bmatrix}A&B\\ C&D\end{bmatrix}\end{medsize}$ $\bigl(\begin{smallmatrix}a&b\\ c&d\end{smallmatrix}\bigr)\quad \Bigl(\begin{mmatrix}a&b\\ c&d\end{mmatrix}\Bigr)\quad \begin{pmatrix}a&b\\c&d\end{pmatrix}$ Г.11. Математические символы пакета stmaryrd Простые символы j I \lbag j \rbag & \binampersand I \Lbag 5 \Rbag \bindnasrepma [[ \llceil ]] \rrceil d \llparenthesis []_ \llfloor j] \rrfloor D \rrparenthesis © \varcopyright 39Если нужно обрамление только с одной стороны, то в качестве парного разделителя используйте точку: $\left\{ . . .\right.$.
Символы бинарных операций -е- \minuso Ф \baro A \Yup // \sslash w \bbslash Y \Ydown ff \fatslash \fatbslash -< \Yleft <э \leftslice о \rightslice \Yright Y \varcurlyvee Л \varcurlywedge О \varbigcirc ф \varoplus e \varominus о \varotimes о 9 \fatsemi 0 \varodot □ \boxdot40 db \moo \varoast a \boxast А \nplus © \varocircle h \boxcircle X \vartimes 0 \varoslash и \boxslash Ф \obar Ф \varobar Ш \boxbar О \obslash 0 \varobslash N \boxbslash © \olessthan © \varolessthan 0 \boxbox © \ogreaterthan \varogreaterthan □ \boxempty © \ovee © \varovee □ \oblong © \owedge © \varowedge 0 \talloblong Л \curlywedgeuparrow Y \curlyveeuparrow III \interleave \curlywedgedownarrow Y \curlyveedownarrow \merge Символы отношений \trianglelefteqslant \tгianglerighteqslant \ntrianglelefteqslant \ntrianglerighteqslant 6 \inplus 3 \niplus (+ \subsetplus +) \supsetplus G \subsetpluseq Э \supsetpluseq Стрелки k=> \Mapsto => \Longmapsto \shortlef tarrow -> \shortrightarrow \ \nnwarrow / \sswarrow i \lightning \Mapsfrom $=l \Longmapsfrom T \shortuparrow X \shortdownarrow / \nnearrow \ \ssearrow <—। \mapsfrom <—i \longmapsfrom о— \leftarrowtriangle —> \rightarrowtriangle <h> \lef t right ar rowtriangle \leftrightarroweq 40Команда \boxdot определена также в пакете amsfonts.
Перечеркивание стрелок \arrownot{(короткая стрелка)} \longarrownot{(длинная стрелка)} \Arrownot{{двойная стрелка)} \Longarrownot{(^zzHHaji дв. стрелка)} Ф <5 $\arrownot\rightarrow\qquad \longarrownot\longleftarrow\qquad \Arrownot\Rightarrow\qquad \Longarrownot\Longleftarrow$ | Символы-разделители | 'о b to $\left\llbracket\, \begin{matrix}A&B\\C&D\end{matrix} \,\right\rrbracket$ Операторы переменного размера V \bigtriangledown Л Д \bigtriangleup А [+] \bignplus Y Y \bigcurlyvee || || Л \bigcurlywedge ||| || П П \bigsqcaP □ |2 \bigparallel \biginterleave \bigbox Г. 12. Специальные шрифты Символы международного фонетического шрифта \usefont{U}{ipa}{(m|^)}{(n|zi|sZ)} Код 0 1 2 3 4 5 6 7 8 9 A в c D E F "Ox P a a n Л b b J* 6 0 0 9> c d d "lx cf <1 <fe d D Э & Э E 3 3^ G 9 ST G 7 "2x X hj h fi 6 4 i 1 I I I . J t 1 4 "3x I b X X П) Ш 4 л 0 II N 0 e Э co GO "4x CO Ф г г I i 1 R к § J 1 a "5x t tf * 9 u и и U p M X Y zi "6x 3 3 ? S s ? r-> > 1 । 1 ± T —1 H "7x T A A V < > ° о c — - <L
Символы шрифта WASY \usef ont{U}{wasy}{(m| bx\ Код 0 1 2 3 4 5 6 7 8 9 А в с D Е F "Ох д <1 < > > 0 *2? Ф ♦ J J О "1х ◄ ► £2 и Т 9 сГ о © ОС < 0 "2х • О 0 О « D 5 < > -А. © о © "Зх и м □ о и п + о о О □ □ < > "4х % % * Ф о * V 4 (] D А ▼ "5х г э сГ (Р г h 6 <5 е « X о "6х пр пр х71 X %0 Ь р д э № ш ш "7х Н н ! □ □ А Символы шрифта MVS \usefont{U}{mvs}{m}{n}41 Код 0 1 2 3 4 5 6 7 8 9 А в с D Е F "2х 9 А А д ; ( ) X + 9 - / "Зх 0 1 2 3 4 5 6 7 8 9 -> => о о "4х @ 0 и се € / а — ‘й” cd А> ш □ □ "5х — X а 0 7 4 (д IS1 / / = / "6х © >- /1 € € € И - г ф ; 0 "7х — X И Л ♦ о в У 9 «г "8х «Г <& ф + f t с? @ 8L □ "9х □ • • • — □ □ L I О т L I Т "Ах ft а?) € $ $ о ® © © № "Вх z=\ гЗ □ и ◄ ► ►1 ►>1 ▲ ▼ ▲ I © £ "Сх О © $ 9 О* г э 3 ч* 9 б А А ш "Dx в ши ет \Х/ угу Ух/ Ух/ УПо/ \*_о/ УХТУ \^у \±1 □ □ "Ex т б □ Q я / Ъ & И □ □ □ □ "Fx А Р □ □ □ □ □ □ □ □ □ □ А 41 Об определении шрифта MVS см. с. 324.
Символы шрифта IFSYM \usef ont{U}{if Код 0 1 2 3 4 5 6 7 8 9 А в с D Е F "Ох И j* |С^| □ д □ □ 3 О X "1х ▲ о А ▲ Zk А )( 1 А 1 Л а "2х _г _п_ т _TL 1_Г J L п Г г - • "Зх 0 1 г 3 ч 5 6 п 8 9 1 Utt <( )> Символы шрифта IFWEA \usefont{U}{ifwea}{(m|6z)}{n} Код 0 1 2 3 4 5 6 7 8 9 А в с D Е F "Ох о о е © • • i I 1 1 i "1х * • И! //// //// г* * с© & & "2х £ "Зх 1 1 1 1 1 1 ч 1 Символы шрифта IFCLK \usefont{U}{if Код 0 1 2 3 4 5 6 7 8 9 А в с D Е F "Ох © © © © © © © © © © © © © В © © "1х © В © © © © © © © © © © © © © © "2х © О в © © © © © © © © © © © в © "Зх в © © © © © © © © © в © © © в © "4х © © © © © © © © © © © © © © © в "5х © © © © © © © © © © © © © © © © "6х © © © © © © © © © © © © © © © в "7х © В © © © © © © © © © в © © © © "8х © © © © © © © © © © © © © © в © "9х © а 0 О э о ©
Символы шрифта DING \usefont{U}{ding}{m}{n} Код 0 1 2 3 4 5 6 7 8 9 А в с D Е F "Ох X -А >< © ж и -» "1х % Жэ ©> <о & & <€□ •> "2х <• у X X х ф 4" > + fl t t ф "Зх 4* 4* ф 4» + ☆ ★ ☆ о ☆ ★ ★ ★ ★ "4х ☆ * * * ''Г ж ж * ж ж * *ь * * * "5х о $ & о * в я ф V»/. * $ \»z * "6х е • о * о о □ □ □ О □ □ о А ▼ "7х ф ♦♦♦ » < 1 1 1 ||ф ЯФ Ьф» о Символы шрифта ZapfDingbats \usefont{U}{pzd}{m}{n} Код 0 1 2 3 4 5 6 7 8 9 А в С D Е F "2х X- Sc ъ*- © ® ж и US’ Zd ©> "Зх & сЭ •> ✓ X ж X X + + 4" •> t t "4х Ф $ + *т* * ж ♦ о ★ ☆ о ★ ★ "5х JV * * ж ж * * # * * * * * А "6х * « о е $ $ 7|х ❖ ж • о □ "7х □ □ а ▲ ▼ ♦ ♦♦♦ » 1 1 1 6 9 66 99 "Ах !Г ф • ф • > 4 ♦ V 4 ® ® ® ® "Вх ® @ ® ® ® ® о © © о © © & © © "Сх ф ® ® ® ® ® ® ® о © © о © О "Dx о © © ф —> жж *> А ->- -> —► —► 'ф "Ex ШЯ >► >> > ^ф Я* » о О о о о о "Fx о о » А» » —> •ж >♦ =^>
Литература [1] Гиленсон П. Г. Справочник технического редактора. — 2-е изд., испр. — М.: Книга, 1978. [2] Гуссенс М., Миттельбах Ф., Самарин А. Путеводитель по пакету DT^X и его расширению DTeX2£.— М.: Мир, 1999. [3] Гуссенс М., Ратц С., Гурари Э., Мур Р., Съютор Р. Путеводитель по пакету JATgX и его web-приложениям. —М.: Мир, 2001. [4] Гуссенс М., Ратц С., Миттельбах Ф. Путеводитель по пакету DTj^X и его графическим расширениям. —М.: Мир, 2002. [5] Кнут Д. Е. Все npoTgX: Пер. с англ. М.В. Лисиной. —Протвино: АО RDTgX, 1993. [6] Котельников И. А., Чеботарев П. 3. lATgX по-русски. — 3-е изд., перераб. и доп. — Новосибирск: Сибирский хронограф, 2004. [7] Львовский С.М. Набор и верстка в системе DTeX. —3-е изд., испр. и доп.— М.: МЦНМО, 2003. [8] Мильчин А. Э. Издательский словарь-справочник. — 2-е изд., испр. и доп.— М.: ОЛМА-Пресс, 2003. [9] Роженко А. И. Руководство по работе в системе NCC-DT^X: В 2-х ч. —Новосибирск: Изд. ВЦ СО РАН, 1993. [10] Спивак М. Восхитительный TfeX: Руководство по комфортному изготовлению научных публикаций в пакете Лд4<5-ТеХ: Пер. с англ. И. А. Маховой.— М.: Мир, 1993. [11] Справочная книга редактора и корректора: Редакционно-техническое оформление издания / Сост. и общ. ред. А.Э. Мильчина. — 2-е изд., перераб.—М.: Книга, 1985. [12] Acrobat Reader. —http://www.adobe.com/acrobat/. [13] Comprehensive TgX Archive Network. —http://www.ctan.org/. [14] Ghostscript, Ghostview and GSview. — http://www.cs.wisc.edu/~ghost/. [15] Lamport L. DT^X. A Document Preparation System. User’s Guide and Reference Manual. — Reading (Massachusetts) etc.: Addison-Wesley, 1985. [16] Lamport L. DT^X. A Document Preparation System. User’s Guide and Reference Manual. —2nd ed. —Reading (Massachusetts) etc.: Addison-Wesley, 1994. [17] MiKTeX Project Page. —http://www.miktex.org/. [18] PsCyr. — itp'./lftp.vsu.ru/pub/tex/font-packs/pscyr/. [19] WinEdt Shell. —http://www.winedt.com/.
Предметный указатель Курсивом в круглых .скобках указано имя класса или пакета, в котором определяется нестандартная команда или окружение. Маркер [russian] означает, что команда определяется при загрузке пакета babel с опцией russian. После переменных указан в скобках их тип: длина или размер. \и, 91, 343 \!, 92, 190, 343 \", 344 \#, 344 \$, 344 \7., 344 \&, 344 V, ПО, 344 \(, 155 \), 155 \,, 85, 92, 343 \-, 49, 86, 109 \-, (extdash), 92 \-- (extdash), 88, 344 \ (extdash), 89, 344 \-/ (extdash), 87, 344 \., 344 V, 62 \:, 92, 343 \;, 92, 343 \<, ПО \=, 108, 344 \=, (extdash), 85, 92 \=/ (extdash), 87, 344 \== (extdash), 88, 344 \=== (extdash), 89, 344 \>, 108 \0, 93 \[, 171 \\, 98, 135 \], 171 V, 344 \_, 344 \‘, 110, 344 \{, 344 \}, 344 \1, 354 V, 344 ~, 85 \а>, 108 \а=, 108 \а‘, 108 \АА, 345 \аа, 345 \abstractstyle (псс), 264 \accentedsymbol (amsxtra), 162 \acfamily (pscyr), 322 \acknow (ncclatex), 255 \acute, 349 \addbox (nccboxes), 119 \addtоcontents, 243 \addtocounter, 121, 285 \addtoendnotes (endnotes), 297 \addtolength, 38, 282 \AddToShipoutPicture (eso-pic), 310 \addvspace, 126 \adfamily (pscyr), 322 \AE, 345 \ae, 345 \aftergroup, 317 \afterpage (afterpage), 128, 231, 329 \AfterTheoremHeaderChar (nccthm), 201 \AfterTheoremHeaderSkip (nccthm), 201 \aleph, 350 \allinethickness (eepic), 226 \allowdislaybreaks (amsmath), 177 \alloweqbreak (ncc), 257 \Alph, 284 \alph, 284
\alpha, 349 \Alphlatin (ncclatex), 82, 284 \alphlatin (ncclatex), 82, 284 \amalg, 350 \AmS (amsmath), 91 \AmSclassification (sibjnm), 84 \And (amsmath), 361 \and, 71 \angle, 350 \apar (nccthm), 199 \AparStyleParameters (nccthm), 201 \appendix, 76, 239 \applystyle (nccsect), 316, 320 \approx, 351 \approxeq (amssymb), 351 \aqfamily (pscyr), 322 \arabic, 284 \arc (eepic), 226 \arccos, 357 \arcctg [russian], 357 \arcsin, 357 \arctan, 357 \arctg [russian], 357 \arfamily (pscyr), 322 \arg, 357 \arraycolsep, 171 \arraycolsep (размер), 133, 138, 193 \arrayrulewidth (размер), 134 \arraystretch, 135 \Arrownot (stmaryrd), 365 \arrownot (stmaryrd), 365 \Arrowvert, 354 \arrowvert, 354 \Asbuk [russian], 284 \asbuk [russian], 284 \ast, 350 \asymp, 351 \AtPageCenter (eso-pic), 310 \AtPageLowerLeft (eso-pic), 310 \AtPageUpperLeft (eso-pic), 310 \AtTextCenter (eso-pic), 310 \AtTextLowerLeft (eso-pic), 310 \AtTextUpperLeft (eso-pic), 310 \author, 70, 263, 265 \AuthorBeforeTitle (ncc), 82, 257 \b, 344 \backepsilon (amssymb), 351 \backmatter, 241, 258, 287 \backprime (amssymb), 350 \backsim (amssymb), 351 \backsimeq (amssymb), 351 \backslash, 169, 354 \bar, 349 \baro (stmaryrd), 364 \barwedge (amssymb), 351 \baselineskip (размер), 50 \baselinestretch, 51 \Bbbk (amssymb), 350 \bbslash (stmaryrd), 364 \because (amssymb), 352 \beforechapter (nccsect), 245, 320 \begin, 23, 37, 281 \beta, 349 \beth (amssymb), 350 \between (amssymb), 352 \bf, 341 \bfdefault, 321 \bff (nccsect), 202, 313 \bfseries, 60, 341 \bibindent (размер), 73 \bibindex (ncc), 264 \bibitem, 77 \bibliststyle (ncc), 258 \Big, 160, 353 \big, 160, 353 \bigbox (stmaryrd), 365 \bigcap, 169, 354 \bigcirc, 350 \bigcup, 169, 354 \bigcurlyvee (stmaryrd), 365 \bigcurlywedge (stmaryrd), 365 \Bigg,160, 353 \bigg, 160, 353 \Biggl, 353 \biggl, 353 \Biggm, 353 \biggm, 353 \Biggr, 353 \biggr, 353 \biginterleave (stmaryrd), 365 \Bigl, 353 \bigl, 353 \Bigm, 353
\bigm, 353 \bignplus (stmaryrd), 365 \bigodot, 354 \bigoplus, 354 \bigotimes, 354 \bigparallel (stmaryrd), 365 \Bigr, 353 \bigr, 353 \bigskip, 126 \bigskipamount (длина), 126 \bigsqcap (stmaryrd), 365 \bigsqcup, 354 \bigstar (amssymb), 350 \bigtriangledown (stmaryrd), 350, 365 \bigtriangleup (stmaryrd), 350, 365 \biguplus, 354 \bigvee, 354 \bigwedge, 354 \binampersand (stmaryrd), 363 \bindnasrepma (stmaryrd), 363 \binom (amsmath), 184, 355 \blacklozenge (amssymb), 350 \blackqed (nccthm), 201 \blackqedsymbol (nccthm), 201 \blacksquare (amssymb), 350 \blacktriangle (amssymb), 350 \blacktriangledown (amssymb), 350 \blacktriangleleft (amssymb), 352 \blacktriangleright (amssymb), 352 \bm (bm), 157, 190, 330 \bmod, 361 \boldsymbol (amsbsy), 161 \bookeditor (ncc), 258 \bot, 350 \bowtie, 351 \Box (amsfonts), 350 \boxast (stmaryrd), 364 \boxbar (stmaryrd), 364 \boxbox (stmaryrd), 364 \boxbslash (stmaryrd), 364 \boxcircle (stmaryrd), 364 \boxdot (amssymb), 351 \boxdot (stmaryrd), 364 \boxed (amsmath), 359 \boxempty (stmaryrd), 364 \boxminus (amssymb), 351 \boxplus (amssymb), 351 \boxslash (stmaryrd), 364 \boxtimes (amssymb), 351 \braceld, 350 \bracelu, 350 \bracerd, 350 \braceru, 350 \bracevert, 354 \breakafterheader (nccthm), 200 \breve, 349 \bstrut (nccboxes), 153, 279 \bullet, 350 \Bumpeq (amssymb), 351 \bumpeq (amssymb), 351 \C, 344 \c, 344 \Cap (amssymb), 351 \cap, 169, 350 \capitalacute (textcomp), 345 \capitalbreve (textcomp), 345 \capitalcaron (textcomp), 345 \capitalcedilla (textcomp), 345 \capitalcircumflex (textcomp), 345 \capitaldieresis (textcomp), 345 \capitaldotaccent (textcomp), 345 \capitalgrave (textcomp), 345 \capitalhungarumlaut (textcomp), 345 \capitalmacron (textcomp), 345 \capitalnewtie (textcomp), 345 \capitalogonek (textcomp), 345 \capitalring (textcomp), 345 \capitaltie (textcomp), 345 \capitaltilde (textcomp), 345 \caps (soul), 96 \caption, 131, 205, 231, 245, 295, 315 \captionstyle (nccsect), 246 \captiontagstyle (nccsect), 246 \CaptionTagSuffix (nccsect), 315 \captionwidth (nccsect), 246 \cbox (nccboxes), 137, 153 \cboxstyle (nccboxes), 138 \cdashline (arydshln), 152 \cdot, 170, 350 \cdots, 170, 359 \centerdot (amssymb), 351 \centering, 51, 99, 124, 232 \cfoot (nccfancyhdr), 249
\cfrac (amsmath), 355 \ch [russian], 357 \changepage (chngpage), 309 \changetext (chngpage), 309 \chapter, 239, 241 \ chaptermark, 242 \ChapterPrefixStyle (ncc), 258 \chead (nccfancyhdr), 249 \check, 349 \checkmark (amsfonts), 350 \chi, 349 \circ, 167, 350 \circeq (amssymb), 351 \circle, 222 \circlearrowleft (amssymb), 353 \circlearrowright (amssymb), 353 \circledast (amssymb), 351 \circledcirc (amssymb), 351 \circleddash (amssymb), 351 \circledR (amsfonts), 350 \circledS (amssymb), 350 \cite, 79 \cleardoublepage, 127 \clearpage, 127, 230 \ClearShipoutPicture (eso-pic), 310 \cline, 135, 144 \clubsuit, 350 \cofamily (pscyr), 322 \colon, 351 \color (color), 211 \colorbox (color), 212 \columnsep (размер), 47, 259 \columnseprule (размер), 47, 259 \columnwidth (размер), 47 \complement (amssymb), 350 \cong, 351 \coprod, 354 \copyright, 344 \copyrighttable (псс), 264 \cos, 357 \cosec [russian], 357 \cosh, 357 \cot, 357 \coth, 357 \countstyle (dcounter), 82, 197 \cpfamily (pscyr), 322 \cref (ncclatex), 83, 254 \crfamily (pscyr), 322 \cropbox (ncccropbox), 332 \cropmark (ncccropmark), 333 \csc, 357 \ctg [russian], 357 \cth [russian], 357 \Cup (amssymb), 351 \cup, 169, 350 \curlyeqprec (amssymb), 351 \curlyeqsucc (amssymb), 351 \curlyvee (amssymb), 351 \curlyveedownarrow (stmaryrd), 364 \curlyveeuparrow (stmaryrd), 364 \curlywedge (amssymb), 351 \curlywedgcdownarrow (stmaryrd), 364 \curlywedgeuparrow (stmaryrd), 364 \curvearrowleft (amssymb), 353 \curvearrowright (amssymb), 353 \CYRA, 347 \cyra, 347 \CYRABHCH, 347 \cyrabhch, 347 \CYRABHCHDSC, 347 \cyrabhchdsc, 347 \CYRABHDZE, 347 \cyrabhdze, 347 \CYRABHHA, 347 \cyrabhha, 347 \CYRAE, 347 \cyrae, 347 \CYRB, 347 \cyrb, 347 \CYRC, 347 \cyrc, 347 \CYRCH, 347 \cyrch, 347 \CYRCHLDSC, 347 \cyrchldsc, 347 \CYRCHRDSC, 347 \cyrchrdsc, 347 \CYRCHVCRS, 347 \cyrchvcrs, 347 \CYRD, 347 \cyrd, 347 \cyrdash, 345 \CYRDELTA, 347 \cyrdelta, 347
\CYRDJE, 347 \cyrdje, 347 \CYRDZE, 347 \cyrdze, 347 \CYRDZHE, 347 \cyrdzhe, 347 \CYRE, 347 \cyre, 347 \CYREPS, 347 \cyreps, 347 \CYREREV, 347 \cyrerev, 347 \CYRERY, 347 \cyrery, 347 \CYRF, 347 \cyrf, 347 \CYRG, 347 \cyrg, 347 \CYRGDSC, 347 \cyrgdsc, 347 \CYRGDSCHCRS, 347 \cyrgdschcrs, 347 \CYRGHCRS, 347 \cyrghcrs, 347 \CYRGHK, 347 \cyrghk, 347 \CYRGUP, 347 \cyrgup, 347 \CYRH, 347 \cyrh, 347 \CYRHDSC, 347 \cyrhdsc, 347 \CYRHHCRS, 347 \cyrhhcrs, 347 \CYRHHK, 347 \cyrhhk, 347 \CYRHRDSN, 347 \cyrhrdsn, 347 \CYRI, 347 \cyri, 347 \CYRIE, 347 \cyrie, 347 \CYRII, 347 \cyrii, 347 \CYRISHRT, 347 \cyrishrt, 347 \CYRISHRTDSC, 347 \cyrishrtdsc, 347 \CYRJE, 347 \cyrje, 347 \CYRK, 347 \cyrk, 347 \CYRKBEAK, 347 \cyrkbeak, 347 \CYRKDSC, 347 \cyrkdsc, 347 \CYRKHCRS, 347 \cyrkhcrs, 347 \CYRKHK, 347 \cyrkhk, 347 \CYRKVCRS, 347 \cyrkvcrs, 347 \CYRL, 347 \cyrl, 347 \cyrlangle, 345 \CYRLDSC, 347 \cyrldsc, 347 \CYRLHK, 347 \cyrlhk, 347 \CYRLJE, 347 \cyrlje, 347 \CYRM, 347 \cyrm, 347 \CYRMDSC, 347 \cyrmdsc, 347 \CYRMHK, 347 \cyrmhk, 347 \CYRN, 347 \cyrn, 347 \CYRNDSC, 347 \cyrndsc, 347 \CYRNG, 347 \cyrng, 347 \CYRNHK, 347 \cyrnhk, 347 \CYRNJE, 347 \cyrnje, 347 \CYRNLHK, 347 \cyrnlhk, 347 \CYRO, 347 \cyro, 347 \CYROTLD, 347 \cyrotld, 347 \CYRP, 347
\cyrp, 347 \CYRpalochka, 345 \CYRPHK, 347 \cyrphk, 347 \CYRQ, 347 \cyrq, 347 \CYRR, 347 \cyrr, 347 \cyrrangle, 345 \CYRRDSC, 347 \cyrrdsc, 347 \CYRRHK, 347 \cyrrhk, 347 \CYRRTICK, 347 \cyrrtick, 347 \CYRS, 347 \cyrs, 347 \CYRSACRS, 347 \cyrsacrs, 347 \CYRSCHWA, 347 \cyrschwa, 347 \CYRSDSC, 347 \cyrsdsc, 347 \CYRSEMISFTSN, 347 \cyrsemisftsn, 347 \CYRSFTSN, 347 \cyrsftsn, 347 \CYRSH, 347 \cyrsh, 347 \CYRSHCH, 347 \cyrshch, 347 \CYRSHHA, 347 \cyrshha, 347 \CYRT, 347 \cyrt, 347 \CYRTDSC, 347 \cyrtdsc, 347 \CYRTETSE, 347 \cyrtetse, 347 \CYRTSHE, 347 \cyrtshe, 347 \CYRU, 347 \cyru, 347 \CYRUSHRT, 347 \cyrushrt, 347 \CYRV, 347 \cyrv, 347 \CYRW, 347 \cyrw, 347 \CYRY, 347 \cyry, 347 \CYRYA, 347 \cyrya, 347 \CYRYHCRS, 347 \cyryhcrs, 347 \CYRYI, 347 \cyryi, 347 \CYRYO, 347 \cyryo, 347 \CYRYU, 347 \cyryu, 347 \CYRZ, 347 \cyrz, 347 \CYRZDSC, 347 \cyrzdsc, 347 \CYRZH, 347 \cyrzh, 347 \CYRZHDSC, 347 \cyrzhdsc, 347 \d, 344 \dag, 344 \dagger, 350 \daleth (amssymb), 350 \dashbox, 221 \dashleftarrow (amsfonts), 353 \dashline (epic), 224 \dashlinestretch (epic), 225 \dashrightarrow (amsfonts), 353 \dashrule (nccrules), 335 \dashrulefill (nccrules), 336 \dashv, 351 \date, 70 \dbinom (amsmath), 355 \ddag, 344 \ddagger, 350 \ddddot (amsmath), 349 \dddot (amsmath), 349 \ddot, 349 \ddots, 359 \DeclareDynamicCounter (dcounter), 331 \DeclareFixedFont, 67 \DeclareMathOperator (amsopn), 357 \DeclareNewFootnote (manyfoot), 299
\DeclarePart (псс), 319 \DeclareRobustCommand, 280 \DeclareSection (nccsecf), 312 \DeclareTOCEntry (nccsecf), 316 \DeclareTOCPart (псс), 320 \definecolor (color), 211 \deg, 357 \DeleteShortVerb (shortverb), 288 \Delta, 169, 349 \delta, 349 \depth, 113, 116, 213, 214 \det, 357 \dfrac (amsmath), 279, 355 \DH, 345 \dh, 345 \diagdown (amssymb), 350 \diagup (amssymb), 350 \Diamond (amsfonts), 350 \diamond, 350 \diamondsuit, 350 \digamma (amssymb), 350 \dim, 357 \ding (pifont), 325 \dingfill (pifont), 325 \dingline (pifont), 325 \displaybreak (amsmath), 177 \displaylimits, 159 \displaystyle,155 \div, 350 \divideontimes (amssymb), 351 \DJ, 345 \dj, 345 \documentclass, 23, 42, 70 \dot, 349 \Doteq (amssymb), 352 \doteq, 351 \doteqdot (amssymb), 352 \dotfill, 124 \dotplus (amssymb), 351 \dots, 90,162, 344, 359 \dotsb (amsmath), 359 \dotsc (amsmath), 359 \dotsi (amsmath), 359 \dotsm (amsmath), 359 \dotso (amsmath), 359 \dottedline (epic), 224 \doublebarwedge (amssymb), 351 \doublecap (amssymb), 351 \doublecup (amssymb), 351 \doublerulesep (размер), 134 \Downarrow, 353, 354 \downarrow, 353, 354 \downdownarrows (amssymb), 353 \downharpoonleft (amssymb), 353 \downharpoonright (amssymb), 353 \draftgraphics (nccpic), 209 \drawline (epic), 225 \drawlinestretch (epic), 225 \ell, 350 \ellipse (eepic), 226 \em, 62, 341 \emph, 61, 63, 96, 341 \emptyset,169, 350 \encodingdefault, 287, 321 \end, 23, 37, 281 \endinput, 238 \endnote (endnotes), 297 \endnotemark (endnotes), 297 \endnotetext (endnotes), 297 \enlargethispage, 55 \enskip, 38, 89, 92, 343 \enspace, 92, 343 \ensuremath, 182, 280 \epigraph (nccsect), 245 \epigraphparameters (nccsect), 314 \epigraphwidth (nccsect), 314 \epsilon, 349 \eq (nccmath), 180 \eqalign (nccmath), 180 \eqcirc (amssymb), 351 \eqref (amsmath), 41, 166 \eqs (nccmath), 180 \eqsim (amssymb), 351 \eqslantgtr (amssymb), 351 \eqslantless (amssymb), 351 \equiv, 351 \erfamily (pscyr), 322 \eta, 349 \eth (amssymb), 350 \evensidemargin (размер), 46 \excludeonly (excludeonly), 337 \exists, 350 \exp, 357
\ExpandTextArea (псс), 261 Xextendedheaders (nccfancyhdr), 248, 262 \extracolsep, 148 Xextrarowheight (размер), 150 \extratabsurround (длина), 151 \f, 344 \fallingdotseq (amssymb), 352 \f amilydefault, 321 Xfancycenter (nccfancyhdr), 249 Xfatbslash (stmaryrd), 364 Xfatsemi (stmaryrd), 364 Xfatslash (stmaryrd), 364 \fbox, 113 Xfboxrule (размер), 113, 212 Xfboxsep (размер), 113, 212 \fcolorbox (color), 212 \fig (nccfloats), 236 \figs (nccfloats), 236 \fill,123 \finalgraphics (nccpic), 209 \Finv (amssymb), 350 \firsthdashline (arydshln), 152 Xfirsthline (array), 151 \flat, 350 XFloatingStyle (nccfloats), 234 Xfloatname (float), 319 \flqq [russian], 292 \flushbottom, 54 \fnsymbol, 284 \fontencoding, 343 Xfontfamily, 343 \fontseries, 343 \fontshape, 343 \fontsize, 343 \Footnote (nccfoots), 122 \footnote, 53, 120 \Footnotemark (nccfoots), 122, 299 Xfootnotemark, 121 \footnoterulepriority (manyfoot), 301 Xfootnotesize, 340 XFootnotetext (nccfoots), 122, 298 \footnotetext, 121 \footrulewidth (nccfancyhdr), 248 Xfootskip (размер), 45 Xfootstrutheight (nccfancyhdr), 248 Xforall, 350 \foreignlanguage (babel), 80, 290 \frac, 355 \frame, 220 Xframebox, 113, 221 Xfrenchspacing, 41, 93, 291 XFromMargins (tocenter), 256 \frontmatter, 241, 258, 287 Xfrown, 351 \frqq [russian], 292 Xfulltitle (ncc), 264 Xfussy, 49 Xfvset (fancyvrb), 303 \Game (amssymb), 350 \Gamma, 349 \gamma, 349 Xgcd, 357 Xge, 351 Xgenfrac, 355 Xgeometry (geometry), 308 Xgeq, 351 Xgeqq (amssymb), 351 Xgeqslant (amssymb), 351 Xgets, 353 Xgg, 169, 351 Xggg (amssymb), 351 Xgggtr (amssymb), 351 Xgimel (amssymb), 350 Xglossary, 259 Xglqq [russian], 292 Xgnapprox (amssymb), 352 Xgneq (amssymb), 352 Xgneqq (amssymb), 352 Xgnsim (amssymb), 352 Xgraphicspath (graphics), 217 Xgrave, 349 Xgrid (epic), 226 Xgrqq [russian], 292 Xgtrapprox (amssymb), 351 Xgtrdot (amssymb), 351 Xgtreqless (amssymb), 351 Xgtreqqless (amssymb), 351 Xgtrless (amssymb), 351 Xgtrsim (amssymb), 351 Xguillemotleft, 345 Xguillemotright, 345
\guilsinglleft, 345 \guilsinglright, 345 \gvertneqq (amssymb), 352 \Н, 344 \hafamily (pscyr), 322 \hat, 349 \hbar, 350 \hdashline (arydshln), 152 \hdotsfor (amsmath), 186, 363 \headheight (размер), 45 \headingtag (nccsect), 245 \headrulewidth (nccfancyhdr), 248 \headsep (размер), 45 \headstrutheight (nccfancyhdr), 248 \headwidth (размер), 248 \heartsuit, 350 \height, 113, 116, 213, 214 \hfil, 124, 137 \hfill, 99, 124, 137 \hline, 135 \hoffset (размер), 46 \hom, 357 \hookleftarrow, 353 \hookrightarrow, 353 \hphantom, 137, 190, 362 \href (hyperref), 328 \hrulefill, 124 \hslash (amssymb), 350 \hspace, 123 \HUGE (moresize), 337 \Huge, 340 \huge, 340 \hyperlink (hyperref), 328 \hypersetup (hyperref), 326 \hypertarget (hyperref), 328 \hyphenation, 87 M, 95, 345 \idotsint (amsmath), 354 Mff, 361 \ifleftsidefloat (nccfloats), 235 \ignorespaces, 281 \ignorespacesafterend, 281 \iiiint (amsmath), 354 \iiint (amsmath), 354 Mint (amsmath), 354 Mm, 350 \imath, 159, 350 Mmpliedby (amsmath), 361 Mmplies (amsmath), 361 \in, 351 Mnclude, 28, 238 Mncludegraphics (graphicx), 205-207, 214 Mncludeonly, 239 Mndentaftersection (nccsect), 244 Mndex, 250 Mndexname, 260 Mndexparameters (nccindex), 259 Mndexspace, 251 Mnf, 357 Mnfty, 350 Mnjlim (amsopn), 357 Mnplus (stmaryrd), 364 Mnput, 28, 260 Mnputencoding (inputenc), 287 Mnt, 354 Mntercal (amssymb), 351 Mnterleave (stmaryrd), 364 Mntertext (amsmath), 177 Mota, 349 Mpic (nccpic), 209 Msotope (isotope), 338 Msotopestyle (isotope), 338 Mt, 341 Mtdefault, 321 \item, 103, 251 Mtemsep (длина), 103 Mtshape, 60, 341 \j, 95, 345 \jhbox (nccboxes), 119 \jmath, 159, 350 \jnfamily (pscyr), 322 \Join (amsfonts), 351 \jot (размер), 176 \jparbox (nccboxes), 120 \jput (epic), 225 \jvbox (nccboxes), 119 \k, 344
\kappa, 349 \кег, 357 \kill, 109 Me ft harpoondown, 353 Meftharpoonup, 353 Meftleftarrows (amssymb), 353 \Leftrightarrow, 353 \L, 345 М, 345 Mabel, 40, 77, 131, 205 \ label enumi, 104 \1abelenumii, 104 \labelenumiii, 104 \ 1 abel enumi v, 104 Mabelitemi, 104 Mabelitemii, 104 Mabelitemiii, 104 Mabelitemiv, 104 \Lambda, 349 \lambda, 349 \land, 350 Mangle, 354 \ language shorthands (babe/), 292 \LARGE, 340 \Large, 340 Marge, 340 Marger (re/szze), 337 Masthdashline (arydshln), 152 Masthline (array), 151 Mastpagehead (ncc), 265 Mastpageinfo (ncc), 266 Mastpagestretch (ncc), 266 Mastpagestyle (ncc), 266 \LaTeX, 91 \LaTeXe, 91 \Lbag (stmaryrd), 363 Mbag (stmaryrd), 363 Mbrace, 354 Mbrack, 354 Mceil, 354 Mdots, 90, 170, 344, 359 Me, 351 Meadsto (amsfonts), 353 Meft, 159, 353 \Leftarrow, 353 Meftarrow, 353 Mef tarrowfill, 124 Meftarrowtail (amssymb), 353 Mef tarrowtriangle (stmaryrd), 364 Mefteqn, 190 Meftrightarrow, 353 Meftrightarroweq (stmaryrd), 364 Meftrightarrows (amssymb), 353 Meftrightarrowtriangle (stmaryrd), 364 Meftrightharpoons (amssymb), 353 Meftrightsquigarrow (amssymb), 353 Meftroot (amsmath), 358 Meftslice (stmaryrd), 364 Meftthreetimes (amssymb), 351 Meftwatermark (watermark), 333 \LenToUnit (eso-pic), 310 Meq, 351 \leqq (amssymb), 351 Meqslant (amssymb), 351 Messapprox (amssymb), 351 Messdot (amssymb), 351 Messeqgtr (amssymb), 351 Messeqqgtr (amssymb), 351 Messgtr (amssymb), 351 Messsim (amssymb), 351 Mfloor, 354 Mfoot (nccfancyhdr), 249 Mg, 357 Mgroup, 354 Mhd (amssymb), 351 Mhead (nccfancyhdr), 249 Mightning (stmaryrd), 364 Mikeremark (nccthm), 203 Miketheorem (nccthm), 203 \lim, 357 Miminf, 357 Mimits, 159 Mimsup, 357 Mine, 221 Minebreak, 49, 97 Minespread, 51, 343 Minethickness, 223, 224 Minewidth (размер), 50 Mistinginput (moreverb), 303 Mistof (float), 319 Mistoffigures, 243 Mistoftables, 243
\П, 169, 351 Xllbracket (stmaryrd), 365 \llceil (stmaryrd), 363 \llcorner (amsfonts), 354 XLleftarrow (amssymb), 353 \llfloor (stmaryrd), 363 \111 (amssymb), 351 \llless (amssymb), 351 Xllparenthesis (stmaryrd), 363 Xlmoustache, 354 \ln, 357 Xlnapprox (amssymb), 352 \lneq (amssymb), 352 \lneqq (amssymb), 352 \lnot, 350 \lnsim (amssymb), 352 Mog, 357 XLongarrownot (stmaryrd), 365 Xlongarrownot (stmaryrd), 365 \Longleftarrow, 353 Xlongleftarrow, 353 XLongleftrightarrow, 353 Mongleftrightarrow, 353 \Longmapsfrom (stmaryrd), 364 Mongmapsfrom (stmaryrd), 364 \Longmapsto (stmaryrd), 364 Mongmapsto, 353 \Longrightarrow, 353 Mongrightarrow, 353 Mooparrowleft (amssymb), 353 Mooparrowright (amssymb), 353 Mooseness, 50 Mor, 350 Mozenge (amssymb), 350 Mrcorner (amsfonts), 354 \Lsh (amssymb), 353 Mstinline (listings), 308 Mst input listing (listings), 308 Mstloadlanguages (listings), 307 Mstset (listings), 307 Mtimes (amssymb), 351 Mvertneqq (amssymb), 352 Mzfamily (pscyr), 322 \mafamily (pscyr), 322 \mainmatter, 241, 258, 287 \makeatletter, 33 \makeatother, 33 Xmakebox, 112, 145, 220 \makeglossary, 259 \makeindex, 250 \makelastpage (ncc), 266 \MakeLowercase, 287 \MakePerPage (perpage), 296 XMakeShortVerb (shortverb), 288 \maketitle, 70 \MakeUppercase, 287, 312, 316 \maltese (amsfonts), 350 \Mapsfrom (stmaryrd), 364 \mapsfrom (stmaryrd), 364 \Mapsto (stmaryrd), 364 \mapsto, 353 Xmarginpar, 53 Xmarginparsep (размер), 46 Xmarginparwidth (размер), 46 Xmarkboth, 73 Xmarkright, 73, 242 Xmathbb (amsfonts), 157, 348 Xmathbf, 341 Xmathbin, 158 Xmathcal,157, 348 Xmathclose,158 Xmathfrak (amsfonts), 158, 348 Xmathindent (размер), 72, 176 Xmathinner, 158 Xmathit, 341 Xmathop, 158 Xmathopen, 158 Xmathord, 158 Xmathpunct, 158 Xmathrel, 158 Xmathring, 349 Xmathrm, 341 Xmathrsfs (calrsfs), 157, 348 Xmathscr (eucal), 157, 348 \mathsf, 341 \mathtt, 341 Xmathversion, 156 Xmatrixput (epic), 224 \max, 357 Xmbinom (nccmath), 184, 356 Xmbox, 87, 112, 167 Xmboxfill (mboxfill), 334 Xmddefault, 321
\mdseries, 60, 341 \measuredangle (amssymb), 350 \medint (nccmath), 356 \medmath (nccmath), 356 \medop (nccmath), 356 \medskip, 126 \medskipamount (длина), 126 \merge (stmaryrd), 364 \mfrac (nccmath), 356 \mho (amssymb), 350 \mid, 168, 351 \min, 357 \minalignsep (amsmath), 176 \minifig (nccfloats), 234 \minitabl (nccfloats), 234 \minuso (stmaryrd), 364 \mod (amsmath), 361 \models, 351 \moo (stmaryrd), 364 \mop (nccmath), 183, 254, 357 \mp, 350 \mrel (nccmath), 361 \mu, 349 \multicolsep (длина), 130 \multi column, 140 \multimap (amssymb), 352 \multiput, 219 \multiputlist (epic), 224 \multlinegap (длина), 173 \multlinetaggap (длина), 173 \newfootnotedashrule (nccrules), 336 \newfootnoterule (nccrules), 336 \newlength, 281 \newline, 98 \newpage, 127 \newpagestyle (nccfancyhdr), 248 \newsavebox, 115 \newtheorem, 194 \newtheorem (nccthm), 198 \newtheoremtype (nccthm), 198 \newtie (textcomp), 345 \nexists (amssymb), 350 \NG, 345 \ng, 345 \ngeq (amssymb), 352 \ngeqq (amssymb), 352 \ngeqslant (amssymb), 352 \ngtr (amssymb), 352 \ni, 351 \niplus (stmaryrd), 364 \nLeftarrow (amssymb), 353 \nleftarrow (amssymb), 353 \nLeftrightarrow (amssymb), 353 \nleftrightarrow (amssymb), 353 \nleq (amssymb), 352 \nleqq (amssymb), 352 \nleqslant (amssymb), 352 \nless (amssymb), 352 \nmid (amssymb), 352 \nnearrow (stmaryrd), 364 \nnwarrow (stmaryrd), 364 \nabla, 169, 350 \natural, 350 \NCC (ncclatex), 254 \ncong (amssymb), 352 \ne, 351 \nearrow, 353 \neg, 350 \neq, 351 \newblock, 73 \newcolumntype (array), 150 \newcommand, 278 \newcounter, 284 \newenvironment, 280 \newfloat (float), 319 \newfont, 67 \newfootnote (manyfoot), 298 \No [russian], 344 \No (ncclatex), 254 \nobreakafterheader (nccthm), 200 \nocorr, 63 \noeqbreak (ncc), 257 \noheadingtag (nccsect), 244 \noindent, 50 \noindentaftersection (nccsect), 244 \nolimits, 159 \nolinebreak, 97 \nonumber, 172 \nopagebreak, 127 \normalbaselineskip, 248 \normalfont, 61, 341 \normalheaders (nccfancyhdr), 248, 262 \normalmarginpar, 47
\nonnalsize, 340 \norunninghead (nccsect), 244 \not, 352 \notag (amsmath), 172 \notin, 352 \nouppercas© (nccfancyhdr), 249 \nparallel (amssymb), 352 \nplus (stmaryrd), 364 \nprec (amssymb), 352 \npreceq (amssymb), 352 \nr (nccmath), 180 \nRightarrow (amssymb), 353 \nrightarrow (amssymb), 353 \nshortmid (amssymb), 352 \nshortparallel (amssymb), 352 \nsim (amssymb), 352 \nsubseteq (amssymb), 352 \nsubseteqq (amssymb), 352 \nsucc (amssymb), 352 \nsucceq (amssymb), 352 \nsupseteq (amssymb), 352 \nsupseteqq (amssymb), 352 \ntriangleleft (amssymb), 352 \ntrianglelefteq (amssymb), 352 \ntrianglelefteqslant (stmaryrd), 364 \ntriangleright (amssymb), 352 \ntrianglerighteq (amssymb), 352 \ntrianglerighteqslant (stmaryrd), 364 \nu, 349 \Numbe r line Suf f ix (nccsect), 316 \numberwithin (amsmath), 178 \nVDash (amssymb), 352 \nVdash (amssymb), 352 \nvDash (amssymb), 352 \nvdash (amssymb), 352 \nwarrow, 353 \0, 345 \o, 345 \obar (stmaryrd), 364 \oblong (stmaryrd), 364 \obslash (stmaryrd), 364 \oddsidemargin (размер), 46 \odot, 350 \0E, 345 \oe, 345 \ogreaterthan (stmaryrd), 364 \oint, 354 \olessthan (stmaryrd), 364 \0mega, 349 \omega, 349 \ominus, 350 \onecolumn, 47, 72, 129 \ openright or any (ncc), 257 \operatorname (amsopn), 183, 357 \oplus, 350 \oslash, 350 \otimes, 350 \oval, 222 \ovee (stmaryrd), 364 \overbrace, 359 \overleftarrow, 359 \overleftrightarrow (amsmath), 360 \overline, 359 \overrightarrow, 359 \overset (amsmath), 360 \owedge (stmaryrd), 364 \owns, 351 \P, 344 \pagebreak, 54, 127 \pagecolor (color), 211 \pagenumbering (chappy), 310 \pageref, 41, 329 \pagestyle, 73 \paperheight (размер), 45 \paperwidth (размер), 45 \par, 23, 48 \paragraph, 75 \parallel, 351 \parbox, 116 \parfillskip (длина), 50 \parindent (размер), 50, 116 \parsep (длина), 103 \parskip (длина), 50, 116 \part, 75 \partial, 350 \pbox (nccboxes), 120 \penalty, 317 \perp, 351 \phantom, 362 \Phi, 349 \phi, 349
\Pi, 349 \pi, 349 \picbox (nccboxes), 218 \picsquare (epic), 224 \Pifill (pifont), 324 \Pilin© (pifont), 324 \Pisymbol (pifont), 324 \pitchfork (amssymb), 352 \pm, 350 \pmb (amsbsy), 161 \pmod, 361 \PnumPrototype (nccsect), 257, 317 \pod (amsmath), 361 \poptabs, 110 \pounds, 344 \Pr, 357 \prec, 351 \precapprox (amssymb), 351 \preccurlyeq (amssymb), 351 \preceq, 351 \precnapprox (amssymb), 352 \precneqq (amssymb), 352 \precnsim (amssymb), 352 \precsim (amssymb), 351 \premulticols (размер), 130 \preprint (ncc), 258 \prime, 350 \printindex (makeidx), 250, 288 \Prob [russian], 357 \prod, 354 \projlim (amsopn), 357 \proof (nccthm), 199 \proofname (ncclatex), 202 \ProofStyleParameters (nccthm), 201 \propto, 351 \protect, 120, 134, 231, 242, 243 \PSforPDF (psjpdf), 228 \Psi, 349 \psi, 349 \pushtabs, 110 \put, 219 \putfile (epic), 225 \putimage (nccpic), 209 \qbezier, 223 \qed (nccthm), 199, 200 \qedhere (amsthm), 196 \qedsymbol (nccthm), 200 \qef (nccthm), 199 \qquad, 38, 92, 190, 343 \quad, 38, 92, 343 \quotedblbase, 345 \quotesinglbase, 345 \r, 344 \raggedbottom, 54 \raggedleft, 51, 99, 124 \raggedright, 51, 99, 104, 124 \raisebox, 114, 143, 186 \raisetag (amsmath), 177 \rangle, 354 \Rbag (stmaryrd), 363 \rbag (stmaryrd), 363 \rbrace, 354 \rceil, 354 \Re, 350 \ref, 41, 77, 329 \reflectbox (graphics), 214 \refstepcounter, 285 \RegisterFloatType (nccsect), 319 \relsize (relsize), 337 \renewcommand, 278, 321 \renewenvironment, 280 \renewtheorem (nccthm), 198 \renewtheoremtype (nccthm), 198 \resizebox (graphics), 214 \RestoreTextArea (ncc), 261 \reversemarginpar, 47 \rfloor, 354 \rfoot (nccfancyhdr), 249 \rgroup, 354 \rhd (amssymb), 351 \rhead (nccfancyhdr), 249 \rho, 349 \right, 159, 353 \Rightarrow, 353 \rightarrow, 353 \rightarrowfill, 124 \rightarrowtail (amssymb), 353 \rightarrowtriangle (stmaryrd), 364 \rightharpoondown, 353 \rightharpoonup, 353 \rightleftarrows (amssymb), 353
\rightleftharpoons, 353 \rightrightarrows (amssymb), 353 \rightslice (stmaryrd), 364 \rightsquigarrow (amssymb), 353 \rightthreetimes (amssymb), 351 \rightwatermark (watermark), 333 \risingdotseq (amssymb), 352 \rlap, 146 \nn, 341 \rmdefault, 321 \rmfamily, 59, 341 \nnoustache, 354 \Roman, 284 \roman, 284 \rotatebox (graphics), 212 \rrbracket (stmaryrd), 365 \rrceil (stmaryrd), 363 \rrfloor (stmaryrd), 363 \Rrightarrow (amssymb), 353 \rrparenthesis (stmaryrd), 363 \Rsh (amssymb), 353 \rtimes (amssymb), 351 \rule, 118 \runinsectionskip (nccsect), 317 \runninghead (nccsect), 244 \S, 344 \savebox, 115, 220 \sb, 358 \sbox,115 \sc, 341 \scalebox (graphics), 213 \scdefault, 321 \scriptscriptstyle, 156 \scriptsize, 340 \scriptstyle, 155 \scshape, 60, 341 \searrow, 353 \sec, 357 \section, 75 \sectionmark, 242 \sectionstyle (nccsect), 244, 313 \SectionTagSuffix (nccsect), 313 \see (makeidx), 253 \selectfont, 51, 343 \SelectFootnoteRule (manyfoot), 300 \selectlanguage (babel), 289 \seriesdefault, 321 \setcounter, 39, 285 \SetFootnoteHook (manyfoot), 301 \setissue (ncc), 258 \setlength, 38, 282 \setminus, 169, 350 \SetParskip (nccparskip), 332 \setseries (ncc), 258 \SetT0CStyle (ncc), 257 \settodepth, 283 \settoheight, 283 \settowidth, 283 \setvolume (ncc), 258 \setyear (ncc), 257 \sf, 341 \sfdefault, 321 \sffamily, 59, 341 \sh [russian], 357 \shapedefault, 321 \sharp, 350 \shortdownarrow (stmaryrd), 364 \shorthandoff (babel), 291 \shorthandon (babel), 291 \shortleftarrow (stmaryrd), 364 \shortmid (amssymb), 351 \shortparallel (amssymb), 351 \shortrightarrow (stmaryrd), 364 \shortstack, 114 \shortuparrow (stmaryrd), 364 \shoveleft (amsmath), 173 \shoveright (amsmath), 173 \sidefig (nccfloats), 235 \sideset (amsmath), 360 \sidetabl (nccfloats), 235 \Sigma, 349 \sigma, 349 \sim, 351 \simeq, 351 \sin, 357 \sinh, 357 \skipwritingtoaux (nccsect), 245 \sl, 341 \sldefault, 321 \sloppy, 49, 129 \slshape, 60, 341 \small, 340 \smaller (relsize), 337
\smallfrown (amssymb), 352 \smallint, 354 \ small setminus (amssymb), 351 \smallskip, 126 \ small skipamount (длина), 126 \smallsmile (amssymb), 352 \smash, 361 \smile, 351 \so (soul), 96 \sp, 358 \spadesuit, 350 \spbreve (amsxtra), 349 \spcheck (amsxtra), 349 \spdddot (amsxtra), 349 \spddot (amsxtra), 349 \spdot (amsxtra), 349 \special, 205 \sphat (amsxtra), 349 \sphericalangle (amssymb), 350 \sptilde (amsxtra), 349 \sqcap, 350 \sqcup, 350 \sqrt, 358 \sqsubset (amsfonts), 351 \sqsubseteq, 351 \sqsupset (amsfonts), 351 \sqsupseteq, 351 \square (amssymb), 350 \SS, 345 \ss, 345 \ssearrow (stmaryrd), 364 \sslash (stmaryrd), 364 \ssmall (moresize), 337 \sswarrow (stmaryrd), 364 \st (soul), 96 \stackrel, 360 \star, 350 \StartFromHeaderArea (nccsect), 261, 315 \StartFromTextArea (nccsect), 315 \startindexwith (nccindex), 259 \startsection (nccsect), 314 \stepcounter, 285 \stretch, 123 \stretchwith (nccstretch), 113, 264, 332 \Strut (nccboxes), 138, 153 \strut,118 \subitem, 251 \subparagraph, 75 \subsection, 75 \Subset (amssymb), 351 \subset, 351 \subseteq, 351 \subseteqq (amssymb), 352 \subsetneq (amssymb), 352 \subsetneqq (amssymb), 352 \subsetplus (stmaryrd), 364 \subsetpluseq (stmaryrd), 364 \substack (amsmath), 361 \subsubitem, 251 \subsubsection, 75 \succ, 351 \succapprox (amssymb), 351 \succcurlyeq (amssymb), 351 \succeq, 351 \succnapprox (amssymb), 352 \succneqq (amssymb), 352 \succnsim (amssymb), 352 \succsim (amssymb), 351 \sum, 354 \sup, 357 \suppressfloats, 231 \Supset (amssymb), 351 \supset, 351 \supseteq, 351 \supseteqq (amssymb), 352 \supsetneq (amssymb), 352 \supsetneqq (amssymb), 352 \supsetplus (stmaryrd), 364 \supsetpluseq (stmaryrd), 364 \surd, 350 \swapnumbers (amsthm), 196 \swarrow, 353 \symbol, 323 \t, 344 \tabbingsep (размер), 110 \tabcolsep (размер), 133, 138 \tabl (nccfloats), 236 \tableofcontents, 239, 243 \tabls (nccfloats), 236 \tabularnewline, 142 \tag (amsmath), 172 \talloblong (stmaryrd), 364 \tan, 357
\tanh, 357 \tau, 349 \tbinom (amsmath), 355 \tbstrut (nccboxes), 145, 153 \tc (nccboxes), 138, 154 \TeX, 91 \text (amstext), 64, 161, 167 \textac (pscyr), 322 \textacutedbl (textcomp), 346 \textad (pscyr), 322 \textaq (pscyr), 322 \textar (pscyr), 322 \textasciiacute (textcomp), 346 \textasciibreve (textcomp), 346 \textasciicaron (textcomp), 346 \textasciicircum, 345 \textasciidieresis (textcomp), 346 \textasciigrave (textcomp), 346 \textasciimacron (textcomp), 346 \textasciitilde, 345 \textasteriskcentered, 345 \textbackslash, 169, 345 \textbaht (textcomp), 346 \textbar, 345 \textbardbl (textcomp), 346 \textbf, 60, 341 \textbigcircle (textcomp), 346 \textblank (textcomp), 346 \textborn (textcomp), 346 \textbraceleft, 345 \textbraceright, 345 \textbrokenbar (textcomp), 346 \textbullet, 345 \textcelsius (textcomp), 167, 346 \textcent (textcomp), 346 \textcentoldstyle (textcomp), 346 \textcircled, 345 \textcircledP (textcomp), 346 \textco (pscyr), 322 \textcolonmonetary (textcomp), 346 \textcolor (color), 211 \textcopyleft (textcomp), 346 \textcopyright, 345 \textcp (pscyr), 322 \textcr (pscyr), 322 \textcurrency, 345 \textdagger, 345 \textdaggerdbl, 345 \textdblhyphen (textcomp), 346 \textdblhyphenchar (textcomp), 346 \textdegree (textcomp), 346 \textdied (textcomp), 346 \textdiscount (textcomp), 346 \textdiv (textcomp), 346 \textdivorced (textcomp), 346 \textdollar, 345 \textdollaroldstyle (textcomp), 346 \textdong (textcomp), 346 \textdownarrow (textcomp), 346 \texteightoldstyl© (textcomp), 346 \textellipsis, 345 \textemdash, 345 \textendash, 345 \texter (pscyr), 322 \textestimated (textcomp), 346 \texteuro (textcomp), 346 \textexclamdown, 345 \textfiveoldstyle (textcomp), 346 \textflorin (textcomp), 346 \textfouroldstyle (textcomp), 346 \textfractionsolidus (textcomp), 346 \textgravedbl (textcomp), 346 \textgreater, 345 \textguarani (textcomp), 346 \textha (pscyr), 322 \textheight (размер), 45 \textinterrobang (textcomp), 346 \textinterrobangdown (textcomp), 346 \textit, 60, 63, 341 \textjn (pscyr), 322 \textlangle (textcomp), 346 \textlbrackdbl (textcomp), 346 \textleaf (textcomp), 346 \textleftarrow (textcomp), 346 \textless, 345 \textlira (textcomp), 346 \textlnot (textcomp), 346 \textlquill (textcomp), 346 \textlz (pscyr), 322 \textma (pscyr), 322 \textmarried (textcomp), 346 \textmd, 60, 341 \textmho (textcomp), 346 \textminus (textcomp), 346
\textmu (textcomp), 95, 166, 346 \textmusicalnote (textcomp), 346 \textnaira (textcomp), 346 \textnineoldstyle (textcomp), 346 \textnormal, 61, 341 \textnumero, 345 \textohm (textcomp), 95, 166, 346 \textonehalf (textcomp), 346 \textoneoldstyle (textcomp), 346 \textonequarter (textcomp), 346 \textonesuperior (textcomp), 346 \textopenbullet (textcomp), 346 \textordfeminine, 345 \textordmasculine, 345 \textparagraph, 345 \textperiodcentered, 345 \textpertenthousand, 345 \textperthousand, 95, 345 \textpeso (textcomp), 346 \textpilcrow (textcomp), 346 \textpm (textcomp), 346 \textquestiondown, 345 \textquotedbl, 345 \textquotedblleft, 345 \textquotedblright, 345 \textquoteleft, 345 \textquoteright, 345 \textquotesingle (textcomp), 346 \textquotestraightbase (textcomp), 346 \textquotestraightdblbase (textcomp), 346 \textrangle (textcomp), 346 \textrbrackdbl (textcomp), 346 \textrecipe (textcomp), 346 \textreferencemark (textcomp), 346 \textregistered, 345 \textrightarrow (textcomp), 346 \textrm, 59, 341 \textrquill (textcomp), 346 \textsc, 60, 341 \textsection, 345 \textservicemark (textcomp), 346 \textsevenoldstyle (textcomp), 346 \textsf, 59, 341 \textsixoldstyle (textcomp), 346 \textsl, 60, 63, 341 \textsterling, 345 \textstyle, 155 \textsuperscript, 345 \textsurd (textcomp), 346 \textthreeoldstyle (textcomp), 346 \textthreequarters (textcomp), 346 \textthreequartersemdash (textcomp), 346 \textthreesuperior (textcomp), 346 \texttildelow (textcomp), 346 \texttimes (textcomp), 346 \texttm (pscyr), 322 \texttrademark, 345 \texttt, 59, 341 \texttwelveudash (textcomp), 346 \texttwooldstyle (textcomp), 346 \texttwosuperior (textcomp), 346 \texttx (pscyr), 322 \textunderscore, 345 \textup, 60, 341 \textuparrow (textcomp), 346 \textvisiblespace, 345 \textwidth (размер), 45 \textwon (textcomp), 346 \textyen (textcomp), 346 \textzerooldstyle (textcomp), 346 \tfrac (amsmath), 355 \tg [russian], 357 \TH, 345 \th, 345 \th [russian], 357 \thanks, 70 \theendnotes (endnotes), 297 \thefootnote, 120 \theissue (ncc), 258 \thempfootnote, 122 \theorembodyfont (theorem), 196 \TheoremBreakStyle (nccthm), 200 \ The oremComme nt De limiters (nccthm), 201 \theoremheaderfont (theorem), 196 \TheoremNoBreakStyle (nccthm), 200 \theoremstyle (amsthm), 196 \theoremstyle (theorem), 196 \thepage, 284 \theparentequation (amsmath), 178 \thepreprint (ncc), 258 \therefore (amssymb), 352
\theseries (псс), 258 \Theta, 349 \theta, 349 \thevolume (псс), 258 \theyear (псс), 257 \thickapprox (amssymb), 352 \thicklines, 223, 224 \thicksim (amssymb), 352 \thinlines, 223, 224 \thispageheading (watermark), 256, 333 \thispagestyle, 74 \thiswatermark (watermark), 333 \tilde, 349 \times, 188, 350 \tiny, 340 \title, 70, 263, 266 \titleareadefault, 262 \TitleBeforeAuthor (ncc), 82, 257 \titlecomment (ncc), 263, 266 \titlefoot (ncc), 263 \titlehead (ncc), 263 \titlesign (ncc), 263 \titlestretch (ncc), 263 \titlestyle (ncc), 264 \tmfamily (pscyr), 322 \to, 353 \ToCenter (tocenter), 256 \TOCMarginDrift (nccsect), 318 \today, 291 \top, 350 \topmargin (размер), 46 \totalheight, 113, 116, 213, 214 \triangle, 350 \triangledown (amssymb), 350 \triangleleft, 350 \trianglelefteq (amssymb), 352 \trianglelefteqslant (stmaryrd), 364 \triangleq (amssymb), 351 \triangleright, 350 \trianglerighteq (amssymb), 352 \trianglerighteqslant (stmaryrd), 364 \tstrut (nccboxes), 153, 279 \tt, 341 \ttdefault, 321 \ttfamily, 59, 341 \twocolumn, 47, 72, 129, 258 \twoheadleftarrow (amssymb), 353 \twoheadrightarrow (amssymb), 353 \txfamily (pscyr), 322 \U, 344 \u, 344 \UDC (sibjnm), 84 \ul (soul), 96 \ulcorner (amsfonts), 354 \underbrace, 359 \underleftarrow (amsmath), 360 \underleftrightarrow (amsmath), 360 \underline, 359 \underrel (nccmath), 360 \underrightarrow (amsmath), 360 \underset (amsmath), 360 \unitlength (размер), 218 \unlhd (amssymb), 351 \unrhd (amssymb), 351 \Uparrow, 353, 354 \uparrow, 353, 354 \updefault, 321 \Updownarrow, 353, 354 \updownarrow, 353, 354 \upharpoonleft (amssymb), 353 \upharpoonright (amssymb), 353 \uplus, 350 \uproot (amsmath), 358 \upshape, 60, 341 \Upsilon, 349 \upsilon, 349 \upuparrows (amssymb), 353 \urcorner (amsfonts), 354 \url (hyperref), 328 \url (url), 78 \urlstyle (url), 79 \usebox, 115, 220 \usefont, 66 \usepackage, 24, 42 \useshortskip (nccmath), 179 \ushort (ushort), 294 \ushortd (ushort), 294 \v, 344 \value, 285 \varbigcirc (stmaryrd), 364 \varcopyright (stmaryrd), 363
\varcurlyvee (stmaryrd), 364 \varcurlywedge (stmaryrd), 364 \varDelta (amsmath), 350 \varepsilon, 349 \varGamma (amsmath), 350 Variance [russian], 357 \varinjlim (amsopn), 357 \varkappa (amssymb), 350 \varLambda (amsmath), 350 \varliminf (amsopn), 357 \varlimsup (amsopn), 357 \varnothing (amssymb), 169, 350 \varoast (stmaryrd), 364 \varobar (stmaryrd), 364 \varobslash (stmaryrd), 364 \varocircle (stmaryrd), 364 \varodot (stmaryrd), 364 \varogreaterthan (stmaryrd), 364 \varolessthan (stmaryrd), 364 \var0mega (amsmath), 350 \varominus (stmaryrd), 364 \varoplus (stmaryrd), 364 \varoslash (stmaryrd), 364 \varotimes (stmaryrd), 364 \varovee (stmaryrd), 364 \varowedge (stmaryrd), 364 \varPhi (amsmath), 350 \varphi, 349 \varPi (amsmath), 350 \varpi, 349 \varprojlim (amsopn), 357 \varpropto (amssymb), 351 \varPsi (amsmath), 350 \varrho, 349 \varSigma (amsmath), 350 \varsigma, 349 \varsubsetneq (amssymb), 352 \varsubsetneqq (amssymb), 352 \varsupsetneq (amssymb), 352 \varsupsetneqq (amssymb), 352 \varTheta (amsmath), 350 \vartheta, 349 \vartimes (stmaryrd), 364 \vartriangle (amssymb), 351 Wartriangleleft (amssymb), 352 \vartriangleright (amssymb), 352 \varUpsilon (amsmath), 350 \varXi (amsmath), 350 Wdash (amssymb), 352 \vDash (amssymb), 352 \vdash, 351 \vdots, 359 Wee, 349 \vector, 222 \vee, 350 \veebar (amssymb), 351 Verb (fancyvrb), 304 Verb, 101, 288 WerbatimFootnotes (fancyvrb), 303 Werbatimlnput (fancyvrb), 304 \verbatiminput (verbatim), 102 \ verbatimtab input (moreverb), 302 Wert, 354 \vert, 168, 354 \vfil, 125 \vfill, 125 \vline,134 \voffset (размер), 46 Wphantom, 362 \vrule, 150 \vspace, 125 \vv (esvect), 293 Wvdash (amssymb), 352 Watermark (watermark), 333 Wedge, 350 Whiteqed (nccthm), 201 Whiteqedsymbol (nccthm), 201 Widehat, 349 Widetilde, 349 Width, 113, 116, 213, 214 \wp, 350 Wr, 350 \Xi, 349 \xi, 349 Wleftarrow (amsmath), 360 \xrightarrow (amsmath), 360 \Ydown (stmaryrd), 364 \yen (amsfonts), 350 \Yleft (stmaryrd), 364 Wright (stmaryrd), 364
\Yup (stmaryrd), 364 \zeta, 349 Блок, 37 Бокс, 52 базовая линия, 52 вертикальный, 52 горизонтальный, 52 Выделение шрифтом, 61 Выносной текстовый элемент, 98 Декларация, 37 Диагностика Argument of ..., 36 Can be used only in preamble, 42 Extra alignment tab ..., 135 File ‘(uAwi).bb’ not found, 218 Label ... multiply defined, 40 Misplaced \noalign, 135 Missing character: ..., 26 Missing number, ..., 97 No file XXXX.aux, 240 Overfull \hbox, 48 Reference ... on page ... undefined, 41 Runaway argument, 35 There were multiply-defined labels, 40 There were undefined references, 41 Undefined control sequence, 29 Underfull \hbox, 49 Underfull \vbox, 54 Длина, 282 \bigskipamount, 126 \extratabsurround, 151 \itemsep, 103 \medskipamount, 126 \multicolsep, 130 \multlinegap, 173 \multlinetaggap, 173 \parfillskip, 50 \parsep, 103 \parskip, 50, 116 \smallskipamount, 126 Единицы измерения, 281 бесконечные, 38 относительные, 38 Интерлиньяж, 51, 57, 59 Категория символа, 33 Кегль, 56 Кернинг, 57, 58 Класс article, 30, 69-71, 286 book, 30, 128, 238-243, 286 letter, 287 Itnews, 286 Itxdoc, 286 Itxguide, 286 ncc, 30, 81-83,129, 255-266, 319 пссргос, 83 powersem, 329 proc, 286 prosper, 329 report, 30, 241, 286 sibjnm, 84 slides, 287 Кодировка cpl251, 24 cpl251-light, 25, 26, 251, 293 cp866, 24 koi8-r, 24 maccyr, 24 шрифта 0T1, 65, 66, 341 0T2, 65, 66, 341 Tl, 65, 66, 341 T2A, 24, 65, 66, 291, 341 T2B, 24, 65, 66, 341 T2C, 24, 65, 66, 341 TS1, 95, 344 U, 323 X2, 65, 66, 341 Команда, 34 ♦-форма, 36 крепкая, 36 хрупкая, 36
Компенсация курсивного выступа, 62 Лигатура, 58 Макет страницы, 44 Метка, 40 библиографическая, 77 Мода вертикальная, 47 горизонтальная, 48 математическая, 48 Начертание шрифта, 56 Недозаполнение страницы, 54 строки, 49 Область верхнего колонтитула, 44 заметок на полях, 44 нижнего колонтитула, 44 текста, 44 Окружение, 37 abstract, 71, 264, 287 acorollary (ncclatex), 202 adefinition (ncclatex), 202 adjustwidth (chngpage), 309 alemma (ncclatex), 202 align (amsmath), 173 align* (amsmath), 173 alignat (amsmath), 174 alignat* (amsmath), 174 aligned (amsmath), 176, 187, 191 alignedat (amsmath), 176 alltt (alltt), 101, 288, 304 anexample (ncclatex), 202 aremark (ncclatex), 202 array,132 astatement (ncclatex), 202 atheorem (ncclatex), 202 biblist (ncc), 257 Bmatrix (amsmath), 362 bmatrix (amsmath), 362 boxedverbatim (moreverb), 303 BVerbatim (fancyvrb), 304 cases (amsmath), 362 center, 98 ceqn (nccmath), 179 comment (verbatim), 102 Corollary (ncclatex), 202 corollary (ncclatex), 202 darray (nccmath), 180, 188 dash join (epic), 225 Definition (ncclatex), 202 definition (ncclatex), 202 desclist (desclist), 106 description, 105 dingautolist (pifont), 325 dinglist (pifont), 325 displaymath, 171 document, 42 dottedjoin (epic), 225 drawjoin (epic), 225 Eabstract (sibjnm), 84 enumerate, 104 eqnarray, 171 eqnarray (nccmath), 179 eqnarray*, 171 eqnarray* (nccmath), 179 equation, 171 equation* (amsmath), 172 Example (ncclatex), 202 example (ncclatex), 202 figure, 54, 229, 294 figure*, 231 flalign (amsmath), 174 flalign* (amsmath), 174 fleqn (nccmath), 179 floatingfigure (floatflt), 233 floatingtable (floatflt), 233 flushleft, 98 flushright, 98 fullpage (dpfloat), 295 gather (amsmath), 173 gather* (amsmath), 173, 192 gathered (amsmath), 176, 188 hyphenrules (babel), 81, 290 itemize, 104 landscape (Iscape), 210 leftfullpage (dpfloat), 295 Lemma (ncclatex), 202 lemma (ncclatex), 202
listing (moreverb), 302 listingcont (moreverb), 303 longtable (longtable), 153 Irbox, 115 lstlisting (listings), 308 math, 155 matrix (amsmath), 362 medsize (nccmath), 363 minipage, 116 mmatrix (nccmath), 363 mpsupertabular (supertabular), 153 mpsupertabular* (supertabular), 153 multicols (multicol), 130, 231 multline (amsmath), 172, 188 multline* (amsmath), 172 otherlanguage (babel), 290 other language* (babel), 290 overpic (overpic), 227 Piautolist (pifont), 324 picture, 218, 224 Pilist (pifont), 324 pmatrix (amsmath), 184, 362 proof (amsthm), 196 Proposition (ncclatex), 202 proposition (ncclatex), 202 quotation, 99 quote, 90, 99 Rabstract (sibjnm), 84 Remark (ncclatex), 202 remark (ncclatex), 202 sloppypar, 49 smallmatrix (amsmath), 363 split (amsmath), 175 Statement (ncclatex), 202 statement (ncclatex), 202 subarray (amsmath), 361 subequations (amsmath), 178 subfigures (subfloat), 295 subtables (subfloat), 295 supertabular (supertabular), 153 supertabular* (supertabular), 153 tabbing, 107 table, 54, 131, 229, 294 table*, 231 tabular, 132 tabular*, 132, 148 tabularx (tabularx), 151 thebibliography, 77, 239 Theorem (ncclatex), 202 theorem (ncclatex), 202 titlepage, 128, 260 titlepage* (ncc), 261 Verbatim (fancyvrb), 304 verbatim, 100 verbatim*, 101 VerbatimOut (fancyvrb), 304 verbatimtab (moreverb), 302 verbatimwrite (moreverb), 303 verse, 100 Vmatrix (amsmath), 362 vmatrix (amsmath), 362 wrapfigure (wrapfig), 234 wraptable (wrapfig), 234 Опция lOpt, 58, 71, 81, 255 llpt, 58, 71, 81, 255 12pt, 58, 71, 81, 255 14pt, 58, 81, 255 a4paper, 72, 81, 255 a5a4paper, 81, 255 aSpaper, 72, 81, 255 abs, 227 article, 81, 255 bSpaper, 72, 81, 255 blackqed, 201, 255 book, 81, 255 bookmarks, 327 bookmarksopen, 327 bookmarksopenlevel, 327 bottom, 296 centertags, 175, 176, 255 citecolor, 327 colorlinks, 327 draft, 70, 72, 81, 205, 217, 255, 326 dvips, 209 executivepaper, 72, 81, 255 filecolor, 327 final, 72, 81, 217, 255, 326 fittopage, 81, 255 fleqn, 72, 81, 176, 255 flushmargin, 296 hang, 296 indent, 200, 255 intlimits, 184, 255, 358
landscape, 72, 81, 255 legalpaper, 72, 81, 255 leqno, 72, 81, 176, 255 letterpaper, 72, 81, 255 linkcolor, 327 margin, 200, 255 marginal, 296 mathscr, 157 mediummath, 44, 164, 255, 294 multiple, 297 namelimits, 255, 358 noindent, 200, 255 nointlimits, 255, 358 nomargin, 200, 255 nonamelimits, 255, 358 nosumlimits, 255, 358 notitlepage, 72 onecolumn, 47, 72, 81, 255 oneside, 46, 72, 81, 255 only, 294 openany, 81, 241, 255, 257, 286 openbib, 72, 81, 255 openright, 81, 241, 255, 257, 286 pagecolor, 327 para, 296, 298 para*, 298 pdfauthor, 327 pdfkeywords, 327 pdfpagemode, 327 pdfstartview, 328 pdfsubject, 327 pdftex, 209 pdftitle, 327 pdfview, 328 percent, 227 permil, 227 perpage, 296, 299 preprint, 81, 255 ragged, 296 report, 81, 255 reqno, 176, 255 ruled, 298, 300 russian, 24, 80, 82, 84, 254, 255, 284 side, 296 small, 82, 254, 255 sumlimits, 255, 358 symbol, 296 symbol*, 296 T2A, 82, 254, 255 T2B, 82, 254, 255 T2C, 82, 254, 255 tbtags, 175, 176, 255 titlepage, 72 twocolumn, 47, 72, 81, 129, 255 twoside, 46, 72, 81, 255 unicode, 327 urlcolor, 327 whiteqed, 201, 255 глобальная, 43 класса, 43 локальная, 43 пакета, 43 собственная, 43 Оформление документа в две колонки, 47 в несколько колонок, 47 в одну колонку, 47 двустороннее, 46 одностороннее, 46 Пакет afterpage, 128, 230, 329 allrunes, 323 alltt, 101, 288 amsbsy, 161 amscd, 162, 338 amsfonts, 30, 157-159 amsgen, 161 amsmath, 30, 92, 161, 172-178, 254 amsopn, 162 amssymb, 30, 159 amstex, 162 amstext, 64, 161 amsthm, 196 amsxtra, 162 answers, 339 array, 149, 330 arydshln, 152 babel, 24, 43, 80, 86, 254, 284, 289-292 bbding, 324 bm, 30, 157, 161, 330 bytefield, 338 calc, 114, 283, 285, 330
calrsfs, 157 caption, 295 chappg, 309 chemsym, 338 chngpage, 309 cite, 337 citehack, 26, 292 color, 210-212 coordsys, 339 dblfnote, 297 dcolumn, 152, 330 dcounter, 197, 254, 331 dcpic, 338 delarray, 151, 330 desclist, 106, 254, 331 dpfloat, 295 eepic, 226 endfloat, 295 endnotes, 297 enumerate, 105, 330 epic, 224-226 epsfig, 210 epstopdf, 208 eso-pic, 310 esvect, 293 eucal, 157 eufrak, 158 eurosym, 323 everyshi, 311 excludeonly, 337 exscale, 288 extdash, 254, 331 fancyvrb, 303-307 fixltx2e, 288 flafter, 288 float, 318 floatflt, 233, 295 fnpos, 296 fontenc, 24, 44, 66, 254, 287 footmisc, 296 ftnright, 296, 330 geometry, 308 graphics, 212-214 graphicx, 30, 204-207, 212, 214-217, 254 graphpap, 288 HA-prosper, 329 here, 294 hhline, 152, 330 hyperref, 326-329 icomma, 164 ifmslide, 329 ifsym, 324 ifthen, 288 indentfirst, 330 inputenc, 24, 25, 287 ipa, 324 isotope, 338 keystroke, 323 lastpage, 338 latexsym, 159, 288 layout, 330 listings, 307 literat, 322 logsys, 339 longtable, 152, 153, 330 Iscape, 210 makeidx, 250, 288 manyfoot, 298-302, 331 marvosym, 324 mathtext, 26, 293 mboxfill, 331, 334 milticol, 231 minitoc, 338 misccorr, 25, 253, 292 moresize, 337 more verb, 302 msc, 338 multicol, 47, 72, 130, 330 nccbbb,332 nccboxes, 119, 137, 153, 218, 254, 332 ncccomma, 164, 185, 332 ncccropbox, 332 ncccropmark, 332, 333 nccfancyhdr, 247-250, 332 nccfloats, 234-237, 254, 332 nccfoots, 122, 254, 332 ncchdr, 82, 256 nccindex, 258 ncclatex, 25, 202, 254, 284, 293 nccmath, 163, 179, 254, 294, 332 nccparskip, 332 nccpic, 208, 254, 332 nccrules, 300, 332, 335
nccsect, 243-247, 254, 311-319, 332 nccstretch, 113, 264, 332 nccthm, 196-202, 254, 333 newlfont, 288 oldlfont, 288 overpic, 227 paralist, 339 pb-diagram, 338 pdfscreen, 329 pdfslide, 329 perpage, 296, 299 pfnote, 296 pgf, 228 picinpar, 295 pifont, 324 ps4pdf, 228 pscyr, 322 psfrag, 227 pstcol, 210 pxfonts, 322, 323 rawfonts, 330 relsize, 337 rplain, 309 scalebar, 339 shortverb, 288 showidx, 288 showkeys, 330 soul, 96 stmaryrd, 294 subfig, 295 subfloat, 295 supertabular, 152, 153 tabularx, 151, 330 texpower, 329 textcomp, 95, 166, 288 textpos, 310 theorem, 195, 331 tocenter, 308, 333 trace, 331 tree-dvips, 338 trees, 338 trig, 210 txfonts, 322, 323 upgreek, 294 url, 78 ushort, 294 varioref, 331 verbatim, 102, 302, 331 wasysym, 324 watermark, 311, 333 wrapfig, 234, 295 xcolor, 212 xr, 331 xspace, 331 Параметр, 35 длинный, 35 короткий, 35 необязательный, 35 перемещаемый, 36 Переменная, 38 длины, 38 размера, 38 Переполнение страницы, 54 строки,48 Подпорка, 118 Преамбула документа, 42 Размер, 281 \arraycolsep, 133, 138, 193 \arrayrulewidth, 134 \baselineskip, 50 \bibindent, 73 \columnsep, 47, 259 \colunmseprule, 47, 259 \columnwidth, 47 \doublerulesep, 134 \evensidemargin, 46 \extrarowheight,150 \fboxrule, ИЗ, 212 \fboxsep, 113, 212 \footskip, 45 \headheight, 45 \headsep, 45 \headwidth, 248 \hoffset, 46 \jot, 176 \linewidth, 50 \marginparsep, 46 \marginparwidth, 46 \mathindent, 72, 176 \oddsidemargin, 46 \paperheight, 45 \paperwidth, 45
\parindent, 50,116 \premulticols, 130 \tabbingsep, 110 \tabcolsep, 133, 138 \textheight, 45 \textwidth, 45 \topmargin, 46 \unitlength, 218 \voffset, 46 основной, 282 Расстояние, 38 Растяжимость, 282 Рубрика, 74 в подбор, 74 выносная, 74 Рубрикация, 74 part, 340 secnumdepth, 75, 242, 340 section, 340 subparagraph, 340 subsection, 340 subsubsection, 340 table, 231, 340 toedepth, 243, 340 topnumber, 340 totalnumber, 230, 340 динамический, 197 подчиненный, 39 Файл с расширением .aux, 23, 240 .bb, 218 .bmp, 215 Сжимаемость, 282 Список, 102 внутриабзацный, 102 выносной, 102 Ссылка библиографическая, 267 на источник, 79 на страницу, 41 на счетчик, 41 на формулу, 41 Сторона страницы внешняя, 47 внутренняя,47 Счетчик, 39 араг, 203 bottomnumber, 340 chapter, 340 dbltopnumber, 340 endnote, 297 enumi, 104, 340 enumii, 104, 340 enumiii, 104, 340 enumiv, 104, 340 equation, 171, 254, 340 figure, 231, 340 footnote, 120, 296, 340 MaxMatrixCols, 362 mpfootnote, 122, 340 page, 39, 340 paragraph, 340 .dtx, 286 .dvi, 22 .eps, 215 .eps.Z, 215 .eps.bb, 215 .eps.gz, 215 . fd, 321 .fmt, 289 .gio, 259 .idx, 250 .ind, 250 • jpg, 215 log, 23 .mps, 215 .pdf, 215 .pic, 209 .png, 215 .ps, 215 .ps.bb, 215 .ps.gz, 215 .sty, 238 .tex, 239 .tfm, 57 .tif, 215 .toe, 239 Формула выносная, 48 строчная, 48, 155
Шрифт, 56 без засечек, 56 гарнитуры cmr, 66 cmss, 66 cmtt, 66 декоративный, 56 кегль, 56 курсивный, 60 мелкопрописной, 60 моноширинный, 57 наклонный, 60 начертание, 56 нормальной жирности, 60 нормальный, 61 пропорциональный, 57 прямой, 60 размера \footnotesize, 340 \Huge, 340 \huge, 340 \LARGE, 340 \Large, 340 \large, 340 \normalsize, 340 \scriptsize, 340 \small, 340 \tiny, 340 базового, 58 рукописный, 56 ряд, 60 Ь, 66 Ьх, 66 с, 66 ш, 66 sbc, 66 с засечками, 56 схема кодировки, 65 увеличенной жирности, 60 форма, 60 it, 66 п, 66 sc, 66 si, 66 ui, 66 Элемент плавающий, 53
РОЖЕНКО Александр Иосифович Искусство верстки в РЩтрСе Ответственный редактор академик А. С. Алексеев Оформлено в системе 1ЛТрХ, макрос ЛуД Редакторы Л. И. Бессильных, М. В. Зверева Технический редактор А. И. Роженко Лицензия ИД Я5 02202 от 30.06.2000 г. Подписано в печать 22.08.2005 г. Формат 70 х 1001/i6- Гарнитура Computer Modern Roman. Печать офсетная. Усл. печ. л. 26. Уч.-изд. л. 31,5. Тираж 300 экз. (доп. тираж). Заказ К5 472. Институт вычислительной математики и математической геофизики СО РАН, 630090, Новосибирск, просп. Акад. Лаврентьева, 6 Отпечатано в типографии ГУ Издательства СО РАН, 630090, Новосибирск, Морской просп., 2
Сибирский журнал вычислительной математики Издательство Сибирского отделения РАН с 1998 года выпускает «Сибирский журнал вычислительной математики» (СибЖВМ), учредителями которого являются Сибирское отделение РАН совместно с Институтом вычислительной математики и математической геофизики (ИВМиМГ) СО РАН, г. Новосибирск. В редколлегию журнала входят ведущие российские специалисты. Журнал имеет общероссийский статус и высылается в ведущие библиотеки и научные организации мира. Тематика СибЖВМ весьма обширна. Основными направлениями журнала являются: • Теория и практика вычислительных методов математики, математической физики и других прикладных областей; • Математические модели теории упругости, гидродинамики, газовой динамики и геофизики; • Распараллеливание алгоритмов; • Модели и методы биоинформатики. Периодичность СибЖВМ—четыре номера в год. Статьи принимаются на русском либо английском языках с аннотацией одновременно на двух языках — русском и английском. Статьи проходят строгую процедуру рецензирования. Принятая статья после стандартной процедуры реферирования публикуется на том языке, на каком она представлена. Содержание вышедших томов можно найти в Internet. Журнал реферируется в «Zentralblatt fuer Mathematik» и NA-DIGEST. Наш адрес: 630090, Новосибирск, 90, проси. Акад. Лаврентьева, 6, Институт вычислительной математики и математической геофизики СО РАН, редакция СибЖВМ Тел.: 383-3356545 Факс: 383-3308783, 383-3324259 E-mails: sibjnm@oapmg.sscc.ru sibjnm@sscc.ru http://www.sscc.ru/SibJNM/