Работа в системе LaTeX
de301fb4

Настройка программы makeindex


В предыдущих разделах мы объясняли, как и какую информацию можно передавать программе makeindex. Теперь объясним, как добиться того, чтобы она обрабатывала эту информацию по-иному.

Если "запустить программу makeindex с ключом c", то есть сказать

makeindex -c исходный\_файл

то при обработке idx-файла программой makeindex пробелы в начале и конце записей будут игнорироваться, а два и более пробела будут рассматриваться как один. Благодаря этому записи \index{Кошка} и \index{ Кошка} будут рассматриваться как относящиеся к одному и тому же ключевому слову. Без этого ключа программа {makeindex} отведет в указателе отдельную строку для кошки, начинающейся с пробела.

Можно задать по своему усмотрению имя файла, в который программа makeindex запишет результаты своей работы. Для этого надо воспользоваться ключом o (в примере мы употребили еще и ключ c, но это не обязательно):

makeindex -c -o выходной\_файл исходный\_файл

Чтобы задать отличное от стандартного имя файла с протоколом трансляции, надо аналогичным образом воспользоваться ключом t.

Наконец, можно запустить программу makeindex вместе со стилевым файлом, стилевой файл в котором программе будут даны указания по поводу вида, в котором будет записан отсортированный и обработанный idx - файл. Написав подходящий стилевой файл для makeindex, можно радикально изменить вид ind-файла — так, что он вообще не будет иметь ничего общего с LaTeX'овским файлом (это может иметь смысл: makeindex задуман как программа широкого профиля, пригодная не только для LaTeX'а). Как добиться столь революционных изменений, мы обсуждать не будем (интересующиеся могут узнать все подробности из оригинальной документации), но о некоторых вещах, полезных именно для LaTeX'а, расскажем.

Чтобы подключить стилевой файл к makeindex, надо запустить эту программу с ключом s, после которого, через пробел, указывается имя стилевого файла (по традиции он имеет расширение ist). Если стилевой файл называется mystyle.ist, то можно сказать так:

makeindex -s mystyle.ist исходный_файл

Теперь обсудим, что можно менять с помощью стилевого файла.
Как мог заметить читатель, программа makeindex автоматически записывает строку

\begin{theindex} в начало ind-файла и

\end{theindex} в его конец. Часто требуется, чтобы в начало или конец ind - файла автоматически записывалось что-то еще (команда \sloppy в начало, например). Для того, чтобы после \begin{theindex} было на отдельной строке написано еще и \sloppy, надо в стилевом файле написать так:

preamble "\\begin{theindex}\n \\sloppy\n" Здесь preamble - имя стилевого параметра, определяющего, что записывается в начало всякого ind - файла. Остальной текст — содержание этой записи. Правила записи в стилевом файле для makeindex таковы:

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

"\n\n\\end{theindex}\n" (иными словами: начать с новой строки, одну строку пропустить, написать \end{theindex}, строку закончить).

Следующие три параметра определяют, чем отделяются номера страниц от ключевых слов: "delim_0" — для ключевых слов "верхнего уровня", "delim_1" и "delim_2" — для слов первого и второго уровня подчинения. По умолчанию все три этих параметра определены как ", "(запятая и пробел), вследствие чего номера страниц отделяются от слов запятыми. В русских текстах эти запятые ставить не принято, поэтому все три этих параметра стоит переопределить на "":

Параметр "group_skip" определяет, что записывается в ind - файл между группами слов, начинающихся на одну букву.


Значение по умолчанию - "\\n\n \\indexspace\n" (" пропустить строку, написать слово \indexspace и начать с новой строки").

Перед каждой группой терминов, начинающихся с новой буквы, можно (как это и сделано в указателе к книге, которую вы держите в руках) напечатать на отдельной строке эту букву. Для этого в стилевом файле надо написать

headings_flag 1 При этом буквы будут напечатаны тем же шрифтом, что и остальной текст указателя. Чтобы шрифт был другим, надо в стилевом файле определить параметры heading_prefix и heading_suffix. Первый из них определяет, какой TeX'овский текст запишется в ind - файл перед буквой, второй — что запишется после буквы. Если, например, нужно, чтобы шрифт, которым печатаются буквы-заголовки, имел размер \large и был полужирным, то можно написать

heading_prefix "{\\normalfont\\large\\bfseries " heading_suffix "}" (вспомните, что для получения символа \ надо написать \\; пробел после bfseries необходим, чтобы в ind-файле имя команды не слилось с последующей буквой).

Если в указателе присутствуют термины, начинающиеся с символа, не являющегося буквой, то они будут выделены в отдельную группу; если в стилевом файле написано headings_flag 1, то перед этой группой будет напечатано слово Symbols. Если вас это не устраивает, надо в стилевом файле определить строковую константу symhead_positive. Если, например, написать

symhead_positive "" то перед этой группой вообще никакого заголовка не будет; если хотите, чтобы вместо Symbols был другой заголовок, напишите вместо "" этот заголовок (в двойных кавычках, разумеется).


Содержание раздела