В конце Texinfo-файла должны быть команды для создания именных
указателей и (обычно) содержаний, подробного и обзорного. Он также
должен включать команду @bye, помечающую последнюю
обрабатываемую TeX строку.
Например:
@node Указатель понятий, ,Указатель переменных, Top @c имя-ноды, следующая, предыдущая, вверх @unnumbered Указатель понятий @printindex cp @contents @bye
Напечатать именной указатель -- значит включить его в руководство или
Info-файл. Это не делается автоматически, потому что в Texinfo-файле вы
используете команду @cindex или другие команды, создающие
вхождения именного указателя; они только собирают исходные данные для
создания указателя. Чтобы создать именной указатель, вы должны
поместить в том месте документа, где вы хотите его увидеть, команду
@printindex. Кроме этого, при создании печатного руководства вы
должны запустить программу, называемую texindex
(ТјрзСћзш Сђўцшљ Форматирование и печать твердой копии), которая сортирует исходные данные и записывает
сортированный именной указатель в файл. Именно этот файл используется
для печати именного указателя.
В Texinfo предопределены шесть различных типов именных указателей: указатель понятий, указатель функций, указатель переменных, указатель клавиш, указатель программ и указатель типов данных (ТјрзСћзш Сђўцшљ Предопределенные именные указатели). Каждый указатель имеет двухбуквенное имя: `cp', `fn', `vr', `ky', `pg' и `tp'. Вы можете объединить указатели или поместить их в разные разделы (ТјрзСћзш Сђўцшљ Объединение именных указателей); вы также можете определить свои именные указатели (ТјрзСћзш Сђўцшљ Определение новых именных указателей).
Команда @printindex принимает в качестве аргумента двухбуквенное
имя именного указателя, читает соответствующий файл с сортированным
указателем и форматирует указатель соответствующим образом.
Команда @printindex не создает заголовка главы для именного
указателя. Следовательно, перед командой @printindex вы должны
написать подходящую команду создания главы или раздела (обычно
@unnumbered), чтобы указатель имел заголовок и был упомянут в
содержании. Перед командой @unnumbered пишите строку
@node.
Например:
@node Указатель переменных, Указатель понятий, Указатель функций, Top @comment имя-ноды, следующая, предыдущая, вверх @unnumbered Указатель переменных @printindex vr @node Указатель понятий, , Указатель переменных, Top @comment имя-ноды, следующая, предыдущая, вверх @unnumbered Указатель понятий @printindex cp
Читателям нравится, когда указатель понятий расположен последним в
книге, потому что тогда его легче найти. Наличие только одного
указателя также помогает читателям, так как тогда них у есть только одно
место для поиска (ТјрзСћзш Сђўцшљ @synindex)
Команды @chapter, @section и другие команды
структурирования предоставляют необходимые сведения для создания
содержания, но не приводят к действительному появлению содержания в
руководстве. Чтобы сделать его, вы должны использовать команды
@contents и/или @summarycontents.
@contents
@heading, не
появляются в содержании.)
@shortcontents
@summarycontents
@summarycontents -- синоним @shortcontents; две эти
команды совершенно одинаковы.)
Создают короткое или, иначе говоря, обзорное содержание, в котором
перечисляются только главы (и приложения, и ненумерованные главы).
Разделы, подразделы и подподразделы пропускаются. Короткое содержание
требуется только для больших руководств, в дополнение к полному
содержанию.
Обе команды для содержаний нужно писать на отдельной строке. Команды
для содержаний автоматически создают заголовок в начале первой страницы
содержания, поэтому не включайте перед ними никаких команд для описания
структуры глав, таких как @unnumbered.
Так как в Info-файлах вместо содержания используются меню, команды
форматирования для Info игнорируют команды для вывода содержаний. Но
содержания включаются в вывод в простом текстовом формате (создаваемом
командой makeinfo --no-headers).
Команды печати содержания можно помещать как в самом конце файла после
всех именных указателей (смотрите предыдущий раздел), непосредственно
перед командой @bye (смотрите следующий раздел), или недалеко от
начала файла, после @end titlepage (ТјрзСћзш Сђўцшљ @titlepage).
Преимущество первого способа в том, что вывод содержания всегда
соответствует истине, потому что он отражает только что сделанные
изменения. Преимущество второго в том, что содержание печатается в
правильном месте, так что вам не нужно переорганизовывать DVI-файл или
перетасовывать бумагу. Однако команды для печати содержания в начале
документа игнорируются при выводе на стандартный вывод.
Как автор, вы можете поместить команды для печати содержания где вы
предпочитаете. Но если вы просто печатаете руководство, вы можете
пожелать напечатать содержание после титульного листа даже если автор
поместил команды для печати содержания в конец документа (как в случае
большинства существующих документов Texinfo). Вы можете сделать это
задав @setcontentsaftertitlepage и/или
@setshortcontentsaftertitlepage. Первое печатает только главное
содержание после @end titlepage; второе печатает и краткое, и
полное содержание. В любом случае любые последующие команды
@contents или @shortcontents игнорируются (если только
@end titlepage не была встречена вообще).
Вам нужно включать команды @set...contentsaftertitlepage в
начале документа (сразу после @setfilename, например). Или,
если вы пользуетесь texi2dvi (ТјрзСћзш Сђўцшљ Форматирование с помощью texi2dvi), вы можете использовать его ключ --texinfo для
задания этого вообще без изменения исходного файла. Например:
texi2dvi --texinfo=@setshortcontentsaftertitlepage foo.texi
@bye Завершение файла
Команда @bye прекращает форматирование в TeX или Info. Все,
что следует в файле после команды @bye, невидимо для
форматирующих команд. Команда @bye должна находиться на
отдельной строке.
Вы можете, если хотите, писать заметки после строки @bye. Эти
заметки не будут форматироваться и не появятся ни в Info-файле, ни в
печатном руководстве, как если бы текст после @bye был помещен
внутри блока @ignore ... @end ignore. Вы также
можете написать после строки @bye список локальных переменных.
тјрзСћзш Сђўцшљ Использование списка локальных переменных, для подробных сведений.