Я обнаружил, что легко создать индекс из biblatex, используя пакет makeidx, опцию biblatex indexing=cite и команды \makeindex и \printindex. Однако, что мне показалось нелегким, так это иметь индекс только имен, без упоминаний названий. Пожалуйста, взгляните на следующий 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}