Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 70
Текст из файла (страница 70)
Поэтому команды \index с аргументами {гну}, {␣гну} и {гну␣}, где ␣обозначает пробел, создают три разных входа в указатель. Однако в печатном документе всетри входа выглядят совершенно одинаково, так как LATEX игнорирует пробелы при печати. Точно так же команды \index{a␣space} и \index{a␣␣space} создают два разных входа, которыенеразличимы при печати. Поэтому нельзя переносить часть аргумента команды \index на другую строку во входном файле. Эти проблемы с пробелами можно устранить, если программуMakeIndex запускать с ключом -c.MakeIndex предполагает, что страницы, нумерованные римскими цифрами, предшествуютстраницам с арабской нумерацией, а страницы, помеченные латинскими буквами, находятся всамом конце книги. Можно изменить это правило, переопределив параметр page_precedenceв стилевом файле, как показано в разделе 14.6.14.4.Два указателя в одном документеИзредка случается, что в книге одновременно нужны алфавитный указатель исловарь терминов или предметный и именной указатели.
Разберем последнийслучай. Как мы отмечали, подготовку словаря терминов чаще всего можно выполнить без привлечения сортирующей программы.Для выделения терминов, идущих в именной указатель, можно использоватькоманду \glossary, оставив \index для предметного указателя. При наличии впреамбуле декларации \makeglossary информация о таких терминах будет записана в служебный файл jobname.glo. Он состоит из входов в словарь терминов, т. е. из команд \glossaryentry (в аргументах которых записана информация14.5. Подведём итоги333о терминах), тогда как файл jobname.idx для предметного указателя состоитиз команд \indexentry.
Термин «вход в словарь терминов» не должен вводитЧитателя в заблуждение — это всего лишь буквальный перевод имени команды \glossaryentry. В данной книге мы используем \glossary для составленияименного указателя.MakeIndex по умолчанию настроен на сортировку файла с расширением idx.Для сортировки файла с расширением glo, содержащего \glossaryentry вместо\indexentry, нужно создать стилевой файл для программы MakeIndex (назовёмего manual-g.ist) примерно следующего содержания:keywordheading_prefixheading_suffixdelim_0delim_1delim_2"\\glossaryentry""{\\bfseries\\hfill ""\\hfill\\nopagebreak\n}""\\quad ""\\quad ""\\quad "Смысл того, что здесь написано, поясняется в разделе 14.6.
Чтобы первичный«словарь терминов» (то бишь алфавитный указатель) jobname.glo сохранить вфайле jobname.gls, командная строка запуска программы MakeIndex должнасодержать ключи7 -s и -o:cscript cyr2win.wsf jobname.glomakeindx.exe -s manual-g.ist -o jobname.gls jobname.gloЗатем файл jobname.gls нужно вставить в печатный документ при помощикоманды\input{jobname.gls}В результате указанных действий «словарь терминов» будет напечатан процедурой theindex. Заметим, что команда \printindex, рекомендуемая для печатиалфавитного указателя, фактически эквивалентна \input{jobname.ind}, но невыдаёт сообщение об ошибке, если файл jobname.ind не найден.14.5.Подведём итогиКомпиляцию входов в алфавитный указатель осуществляют следующие команды:\makeindex — декларация, располагающаяся только в преамбуле.
При наличии \makeindex и отсутствии декларации \nofiles LATEX записывает в файлjobname.idx входы в указатель, т. е. \indexentry, произведённые командами\index.Полное описание всех ключей программы MakeIndex содержится в прилагаемой к ней документации [19] и в книге [12].7334Глава 14. Алфавитный указатель\index{str} записывает в файл jobname.idx (если запись разрешена) входв указатель \indexentry{str}{pg}, где pg — номер страницы.
Строка входа strможет содержать любые символы, включая специальные, но не должна иметьнепарные фигурные скобки, при подсчёте которых учитываются команды \{и \}. Структура строки входа str в наиболее общем случае имеет следующийвид:sortindex0 !sortindex1 !sortindex2 @printindex|formatгде только первый элемент строки sortindex0 является обязательным. Элементы sortindex0 , !sortindex1 и !sortindex2 используются для сортировкив алфавитном порядке соответственно входов первого уровня, входов второгоуровня внутри входа первого уровня и входов третьего уровня внутри входавторого уровня, причём ! является разделителем между этими элементамии не учитывается при сортировке. Элемент printindex есть текст входа наинизшего уровня, имеющегося в str.
При отсутствии @printindex текст входасоответствующего уровня совпадает с sortindex0 , sortindex1 или sortindex2 .Последняя часть строки |format определяет способ форматирования номерастраницы pg в алфавитном указателе, причём форматирование осуществляет команда \format{pg}, которая должна быть определена к моменту печати указателя.
Команда \format{pg} может иметь более одного аргумента;здесь предполагается, что дополнительные аргументы включены в обозначение format. Вместо | могут стоять |( или |). Команда \index с |( помечаетначало фрагмента текста, который должен быть отражён в алфавитном указателе в виде диапазона страниц, а команда \index с |) помечает конец этогофрагмента текста, причём части аргументов команд \index, предшествующие|, должны совпадать.Команда \index, помимо того что является хрупкой, не может появлятьсявнутри аргумента другой команды, если sortindex0 , sortindex1 или sortindex2содержат символы, отличные от букв, цифр и знаков препинания.\see{text}{pg} определена в пакете makeidx. Используется для создания перекрёстных ссылок на другие входы в алфавитный указатель.
Обращение к \seeиз аргумента команды \index должно иметь вид \index{...|see{printindex}}.\seealso{text}{pg} определена в пакете makeidx и действует аналогично команде \see. Обращение к \seealso из аргумента команды \index должноиметь вид \index{...|seealso{printindex}}.Компиляцию входов в словарь терминов осуществляют следующие команды:\makeglossary — декларация, располагающаяся только в преамбуле. Еслиотсутствует \nofiles, \makeglossary заставляет LATEX записывать в файлjobname.glo входы в словарь терминов \glossaryentry, произведённые командами \glossary.14.6. Настройка указателя335\glossary{str} записывает в файл jobname.glo (если запись разрешена) входв словарь терминов \glossaryentry{str}{pg}, где str и pg имеют тот жесмысл, что и для команды \index.
Команда \glossary не может появлятьсявнутри аргумента другой команды, если sortindex0 , sortindex1 или sortindex2содержат символы, отличные от букв, цифр и знаков препинания.Команда(makeidx)\printindexопределена в пакете makeidx. Она считывает файл jobname.ind, куда MakeIndexзаписывает отсортированный текст алфавитного указателя, оформленный в видепроцедуры theindex.Процедура\begin{theindex} .
. . \end{theindex}печатает алфавитный указатель. Каждый вход первого, второго и третьего уровня начинается с команды\item\subitem\subsubitemсоответственно. Они, в отличие от команды \item в других процедурах составления списков (раздел 5.4), не имеют аргументов. Команда\indexspaceвставляет дополнительный вертикальный пробел между входами в алфавитныйуказатель, обычно используется перед входом, начинающимся с новой буквы.
Величина пробела, как и другие детали оформления алфавитного указателя, определяется классом печатного документа. Название алфавитного указателя и ключевые слова, вставляемые командами \see и \seealso, хранятся соответственнов командах\indexname\seename\alsoname(babel, makeidx)Они переопределяются при помощи \renewcommand. Например:\renewcommand{\indexname}{Предметный указатель}\renewcommand{\alsoname}{\emph{см.~тж.}}14.6.Настройка указателяФормат алфавитного указателя не фиксирован и может быть адаптирован к конкретной задаче. Например, легко заменить символ !, который используется для разделения записей разныхуровней в алфавитном указателе.
То же самое можно проделать с другими служебными символами @, |, ", {, } и т. п. Иными словами, кардинальную переделку допускает формат входного336Глава 14. Алфавитный указательфайла с расширением idx для программы MakeIndex. MakeIndex способен также в широкихпределах варьировать формат выходного файла с расширением ind, который содержит исходный текст алфавитного указателя для окончательной компиляции LATEX’ом. Тем самым исключается потребность в ручной доводке указателя. Настройкой MakeIndex управляет стилевойфайл (с расширением ist). Он состоит из набора параметров.Все параметры подразделяются на две группы. В первую входят параметры, управляющиеформатом входного файла; они перечислены в табл.
14.1. Вторую группу составляют настройкивыходного файла; они представлены в табл. 14.2. В каждой таблице приведено значение параметра настройки, принимаемое по умолчанию (когда параметр отсутствует в стилевом файлеили стилевой файл вообще не используется). Именно эти значения подразумевались в предшествующих разделах главы. Пары параметр — значение могут располагаться в стилевом файлев произвольном порядке. Строка, начинающаяся со знака процента %, является комментарием. Изменяемое значение параметра, обозначенное в таблицах через (s), есть произвольнаястрока символов, ограниченная с обеих сторон двойными апострофами ("..."); (c) обозначаетотдельную букву в одинарных апострофах, а (n) — целое число, \n и \t — переход на новуюстроку и табулятор в выходном файле8 .