Microsoft Word Index Entries Out of Order

Indexing with Word is pretty good. You go to places in text that you want in the index, enter the text you want to appear in the index, push a button and shazam, an index, all alphabetical and formatted and everything.

But I had a strange problem. I was creating an index and some entries were missing. I went looking and realized they were in the index, but completely out of place. This is what the faulty index looks like when it’s generated by Word. Note the out of order entries in bold.

Floutet, Aima, 294
Floutetta. Vr Monthouz, Aima (dite la Floutetta)
Maître, Louise (fl. d’Ami, 111, 164, 176, 515
Dentrue, Jeanne (fl. d’Emery, 357

Folliet, Pierre, 27

After tearing my hair out for a while I noticed a clue. See it? I finally noticed that the parentheses weren’t closed on the out of order items. When I looked, I realized that the markup in the actual text, that is the entry that is supposed to end up in the index in the first case was

Maître, Louise (fl. d’Ami; fm. de J.-Ja. Bonivard)

If you try to index text with a semicolon in it, it truncates everything from the semicolon on (the text in bold), but it isn’t entirely discarded. Note in particular what it’s done: it is now indexed alphabetically according to the truncated text that is now invisible.

In other words, I tell it to index Maitre, Louise (fl. d’Ami; fm. de J.-Ja. Bonivard), which I expect to appear like that under Mai, but instead it appears as Maitre, Louise (fl. d’Ami and gets filed under Fm.

The Fix

Thanks to Andy, after a decade, I know the solution: you just escape the semi-colon with a backslash and everything works exactly as expected. So in the example I gave, it would look like this

Maître, Louise (fl. d’Ami\; fm. de J.-Ja. Bonivard)

I marked up one index entry without escaping the semi-colon and one with (and added few random historical figures to establish alphabetical order) and got exactly the right result:

Adams, John Quincy, 1
Maître, Louise (fl. d’Ami, 1 << not escaped
Hamilton, Al, 1
Maître, Louise (fl. d’Ami; fm. de J.-Ja. Bonivard), 1 << escaped
Mitterand, Francois, 1
Valjean, Jean, 1

Thanks Andy!

5 Responses to “Microsoft Word Index Entries Out of Order”

  1. Chester

    I’ve been searching around forever, and finally found your post! I’m having the same issue, I believe. My index entries are somewhat out of order, and the semicolon issue seems to be present in each one. I haven’t found a solution for this though, but it’s nice (in a way) to see it’s not just me. Note, this is in Word 2010 and 2016 (which came out some time after your post!).

  2. Wow that’s one from the archives! Sadly I don’t think there’s a solution other than to never use semicolons in your index entries. Best of luck Chester!

  3. Yes, there is a solution! You can use a colon in the index if you put the backslash escape character \ in front of it. Same goes for double quote marks.

  4. Wow. I can’t believe people are still finding this post. And Andy – great info! I did not know you could escape special characters. I have to give that a try. To be honest, I completely forgot about this – I haven’t used Word to generate an index in a decade.

  5. Steve Pepper

    Thanks for this post. It helped me solve a completely different problem that I was struggling with:
    My index contains the following three entries:

    tibunaṭà madi
    ṭikak
    time

    Note that the second entry starts with the letter ṭ. For the purpose of the sort, Word ignored the dot below, which was OK. But it recognized it as a different letter for the purpose of inserting the index subhead, like this:

    T

    tibunaṭà madi

    ṭikak
    T
    time

    I was able to fix this by adding “;tikak” to the index entry for “ṭikak”. In effect, recreating the “bug” that you had discovered! So the question is, is this actually a bug or an (undocumented) “feature”? :-)

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>