请考虑下面的示例及其输出。引用了两部作品,但 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
我对(取自这里) 是问题的一部分(其中只有author
s)。所以我放弃了那个修改,并返回到 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}