# Best practice for index construction — recommendations and references

I'm about to embark on something I've never done (at any rate, seriously) before: preparing an index for a ~200-page document. I have started, but I get the feeling "something's wrong".

I know that I must do the index as I write the document -- this is just to help me set my own ground rules as I do that.

Here are some typical doubts:

• Should I attempt to identify the principal reference (with a bold or coloured page number)? (I have my own \ixmain command for this.)
• How much effort should I invest in generating page ranges? (I have my own \ixstart and \ixend for this.)
• To what extent should I rely on the "see" construct, especially for abbreviations and (common or local) acronyms?:
\index{session identifier|see{session id}}
\index{session identifier|see{\textsc{sid}}}
\index{process identifier|see{\textsc{pid}}}

• How redundant should I make my index? For example, which of these index entries should I not use?:
\index{session identifier}
\index{identifier!session}
\index{session!identifier}
\index{session id}
\index{sid@\textsc{sid}}


The question is this: what are the guiding principles that, when followed, make an index user-friendly?

Detailed explanations or reference pointers will both be welcome

-
If you haven't already done so, be sure to study chapter 11 of the LaTeX Companion (2nd ed.). The chapter is 110 pages long (ouch), but chock-full of great advice. –  Mico Jul 20 '12 at 20:09
Small suggestion: consider using \index* (in some indexing packages) or a similar construct that puts the macro argument both in the text and in the index - minimizes typos. –  Ethan Bolker Jul 20 '12 at 20:39
some really interesting articles about indexing can be found in The Indexer, journal of Society of indexers. Many older issues are online theindexer.org/… newer can be found via EBSCO or similar journal databases. I remember some article which evaluated various system of subheadings, cross-references etc. from user perspective, it was really interesting, but I can't find it right now. Anyway, there is a lot of other interesting articles. –  michal.h21 Jul 20 '12 at 20:41
I'm very interested in answers to this question. Perhaps controversial, but I've heard (http://www.wikihow.com/Write-an-Index for example (I know it's not the best reference)) that you shouldn't create an index as you go, but should wait until the document is (nearly) complete. I'm working on a project of similar length, and we're waiting until it is finished before indexing- so much changes during all of the editing and drafting process that adding another layer (indexing) would slow things down even more. –  cmhughes Jul 20 '12 at 21:55
The Chicago Manual of Style has some practical advice on what and when to index, as does Hart's New Rules (Oxford). Both are worth reading for their practical recommendations, but I prefer Hart's New Rules. I second @cmhughes' advice. Indexing is better done at/near the end, when the 'whole picture' is clear(er). (I'm in the middle of indexing a book myself, and I've taken a 'two pass' approach: one to get the it mostly done, and a second pass to tighten things up and make sure there is consistency in the sub- and sub-sub-entries.) –  jon Jul 20 '12 at 23:35

Posting this as an answer because it is too long for a comment, but I do not aim at exhaustivity (or objectivity, as a matter of fact).

My first suggestion would be, whatever you do regarding the choice of terms to index, to use and abuse the | syntax in your indexing commands (either manually, or by creating your own command that does it):

It works for page ranges, by successively indexing:

\index{something|(} ... \index{something|)}


It also works for whatever formatting commands you may want to add to the page number. Essentially, you can put any control sequence name after |, provided that its last argument (if any) is the implicit page number.

For instance, when something is located in a footnote, I defined:

\newcommand{\note}[1]{#1~(\emph{n.})}


and I can then use: \index{something|note} – no backslash – which outputs:

something, 36 (n.)

This could be used to put the page number in boldface, or something of that kind. Identifying the principal reference(s) sounds like a good idea to me, though it is a matter of personal taste (some people do it, some don't).

Now, regarding your question proper, the general idea is that you should index terms where it makes the most sense and/or where the reader is most likely to look for them.

To me, this would mean that if you have an expression with a noun and an adjective, like "British imperialism", you would index:

imperialism, British, 39

British imperialism, see imperialism

Regarding abbreviations, the same logic could apply. Since the abbreviation stands for the full expression, it would seem logical redirect the reader there, a bit like in a glossary. So, unlike what you proposed in your question, I would be kind to the reader (if he is not strictly speaking from your field, chances are he does not remember all abbreviations), and suggest:

EIC, see East India Company (British)

East India Company (British), 45

But there could be many variants; for instance, an equally valid construct could be:

East India Company (EIC), 45

Then, there are the complex cases where you have two nouns (or words) of approximatively equal semantic weight, and it is not clear which one should be indexed. Here, it depends on the context, I suppose.

• If you think that the reader could reasonably look up either term, then index both with a "see" construct.

• If both terms are already indexed in their own right, for other reasons (with sub-entries perhaps), then it is almost always worthwhile to redirect the reader with a "see" construct.

Returning to my first example, while I would not necessarily (just eventually) index "British imperialism" on its own just for a "see" construct, if I already had two significant entries for "britain" and "imperialism", I would definitely write:

Britain, 2, 18-29, 23: economy, 5, 33–39; imperialism (see imperialism)

imperialism: British, 37; Dutch, 74; French, 82

I find it good practice, as far as possible, to create matching index headings; what I really mean is, consistency. If you have two things that have a similar logical structure, index them in the same way. Say, if you are indexing people's names to refer the reader to biographical information, try to construct the sub-entries in the same fashion for everyone. I am not saying they should be strictly identical, but that when similarities (in sub-entries) do occur, you should make sure they appear as such in your index.

Say, don't index:

Smith, John: Years in London, 46

and a couple of entries later:

Turner, Jack: Lived in Manchester, 32

That's inconsistent and awkward.

Here is the Chicago Manual of Style's stand on "see" references:

See references direct a reader from, for example, an informal term to a technical one, a pseudonym to a real name, an inverted term to a noninverted one. They are also used for vari­ant spellings, synonyms, aliases, abbreviations, and so on.

The Oxford Guide to Style is substantially similar on that matter. Neither give very precise information regarding abbreviations and other complex issues, but they have great chapters on indexing proper names and punctuating index entries.

Finally, regarding indexing processes, while I agree with most of the comments so far – that most of the work takes place when you are almost done with the writing – I think there are some things you can index on the go, as "flags". If a word is so important that it makes a section heading, or that you define it in a precise way, it will be indexed under that heading anyway, so you may as well do it while writing.

This will give you bare bones for your index, which you can then improve when everything else is done. I find it helpful to print the index (with MakeIndex or on paper), then I can decide which entries are superfluous, which are lacking, which could be merged or rearranged and modify my document accordingly.

-
Thank you for an excellent, well-thought-out answer. I won't accept it -- yet -- as I'd like to see more answers, so I'll leave things a few days... –  Brent.Longborough Jul 21 '12 at 10:13
+1. I agree with all of it, but I would add two points. (1) Index entries should not start with adjectives (except for specific kinds of books, I suppose). A cross-reference may be appropriate, but in general it's not good practice. (2) Content in footnotes should only be indexed, and this includes citations, if there is some discussion of a further point that is not included in the main body of the text. (Unfortunately, this means biblatex's powerful indexing capabilities end up being overkill.) It also means if discussion is in the text and notes, only a reference to the text is needed. –  jon Jul 21 '12 at 18:39
personal opinion -- italic parentheses in environments like this are an abomination. the definition you have shouldn't do this. please check it to make sure you're not using just \em. –  barbara beeton Jul 21 '12 at 19:54
@jon I have edited my answer to make your first observation clearer. Regarding the second point, in my field, we must use numbered paragraphs and index paragraph numbers (which doesn't make much sense, I agree); if I ever need to write a digression or explanation in a footnote, and I want the reader to be able to find it… well, I haven't found a better solution. –  ienissei Jul 21 '12 at 22:31
@barbarabeeton Sorry, my mistake. The definition is correct, the parentheses are not in italics, and it was just a typo in my answer. Thanks for pointing it out. –  ienissei Jul 21 '12 at 22:33

(Given the examples of indexing found in the question, this may not matter much, but perhaps it will be helpful for others who look for ideas here. This is an example of one potentially best practice for a specific case --- so I'm not sure if this answer should be kept. For more general observations one should look at @ienissei's answer.)

Indexing names is particularly problematic, and it can get worse with inflected languages. Here is a solution I've hit on for indexing such names. It assumes some sort of multiple index setup (memoir, in my case) and xparse, and that there are multiple footnotes on most pages, so a specific footnote reference is needed.

The name in this example is Augustine, which needs to show up in the index as 'Augustine, Saint', but might be in the text as 'Augustine', 'Augustinus', 'Augustinum', or 'Augustini' (and possibly a few others, but this will cover 99% of the cases). Most of the time, the anglicized version will be used, however. So you could do something like:

\newcommand{\nnn}[2]{#2n#1}% for 3n39 in index

\NewDocumentCommand {\augustine} {s o}
{\IfNoValueTF {#2}%
{\IfBooleanTF {#1}% -- with no optional argument
{\index[indexmain]{Augustine, Saint|nnn{\thefootnote}}}%
{\index[indexmain]{Augustine, Saint}}%
}%
{\IfBooleanTF {#1}% -- with optional argument
{\index[indexmain]{Augustine, Saint!#2|nnn{\thefootnote}}}%
{\index[indexmain]{Augustine, Saint!#2}}%
}%
}%
\newcommand\Augustine{Augustine\augustine}%


(Note, for a different index I have \newcommand{\nn}[2]{{\itshape#2n#1}}, which is used for another index to italicize certain kinds of references.)

Anyway, now you can write a simple 'Augustine' when you don't want him indexed, \Augustine when you do want him indexed, while an \augustine* will give the index the page and footnote numbers. And you can still use optional arguments where needed; e.g.,

\augustine[just war theory of|(]% opens a page ranged entry, which must be closed


Anyway, the downside to this approach is that all the people who figure in the book will need their own commands, but when their names will appear in many different forms, this seems like the most flexible solution. (I'd be happy to be proven wrong, though.)

-
Thoughtful solution to a complex problem, though it loses a bit of its semantic meaning. It should be possible to create and \index-like macro that checks the string it is given against a definition. Then you would only need to define {augustine} as translating into {Augustine, Saint} and have LaTeX handle the rest, so you would not need to rewrite the entire code for every name. –  ienissei Jul 21 '12 at 22:47
@ienissei -- Yes, I tried to do that initally, but I couldn't hit upon a clever enough solution that maintains enough flexibility. (Probably a sign that my programming skills are so limited that I can't think of what a flexible solution would look like.) The other problem is (of course) deadlines. Indexing is one of the last things to do, and now I've run out of time to fiddle around and just need to get things done. Luckily the number of frequently reoccurring names is not too large in my case. –  jon Jul 22 '12 at 1:23
Yes, it takes an awful lot of time to envision all the possibilities and debug the code. Perhaps at some point someone will come up with a magic package for indexing things in the humanities. –  ienissei Jul 22 '12 at 6:57