I am formatting a book which has a fairly extensive index and I am trying to figure out how to change the amount of indent that long lines wrap to. The author wants to cite entire book titles which can be long and wraps. The remaining lines are indented a huge amount, much more than we need. It is two column format, and each column about 2 inches, and the indent is at least 3/4 of an inch, leaving only maybe 1.25 inches as a long thin column for the long book title.

What I would like to do is reduce the amount of indent. It is unnecessary to indent that much.

It is unclear to me where the indent settings of the index are stored or how to change them.

There seem to be two indent levels. One is for the subelements (about 3/8 inch, and the other is for wrapped lines, exactly double that.

I am using makeindex and printindex and compiling it to PDF with xelatex using the scrbook (koma) book class. I would really like to stay with these since the book is already formatted and I am nervous about swapping fundamental formatting parameters at this point.

Some web pages indicate that I might be able to use an ".ist" file, but I am at a loss to find documentation on how I would use this to change the indent level.

  • 1
    I think you want the commands \@idxitem, \subitem, and (potentially) \subsubitem. (The last two should redefined in terms of the first.) But since you haven't actually provided any details about your document or (especially) the way you construct your index, it's hard to say.
    – jon
    Nov 24, 2015 at 6:58
  • To answer yuor question on how I construct the index: I have a "\makeindex" command at the beginning, a lot of "\index" commands in the middle, and a "\printindex" at the end. The document uses the class "scrbook" and I compile it with xelatex to produce a PDF. With all the Latex magic, that is really all I have done specific to the index that I know of.
    – AgilePro
    Nov 25, 2015 at 1:18

1 Answer 1


theindex is basically an environment that may be a list, but also may not. The .ist declares how the preamble looks like and how a \item is interpreted. E.g., as LaTeX default, \item is \n\item, as defined by item_0.

You can change the format (at least) at two locations:

  • You write your own .ist file. For a documentation, see e.g., makeindex' manpage.
  • In case of scrapbook.cls, you can go with the default and play around with redefining \@idxitem (what is the local \item) and if you want \subitem and \subsubitem.

Currently, they might be modified the following way:

\renewcommand*\@idxitem{\par\hangindent 40\p@}
\renewcommand*\subitem{\@idxitem \hspace*{20\p@}}
\renewcommand*\subsubitem{\@idxitem \hspace*{30\p@}}
  • When I put these commands in the file exactly as you have them there, I get the following error: LaTeX Error: Command \@ already defined. Or name \end... illegal, see p.192 of the manual. along with output of the offending command split right after \newcommand\@i and before dxitem{...} Can I use those commands verbatim, or was I supposed to substitute something in for something?
    – AgilePro
    Nov 24, 2015 at 23:51
  • As usual, if you use @ outside a class file, you have to put the code between \makeatletter and \makeatother.
    – Matthias
    Nov 25, 2015 at 6:29
  • Thanks, that is perfect. Edited the answer to use renewcommand which would also be needed...
    – AgilePro
    Nov 25, 2015 at 20:29

You must log in to answer this question.

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