Тонкости
Для каждого ключевого слова программа makeindex собирает все относящиеся к нему номера страниц и записывает их в ind - файле после этого слова через запятую. Если при этом попадутся три или более идущих подряд номера страниц, то в ind - файл будут записаны только первый и последний из этих номеров, через короткое тире (en-dash). Такие пары страниц через короткое тире можно организовывать и вручную. Пусть, например, в какой-то части вашего текста все время идет речь о кошках. Тогда можно в начале этой части написать
\index{Кошки|(}
а в конце ---
\index{Кошки|)}
Если первая из этих команд попала на страницу 9, а вторая - на страницу 77, то после обработки idx - файла программой makeindex в ind - файл попадет запись
\item Кошки, 9--77
Команды index{Кошки}, оказавшиеся между страницами 9 и 77, будут при этом проигнорированы.
При сортировке программа makeindex принимает во внимание не только буквы, но и спецзнаки, записанные в аргументе команды \index. Иногда это нежелательно: если в тексте имеются команды \index{Аист} и \index{\textbf{Ящерица}}, то ящерица может оказаться в ind-файле раньше аиста, если makeindex будет считать, что запись для нее начинается с символа "\", который идет раньше всех русских букв5). Чтобы избежать такого рода неприятностей, предусмотрена возможность по отдельности задать слово, которое будет участвовать в сортировке, и текст, который будет реально записан в ind-файл. В приведенном выше примере следовало бы написать
\index{Ящерица@\textbf{Ящерица}}
Теперь ящерица попадет туда же, куда и все прочие слова на букву "я", но при этом будет напечатана жирным шрифтом. Общее правило такое: если в аргументе команды \index присутствует символ @, то при сортировке учитывается только то, что написано левее него, а в ind - файл записывается только то, что правее него. Можно задавать отдельные тексты для сортировки и для печати не только для основного заглавного слова, но и для слов, ему подчиненных:
\index{Ящерицы@\textbf{Ящерицы}!игуана@\textbf{игуана}}
Напоминание: если перед @ или | стоит кавычка ", то эти значки рассматриваются просто как символы.
Программа makeindex может оформлять номера разных страниц по-разному. Пусть, например, вы считаете, что одно из мест в тексте, где говорится о кошках, является особо важным, и хотите, чтобы номер соответствующей страницы был подчеркнут (по аналогии с указателем к книге TeXbook [2]). Тогда можно поставить в этом месте команду
\index{Кошки|underline}
Предположим, что эта команда попала на страницу 100, и, кроме того, в тексте были две команды \index{Кошки}, попавшие на страницы 15 и 47. Тогда после обработки idx-файла программой makeindex в ind-файле появится такая строка:
\item Кошки, 15, 47, \underline{100}
Общее правило таково: команда \index{XXX|abcd} порождает в ind-файле строку
\item XXX, \abcd{y}
(здесь - номер страницы).
Если вы хотите номер страницы не подчеркнуть, а выделить другим шрифтом, разумно воспользоваться одной из команд для смены шрифта, работающих как команда с одним аргументом (см. выше).
Среди символов "abcd" не должно быть круглых скобок (сочетания "|(" и "|)" имеют, как было сказано выше, особый смысл); если вы хотите оформить таким образом номер страницы к "подчиненному", а не заглавному термину, то именно после подчиненного термина (того, после которого должен реально появиться номер страницы) и надо писать |abcd:
\index{Кошки!Ангорские|textbf}

- строковая константа, задающая стилевой параметр, ограничена с обеих сторон знаками "(кавычки);
- эта строковая константа может реально состоять и из нескольких строк; место, где кончается одна строка и начинается другая, обозначается \n (конец строки воспринимается просто как пробел и не означает конца строки в ind - файле);
- если в строковую константу должны входить символы \ или ", то их надо обозначать \\ и \" соответственно, а все остальные символы набираются непосредственно.






