我正在使用 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
缺少editor
andauthor
字段,因此您无法获得完整的标签,而只能获得“[02]”(即日期部分)。如果您想要一个漂亮的标签,您可以在字段中提供所需的信息label
。
其次,该booktitle
字段不是该@proceedings
类型的必需或可选字段之一(参见第 10 页)文档biblatex
)。您需要的title
是 而booktitle
不是 。继承仍将正常工作,asdf1
和都asdf2
将获得 形式的“诉讼” booktitle
,即使您将其指定title
为conf1
。
@proceedings{conf1,
title = {proceedings},
year = 1984,
location = {San Francisco},
label = {Pr},
}