3/24/2008

Предметный указатель в ЛаТеХ: Index in LaTeX HOWTO

В больших документах и книгах предметный указатель, наравне с оглавлением, серьёзно упрощают навигацию по содержимому. И если создание оглавления в ЛаТеХе элементарно, то предметный указатель потребует несколько больших усилий.


Как сделать предметный указатель в ЛаТеХе

Для этого потребуется подправить заголовок ЛаТеХ-документа и внести правки в сам текст файла. Легче это делать, естественно, ещё на этапе создания документа, чтобы не перечитывать его потом.

Что нужно изменить в преамбуле
Следует подключить пакет расширения makeidx:
\usepackage{makeidx}
И чуть ниже, до \begin{document} написать:
\makeindex % команда для создания предметного указателя
После этого перемещаемся в конец документа и выбираем место, где должен быть предметный указатель. Там пишем:
\printindex % печать предметного указателя здесь
При сборке документа в конце, где библиография, на отдельной странице появится надпись "Предметный указатель" и в два столбца пойдут перечни терминов и страниц, на которых они находятся. Быстро, просто, легко и понятно.


Что нужно изменить в тексте
Там, где встречается слово, которое должно быть в предметном указателе, следует вставить команду:
\index{слово}
При этом в итоговом тексте никаких изменений быть не должно. Это служебная команда и она никак не отразится на тексте документа.
Если требуется, чтобы первое упоминание о термине было выделено, например, курсивом, следует дополнить команду, например, так:
\index{слово | \textit}
После этого в предметном указателе номер страницы будет выделен курсивом.

Так же следует учесть, что к служебным файлам в каталоге с документом, наравне с имяфайла.tex, добавится имяфайла.ind, который и содержит файл индексов.



Что ещё можно сделать из предметного указателя?

Через некоторое время после написания этого поста, автор реализовал личный электронный органайзер в LaTeX. Проблема заключалась в том, что для некоторых действий нужны метки или тэги, а в ЛаТеХе их сделать невозможно. Оказалось, что предметный указатель можно использовать и для этого.

Например, можно сделать вложенные указатели:
\index{encodings!input}
Это будет отображено так:
encodings:
input

Если нужно сослаться на другой термин, то это можно сделать так:
\index{Peter|see{hello}}
И будет скомпилировано как: Peter, see hello.

Ссылки
В процессе создания этого поста была использована электронная книга:
И.А. Грицаенко, С.В. Клименко, "LaTeX. Руководство для пользователя. Часть II."
Больше об индексах и предметных указателях можно прочитать в Викиучебнике.

