I am trying to make two separate indexes for my PhD dissertation, the author index and the subject index.
Creating the author index is quit easy, I just use the \usepackage{makeidx}
and
\printindex
command and LaTeX
creates a beautiful author index for me. What if I want to add the subject index before the author index?
I have read the responses to the similar question on StackExchange:
How can I have two or more distinct indexes?
but it is not a viable solution for me, because it requires me to manually index both authors and subjects. Currently, I do not have to index the authors and latex creates the index for me automatically.
Is there any way to only index the subjects manually ( I mean to use \index{key}
for every subject of interest) and have the authors index automatically?
The \authorindex package does not work with \natbib
1 Answer
The authorindex
and natbib
packages collide at first glance, but in section
7.2.3 of the manual (http://mirrors.ctan.org/indexing/authorindex/authorindex.pdf) a solution is provided by using a local natbib.cfg, which I just copy from the manual, I have not developed that material:
Content of 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
Place this file (exactly with this name!) in the folder where your document source is stored.
The next step is to replace all \aicite
commands with 'traditional' \cite
(otherwise it does not work. Why???? I have no clue, but I did not look into the package files either)
I added the rather simple command \listofauthors
, which includes the authorindex, further formatting is not done, however.
\documentclass[12pt]{book}
\usepackage{natbib}
\usepackage{blindtext}
\usepackage{makeidx}
\usepackage[pdftex,plainpages=false]{hyperref}
\RequirePackage{authorindex}
% Use this, if you want hyperlinks back from list of author entry to page
% where the citation was placed
\def\theaipage{\string\hyperpage{\thepage}}
\newcommand{\listofauthorsname}{List of Authors}%
\newcommand{\listofauthors}{%
\chapter*{\listofauthorsname}%
\phantomsection%
\addcontentsline{toc}{chapter}{\listofauthorsname}%
\noindent%
\printauthorindex%
}%
\makeindex
\begin{document}
\tableofcontents
\chapter{Introduction}
Einstein showed that \[ E = m \cdot c^2,\]
i.e. the equivalence\index{Equivalence} of mass\index{Mass} and energy\index{Energy}.\par
In their books \cite{GSM97} or \cite{Lam94} show how to typeset those equation ;-)
\blindtext
\printindex
\bibliographystyle{alpha}
\bibliography{biblio}
\listofauthors
\end{document}
Workflow on
foo.tex
- pdflatex foo.tex
- makeindex foo
- bibtex foo
- authorindex foo
- pdflatex foo
-
2You can use of of the existing bib files in your tex distribution. They are under
$TEXMF/bibtex/bib/
– user2478Apr 30, 2014 at 6:10 -
@Herbert: Good to know, I never looked into that.– user31729Apr 30, 2014 at 6:21
-
@Christian: Thank you very much for the useful help. What if I want to use the \natbib package? When I do so, right after the \begig{document} I use \citeindextrue and the index of authors will appear with \printindex but \printauthorindex does not work! here it says that I have to use perl. tex.loria.fr/bibdex/authorindex.pdf what is your idea? Apr 30, 2014 at 13:25
-
1@ChristianHupfer again to clarify, with \natbib package, \printauthorindex is not producing anything. to get the index of authors, I should use \citeindexture and \printindex together. the problem is that in doing so, the index of authors and subjects get mixed together! Apr 30, 2014 at 13:30
-
@user50822: I'll look after later on.– user31729Apr 30, 2014 at 16:44
\documentclass{...}
and ending with\end{document}
.\authorindex{}
that encapsules the\index{authors}{Author}
line.