Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 71
Текст из файла (страница 71)
Чтобы ввести в строку символов обратный слеш иликавычки, необходимо перед ними поставить escape-символ (обратный слеш).В качестве первого упражнения рассмотрим стилевой файл для подготовки словаря терминов. Назовем его myglossary.ist и предположим, что термины для словаря помечены в исходном тексте командами \glossary:keywordpreamble"\\glossaryentry""\\newpage{\\Large \\bfseries Словарь терминов}\\begin{description}\n"postamble "\n\n\\end{description}\n"В первой строке он содержит указание, что входы в словарь терминов записываются в аргумент команды \glossaryentry, а не \indexentry, как программа MakeIndex предполагаетпо умолчанию.
Далее в трёх строчках идет описание преамбулы выходного файла. Здесь указывается, что словарь терминов начинается с новой страницы (\newpage). Затем формируетсязаголовок словаря терминов, который должен быть напечатан большими буквами полужирнымшрифтом (\Large и \bfseries). Для форматирования словаря терминов выбрана процедураdescription.
У неё могут быть записи только одного уровня. Поэтому получается, что в аргументах команд \glossary, которые метят термины в исходном тексте печатного документа,нельзя использовать символ !, если ему не предшествует двойной апостроф ". Если исходныйтекст документа записан в файле с именем foo.tex, то командная строка запуска программыMakeIndex должна выглядеть так:makeindex-s myglossary.ist-o foo.glsfoo.gloСледующий пример стилевого файла (назовем его book.ist) показывает, как напечататьалфавитный указатель в виде отдельного документа.preamble"\\documentclass[12pt]{book}\\begin{document}\\begin{theindex}{\\small\n"Форматирование текста в выходном файле программы MakeIndex не влияет на результаткомпиляции алфавитного указателя LATEX’ом.833714.6. Настройка указателяpostamble"\n\n}\\end{theindex}\\end{document}\n"Если предположить, что алфавитный указатель должен начинаться на нечётной странице, запуск MakeIndex осуществляется из командной строки с дополнительным ключом -p odd:makeindex-s book.ist-o footmp.tex-p oddfooMakeIndex извлечёт номер последней страницы исходного документа из файла протокола компиляции (в данном случае это foo.log) и возьмёт следующее ближайшее нечётное число.
Другие возможные значения ключа -p устанавливают, что первая страница должна быть нечётной(even) или просто иметь номер на 1 больше, чем в исходном документе (any). Можно такжеявно указать номер страницы в виде числа. Ключ -o направляет вывод программы MakeIndexв файл footmp.tex, полностью готовый к обработке LATEX’ом.Наконец, приведём текст стилевого файла manual-i.ist, который использовался для подготовки алфавитного указателя в нашей книге:headings_flag1symhead_positive "Символы"numhead_positive "Числа"heading_prefix "{\\bfseries\\uppercase{"heading_suffix "} \\hrulefill\\nopagebreak\n}"В первой строке сказано, что нужно создавать заголовки групп терминов и начинать их с прописной буквы.
Вторая и третья строки заменяют английские названия для групп Symbols (символы) и Numbers (числа). Следующие две строчки устанавливают, что заголовок группы надопечатать полужирным шрифтом и затем проводить горизонтальную линию до конца колонки9 .Все возможные параметры, через которые можно воздействовать на оформление отсортированного указателя, перечислены в табл. 14.1.Параметр1keyword (s)arg_open (c)arg_close (c)range_open (c)Таблица 14.1Параметры входного файла MakeIndexЗначение по умолчанию и описание2"\\indexentry"Команда, аргумент которой является входом в алфавитный указатель’{’Признак начала аргумента команды-входа в указатель’}’Признак конца аргумента команды-входа в указатель’(’Признак начала диапазона страницДополнительно мы изменили определения команд \subitem и \subsubitem так, чтобы онивставляли соответственно одно и два тире перед записями второго и третьего уровня, а такжепроцедуру theindex так, чтобы она печатала указатель в три колонки.
Эти изменения сделаныв классе печатного документа. Их описание выходит за рамки книги, так как требует знаниякоманд TEX’а. Читатель найдёт необходимые сведения в книге [12].9338Глава 14. Алфавитный указательПродолжение табл. 14.11range_close (c)level (c)actual (c)encap (c)quote (c)escape (c)Параметр1preamble (s)postamble (s)setpage_prefix (s)setpage_suffix (s)2’)’Признак конца диапазона страниц’!’Признак начала следующего уровня во входе в указатель’@’Признак начала текста, который должен появиться в выходномфайле’|’Признак начала текста, который используется как имя команды,форматирующей номер страницы’"’Признак цитируемого символа. Следующий символ теряет свойство быть признаком чего-либо и рассматривается в качествеобычной буквы’\\’Символ, являющийся признаком команды, если ему не предшествует другой символ escape;quote теряет свойство быть признаком цитируемого символа, еслиему предшествует escape.
Эти два символа должны быть разнымиТаблица 14.2Параметры выходного файла MakeIndexЗначение по умолчанию и описание2Контекст"\\begin{theindex}\n"Текст, предшествующий отсортированному списку входов в алфавитный указатель"\n\n \\end{theindex}\n"Текст, следующий за отсортированным списком входов в алфавитный указательНачальная страница"\n \\setcounter{page}{"Начало команды, которая задаёт номер первой страницы (используется, если алфавитный указатель компилируется отдельно). Номер первой страницы pg может быть задан ключом -p pg в командной строке запуска программы MakeIndex"}\n"Конец команды, которая задаёт номер первой страницы (используется, если алфавитный указатель компилируется отдельно)14.6. Настройка указателя1group_skip (s)headings_flag (n)heading_prefix (s)heading_suffix (s)symhead_positive(s)symhead_negative(s)numhead_positive(s)numhead_negative(s)item_0 (s)item_1 (s)item_2 (s)item_01 (s)item_x1 (s)item_12 (s)item_x2 (s)339Продолжение табл.
14.22Новая группа или буква"\n\n \\indexspace\n"Вертикальный пробел, который нужно вставить перед группой терминов, начинающихся с нового символа0Флаг, указывающий способ формирования заголовка новой группы терминов. Если n > 0, в заголовок помещается прописная буква; если n < 0 — строчная буква; при n = 0 заголовок не создаётся""Текст, который вставляется перед заголовком группы""Текст, который вставляется после заголовка группы"Symbols"Заголовок группы символов в случае, если headings_flag > 0"symbols"Заголовок группы символов в случае, если headings_flag < 0"Numbers"Заголовок группы цифр, если headings_flag > 0"numbers"Заголовок группы цифр, если headings_flag < 0Разделители уровней"\n \\item "Команда, которая вставляется перед входом первого уровня"\n \\subitem "Команда, которая вставляется между двумя входами второгоуровня"\n \\subsubitem "Команда, которая вставляется между двумя входами третьегоуровня"\n \\subitem "Команда, которая вставляется между входом первого и второгоуровня"\n \\subitem "Команда, которая вставляется между входом первого и второгоуровня, когда первый не имеет номера страницы"\n \\subsubitem "Команда, которая вставляется между входом второго и третьегоуровня"\n \\subsubitem "Команда, которая вставляется между входом второго и третьегоуровня, когда второй уровень не имеет номера страницы340Глава 14.
Алфавитный указательПродолжение табл. 14.21delim_0 (s)delim_1 (s)delim_2 (s)delim_n (s)delim_r (s)delim_t (s)encap_prefix (s)encap_infix (s)encap_suffix (s)page_precedence (s)line_max (n)indent_space (s)indent_length (n)2Разделители страниц", "Разделитель, который вставляется между термином и первым номером страницы", "То же для второго уровня", "То же для третьего уровня", "Разделитель, который вставляется между номерами страниц дляодного термина на любом уровне"--"Разделитель, который вставляется между номерами первой и последней страниц диапазона""Разделитель, который вставляется вслед за последним номером всписке страницФормат и порядок номеров страниц"\\"Первая часть префикса для команды, форматирующей номер страницы"{"Вторая часть префикса для команды, форматирующей номер страницы"}"Суффикс для команды, форматирующей номер страницы"rRnaA"Порядок сортировки страниц с разным форматом номеров: r, R —римские строчные и прописные цифры; n — арабские цифры; a, A— строчные и прописные буквыПеренос строк72Максимальная длина строки в выходном файле программы MakeIndex.
Более длинный текст разбивается на несколько строк"\t\t"Отступ, который вставляется перед перенесенной строкой в выходном файле программы MakeIndex (по умолчанию вставляютсядва табулятора)16Длина отступа, который вставляется перед перенесённой строкойв выходном файле программы MakeIndex (по умолчанию вставляются 16 пробелов, что эквивалентно двум табуляторам)Выпустив джина из бутылки,возьмите ёмкость побольше,чтобы упаковать его вновь.Первый закон эволюцииГлава 15Классы документовДо сих пор мы мало обращали внимание на различия, существующие междуклассами печатных документов.