我的参考文献中有很长的作者名单。我想通过在索引中列出他们来表示感谢,但因为我不想让正文杂乱无章,所以我在引文中最多显示两个名字。
我如何将所有合著者添加到索引中?
这是我的 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}
会发生什么: 书籍的两位作者均在索引中列出,但文章的六位作者中只有第一作者。
我尝试过但没有效果的方法:
设置indexing=true
会将所有作者姓名添加到索引中,但页码指的是参考书目(此处:第 2 页)。我希望第 2、3、4 位作者的索引条目指向引用的位置(此处:第 1 页)。
答案1
这Biblatex 文档宏\indexnames
帮助了我(这被称为将名称列表添加到索引中):
\indexnames[<format>][<start>–<stop>]{<name list>}
该命令类似于
\printnames
...
其中\printnames
有一个关键的提示:
如果你想覆盖最大名称和最小名称并强制打印整个列表,您可以参考
listtotal
第二个可选参数中的计数器:\printnames[...][-\value{listtotal}]{...}
因此,请查找原始宏biblatex.def
:
\newbibmacro*{citeindex}{%
\ifciteindex
{\indexnames{labelname}%
\indexfield{indextitle}}
{}}
并覆盖你自己的代码以明确全部应使用该列表中的条目:
\renewbibmacro*{citeindex}{%
\ifciteindex
{\indexnames[][-\value{listtotal}]{labelname}%
\indexfield{indextitle}}
{}}
奇迹般有效。