t | разместить иллюстрацию в верхней части страницы; |
b | разместить иллюстрацию в нижней части страницы; |
p | разместить иллюстрацию на отдельной странице, целиком состоящей из "плавающих" иллюстраций (или таблиц — см. ниже); |
h | разместить иллюстрацию прямо там, где она встретилась в исходном тексте, не перенося ее никуда. |
Если в квадратных скобках стоит несколько букв, это значит, что вы согласны на любой из предусматриваемых этими буквами вариантов. Если окружение figure задано без необязательного аргумента, это равносильно записи
\begin{figure}[tbp]
При наборе текста в две колонки полезно использовать не только само окружение figure, но и его вариант "со звездочкой": если сказать
\begin{figure*}
то при наборе текста в одну колонку это не будет ничем отличаться от окружения figure без звездочки, а при наборе текста в две колонки создаст иллюстрацию шириной в целую страницу (без звездочки получилось бы шириной в одну колонку). Если окружение открывается командой \begin{figure*}, то и закрываться оно должно командой со звездочкой.
Если при наборе в две колонки задать окружение figure (без звездочки) с необязательным аргументом p, то для печати иллюстраций будет выделена не отдельная страница, но отдельная колонка. При подключении стилевого пакета multicol пользоваться окружениями со звездочкой {figure*} и {table*} (см. ниже) нельзя.
Окружение {table} определяет " плавающие таблицы". Все свойства этого окружения дословно совпадают с соответствующими свойствами окружения {figure}, за двумя исключениями: во-первых, подпись, генерируемая командой \caption, начинается со слова, определенного в команде \tablename, и переопределять, при необходимости, надо именно эту команду, и во-вторых, таблицы нумеруются независимо от иллюстраций. Кстати, подпись к таблице принято делать не снизу, как к иллюстрации, а сверху. Окружение {table*} при наборе текста в две колонки определяет таблицы шириной в целую страницу.
В документе можно, при желании, получить автоматически сгенерированные списки иллюстраций и/или таблиц. Для этого используются команды \listoffigures (для иллюстраций) и \listoftables (для таблиц). Их работа аналогична команде \tableofcontents, генерирующей оглавление: материал для этих списков собирается в специальные файлы с расширениями lof (для иллюстраций) и lot (для таблиц); при каждом запуске LaTeX'а информация, записанная в этих таблицах, относится к предыдущему запуску, так что в самом конце может понадобиться запустить LaTeX лишний раз; наконец, команда \caption может принимать необязательный аргумент — вариант подписи под иллюстрацией или таблицей, предназначенный для включения в список иллюстраций или таблиц соответственно. Этот необязательный аргумент записывается (в квадратных скобках, как обычно) перед обязательным.
Как окружение {figure} не рисует картинок, так и окружение {table} только размещает таблицу на страницах документа, но не создает ее текста. Как набирать таблицы в LaTeX'е, мы расскажем в лекции 6.
В разд.9.7 мы расскажем о том, как можно модифицировать оформление плавающих иллюстраций и таблиц.










