\def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
% \BibTeX command above has been stolen from \cite{Patashnik88a}
\documentclass[a4paper]{article}

\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{charter}
\usepackage[scaled=0.88]{beramono}
\usepackage{microtype}

\renewcommand{\labelitemi}{\textbullet}
\newcommand{\package}[1]{\texttt{#1}}
\newcommand{\authorindex}{\package{authorindex}}
\newcommand{\mkindex}{\package{makeindex}}
\newcommand{\perl}{\texttt{perl}}

\newcommand{\file}[1]{\texttt{#1}}
\newcommand{\fnext}[1]{\file{.#1}}
\newcommand{\aisty}{\file{authorindex.sty}}

\newcommand{\cmdline}[1]{\texttt{#1}}
\newcommand{\option}[1]{\cmdline{#1}}
\newcommand{\aiperl}{\cmdline{authorindex}}
\newcommand{\bibtex}{\cmdline{bibtex}}

\newcommand{\ltxinp}[1]{\texttt{\string#1}}

\renewcommand\descriptionlabel[1]{\hspace\labelsep\normalfont\texttt{#1}}

\title{The \authorindex\ Package}
\author{Andreas Wettstein\\\texttt{wettstae@gmail.com}}
\date{August 2008}

\begin{document}

\maketitle

\begin{abstract}
  The \authorindex\ package lists all authors cited in a \LaTeX\ document from
  the \ltxinp{\cite} entries and their associated \fnext{bib} bibliography
  files.  It will not run with bibliographical entries (\ltxinp{\bibitem})
  explicitly typed into the document. Each author entry in the generated list
  contains the pages where these citations occur. Alternatively, the package
  can list the labels of the citations that appear in the references rather
  than the text pages. The package requires \perl\ (version 5 or higher) to run
  an auxiliary script and \BibTeX. The package can be used by itself or as a
  preprocessor for \mkindex. It can produce separate indices and mini indices,
  which are merged in the bibliography. The package can run under Unix,
  Windows, or MS-DOS. The \authorindex\ package is compatible with the standard
  bibliographical styles distributed with \LaTeX\ and with \package{hyperref}.
  With the small patches listed here, it will also run with the
  \package{chapterbib}, \package{chicago}, \package{harvard}, and
  \package{natbib} bibliographical style packages.
\end{abstract}


\section{Installation}

The \authorindex\ package consists of the \LaTeX\ style file \aisty\ and the
\perl\ script \aiperl. It needs \LaTeX, \BibTeX\ \cite{Patashnik88a} and
\perl\ (version 5 or better) to run.

To install the package, move \aisty\ to a place where \LaTeX\ looks for its
style files.  Unix: The \perl\ script \aiperl\ must be moved to a place in your
executable path and be given execution permission.  You may need to modify the
path to the \perl\ binary that appears in the first line of the script \aiperl,
replacing \file{/usr/bin/perl} by the correct path for your system. MS-DOS: A
\perl\ processor for MS-DOS such as \package{ActivePerl} can process the
\LaTeX\ auxiliary file \fnext{aux} in a command window to produce the
\authorindex\ file \fnext{ain}.


\section{Using the package}

The \LaTeX\ source code includes the \ltxinp{authorindex} package
via a \ltxinp{\usepackage} statement.  It may also be necessary to
replace your \ltxinp{\cite} commands by \ltxinp{\aicite}
commands\footnote{If you put the statement
\ltxinp{\let}\ltxinp{\cite}\ltxinp{=}\ltxinp{\aicite} in the
preamble after the loading of the package, \ltxinp{\cite} commands
will be equivalent to \ltxinp{\aicite} commands, and you will not
need to modify your text.}.  The \ltxinp{\aicite} command behaves
like \ltxinp{\cite} but writes additional information to the
\fnext{aux} file needed to generate the author index.

Additional commands are available. The command \ltxinp{\aimention} enters a
name into the author index that does not appear in the bibliography file
\fnext{bib}. It is not strictly a ``citation'' command because it doesn't add a
citation to the text. Its argument is an author name in the \BibTeX\ name
format like \ltxinp{\aimention\{Carl Friedrich Gau\{\string\ss\}\}}, for
example. This command is designed to bridge the gap with keyword indices and
might be useful for referring to famous people whose work (in contrast to their
publications) is common knowledge.  Multiple names are possible if they are
separated by \ltxinp{and} as in the standard \BibTeX\ author format.  The
command \ltxinp{\aionly} expects a bibliography key and puts the corresponding
authors in the author index without generating a citation.  In a sense, it is
similar to \ltxinp{\nocite}.

To produce the author index, run the \perl\ script \aiperl\ and \LaTeX\
sequentially; the procedure is similar to producing the bibliography output
from \BibTeX. The command \ltxinp{\printauthorindex} marks the point where the
author index is to appear in the \LaTeX\ output.  A typical sequence to run the
tools would be \LaTeX, \BibTeX, \authorindex, \LaTeX, \authorindex, \LaTeX. For
MS-DOS or Windows, the \authorindex\ step would be processed in a command
window by an explicit statement like \cmdline{perl authorindex \textit{example}
  [cr]}, where \textit{example} is the name of the \fnext{aux} file and
``\cmdline{[cr]}'' indicates the enter key. In a Unix environment, the \aiperl\
script can be invoked simply by the statement \cmdline{authorindex
  \textit{example} [cr]}.

Options to the \authorindex\ package are available,passed to the package in the
usual way \ltxinp{\usepackage[option\ldots]\{authorindex\}}. The option
\ltxinp{withbib} automatically indexes the page where a bibliography entry
appears in the references. There is also the possibility of generating an index
that is merged into the corresponding bibliography entries themselves. This
possibility is switched on by the package option \ltxinp{miniindex} discussed
more below.

The details of including the author index are left to the author.  Unlike the
commands \ltxinp{\printindex} or the \ltxinp{\thebibliography},
\ltxinp{\printauthorindex} does not create a chapter or section heading. To
format the author index in multiple columns on a page in a one-column document,
use an additional package like \package{multicol}.  With this package, a
two-column author index will be created with
\begin{verbatim}
\begin{multicols}{2}
\printauthorindex
\end{multicols}
\end{verbatim}
If you plan to generate several documents with author indices in a consistent
style, consider redefining the \ltxinp{theauthorindex} environment to fit your
needs.


\section{Overall structure of the index}

\subsection{Normal \fnext{ain} file}

The \fnext{ain} file created by the \perl\ script \aiperl\ from the \fnext{aux}
file and used by \ltxinp{\printauthorindex} will look like this:
\begin{verbatim}
\begin{theauthorindex}
\item[May, Karl] \aipages{\aifirstpage{iv}, 2, \aibibpage{77}}
\item[Musil, Robert] \aipages{7, 9, \aibibpage{\aifirstpage{77}}}
\indexspace
\item[Schmidt, Arno] \aipages{33, \aibibpage{78}}
\item[Souter, Nathaniel] \aipages{29--\aifirstpage{36}}
\end{theauthorindex}
\end{verbatim}
Note the provision for both text and bibliographical pages. Author names that
start with different letters are separated by the statement
\ltxinp{\indexspace}, which inserts a blank line between the groups. This
command has no arguments but can be redefined according to your needs inside or
outside the \ltxinp{theauthorindex} environment. Also, note the provision for a
sequential range of pages.


\subsection{Font sizes}

The command \ltxinp{\aisize} controls the font size used for the author index.
It expects no arguments. You can redefine it outside the
\ltxinp{theauthorindex} environment to customize the font size. In most cases,
it will be sufficient to use one of those options in the \authorindex\ package:
\begin{description}
\item[small] will cause the author index to be typeset in small size.
\item[normal] (the default) will cause the author index to be typeset in the
  normal text size.
\end{description}


\subsection{Separate entries for first and other authors}
\label{sec:firstandothers}

By default, \authorindex\ generates exactly one entry for each author in the
index.  All pages with citations of the author's work go into this entry, no
matter what the co-authors for the work that you cite are.

Optionally, you can generate a reference to first authors in the author list of
all of the author's works.  To this end, you call \ltxinp{\aialso} in the
preamble of your document.  The command takes two string arguments.  The first
argument is put before first author name, the second is used as a separator.

Alternatively, you can change this behavior with the \ltxinp{\aisee} command.
You call \ltxinp{\aisee} in the preamble of your document with a string
argument.  For authors that are not the first in the author list of a work
cited, \authorindex\ generates an entry with this authors name, followed by the
string you have given to \ltxinp{\aisee}, followed by the name of the first
author of the cited work.  Entries for authors that are first (or even only)
authors of a work are listed in the author index as usual.

For example, if you write in German, you'd put
\begin{verbatim}
\aisee{, siehe }
\end{verbatim}
in your preamble.  If you write in English, you would use ``see'' instead of
``siehe''.  For example, assume that we cite works with the following author
lists: ``A.~Schmidt, R.~Musil, and K.~May'' (cited on page 4); ``R.~Walser and
K.~May'' (and page 4 and 5); ``R.~Musil'' (on page 3); ``R.~Musil and
N.~Souter'' (on page 5); ``N.~Souter and R.~Musil'' (on page 2 and 6).  Then,
the entries starting with ``M'' in the \fnext{ain} file look like like
\begin{verbatim}
\item[\aitop{May, K.}, siehe \aifirst{Schmidt, A.}] \aipages{4}
\item[\airep{May, K.}, siehe \aifirst{Walser, R.}] \aipages{4, 5}
\item[Musil, R.] \aipages{\aifirstpage{3}, \aifirstpage{5}}
\item[\airep{Musil, R.}, siehe \aifirst{Souter, N.}] \aipages{2, 6}
\item[\airep{Musil, R.}, siehe \aifirst{Schmidt, A.}] \aipages{4}
\end{verbatim}


\subsection{Mini indices}
\label{sec:mini}

Alternatively (or additionally) to the usual author index, you can use the
package option \ltxinp{miniindex} in the preamble to cause \aiperl\ to merge a
mini index directly into your bibliography file; that is, the merge modifies
the \fnext{bbl}-file. This procedure requires that you run \aiperl\ 
\emph{after} you run \bibtex.  The page list is put into the single argument of
the command \ltxinp{\bibindex}.  By default, \ltxinp{\bibindex} prints nothing
if its argument is empty.  Otherwise, it passes the argument to
\ltxinp{\aibibindex}, which prints the pages in bold type enclosed by braces
(for example, \textbf{\{10, 11, 36\}}), as in Nelson F. Beebe's author index
package \cite{Beebe98}.  For alternatives, you can redefine
\ltxinp{\aibibindex} using \ltxinp{\renewcommand}.  For obvious reasons, a mini
index always contains the page numbers, even if the \ltxinp{biblabels} package
option is used.

Normally, the mini index is placed at the end of each item.  You can change
this by hacking your bibliography style file.  Let it place \verb|\bibindex{}|
on its own line where you want the mini index to go, and \aiperl\ will do the
rest.

\section{Author names}

\subsection{Which names to include in the index?}

There are two package options to \authorindex\ to select which type of names to
include in the index:
\begin{description}
\item[editors] will cause the editor names to be included in the author index.
\item[avoideditors] will cause the editors names to be included only if there
  are no author names present for a cited work
\item[onlyauthors] (the default) will restrict the author index to the author names.
\end{description}
Previous comments concerning authors will also apply to editors when the
\ltxinp{editors} option is invoked.

The command
\ltxinp{\aimaxauthors[}\textit{trunc\/}\verb|]{|\textit{max\/}\verb|}| limits
the maximum number of authors per work that will be included in the author
index. The optional first argument \textit{trunc\/} determines the number of
authors to be included if the maximum number is exceeded.  If it is omitted,
\textit{trunc\/} is assumed equal to \textit{max}. Thus,
\ltxinp{\aimaxauthors[1]}\verb|{3}| will set the maximum number of authors to
3; for works with more than three authors only the first one will be included.
In this example, for a work by ``A.  Schmidt, R. Musil, and K. May'', all of
them will appear in the author index while, for a four-author work by ``A.
Schmidt, R.  Musil, K. May, and N. Souter'', only Schmidt will.  This usage is
similar to the ``et al.'' commonly used in in bibliographies.  With
\ltxinp{\aimaxauthors}\verb|{3}|, on the other hand, for works with more than 3
authors, the 3 first ones will be included.  For the two example author lists,
in both cases, Schmidt, Musil, and May will be listed.

The \authorindex\ package accepts package options for only the most important
cases:
\begin{description}
\item[onlyfirst] sets the maximum number of authors (or editors) per work that
  will be included in the index to 1.  It corresponds to
  \verb|\aimaxauthors{1}|.
\item[all] (the default) sets the maximum number of authors (or editors) per
  work that will be included to 9999.  It corresponds to
  \verb|\aimaxauthors{9999}|.
\end{description}


\subsection{Formatting and sorting}

The command \ltxinp{\ainamefmt} contains the specification for formatting and
ordering of names. Its argument is a string consisting of one or more parts
separated by semicolons.  Each part is made up of one or two components,
separated by a colon.  If there is only one component, the both components are
assumed to be equal.  Each of the two component consists of a \BibTeX-format
string \cite{Patashnik88b}. The first component formats the way the names are
printed in the index; the second component, the way the names are sorted.  It
is therefore possible to include the same name multiple times in the index,
each time sorted or printed differently. One restriction is that you cannot
have different printed representations that have the same sort format. Because
\ltxinp{\ainamefmt} can be messy to use, a few simple cases can be selected by
options to the \authorindex\ package: {\small
\begin{description}
\item[lastname] will only include the last name of the authors (and titles like
  ``von'', if present).
\item[firstabbrev] will also include the abbreviated first name(s) (and
  eventually also a ``jr.''), following the last name.
\item[fullname] (the default) will spell the names in full, to the extent given
  in the \fnext{bib} file.
\end{description}}

For example, the package options \ltxinp{fullname}, \ltxinp{lastname}, and
\ltxinp{firstabbrev} correspond following uses of \ltxinp{\ainamefmt}:
\begin{verbatim}
\ainamefmt{{vv }{ll}{, ff}{, jj}}} % fullname
\ainamefmt{{vv }{ll}}}             % lastname
\ainamefmt{{vv }{ll}{, f.}{, jj}}} % firstabbrev
\end{verbatim}

For a more complex example, assume we want to format the names like for the
\ltxinp{firstabbrev} option but, in addition to the normal sorting, we also
want to sort in names that have a `von'-part ignoring that part.  In other
words, we want C. F. von Weizs\"{a}cker to appear both under ``V'' and ``W'' in
the index, but nonetheless always typeset as ``von Weizs\"{a}cker, C. F.'':
\begin{verbatim}
\ainamefmt{%
  {vv }{ll}{, f.}{, jj};%
  {vv }{ll}{, f.}{, jj}:{ll}{vv }{, f.}{, jj}%
}
\end{verbatim}
This approach would also work for name prefixes like ``van'' or ``de la''.

Note that the command \ltxinp{\indexspace}, which separates entries that start
with a different letters, is placed according to the format used for sorting.


\subsection{Dealing with name variations}

In different publications, the name of the same author may appear in different
forms.  Causes of variation are differing style conventions of various
journals, inconsistencies caused by the author, or plain errors.

Bibliographies should give the author names as close to what appears on the
publication as the bibliography style allows.  This in the interest of your
readers, as is simplifies finding what you cite.  But it also implies that
inconsistencies carry over to the \ltxinp{author} fields of the \BibTeX\ data
base.

In contrast, for author indices, names should be used consistently.  Readers
consult the author index to find out about the works of a particular person,
and should find all of them in a single entry, rather than scattered over
multiple entries that correspond to different forms of the same name.

To meet the conflicting needs for bibliographies and author indices,
\authorindex\ supports two new fields for \BibTeX\ data base entries:
\begin{description}
\item[authauthor] Gives the author name list, using the authoritative form of
  the authors names.  The format is like for the \ltxinp{author} field.
\item[autheditor] Likewise, for editors.
\end{description}
If a new field is present in a \BibTeX\ entry, \authorindex\ uses it instead of
the \ltxinp{author} or \ltxinp{editor} field.  Of course, the latter fields are
still required for \BibTeX.


\subsection{Fonts for the names}

\ltxinp{\ainame} is a command with one argument.  It determines how the
argument of \ltxinp{\item} inside the \ltxinp{theauthorindex} environment is
printed.

The command \ltxinp{\aifirst} has one argument.  It is used to typeset the name
of the leading author from an entry with an additional author when using the
command \ltxinp{\aisee}. The command \ltxinp{\aitop} typesets the name of the
first occurrence of an additional author, that is, an author name before the
string defined by \ltxinp{\aisee}.

Finally, \ltxinp{\airep} typesets a name that has already been used in the
previous index entry.  Look at the example in section~\ref{sec:firstandothers}
for clarification.

By redefining these commands, you can do more than just selecting fonts.  One
example would be to redefine
\begin{verbatim}
\renewcommand{\airep}[1]{---}
\end{verbatim}
to cause the name of an author to printed only once when it occurs in many
subsequent entries.


\subsection{Advanced customization}
\label{sec:bsthacker}

If the standard command \ltxinp{\ainamefmt} does not provide enough
flexibility, you can use the command \ltxinp{\authorindexstyle} in the
preamble. Its single argument is the name of some \fnext{bst}-file that you
select to format the author names.

If you decide to write a custom \fnext{bst}-file, it is necessary to understand
hacking \fnext{bst} files, e.~g.\ by reading \cite{Patashnik88b}. Your \BibTeX\
style file needs to generate a \fnext{bbl} file that contains three lines per
author-label pair, each of which is followed by a line that contains just a
percent sign.  The first line is the name formatted according to your taste, as
it appears in the index.  The second line is the name format used for
sorting. The third line contains the label of the citation, or is empty.  In
the latter case, the label of the previous three line entry is taken;
furthermore, this entry is assumed to refer to the same author as the current
one --- differing only in the formatting or sorting rule. The default
\fnext{bst} file used to format the names is embedded in the \perl\ script
\aiperl. You could use this as template. Use the command line option
\option{-k} for \aiperl\ (see Sec.~\ref{sec:Runai}).

The first author of the work is expected to be dumped into the \fnext{bbl} file
first.


\section{Page numbers and bibliography labels}

\subsection{Page numbers or bibliography labels?}

You have to possibility of selecting whether you want the page numbers or the
bibliography numbers of the references to appear in the index. This selection
is done through the package options
\begin{description}
\item[biblabels] will include in the author index the reference label as it
  appears in the reference list instead of the page numbers.
\item[pages] (the default) the pages of the citations.
\end{description}
With the option \ltxinp{biblabels}, every citation will be indexed. There is no
need to use the special citation commands \ltxinp{\aicite}, unless you want to
have a mini index as well (see section~\ref{sec:mini}).  With this option, it
makes no sense to use either the \ltxinp{\aimention} command or the
\ltxinp{withbib} package option.

While this manual has referred to ``pages, '' it also applies to the indexing
of bibliography labels unless explicitly noted otherwise.


\subsection{Ordering of pages and compression of page ranges}

The command \ltxinp{\aipagetypeorder}\verb|{|\textit{order\/}\verb|}| can be
used to determine the relative order of different types of page numbers, such
as roman, arabic, and others. The argument \textit{order\/} is a string
consisting of a selection of the characters \ltxinp{rRnAa}, which indicate
lowercase roman, uppercase roman, arabic, uppercase alphabetic, and lowercase
alphabetic page numbers, respectively. The relative order of the letters in the
string determine the order of the page numbers. For example, the argument
\ltxinp{rn} will sort all lowercase roman pages before the arabic pages. If you
want to use lowercase alphabetic numbers, you have to use
\ltxinp{\aipagetypeorder} without putting \ltxinp{r} in the string; that is,
you can't use lowercase roman numbers and lowercase alphabetic numbers at the
same time. The same holds for using uppercase roman and alphabetical page
numbers. Composite page numbers (like ``4-17'') are split into their components
(using any character that cannot be interpreted as a digit as field separator)
and sorted with the priority of components decreasing from left to right.

Normally, three or more adjacent page numbers are ``compressed.''  If an author
citation appears on pages 4.17, 4.18, and 4.19, the page range will appear as
``4.17--4.19'' in the index entry.  However, a range of only two consecutive
pages will not be compressed. To represent such a pair by the first page number
plus some string (typically, ``f''), specify that string as the argument of
\ltxinp{\aitwosuffix} in the preamble.  You can suppress range compression
altogether by using the \ltxinp{nocompress} package option.


\subsection{Fonts used for the pages}

The command \ltxinp{\aipages} determines the overall font of the page numbers.
The command \ltxinp{\aibibpage} is used to switch on additional properties to
mark the pages that contain the bibliography entries of works of the author ---
relevant if the \ltxinp{withbib} package option is used.  \ltxinp{\aifirstpage}
is used to print page numbers of references in which the author is the leading
author. All three commands expect one argument and can be redefined by
\ltxinp{\renewcommand}.

\subsection{Modifying the page numbers}
\label{sec:pagerep}

The command \ltxinp{\theaipage} determines the string representing the page
delivered to the \perl\ script \aiperl. This does not apply to bibliography
labels, even if the \ltxinp{biblabels} package option is used.  By default,
this is simply defined as \ltxinp{\thepage}, but you can redefine it.
Originally, allowing \ltxinp{\theaipage} to differ from \ltxinp{\thepage} was
intended for multi-volume books, where the page numbers in each volume do not
indicate the volume number.  For example, page 231 of volume II will produce
only a plain ``231'' as the page number, whereas you might prefer to have the
indication of the volume in the index such as ``II-231''. You can also do more
sophisticated things. For example, using the \package{hyperref} package with
the \ltxinp{plainpages=false} option to create hyperlinks to the page where the
citation is:
\begin{verbatim}
\def\theaipage{\string\hyperpage{\thepage}}
\end{verbatim}
NB: To avoid keep \aiperl\ from interpreting the string \ltxinp{\hyperpage} as
an alphabetic page number, you should not use alphabetic page numbering and
tell the \perl\ script about it using \ltxinp{\aipagetypeorder}.


\section{Running \aiperl}
\label{sec:Runai}

Having run \LaTeX\ on the properly prepared \LaTeX\ source document, you then
use the \perl\ script \aiperl\ to process the generated \fnext{aux}-files,
which produces the author index file (extension \fnext{ain}).

The \perl\ script can be called with any number of arguments.  Without
arguments, \aiperl\ reads from the standard input. With several arguments,
\aiperl\ appends \fnext{aux} extensions wherever necessary and processes these
files. The output is written to the file whose name is extracted from the
\fnext{aux}-file for the \fnext{tex}-file where \ltxinp{\printauthorindex} was
given. It is necessary to give the \fnext{aux}-file produced by the
\fnext{tex}-file containing \verb|\begin{document}| to \aiperl; this file
  passes information to the script regarding the style and content of the
  index.
  
If you use \ltxinp{\include} in your \LaTeX\ source document, it is
sufficient to give the master \fnext{aux}-file to \aiperl; the
\fnext{aux}-files of included files are then processed automatically.

\aiperl\ recognizes the following command line options:
\begin{description}
\item[-d] (``draft'') Adds additional information to the \fnext{ain} file: For
  each author, the labels of all references and the page numbers where they are
  cited are included as comments. This detail may help if you manually edit the
  generated author index. Also, some statistics are included at the bottom of
  the \fnext{ain} file. This option does not work with the \option{-i} option.
\item[-h] (``help'') Prints out a
  short help text.
\item[-i] (``index'') Creates a file suitable for further processing with
  \mkindex\ or the like. For example, you could use that to make a common
  author and subject index. Note the extension of the generated file still will
  be \fnext{ain}.  (Use the \option{-p} option and redirection to send the
  stuff anywhere else.)
\item[-k] (``keep'') Retains the temporarily generated \fnext{bst}-file after
  \aiperl\ finishes. This information will give you a good starting point for
  advanced customization of the author index (see Sec.~\ref{sec:bsthacker}).
\item[-p] (``print'') Prints the result to standard output instead of writing
  it to the \fnext{ain}-file.
\item[-r] (``do not recurse'') Does not automatically process \fnext{aux}-files
  produced by included files.
\end{description}


\section{\authorindex\ and other packages}

\subsection{Compatible packages}

\subsubsection{Standard distribution package}

The standard \package{cite} package included with the \LaTeX\ distribution
seems to work with \authorindex\ without problems.

\subsubsection{chapterbib}

The \package{chapterbib} package also works well with \authorindex.  If you
want to use the mini indices, be sure to run \aiperl\ separately on the main
\fnext{aux}-file plus the \fnext{aux}-file for each chapter using the
\option{-r} option (see section~\ref{sec:Runai}). In addition, you may want to
run \aiperl\ on the main \fnext{aux}-file to generate an author index for all
chapters. For example, you might use a sequence of the form:
\begin{verbatim}
 authorindex -r main chapter1
 authorindex -r main chapter2
 authorindex main
\end{verbatim}
If you require chapterwise author indices, after the first two \authorindex\ 
runs in the above example, you should rename \file{main.ain} to something else
and \ltxinp{\input} these files in the place where you want the chapterwise
authorindex to appear.

\subsubsection{hyperref}

The script \authorindex\ works well with \package{hyperref}.  In the standard
version, the pages in the author index are not linked back to the page with the
citation.  Section~\ref{sec:pagerep} describes how to fix this problem.

\subsection{Less compatible packages}

Most problems with other bibliographical packages arise because the packages
override or skip certain citation functions. The \authorindex\ package modifies
these functions to write page information along with the citation key to the
\fnext{aux} file.  In the following examples, we show how to re-establish this
additional output for a few specific packages. Please note that these ``fixes''
may no longer work if newer versions of these packages appear.

If you use a non-compatible package that is not listed below, it is worthwile
to have a look into its source code.  In the simplest case, the package might
include one of the listed packages (using \ltxinp{\usepackage}), and hence one
of the examples below applies.  Others might require more effort, but the basic
strategy for a fix will be always similar to the examples below.  If you
encounter non-compatible packages, please notify me about them (ideally, with
instructions for a fix) so that I can include them in this manual.


\subsubsection{\package{chicago}}
\label{sec:chicago}

The standard version of the \package{chicago} package does not work with
\authorindex. For this package, there is a patch that apparently makes it work
with \authorindex.  In the file \file{chicago.sty}, you replace the lines
\begin{verbatim}
\def\@citex[#1]#2{%
\end{verbatim}
with
\begin{verbatim}
\def\@citex[#1]#2{\@aicitey{#2}%
\end{verbatim}
and
\begin{verbatim}
\def\@citedatax[#1]#2{%
\end{verbatim}
with
\begin{verbatim}
\def\@citedatax[#1]#2{\@aicitey{#2}%
\end{verbatim}
and save the modified file under a new name, e.~g.\ \file{aichicago.sty}. Use
this file in place of the file \file{chicago.sty}.


\subsubsection{\package{harvard}}

The \package{harvard} package can be made to work with \authorindex by adding
code to the document preamble.  After loading the \package{harvard} package
with \ltxinp{\usepackage}, write the following lines into the preamble of your
\LaTeX-source file:
\begin{verbatim}
\makeatletter
\renewcommand{\HAR@citetoaux}[1]{%
  \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi%
  \if@filesw\@for\@citeb:=#1\do{\immediate\write\@auxout{%
      \string\citationpage{\@citeb}{\thepage}}}\fi}%
\makeatother
\end{verbatim}
Then, in the main text, use the \package{harvard} citation commands
\ltxinp{\cite}, \ltxinp{\citeyear}, etc., exactly as you would normally do
without the \authorindex\ package.


\subsubsection{\package{natbib}}

Like \package{chicago}, the package \package{natbib} also conflicts with
\authorindex.  The following fix is based on a similar fix by Michael Friendly
and Patrick W.\ Daly for Nelson Beebe's \package{authidx} package
\cite{Beebe98}, plus additional support for \package{natbib}'s numerical mode
as proposed by Pieter Eendebak.  You insert in your \file{natbib.cfg} the
following lines:
\begin{verbatim}
% natbib.cfg
\AtBeginDocument{%
\@ifpackageloaded{authorindex}{%
  \ifNAT@numbers
    \let\org@@citex\NAT@citexnum
  \else
    \let\org@@citex\NAT@citex
  \fi
  \def\@citex[#1][#2]#3{%
    \typeout{indexing: [#1][#2]{#3}}%
    \org@@citex[#1][#2]{#3}%
    \@aicitey{#3}}%
  \renewcommand\NAT@wrout[5]{%
     \if@filesw{%
       \let\protect\noexpand\let~\relax
       \immediate\write\@auxout{\string\aibibcite{#5}{#1}}%
       \immediate\write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}%
     \fi}}{}}
\endinput
\end{verbatim}
Please note that I tested this work-around superficially.  It does not repair a
conflict that occurs when the \authorindex\ package option \ltxinp{withbib} is
used.

\subsubsection{\package{bibunits}}

To make \package{bibunits} to work with \authorindex, in \file{bibunits.sty},
replace the lines
\begin{verbatim}
\def\bu@@citex[#1]#2{%
\end{verbatim}
by
\begin{verbatim}
\def\bu@@citex[#1]#2{\@aicitey{#2}%
\end{verbatim}
and save the modfied file under a new name.


\subsubsection{Other packages}

\begin{description}
\item[\package{monog3}] A class from Oxford University Press that used
  \package{chicago}.  See section~\ref{sec:chicago}.
\end{description}


\section{Problems and restrictions}

Currently, I am aware of the following problems and restrictions:
\begin{itemize}
\item Compression of page numbers ignores whether the pages will be printed in
  the same font; that is, you might get something like ``7--\textbf{9}''.
\item Compression always uses the full page numbers, that is you will always
  get something like ``4.8--4.10'' rather than ``4.8--10''.
\item Sorting of names is restricted.  At this time, special characters are
  stripped, the case is ignored, and a normal comparison according to the
  ASCII~Code is done.  This might not be what you want if you have accented
  characters.  Consider using the option \option{-i} in conjunction with
  additional processing by a more flexible tool.
\item If you use \ltxinp{\aicite} with multiple arguments and a page break
  occurs within the list of generated references, one part of the citations
  will be associated with the wrong page.
\item You can not use the package when you explicitly type your bibliography in
  your \LaTeX\ file (\ltxinp{\bibitem}) instead of using \BibTeX. Consider
  using \BibTeX\ instead.  It is a powerful bibliographical tool worth the
  small additional effort.
\end{itemize}

\section{Acknowledgement}

I want to thank Mark A. Gordon for his substantial improvements to the language
and presentation in this manual.


\begin{thebibliography}{3}

\bibitem{Patashnik88a}
O.~Patashnik.
\newblock \textit{{\BibTeX ing}} (1988).
\newblock Documentation for general {\BibTeX} users.

\bibitem{Beebe98}
N.~H.~F. Beebe.
\newblock \textit{{AUTHIDX}: An author/editor indexing package}.
\newblock TUGboat \textbf{19}(1):1001--1007 (1998).

\bibitem{Patashnik88b}
O.~Patashnik.
\newblock \textit{Designing {\BibTeX} styles} (1988).
\newblock The part of \BibTeX's documentation that's not meant for general
  users.

\end{thebibliography}

\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
