I would like to create an index as it can be found in glossaries-user.pdf.
Precise goal: A glossary for acronyms and an index in which all acronyms are listed (though only for selected pages) in addition to other terms. The index should have its pagenumbers colored, right aligned in two balanced columns, with dots filling the gap between the term and the page numbers.
Current attempt: Currently glossaries is used for the glossary and I plan on using an indexing package for the index with xindy
and a style file.
Problem: While I am not sure about the correct style definition, I get the error message undefined controlsequence \lettergroup
as soon as I use the example style file
MWE:
\documentclass{muthesis}
\usepackage[xindy]{imakeidx}
\makeindex[options={-M indexStyle}]
\usepackage{lipsum}
\begin{document}
ASd\index{asd}
\lipsum
\index{end}
\printindex
\end{document}
Stylefile (based on makeidx.xdy
from xindy
, commented out lines that just caused warnings/errors):
;; $Id: makeidx.xdy,v 1.1 1997/02/07 14:17:31 kehr Exp $
;;
;; This file implements the Output Style Specifiers for plain
;; makeindex (see manpage of makeindex 2.x) in conjuction with
;; TeX/LaTeX.
;;
;; The Input Style Specifiers of makeindex cannot de defined in a
;; `xindy' style file. Use an appropriate version of the program
;; `tex2xindy' which should be included with this distribution.
;;
;; Since `xindy' uses a different specification language than
;; makeindex and some of the command-line options of makeindex are now
;; only available as style-file commands, this file can only serve as
;; a template that produces the default-markup of makeindex. However,
;; it may be used as a starting point for further modification and
;; specialization.
;;
;; The following values are taken from the source of the makeindex
;; distribution (see file scanst.h and the manpage) for further
;; details.
;;
;; Define all attributes appearing in your document. Your attributes
;; are all encapsulators you use in your \index commands following the
;; vertical bar sign `|'. For example `foo' is the attribute in the
;; command \index{...|foo}. Here you specify the set of attributes
;; that appear in your document, the order in which they appear in the
;; index and which one superdes the other.
;;
;; Example: a) (define-attibutes (("default") ("bf") ("it")))
;; b) (define-attibutes (("bf" "default")))
;;
;; The initial command is (change it accordingly):
;; (define-attributes (("default")))
;; The description of the location-classes.
;; Add more location classes as needed.
;; (define-location-class "arabic-page-numbers" ("arabic-numbers"))
;; (define-location-class "roman-page-numbers" ("roman-numbers-lowercase"))
;; (define-location-class "Roman-page-numbers" ("roman-numbers-uppercase"))
;; (define-location-class "alpha-page-numbers" ("alpha"))
;; (define-location-class "Alpha-page-numbers" ("ALPHA"))
;; The most frequently used cross reference class "see". Add more, if
;; necessary.
;; (define-crossref-class "see")
;; (markup-crossref-list :open "\see{" :close "}{}" :class "see")
;; In makeindex: page_precedence <string> "rnaRA"
;; List all location classes appearing in your document.
(define-location-class-order ("roman-page-numbers"
"arabic-page-numbers"
"alpha-page-numbers"
"Roman-page-numbers"
"Alpha-page-numbers"
"see"))
;; preamble <string> "\\begin{theindex}\n"
;; postamble <string> "\n\n\\end{theindex}\n"
(markup-index :open "\begin{theindex}~n"
:close "~n~n\end{theindex}~n"
:tree)
;; These specifiers are not directly supported via a command-line
;; switch as in makeindex. Add the appropriate markup-commands into
;; the preamble.
;; setpage_prefix <string> "~n \setcounter{page}{"
;; setpage_suffix <string> "}~n"
;; group_skip <string> "~n~n \indexspace~n"
(markup-letter-group-list :sep "~n~n \indexspace~n")
;; The indexentries (item_<..> specifiers)
(markup-indexentry :open "~n \item " :depth 0)
(markup-indexentry :open "~n \subitem " :depth 1)
(markup-indexentry :open "~n \subsubitem " :depth 2)
;; Location-references
;; delim_0 <string> ", "
;; delim_1 <string> ", "
;; delim_2 <string> ", "
(markup-locclass-list :open ", " :sep ", ")
;; delim_n <string> ", "
(markup-locref-list :sep ", ")
;; delim_r <string> "--"
(markup-range :sep "--")
;; Here follow all letter-groups. The short-cut notation is used here.
(define-letter-groups
("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m"
"n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
;;
;; The sort-rules map all letters to their lowercase counterpart.
;;
(sort-rule "A" "a")
(sort-rule "B" "b")
(sort-rule "C" "c")
(sort-rule "D" "d")
(sort-rule "E" "e")
(sort-rule "F" "f")
(sort-rule "G" "g")
(sort-rule "H" "h")
(sort-rule "I" "i")
(sort-rule "J" "j")
(sort-rule "K" "k")
(sort-rule "L" "l")
(sort-rule "M" "m")
(sort-rule "N" "n")
(sort-rule "O" "o")
(sort-rule "P" "p")
(sort-rule "Q" "q")
(sort-rule "R" "r")
(sort-rule "S" "s")
(sort-rule "T" "t")
(sort-rule "U" "u")
(sort-rule "V" "v")
(sort-rule "W" "w")
(sort-rule "X" "x")
(sort-rule "Y" "y")
(sort-rule "Z" "z")
;; That's all ;-)
;; End
;; Local Variables:
;; mode: lisp
;; End:
What the index should look like:
Rational/What I tried: Since I would like a index as in the user guide, the best solution would be to copy the method. However, when I tried to create the user guide from the sources the index did not show up. I assume I have to run texindy
with specific parameters, (as is needed for the glossaries-code.pdf but could not find instructions for the generation. Furthermore, it seems to me that the index code is anchored in the nctldoc
class, and I am forced to use the muthesis
class. As the author of glossaries
prefers the use of an external indexing package, I assumed that it would make sense to use an indexing package. Furthermore, I am unsure how I would use the term in the Acronym and the index glossary. While there is a solution to make a glossary term only add selected page numbers, using an explicit index package seems more straight forward.
I do not care which indexing package to use, currently I am trying imakeidx
with xindy
and a style file.
glossaries-user.tex
, I'd probably usebib2gls
instead. (It's too big a task and not worth the effort.) If you want to stick withmakeindex
orxindy
, then using theglossaries-extra
extension package is better for this type of thing.\gls{myAcronym}
to appear in the index. While you have an excellent answer for this, I am under the expression that it is better to use an actual index package for the index, rather than glossaries. My rational for this is that you, the Queen of glossaries, seem to usemakeidx
over theindex
glossaries option. This leads to my formatting question for the index. However, I wanted to avoid the XY problem, and leave the option of using glossaries ...imakeidx
is the right tool