我使用的是biblatex
withstyle=authoryear
和maxcitenames=2
。对于有两位以上作者的参考文献,\cite 命令会生成
Erkus 等人2010
并且 \textcite 命令产生
Erkus 等人(2010 年)
et al.
我只想在命令和年份之间添加逗号\cite
(但不为\textcite
命令添加),即,
Erkus 等人,2010 年
Erkus 等人(2010 年)
\renewcommand*{\nameyeardelim}{\addcomma\space}
仅供单一作者参考的作品(看到这个问题),但不适用于et al.
作者超过两位的参考文献的简写用法。我不想使用\DefineBibliographyStrings
重新定义andothers
并在后面添加逗号,et al.
因为它还会在引用中添加逗号\textcite
,而我不想这样做。
我尝试了以下(看到这个问题),但没有起作用:
\renewcommand*{\nameyeardelim}{%
\ifnumgreater{\value{listcount}}{2}{\nameyeardelim}{\addcomma\space}%
\ifnumequal{\value{listcount}}{1}{\nameyeardelim}{\addcomma\space}%
}
答案1
您可以通过在fornatbib=true
中设置选项来实现这一点。\usepackage
biblatex
梅威瑟:
\begin{filecontents*}{database.bib}
@inproceedings{erkus_2010,
title = {Title},
booktitle = {Book Title},
date = {2010},
author = {Erkus, Firstname and Lastname, Firstname and Lastname Anotherfirstname}
}
\end{filecontents*}
\documentclass[]{article}
\usepackage{filecontents}
\usepackage[style=authoryear, maxcitenames=2, backend=biber, natbib=true] {biblatex}
\addbibresource{database.bib}
\begin{document}
Cite: \cite{erkus_2010}
Textcite: \textcite{erkus_2010}
\end{document}
其结果为:
答案2
\renewcommand*{\nameyeardelim}{\addcomma\space}
应该适用于,无论您引用一个或多个作者。在的最新版本中,biblatex
nameyeardelim
是上下文相关的分隔符,这意味着您应该使用来\DeclareDelimFormat
修改它
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, maxcitenames=2, backend=biber]{biblatex}
\DeclareDelimFormat{nameyeardelim}{\addcomma\space}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson,aksin,herrmann,nussbaum}
\textcite{sigfridsson,aksin,herrmann,nussbaum}
\printbibliography
\end{document}
如果你看一下blx-natbib.def
,你会发现它使用的命令与此处建议的完全相同。这就是为什么natbib=true
(如亚历克斯‘回答) 也会产生所需的逗号。