Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Is there any way to auto-gererate an index for the makeidx package? I've written ~270 pages and didn't think of adding \index{} everywhere.

Do I really need to go over everything and add \index{}?

share|improve this question
1  
What words should be indexed? If they are marked in some way (\cs{word}) you can modify the definition of \cs. Otherwise I'm afraid that there's only one way. –  egreg Jun 10 '12 at 13:16
    
Related: tex.stackexchange.com/questions/54518/… –  lockstep Jun 10 '12 at 13:17
    
@egreg, Ideally I would want to have a file that specified keywords that was extraced from the text. So I could remove/add to that. –  Filip Ekberg Jun 10 '12 at 13:21
4  
@FilipEkberg: This process could be simplified by the search and replace function of your editor. –  Thorsten Donig Jun 10 '12 at 13:25
1  
Also related: tex.stackexchange.com/questions/856/… –  Caramdir Jun 10 '12 at 16:11

1 Answer 1

up vote 23 down vote accepted

Do I really need to go over everything and add \index{}?

Unfortunately yes. At best even if you write a script to automate it you will end up with a concordance, and a concordance is not an index.

In my opinion it is actually better to postpone the writing of the index to the time the book is almost ready. Writing an index is an art and most publishers employ "human indexers" to write an index that is useful and serves its function.

Since luckily, you missed it the first time round this is a good time to give it a bit of a thought and planning, before you delve into it.

The most important points to consider when developing an index, is categorization and consistency. Think of the likely readers of your book (or even the older you that will forget what the younger you wrote) and provide headings that are likely to be used when searching for information. Consider for example a historical book, describing early ships and their trade routes. It can be meaningless for example to just index the ship name by one word. Consider the following MWE:

\documentclass{article}
\usepackage{makeidx}
\makeindex
\DeclareRobustCommand{\ship}[1]{\texttt{#1}\index{Steam ships!#1}}
\DeclareRobustCommand{\AUports}[1]{\texttt{#1}\index{Austalia ports!#1}}
\begin{document}
  One of the early steam ships to sail to \AUports{Melbourne} 
  was the \ship{Africa}. Its maiden trip was on the 1.1.1870 and 
  its last trip ten years later on the 13.12.1880. 
\printindex
\end{document}

I have used a heading to categorize the ship as a steam ship (you can add macros as necessary) and provided a second one to classify Melbourne as a port. By creating a number of commonly used categories around your topic you can also ensure that you have a good classification system as well as providing consistency. As you might have probably noticed the ship's name is typeset in italics, to comply with the Oxford Style Guide and by creating a macro both the indexing as well as the typesetting are done correctly and efficiently.

share|improve this answer
    
Could you maybe give me some pointers on how to write a good index? And maybe what pitfalls that I would have gone into? What I've done now is that I've looked up keywords and "concepts" that I talk about and adding a corresponding index to that paragraph/page. –  Filip Ekberg Jun 10 '12 at 19:21
2  
@FilipEkberg It is getting a bit late here, but I will post some pointers tomorrow. –  Yiannis Lazarides Jun 10 '12 at 20:05
    
did you have any additional pointers? :) –  Filip Ekberg Jun 12 '12 at 6:40
1  
@FilipEkberg Please see edit. –  Yiannis Lazarides Jun 12 '12 at 8:13
1  
@FilipEkberg No the word in the example is a ship name and hence the italics. For most it will be normal upshape text. –  Yiannis Lazarides Jun 15 '12 at 9:42

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.