Biber 在引用多个参考文献并交叉引用同一条目时破坏了参考书目

Biber 在引用多个参考文献并交叉引用同一条目时破坏了参考书目

我正在使用 xetex 来构建我的 TeX 文件,并且刚刚从 BibTeX 迁移到 BibLaTeX / biber 以获得对@online-references asf 的支持。

我喜欢 biber,但它似乎破坏了我的参考书目,因为突然出现了这样的条目:

残缺的书目

经过多次尝试和错误后,我发现这种行为是由于我的 bib 文件中的两个或多个条目引用了@proceedings另一个文件中的相同条目而导致的,在这种情况下是:

@proceedings{pet02,
    booktitle = {PET~'02: Proceedings of Privacy Enhancing Technologies Workshop},
    year = 2002,
    month = apr,
    location = {San Francisco, CA, USA},
}

然而,它并不依赖于条目,而是对于每个被多个参考交叉引用的条目都是可重现的,例如基本文件

% test.tex
\documentclass[a4paper]{scrbook}
\usepackage[style=alphabetic,backend=biber]{biblatex}
\addbibresource{references.bib}

\begin{document}
\cite{asdf1,asdf2}
\printbibliography
\end{document}

% references.bib
@inproceedings{asdf1,
    author = {asdf},
    title = {halllo1},
    crossref = {conf1}
}
@inproceedings{asdf2,
    author = {asdf},
    title = {halllo2},
    crossref = {conf1}
}

@proceedings{conf1,
booktitle = "proceedings",
year = 1984,
month = apr,
location = {SF, CA, USA}
}

显示出同样的效果。

这一切都发生在 OS X 上,使用 XeTeX 3.14159265-2.6-0.99992(TeX Live 2015)和 biber 2.1 以及 XeTeX 3.14159265-2.6-0.99996(TeX Live 2016)和 biber 版本 2.5。

有人见过这种行为吗?我认为这是一个错误,对吗?我该如何规避这个问题?最有可能向谁提交这个错误?

答案1

如果你不想看到父条目conf1,你可能需要看看mincrossrefs选项(第 51 页,第 24 页文档biblatex)。默认情况下,它设置为 2。这意味着,如果您的参考书目中有两个条目交叉引用同一个条目,则即使没有引用该条目,该条目也会自动添加到参考书目中。您可以通过将选项设置为某个非常高的值(例如 999)来有效地关闭此功能mincrossrefs=999

\usepackage[style=alphabetic,backend=biber,mincrossrefs=999]{biblatex}

您在这里看到了两个不理想的情况。首先,由于@proceedings条目conf1缺少editorandauthor字段,因此您无法获得完整的标签,而只能获得“[02]”(即日期部分)。如果您想要一个漂亮的标签,您可以在字段中提供所需的信息label

其次,该booktitle字段不是该@proceedings类型的必需或可选字段之一(参见第 10 页)文档biblatex)。您需要的title是 而booktitle不是 。继承仍将正常工作,asdf1和都asdf2将获得 形式的“诉讼” booktitle,即使您将其指定titleconf1

@proceedings{conf1,
  title    = {proceedings},
  year     = 1984,
  location = {San Francisco},
  label    = {Pr},
}

相关内容