34

What are the various indexing packages and what are their pros and cons? When should one choose one over the other?

There is some discussion of this in What are the latest/best practices for index generation?, but I would prefer to have more details about each package.

2
  • Sounds like a case for CW and one package per answer? What would be relevant categories of information to be included in each answer?
    – doncherry
    Commented Apr 11, 2012 at 21:18
  • 5
    @doncherry I'd rather have indexing specialists answer this in a single pass and gain reputation for their answer.
    – lockstep
    Commented Apr 11, 2012 at 21:20

1 Answer 1

21

The features provided by the various indexing packages may be divided into three categories:

  1. Supporting multiple indexes;

  2. Providing macros that simplify index generation;

  3. 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 Rou­quette of imakeidx that introduces compatibility with bidi for bi-directonal language typesetting.

5
  • 2
    I think one import point is the processor. I like xindy. Commented May 7, 2012 at 16:30
  • 2
    @MarcoDaniel I'll see if I can come up with something in the next days -- but comparing MakeIndex and xindy could be the topic of another answer, too.
    – lockstep
    Commented May 7, 2012 at 16:34
  • The links are broken; there seems to be a bug on CTAN's website: the /index part of the url leads to an index of all packages
    – Clément
    Commented Feb 21, 2015 at 16:41
  • @lockstep, have you given a thought to include MakeIndex and xindy in the answer? It has been a while now ...
    – Paulo Ney
    Commented Mar 5, 2019 at 20:40
  • @lockestep this list is extremely useful and probably used by a lot of people -- it is missing though a very important package: indextools, which is a modern fork of eGreg's imakeidx by Maïeul Rouquette. Would you be able to edit the answer and add just a simple paragraph about it?
    – Paulo Ney
    Commented Mar 13, 2019 at 12:44

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .