0

I have references with long lists of authors. I want to credit them all by listing them in the index, but since I don't want to clutter my main text, I display a maximum of two names in the citations.

How do I still add all co-authors to the index?

Here is my MWE:

\documentclass{article}

% Bibliography configuration
\usepackage[%
    maxcitenames=2, % cite: 1, 2, or 1st + et al.
    maxbibnames=99, % bib:  all authors
    indexing=cite   % put citations in index
]{biblatex}
\addbibresource{database.bib}

\begin{filecontents*}{database.bib}
@Article{BahOlsLat10,
  author            = {Bahador Bahrami and Karsten Olsen and
                       Peter E. Latham and Andreas Roepstorff and
                       Geraint Rees and Chris D. Frith},
  title             = {Optimally Interacting Minds},
  journal           = {Science},
  year              = {2010},
  volume            = {329},
  number            = {5995},
  pages             = {1081--1085},
  doi               = {10.1126/science.1185718}
}

@Book{BakEll11,
  author    = {Paul Baker and Sibonile Ellece},
  title     = {Key Terms in Discourse Analysis},
  year      = {2011},
  publisher = {Continuum International Publishing Group},
  isbn      = {978-1-8470-6320-5}
}
\end{filecontents*}

\usepackage{makeidx}
\makeindex

\begin{document}

\textcite{BahOlsLat10,BakEll11}

\clearpage

\printbibliography

\printindex

\end{document}

What happens: The two authors of the book both get listed in the index, but only the first author of the article with six authors.

What I tried and does not work: Setting indexing=true will add all author names to the index, but the page numbers refer to the bibliography (here: page 2). I want to have index entries of the 2nd, 3rd, 4th, ... authors pointing to where the citation was (here: page 1).

2

The Biblatex documentation on the \indexnames macro helped me out (which is called to add a list of names to the index):

\indexnames[<format>][<start>–<stop>]{<name list>}

This command is similar to \printnames ...

And for \printnames there is the crucial hint:

If you want to override maxnames and minnames and force printing of the entire list, you may refer to the listtotal counter in the second optional argument:

\printnames[...][-\value{listtotal}]{...}

So look for the original macro in biblatex.def:

\newbibmacro*{citeindex}{%
  \ifciteindex
    {\indexnames{labelname}%
     \indexfield{indextitle}}
    {}}

And overwrite it your own code to make explicit that all entries from that list should be used:

\renewbibmacro*{citeindex}{%
  \ifciteindex
    {\indexnames[][-\value{listtotal}]{labelname}%
     \indexfield{indextitle}}
    {}}

Works like a charm.

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.