我發現使用 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}