Defining Index Macros
=====================
When writing a document with an index you will probably define
additional macros which make entries into the index. Let's look at an
example.
\newcommand{\ix}[1]{#1\index{#1}}
\newcommand{\nindex}[1]{\textit{#1}\index[name]{#1}}
\newcommand{\astobj}[1]{\index{Astronomical Objects!#1}}
The first macro `\ix' typesets its argument in the text and places
it into the index. The second macro `\nindex' typesets its argument in
the text and places it into a separate index with the tag `name'(1).
The last macro also places its argument into the index, but as subitems
under the main index entry `Astronomical Objects'. Here is how to make
RefTeX recognize and correctly interpret these macros, first with Emacs
Lisp.
(setq reftex-index-macros
'(("\\ix{*}" "idx" ?x "" nil nil)
("\\nindex{*}" "name" ?n "" nil nil)
("\\astobj{*}" "idx" ?o "Astronomical Objects!" nil t)))
Note that the index tag is `idx' for the main index, and `name' for
the name index. `idx' and `glo' are reserved for the default index and
for the glossary.
The character arguments `?x', `?n', and `?o' are for quick
identification of these macros when RefTeX inserts new index entries
with `reftex-index'. These codes need to be unique. `?i', `?I', and
`?g' are reserved for the `\index', `\index*', and `\glossary' macros,
respectively.
The following string is empty unless your macro adds a superordinate
entry to the index key - this is the case for the `\astobj' macro.
The next entry can be a hook function to exclude certain matches, it
almost always can be `nil'.
The final element in the list indicates if the text being indexed
needs to be repeated outside the macro. For the normal index macros,
this should be `t'. Only if the macro typesets the entry in the text
(like `\ix' and `\nindex' in the example do), this should be `nil'.
To do the same thing with customize, you need to fill in the
templates like this:
Repeat:
[INS] [DEL] List:
Macro with args: \ix{*}
Index Tag : [Value Menu] String: idx
Access Key : x
Key Prefix :
Exclusion hook : nil
Repeat Outside : [Toggle] off (nil)
[INS] [DEL] List:
Macro with args: \nindex{*}
Index Tag : [Value Menu] String: name
Access Key : n
Key Prefix :
Exclusion hook : nil
Repeat Outside : [Toggle] off (nil)
[INS] [DEL] List:
Macro with args: \astobj{*}
Index Tag : [Value Menu] String: idx
Access Key : o
Key Prefix : Astronomical Objects!
Exclusion hook : nil
Repeat Outside : [Toggle] on (non-nil)
[INS]
With the macro `\ix' defined, you may want to change the default
macro used for indexing a text phrase (Note:Creating Index Entries).
This would be done like this
(setq reftex-index-default-macro '(?x "idx"))
which specifies that the macro identified with the character `?x'
(the `\ix' macro) should be used for indexing phrases and words already
in the buffer with `C-c /' (`reftex-index-selection-or-word'). The
index tag is "idx".
---------- Footnotes ----------
(1) We are using the syntax of the `index' package here.