我已经使用 bibtex 和 biblatex 有一段时间了。在编写我的书的最新版本时,我改用了 biber。我偶然注意到有时会生成名字,有时则不会。其他人有没有注意到这种情况?
我尝试制作一个最小示例,但没有成功。使用以下代码(显示了我在序言中拥有的所有与 biblatex 相关的命令),我无法显示名字。即使使用我为本书制作的样式文件(第二行),也没有发生错误。
我有一个 Dropbox,里面有这本书的 Latex 文件。我可以授予这些文件的访问权限。
你有什么建议?
\documentclass[fontsize=10pt,twoside]{scrbook}
\usepackage{hormonbuch}
\usepackage[%
style=authoryear%
,natbib=true%
,sorting=nyt,backend=biber,doi=false,isbn=false,url=false]{biblatex}
\addbibresource{../Literatur/EndokrinologieKundeNourl.bib}
\renewcommand*{\bibpagespunct}{\addcolon}
\DeclareFieldFormat{pages}{#1}
\renewrobustcmd*{\enquote}{}
\renewbibmacro{in:}{% Herbert Voss auf http://tex.stackexchange.com/questions/10682/suppress-in-biblatex
\ifentrytype{article}{}{%
\printtext{\bibstring{in}\intitlepunct}}}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
% \setunit{\addspace}%
\newunit}
\renewbibmacro*{volume+number+eid}{%
\printfield{volume}%
% \setunit{\addcolon\space}%
}%
%
\renewbibmacro*{note+pages}{%
\printfield{pages}%
\newunit}
%
\begin{document}
\citet{CRT+88,FDe+85}
\citep{CRT+88,FDe+85}
\cite{CRT+88,FDe+85}
\printbibliography
\end{document}
答案1
这几乎肯定与使用 uniquename 和 uniquelist 选项有关,这些选项在大多数捆绑样式中默认启用。这些选项意味着 biber 会根据引用的其他名称,使用首字母或全名自动消除名称歧义。请参阅 biblatex 手册,其中通过一些全面的示例对此进行了解释。如果您设置uniquename=false
,uniquelist=false
我保证您看到的“奇怪”行为会停止。
答案2
最常见的情况是,此问题是由 bib 文件中的作者姓名不一致引起的。例如,如果 bib 文件包含一些带有
author = {Smith, John}
以及其他条目
author = {Smith, J}
然后 biblatex 将尝试通过引用 J Smith 或 John Smith 来消除这些作者的歧义。
解决此问题的一种方法是关闭消歧义功能,如@PLK 所建议的。另一种方法是确保所有 bib 条目都有一致的名称。
答案3
更简单的答案:要么
- 包括
uniquename=false
在选项中biblatex
,或 - 确保您注意到此问题的作者(如果确实只有一个人)的名字在您的
.bib
文件中始终以相同的方式书写。
出于某种原因,在几个地方建议也设置uniquelist=false
,但设置uniquenames
可能对您来说就足够了(如在这个答案中:biblatex,authoryear 样式:文内引用显示某些参考书目条目的名字首字母)。
顺便说一下,在 LyX 中,您可以uniquename=false
在“文档设置”对话框的“参考书目”下,选择样式格式后在顶部的第一个选项框中进行设置Biblatex
。
在 LaTeX 中,你可以使用:
\usepackage[style=authoryear,uniquename=false]{biblatex}