# How can I have two or more distinct indexes?

I often want to have more than one index in a longer LaTeX document. For instance, I might want a general concept index, an index of named persons, and an index of symbolism. How can I have two or more distinct indexes in LaTeX?

-

The multind package provides simple and straightforward multiple indexing.

You tag each \makeindex, \index and \printindex command with a file name, and indexing commands are written to (or read from) the name with the appropriate (.idx or .ind) extension appended. To create a “general” and an “authors” index, one might write:

\usepackage{multind}
\makeindex{general}
\makeindex{authors}
...
\index{authors}{Another Idiot}
...
\index{general}{FAQs}
...
\printindex{general}{General index}
\printindex{authors}{Author index}


To complete the job, run LaTeX on your file enough times that labels, etc., are stable, and then execute the commands

makeindex general
makeindex authors


-

One problem with multind is that the index heading(s) will not be formatted corresponding to your other chapter (or section) headings but simply with \Large\bf.

If you want multiple indexes that respect the general formatting of your document class (and also work with other than the standard classes), use the splitidx package.

-
I wouldn't forget imakeidx; perhaps because I'm one of the authors. :) – egreg Sep 16 '11 at 19:11
I have a book with 23 indexes (say again?!) and splitidx handles them perfectly. I also recommend the use of idxlayout, in case you stumble upon LaTeX bug 3126 (it happened to me when using splitidx in a book layout, because \twocolumn was interfering with \topskip). :-) – Paulo Cereda Sep 16 '11 at 19:18

The index package lets you define additional indexes in addition to the “default” one. (You don't have to use the default one if you don't want to.) This package makes a few other improvements, including making the \index command more robust and providing the \index* variant to both typeset its argument and add it to the index.

When you use this package, the \index and \printindex commands take an optional argument which is an internal name for the index. To define a new index, use the \newindex command in the preamble:

\usepackage{index}
\newindex{person}{pdx}{pnd}{Index of named persons}
\newindex{symbol}{sdx}{snd}{Index of symbolism}

\begin{document}
Hello, \index*[person]{vanden}.

\printindex[person]
\printindex[symbol]
\end{document}


The first argument to \newindex is the index's internal name which you then pass to \index and \printindex. The last argument is the title that appears before the index. The second and third argument are the extensions used for the temporary files for the index. For the example above, you'd run makeindex as

makeindex -t mydoc.plg -o mydoc.pnd mydoc.pdx
makeindex -t mydoc.slg -o mydoc.snd mydoc.sdx

-