使用 et al 在作者和年份之间添加逗号

使用 et al 在作者和年份之间添加逗号

我使用的是biblatexwithstyle=authoryearmaxcitenames=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中设置选项来实现这一点。\usepackagebiblatex

梅威瑟:

\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}

其结果为:

在“et al.”和年份之间用逗号引用,而在文本引用时不加逗号。

答案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}

Sigfridsson 和 Ryde,1998 年;Aksın 等人,2006 年;Herrmann 等人,2006 年;Nussbaum,1978 年//Sigfridsson 和 Ryde(1998 年)、Aksın 等人(2006 年)、Herrmann 等人(2006 年)和 Nussbaum(1978 年)

如果你看一下blx-natbib.def,你会发现它使用的命令与此处建议的完全相同。这就是为什么natbib=true(如亚历克斯回答) 也会产生所需的逗号。

相关内容