4

The following is the type of code I made.

\documentclass{article}
\usepackage{makeidx}
\makeindex
\begin{document}

... something\index{Lois!Lane} ...

\printindex
\end{document}

I'd like an index with a dash before any subentry (obviously, under the respectively entry)

Marco, Ill, 1
Lois,
 -  Lane, 1 
 -  John, 1

How can I do anything like this? What if a want with a comma after every dash? Like this

Marco, Ill, 1
Lois,
 -  , Lane, 1 
 -  , John, 1

EDIT

If it is not possible to perfectly allign the dash with makeidx, what about Xindy?

6

This requires the makeindex style file to be changed/extended.

For example, a dashindex.ist can be defined to be

item_1  "\n \\subitem -- , "
item_x1 "\n \\subitem -- , "

saying, that the sub levels should be preceeded by a dash and a comma.

Calling flow:

pdflatex foo

makeindex -s dashindex.ist foo

pdflatex foo

\documentclass{article}
\usepackage{xcolor}
\usepackage{makeidx}
\makeindex
\begin{document}

... somethex\index{Lois!Lane} ...

\index{Gandalf!The Grey}
\index{Gandalf!Stormcrow}
\index{Gandalf!Mithrandir}%
\index{Lois!John}
\index{Lois!Clark}

\printindex


\end{document}

enter image description here

A direct manipulation of \subitem

This cures the indentation problem -- in this case, no special .ist file is needed. I've set the subitem indent to 5pt, but this could be changed to basically any length value.

\documentclass{article}
\usepackage{makeidx}
\newlength{\subitemindent}
\setlength{\subitemindent}{5pt}
\makeindex
\makeatletter
\renewcommand{\subitem}{\par\hangindent 40\p@ \hspace*{\subitemindent} -- , }
\makeatother
\begin{document}

... somethex\index{Lois!Lane} ...

\index{Gandalf!The Grey}
\index{Gandalf!Stormcrow}
\index{Gandalf!Mithrandir}%
\index{Lois!John}
\index{Lois!Clark}

\printindex

\end{document}

enter image description here

  • Is it not possible to have the dash exactly (namely centered) under the first entry? – W4cc0 Nov 8 '14 at 14:33
  • @W4cc0: I don't know, I'll have look later on, ok? – user31729 Nov 8 '14 at 14:40
  • Yes, do not worry. I was just asking because with short words it happens that the dash is under the numbers and that is awful. – W4cc0 Nov 8 '14 at 14:41
  • @W4cc0: It could be possible using xindy instead of makeindex... – user31729 Nov 8 '14 at 14:42
  • 1
    @W4cc0: Well, it might be possible anyway, but at the moment I am not sure how to align those entries. Although you already accepted it, I will try to improve my solution – user31729 Nov 8 '14 at 16:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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