# What is the recommended indexing package?

There's a dizzying array of indexing packages available on CTAN.

For my current project, I'm using LuaLaTeX, but most of the time I just use straight LaTeX (and on occasion XeTeX).

My needs for this project are pretty pedestrian: the book I'm typesetting is in English, and I don't need any sort of custom collation. However, it's not really clear to me what the best choice is.

EDIT:

I noticed that some of the packages make reference to the memoir class, which I am currently using.

• of the packages i've used, the one i've come to favor is imakeidx. because of the way that input is handled, a decision to have one or more than one index can be held off until quite a late point in writing; mark all the items that you want to index with a simple \index{...} and if a second index is wanted, it can be added simply by inserting an optional argument, \index[xxx]{...} to just the appropriate items rather than having to change anything more extensively. but i have never used it with memoir, and don't know about that compatibility. Jun 3, 2016 at 0:52
• Why don't you start with no package and figure out which one fills any gaps you find frustrating if that happens?
– cfr
Jun 3, 2016 at 0:52
• @barbarabeeton Loading no package has that advantage, too. You can always add imakeidx later. I had issues with imakeidx although I can't now remember the details, so tend to avoid it. So I tend to load makeidx and only make things fancier if I need to.
– cfr
Jun 3, 2016 at 0:55
• I want xindy to be the general-purpose solution, but the fact is that it can be complicated to use (because it can do complicated things). Worse still is its incompatibility with hyperref. So, on the one occasion I had to generate multiple indices, I used makeindex with the imakeidx package (which has never given me trouble), and this project also used the memoir class. The only downside was that I had to manually sort one of the indices, which was tedious (but I needed to sort numbers without leading zeroes: 1.9.3 before 1.20.2.
– jon
Jun 3, 2016 at 4:51

There's no 'best'. Really, the best choice is the one which enables you to work most efficiently and effectively. Which this is depends on your specific needs - not just languages, but encodings, format etc.

You do not need to load any package at all to create a basic index. The functionality is part of core LaTeX.

For example:

\documentclass{article}
\makeindex
\begin{document}
Here is some word\index{word}.
\input{\jobname.ind}
\end{document}


produces:

when compiled with <pdf/xe/lua>latex -> makeindex <filename> -> <pdf/xe/lua>latex.

I used pdfLaTeX but the engine is irrelevant: only the format matters here.

I would, however, recommend loading makeidx so that you can say

\printindex


rather than needing to input the index manually. If imakeidx doesn't cause trouble, it is very convenient. However, I tend to avoid it because it sometimes causes me trouble.