21 комментарий:

  1. А где можно скачать мене,чем начинающему, то есть мне, какой-нибудь актуальный pdf про TeX, чтобы хоть с чего-то начать?..

    Спасибо.

    ОтветитьУдалить
  2. 2zbarassky:
    Есть такая небольшая pdfка - "Не очень краткое введение в LaTeX" (на русском распространяется как lshortru.pdf). Я по ней учился, когда курсовик писал

    ОтветитьУдалить
  3. Спаибо, погляжу. :)

    ОтветитьУдалить
  4. \index{слово | \textbf} - по моему, ну ни как не сделает курсив. Я использую makeindex для Авторского указателя в сборниках трудов, очень помогает. Принцип тот же: \index{Автор}.

    ОтветитьУдалить
  5. 2 zbarassky пишет...
    А где можно скачать мене,чем начинающему, то есть мне, какой-нибудь актуальный pdf про TeX, чтобы хоть с чего-то начать?..
    Как уже отметили выше, "Не очень краткое введение в ЛаТеХ", а ещё книжки Львовского. Этого должно хватить. Ну и я скоро начну выкладывать серию постов про ЛаТеХ.


    2 Михаил Саушкин пишет...
    \index{слово | \textbf} - по моему, ну ни как не сделает курсив.
    Это верно :-) Поправил в тексте. Большое спасибо!

    ОтветитьУдалить
  6. 2zbarassky::
    Как уже отметили выше .. Этого должно хватить.
    У Роженко А.И. не плохая книжка "Искусство верстки в LaTeXe". Автор рассылал её по почте. Рекомендую, не смотря на то, что она привязана несколько к MikTeX'у

    ОтветитьУдалить
  7. Миша, опять:
    \index{слово | \textit}
    После этого... полужирным шрифтом.

    ОтветитьУдалить
  8. 2 Михаил Саушкин пишет...
    Миша, опять:
    А, шайтан меня побери :-) Спасибо, поправил снова (вот что бывает, когда делаешь два дела сразу и к тому же уставшим :-))

    ОтветитьУдалить
  9. Чет я нифига не понял, не могу разобраться, либо лох, либо надо больше отдыхать!

    ОтветитьУдалить
  10. Неплохие доки для новичков по LaTeX:

    http://www.inp.nsk.su/~baldin/LaTeX/index.html

    Для zbarassky.

    ОтветитьУдалить
  11. Надо будет про книжки по ЛаТеХу написать....

    ОтветитьУдалить
  12. Кажется вы забыли упомянуть про команду makeindex которая собственно создаёт тот самый .ind файл из полученного в ходе компиляции .idx файла.

    ОтветитьУдалить
  13. 2 Анонимный пишет...
    Кажется вы забыли упомянуть про команду makeindex которая собственно создаёт тот самый .ind файл из полученного в ходе компиляции .idx файла.
    У меня в Kile это делается автоматически. Сразу появляется в нужном месте предметный указатель.

    ОтветитьУдалить
  14. А как создать несколько предметных указателей? Где это нужно?

    Да вот: авторский (именной) указатель + указатель терминов

    ОтветитьУдалить
  15. ВОПРОС с кодировкой???
    Использую cp1251
    При создании указателя в файл main.idx заносятся всё в непонятной кодировке:
    \indexentry{\IeC {\CYRG }\IeC {\cyri }\IeC {\cyrl }\IeC {\cyrya }\IeC {\cyrr }\IeC {\cyro }\IeC {\cyrv }\IeC {\cyrs }\IeC {\cyrk }\IeC {\cyri }\IeC {\cyrishrt }~\IeC {\CYRR }.\,\IeC {\CYRS }.}{6}
    ...
    поэтому makeindex сортирует неправильно.
    Как изменить кодировку main.idx на cp1251??

    Помогите советом! Кто может

    ОтветитьУдалить
  16. Можно использовать скрипт Котельников cyr2win.wsf
    Команда для Win98 и выше
    > cscript cyr2win.wsf имя_файла

    Как использовать см
    http://biotex.ibss.org.ua/faq.html?catid=6&q_filter=&sortby=title&order=ASC

    Скрипт лежит по адресу
    http://www.tutor.nsu.ru/latex/soft/tools/indexing/Kotelnikov/

    ОтветитьУдалить
  17. Как сделать Именной/Предметный/Географический указатель подробно описано в

    http://biotex.ibss.org.ua/faq.html?catid=8&q_filter=&sortby=title&order=ASC

    ОтветитьУдалить
  18. > \indexentry{\IeC {\CYRF }\IeC {\cyru }\IeC {\cyrn }\IeC {\cyrk }\IeC {\cyrc }\IeC {\cyrii }\IeC {\cyro }\IeC {\cyrn }\IeC {\cyra }\IeC {\cyrl }|\IeC {\cyrl }\IeC {\cyrii }\IeC {\cyrn }\IeC {\cyrii }\IeC {\cyrishrt }\IeC {\cyrn }\IeC {\cyri }\IeC {\cyrishrt }}{8}

    Та же проблема. Подскажите, как решить, если кто сталкивался. Сайт http://www.tutor.nsu.ru/latex/soft/tools/indexing/Kotelnikov/ лежит, и, видимо, уже давно.

    ОтветитьУдалить
  19. А вот кто-нить понимает, как добиться, чтобы уровней вложения в указателе было более трех?

    ОтветитьУдалить
  20. @im комментирует...
    А вот кто-нить понимает, как добиться, чтобы уровней вложения в указателе было более трех?
    По-моему, это ограничение в index. Кстати, спасибо, добавил в пост про вложенные индексы.

    ОтветитьУдалить
  21. Сергей Д
    Скачал программу по латехсу, - портайбл, без установки в тело ОС. устанавил как игрушку в "мои документы". Скачал два учебника. Пользуясь ими вставляю из книг скелет , обвешивая своим материалом. Набор выглядет красиво, а вот как проконтролировать, что на деле получится, чем, - какой программой не пойму. В установленной программе, вроде есть функции просмотра в ПДФ и DYW, но эти функции в программе конфликтуют. ПДФ не видет (НЕ распознает файла), а DYW совсем ни как. Как быть? Вкакой программе и как читать файл TEX?

    ОтветитьУдалить