使用 Biblatex 进行索引:包括编辑

使用 Biblatex 进行索引:包括编辑

请考虑下面的示例及其输出。引用了两部作品,但 biblatex 似乎只在索引中包含一个人。我花了一段时间才在我目前正在排版的 300 页出版物中找到这种行为背后的模式。结果发现,模式很简单,biblatex 不会在索引中包含“仅是”编辑者而不是作者的人。

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{makeidx,blindtext,csquotes,lmodern}
\usepackage[style=authoryear-icomp,%
   indexing=cite,
   backend=biber]{biblatex}

\addbibresource[location=remote]{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib}

%--- modified to exclude publication titles from indexing:
\renewbibmacro*{citeindex}{%
    {\indexnames{author}}{}}

\makeindex

\begin{document}
\blindtext\footnote{The people in \textcite{westfahl:frontier} say the same thing. See also \textcite{malinowski}.}

\printbibliography

\printindex

\end{document}

我已经能够发现索引行为可以根据类型进行修改,这可能是一个好的起点(或者可能不是,因为无论编辑者编辑了哪种类型的出版物,@collection、@book 等,他们都被排除在外)。但仅此而已。我原本希望在 bibmacro 的文档中找到解决方案citeindex,但该宏似乎根本没有记录;并且该\citeindex命令的解释非常简短。

因此,我也很感谢任何关于如何包括编辑的提示。

在此处输入图片描述

更新

当然,我对citeindex我对(取自这里) 是问题的一部分(其中只有authors)。所以我放弃了那个修改,并返回到 biblatex 的默认定义citeindex,但再次禁用标题。不确定副作用是什么,但好消息是,至少包括了 ›他们自己的‹ 出版物 (@collections...) 的编辑。› 子公司‹ 的(未出现在 biblatex 标签中)仍然缺失(即那些编辑一本书书面由他人提供)。

\renewbibmacro*{citeindex}{%
  \ifciteindex
    {\indexnames{labelname}%
     %\indexfield{indextitle}%
     }
    {}}

答案1

biblatex提供两个索引宏,一个用于引用,一个用于参考书目,它们默认定义为

\renewbibmacro*{citeindex}{%
  \ifciteindex
    {\indexnames{labelname}%
     \indexfield{indextitle}}
    {}}

\newbibmacro*{bibindex}{%
  \ifbibindex
    {\indexnames{labelname}%
     \indexfield{indextitle}}
    {}}

因此,他们会将labelname(即与该作品相关的主要名称,通常是作者,但在某些情况下(@collections突然想到)editor甚至是translator)和标题编入索引。如果您想对所有做出贡献的人进行索引,那么这可能只有在参考书目索引中才有意义。

所以你可以使用

\renewbibmacro*{citeindex}{%
  \ifciteindex
    {\indexnames{labelname}}
    {}}

只获取引用的“主要名称”和

\renewbibmacro*{bibindex}{%
  \ifbibindex
    {\indexnames{author}%
     \indexnames{editor}%
     \indexnames{editora}%
     \indexnames{editorb}%
     \indexnames{editorc}%
     \indexnames{translator}%
    }
    {}}

甚至

\makeatletter
\renewbibmacro*{bibindex}{%
  \ifbibindex
    {\def\do##1{\indexnames{##1}}%
     \abx@donames}
    {}}
\makeatletter

对参考书目中的所有名称进行索引。

然后您将需要使用indexing=true,它来打开引文和参考书目中的索引。

答案2

你说得对,尼尔斯,问题在于对 的重新定义citeindex。如果你根本不重新定义,即让 biblatex 遵循其原生例程,你将拥有标题(你不想要但可以稍后删除)以及编辑。至少那些足够重要以至于可以获得自己的引用标签的。你可以按照\indexnames{editor}moewe 的建议使用 添加子项。因此,完成 MWE —— 与上面完全相同,但对 进行了不同的修改citeindex

\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{makeidx,blindtext,csquotes,lmodern}
\usepackage[style=authoryear-icomp,%
   indexing=cite,
   backend=biber]{biblatex}

%--- modified to exclude publication titles from indexing:
\renewbibmacro*{citeindex}{%
  \ifciteindex
    {\indexnames{labelname}%
    \indexnames{editor}%
     %\indexfield{indextitle}%
     }
    {}}


\addbibresource[location=remote]{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib}

\makeindex

\begin{document}
\blindtext\footnote{The people in \textcite{westfahl:frontier} say the same thing. See also \textcite{malinowski} and \textcite{aristotle:anima}.}

\printbibliography

\printindex

\end{document}

在此处输入图片描述

相关内容