Индексация с помощью biblatex — только имена

Индексация с помощью biblatex — только имена

Я обнаружил, что легко создать индекс из 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}

введите описание изображения здесь

Связанный контент