Таблица 4.1. | ||||
article | report | book | proc | |
Автоматически нумерующиеся разделы | ![]() | ![]() | ![]() | ![]() |
Разбиение на главы | ![]() | ![]() | ![]() | ![]() |
" Двусторонняя" печать | ![]() | ![]() | ![]() | ![]() |
Титульный лист | ![]() | ![]() | ![]() | ![]() |
Колонтитулы | ![]() | ![]() | ![]() | ![]() |
Одинаковая высота всех страниц | ![]() | ![]() | ![]() | ![]() |
Набор в две колонки | ![]() | ![]() | ![]() | ![]() |
Набор в одну колонку | ![]() | ![]() | ![]() | ![]() |
Мы не стремились охватить в этой таблице все детали различий между стандартными классами (например, колонтитулы в разных классах оформляются по-разному).
Опишем теперь классовые опции. Напомним , что список классовых опций через запятую ставится в квадратных скобках перед основным аргументом команды \documentclass. Самые часто употребляемые классовые опции — это 11pt и 12pt. Они означают, что основной текст документа будет набран шрифтом кегля 11 или 12 соответственно. Если этих опций не указывать, то будет шрифт кегля 10.
Можно указать классовую опцию, задающую формат используемой бумаги, после чего TeX рассчитает размеры текста и полей так, чтобы они максимально соответствовали этому формату. Эти опции таковы (единица измерения указана в скобках):
- a4paper-
(миллиметры) — самый ходовой в нашей стране;
- a5paper -
(миллиметры);
- b5paper -
(миллиметры);
- legalpaper -
(дюймы);
- executivepaper -
(дюймы).
Если ни одна из этих опций не указана, LaTeX считает, что размер бумаги равен (в дюймах) (этот формат бумаги иногда называют "letter").
Если предполагается расположить текст так, чтобы он шел параллельно широкому, а не узкому краю бумаги, то можно указать опцию landscape: в этом случае TeX будет вычислять размеры текста и полей, считая, что ширина и высота листа бумаги поменялись ролями. Подчеркнем, что задание опции landscape само по себе текст на не повернет: он будет сверстан TeX'ом исходя из соответствующих размеров, но дальше необходимо иметь принтер и/или dvi-драйвер, способные обеспечить печать текста в такой ориентации. По умолчанию же считается, что строки параллельны узкому краю листа.
Опция twoside задает печать с разными полями на нечетных и четных страницах (как в книгах), а опция oneside — печать с одинаковыми полями на всех страницах. В классе book по умолчанию установлена опция twoside, в классах article и report — oneside, в классе proc поля на четных и нечетных страницах всегда одинаковые.
Для классов article, report и book можно указать классовую опцию twocolumn . Она означает, что набор текста будет производиться в две колонки. Так как абзацы при этом будут получаться довольно узкие, разумно при пользовании этой опцией заодно увеличить параметр \tolerance, иначе будет получаться много строк, выбивающихся за колонку. В разд. "Набор в две колонки" объяснялось, как сделать так, чтобы две колонки отделялись линейкой. В классе proc набор всегда производится в две колонки, и опции twocolumn и onecolumn (есть и такая) на него не действуют.
Опция draft пригодна для любого класса. Если она включена, то каждая выбивающаяся на поля строка (т.е. строка, о которой выдается сообщение "Overfull \hbox" —) помечается на полях "марашкой". Это удобно при подготовке корректур (английское слово draft как раз и означает "набросок").
Режим, при котором разные страницы могут иметь разную высоту, задается, как мы помним, командой \raggedbottom . По умолчанию этот режим устанавливается классами article и report, если только в качестве классовой опции не указана "двусторонняя" печать (классовая опция twoside), а также классом proc. Во всех остальных случаях LaTeX будет, по умолчанию, делать все страницы одинаковой высоты.
У классов report и book имеются опции openright и openany. Если указана опция openright, то каждая глава начинается обязательно с нечетной страницы (если необходимо, то ради этого печатается дополнительная пустая страница; на развороте нечетная страница будет правой). Если указана опция openany, то новая глава может начинаться как с четной, так и с нечетной страницы, и лишних пустых страниц ради начала главы LaTeX не делает. По умолчанию в классе report LaTeX действует так, как если бы было установлено openany, а в классе book — как если бы было openright.
Скажем кое-что про класс документов proc. В этом классе текст печатается в две колонки, с уменьшенными полями. Опции a5paper, b5paper, onecolumn и titlepage в классе proc использовать нельзя. Нельзя также пользоваться маргиналиями (разд. 10).
При пользовании классом proc внизу каждой страницы будет напечатано слово Page (" страница") и номер страницы. Если вы хотите, чтобы вместо Page печаталось что-то другое, скажем, "с.", то нужно в преамбуле переопределить команду \pagename, то есть написать:
\renewcommand{\pagename}{с.}
переопределение "стандартных надписей", делаемых LaTeX'ом по-английски; \renewcommand обсуждается в лекции 7).
Следующие две классовые опции, применимые к любому из основных классов, влияют на оформление выключных математических формул; если вы пропустили при чтении соответствующие места в лекции 2 , то пропустите и это место. Опция fleqn означает, что выключные формулы, заданные с помощью окружений {equation}, {eqnarray} и {displaymath}, а также пары команд \[ и \], будут напечатаны не в центре строки, а в ее левой части. Опция leqno означает, что номера формул, генерируемые окружениями {equation} и {eqnarray}, будут печататься не справа, а слева.
Титульному листу и оформлению частей документа будут посвящены отдельные разделы; чтобы завершить наш обзор различных стандартных вариантов стиля, нам осталось обсудить колонтитулы и номера страниц, чему будет посвящен разд.3.
