Котельников И., Чеботаев П. LaTeX2e по-русски (1185906), страница 69
Текст из файла (страница 69)
Здравыйсмысл подскажет автору, что должно быть в указателе и как его следует организовать. Компьютер — всего лишь инструмент: он не может составить указатель заавтора книги. Вероятно, не очень сложно выбрать, какие слова являются наиболее значимыми, и механически пометить каждое появление этих слов в тексте, нотакой указатель вряд ли будет столь же полезен, как приготовленный с бо́льшимтщанием.Каждая команда \index создаёт вход в алфавитный указатель.
LATEX записывает информацию о входе в файл jobname.idx, если преамбула входного файласодержит декларацию \makeindex. Например, если команда \index{кит} содержится в тексте, который в печатном документе попадает на страницу 42, то информация об этом в файле jobname.idx будет выглядеть следующим образом:\indexentry{кит}{42}Команда \indexentry служит входом в алфавитный указатель.
Если в преамбуленет декларации \makeindex (или же, напротив, имеется декларация \nofiles,запрещающая запись любых служебных файлов), то \index просто игнорируется.Команда \index не производит никакого эффекта в том месте входного файла,где она стоит.
Во входном файле нужно набратьСиний кит\index{кит}~--- самое крупное млекопитающее.32914.3. Вход в указательчтобы создать вход в алфавитный указатель к слову «кит». Дабы исключитьситуацию, когда команда \index{кит} попадает на страницу, следующую за той,где стоит слово «кит», она должна следовать за ним без пробела.Следующий пример показывает, каким образом MakeIndex сортирует входы вуказатель. В левой колонке указан номер страницы, куда попадает текст, содержащий команду \index.
В правой колонке показан соответствующий фрагменталфавитного указателя:стр. iiстр. viii:стр. ix:стр. 22:стр. 23:стр. 24:\index{Альфа}\index{альфа}\index{альфа}\index{Алфавит}\index{альфа}\index{алфавит}\index{алфавит}\index{алфа вит}алфа вит, 24Алфавит, ixалфавит, 23Альфа, iiальфа, viii, ix, 22Здесь две команды \index{алфавит} на странице 23 генерируют номер 23 в алфавитном указателе только один раз.Чтобы создать вход второго уровня в алфавитный указатель, аргумент команды \index должен содержать также указание на вход первого уровня. В этомслучае два входа разделяются восклицательным знаком «!»:стр.
7:стр. 32:стр. 35:стр. 38:\index{гну!полосатый}\index{гну}\index{гну!белохвостый}\index{гнус!личинка}\index{гнус!куколка}гну, 32белохвостый, 35полосатый, 7гнускуколка, 38личинка, 35Вход третьего уровня должен указывать весь путь его поиска:стр. 3:стр. 4:стр. 9:\index{укус!насекомого!комара}\index{укус!насекомого!пчелы}\index{укус!растения}укуснасекомогокомара, 3пчелы, 4растения, 9MakeIndex и процедура theindex предусматривают не более трёх уровней в алфавитном указателе.Чтобы выделить диапазон страниц, следует пометить начало и конец соответствующего фрагмента текста двумя командами \index. Аргумент первой команды должен заканчиваться парой символов |(, а второй — |):330Глава 14. Алфавитный указательстр. vi:стр.
x:стр. 22:стр. 28:стр. 30:стр. 32:\index{гнус|(}\index{гнус|)}\index{гнус}\index{гну!полосатый|(}\index{гну!полосатый|)}\index{гну!белохвостый|(}\index{гну!белохвостый}\index{гну!белохвостый|)}гнубелохвостый, 28–32полосатый, 22гнус, vi–x, 22MakeIndex правильно обрабатывает случай, когда начало и конец диапазона попадают на одну страницу. Он также автоматически форматирует номера страницв виде диапазона, если один и тот же вход в указатель встречается на трёх илиболее страницах подряд.Иногда требуется добавить перекрёстную ссылку на другой термин в алфавитном указателе, не указывая номер страницы.
Это достигается при помощиконструкции see{. . . }, которая отделяется от предшествующей части аргументакоманды \index символом |:стр. 2:стр. 2:\index{PC}\index{PC!IBM|see{IBM PC}}PC, 2IBM, см. IBM PCЕсли задать вход в указатель в форме sortindex@printindex, то строка sortindex определит расположение входа по алфавиту, а строка printindex — напечатанный текст.
В следующем примере команда $\alpha$ печатает символ α;соответствующий вход в указателе располагается после входа «альфа», а не передвходом β:стр.стр.стр.стр.12:13:14:15:\index{альфы}\index{альфа}\index{альфа@$\alpha$}\index{$\beta$}β, 15альфа, 13α, 14альфы, 12Аналогично команда \index{гнус@\textbf{гнус}} создаёт вход «гнус». Болеепрямолинейное \index{\textbf{гнус}} приведёт к тому, что «гнус», как и «β»,будет напечатан до слов на букву «а», поскольку программа сортировки считает,что обратный слеш, как и все иные подобные специальные символы, предшествует буквам.В некоторых указателях определённые номера страниц форматируются особым способом. Например, номер страницы, где дано определение термина, может быть выделен курсивом.
Курсивный текст печатает команда \textit. Еёимя или имя другой команды \format, которая должна печатать номер выделенной страницы, следует указать в самом конце аргумента команды \index,заменив обратный слеш \ на |. Номер страницы pg, где находится термин, помеченный командой \index{...|format}, будет напечатан в алфавитном указателекомандой \format{pg}. Аналогично команда \index{...|(format} поможет напечатать диапазон номеров страниц в форме \format{pg1–pg2}.
Например, что-33114.3. Вход в указательбы выделить ссылки на часть страниц курсивным и жирным шрифтом, следуетдействовать так:стр.стр.стр.стр.стр.3:4:5:44:46:гну, 3, 4гнус, 5, 44–46\index{гну|textit}\index{гну|textbf}\index{гнус}\index{гнус|(textit}\index{гнус|)}Конструкция \see{. . . }, упомянутая выше, является специальной реализациейэтой возможности. Команда \see определена в пакете makeidx. Она имеет двааргумента, причём второй из них не печатает:\see{IBM, PC}{2}см. IBM, PCЭтим вторым аргументом является номер страницы, на которую попадает команда \index.Другая подобная команда \seealso также «прячет» номер страницы, заменяя его словами «см. также».
В отличие от \see она предназначена для выделения терминов, многократно помеченных в тексте документа. Соответственно,для таких терминов будут указаны номера страниц, сформированные другимикомандами \index:стр. 5:стр. 99:\index{гнус}\index{гнус|seealso{москиты}}гнус, 5, см. также москитыПоскольку \see не печатает номер страницы, не имеет большого значения,где находятся команды \index{...|see{...}} (но они должны находиться в теле документа, т. е.
между \begin{document} и \end{document}). Однако в случае\seealso положение \index{...|seealso{...}} определяет положение «см. также» относительно других номеров страниц. Обычно такого рода перекрёстныессылки собирают в одном месте, чаще всего в конце документа.Отладку алфавитного указателя в определённой степени способна облегчитьзагрузка пакета showidx. Он модифицирует команду \index так, что её аргументпечатается на полях страницы, тогда как другие функции команды сохраняются.Просматривая отпечатанную страницу с такими заметками на полях, легко установить, какие термины нужно добавить в алфавитный указатель или удалить изнего.14.3.1.Особые возможностиКоманды в аргументе \index исполняются тогда, когда LATEX форматирует алфавитный указатель, считывая файл с расширением ind, а не при записи информации в файл jobname.idx6 .Хрупкие команды расшифровываются уже на стадии записи этого файла.
Если это нежелательно, такие команды необходимо защитить, предварив их командой \protect.6332Глава 14. Алфавитный указательСледовательно, MakeIndex расставляет по алфавиту входы в указатель, записанные командой \index{\xyz} в соответствии с написанием имени команды \xyz (учитывая даже «\») внезависимости от того, как она определена.Аргумент команды \index может содержать любые символы, в том числе специальные. Если аргумент команды \index или его левая часть, стоящая до символа @ (при его наличии), содержит любой из десяти специальных символов: \, #, $, %, &, {, }, _, ^ и ~, то она не можетнаходиться в аргументе другой команды.
Однако и в этом случае устойчивые команды могутбыть помещены в части аргумента команды \index, следующей за символом @, как, например,в \index{гну@\textit{гну}}, а хрупкие команды могут использоваться, если защищены командой \protect.Фигурные скобки в аргументе \index всегда должны быть парными, причём скобки в командах \{ или \} также учитываются. Впрочем, команды \{ и \} имеют синонимы \lbrace и\rbrace, на которые это ограничение уже не распространяется.Символы !, @ и | имеют значение команд, если они находятся в аргументе команды \index.Для использования в качестве обычных символов их следует процитировать, поставив передкаждым из них двойную кавычку ". И вообще, любой символ считается цитированным, если онследует за нецитированным символом ", не являющимся частью команды \".стр.
2:стр. 3:стр. 4:стр. 5:\index{восклицать ("!)}\index{восклицать ("!)!громко}\index{еж@\"{е}ж}\index{кавычка ("")}восклицать (!), 2громко, 3ёж, 4кавычка ("), 5В процессе упорядочения входов по алфавиту MakeIndex рассматривает пробелы наравне собычными символами.