The features provided by the various indexing packages may be divided into three categories:
Supporting multiple indexes;
Providing macros that simplify index generation;
Allowing for customization of the index layout.
The Topic Index
of the TeX Catalogue lists about a dozen index-related packages; this overview is about the packages I've used (or at least read the manual).
makeidx
, a "[s]tandard package for creating indexes", provides some index-related macros like \printindex
which (for whatever reason) are not part of the LaTeX2e kernel (like \makeindex
and \index
) or the standard document classes (like the theindex
environment).
multind
"redefines [the] \makeindex
, \index
and \printindex
commands to deal with multiple indexes". The package predates LaTeX2e; it doesn't work with the AMS classes, and index headings won't be formatted corresponding to other chapter/section headings.
index
"supports multiple indexes in a single document and provides a more robust \index
command". The package also offers \index*
which typesets a word and creates an index entry for it as well. index
is likely to produce incorrectly formatted index headings for non-standard classes.
splitidx
/splitindex allow "more than 16 indexes: splitidx
outputs only a single file \jobname.idx
and the program [splitindex] splits that file into several raw index files and calls your favorite index processor for each of the files". The splitidx
package offers the \extendtheindex
macro that adds various hooks to the theindex
environment; the actual customization of the latter is left to the user.
imakeidx
"enables the user to produce and typeset one or more indexes simultaneously with a document" by using the shell-escape feature of modern TeX distributions. imakeidx
is able to call the splitindex program (see above), and it features a key--value interface to customize various aspects of the index layout (including the possibility to call the MakeIndex program with a certain .ist
style file). Originally, imakeidx
was not compatible with the memoir
class (which uses an idiosyncratic method to generate indexes), but v1.1 of the package does away with that restriction.
hvindex
"simplifies the indexing of words [...] [T]o index a word in a text, you only have to type it once; the package makes sure it is both typeset and indexed". The package offers a bunch of macros that control the formatting of index entries; the package manual is silent about whether those macros may be used for the creation of multiple indexes.
idxlayout
"offers a key--value interface to configure index layout parameters [and] is responsive to the index-related options and commands of the KOMA-Script
and memoir
classes". idxlayout
does only deal with the theindex
environment, not with .ist
style files; it may be used on top of index
, splitidx
, and imakeidx
. (Disclosure: I'm the package author.)
repeatindex
"repeats [the] item of an index if a page or column break occurs within a list of subitems". The package README (from 2001) states that repeatindex
"has not been tested much, yet" and lists some known problems.
indextools
is a modern fork by Maïeul Rouquette of imakeidx
that introduces compatibility with bidi
for bi-directonal language typesetting.
Best Answer
The standard repository of LaTeX (and other TeX-related) packages is CTAN, the Comprehensive TeX Archive Network. The web portal has a search function, as well as categorised lists of packages, so you can see similar packages. The page for each package has a link to the package documentation, so you can see its capabilities.