我发现使用 makeidx 包、biblatex 的 indexing=cite 选项以及 \makeindex 和 \printindex 命令从 biblatex 生成索引很容易。但是,我发现制作仅包含名称而不包含标题的索引并不容易。请查看以下 MWE,它是我从 biblatex 示例文档 (20) 中摘录的,略作了调整:
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[indexing,style=authortitle,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage{makeidx}
\renewbibmacro*{citeindex}{\indexnames{labelname}{}}
\makeindex
\begin{document}
\section*{Indexing with the \texttt{makeidx} package}
\nocite{*}
\cite{piccato,gaonkar,malinowski,coleridge,gerhardt,cicero}
\index{Example entry}
\clearpage
\printbibliography
\printindex
\end{document}
我尝试插入
\renewbibmacro*{citeindex}{%
\ifboolexpr{ test {\ifciteindex} and not test {\iffootnote} }
{\indexnames{author}}{}}
按提议这里,但这似乎不起作用。那么,有什么想法可以让我仅获取名称索引吗?
答案1
您需要添加indexing=cite
您的biblatex
选项。
\usepackage[indexing=cite,style=authortitle,backend=biber]{biblatex}
为了避免\citetitle
将标题添加到索引中,您需要修改宏\citetitle
以更改其索引的内容。我假设如果您引用标题,您仍然希望作者出现在该页面的索引中,因此我进行了修改\citetitle
以索引作者的姓名。但如果您不想这样做,您可以直接将索引代码从中删除\citetitle
。
这是一个完整的例子:
\documentclass[a4paper]{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[indexing=cite,style=authortitle,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareCiteCommand{\citetitle}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printfield[citetitle]{labeltitle}}
{\multicitedelim}
{\usebibmacro{postnote}}
\DeclareCiteCommand*{\citetitle}
{\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex
{\indexnames{labelname}}
{}%
\printfield[citetitle]{title}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{makeidx}
\renewbibmacro*{citeindex}{\indexnames{labelname}{}}
\makeindex
\begin{document}
\section*{Indexing with the \texttt{makeidx} package}
\nocite{*}
\cite{piccato,gaonkar,malinowski,cicero}
\citetitle{coleridge,gerhardt}
\index{Example entry}
\clearpage
\printbibliography
\printindex
\end{document}