Добавьте запятую между автором и годом с et al.

Добавьте запятую между автором и годом с et al.

Я использую biblatexс style=authoryearи maxcitenames=2. Для ссылки с более чем двумя авторами команда \cite выдает

Эркус и др. 2010

и команда \textcite выдает

Эркус и др. (2010)

Я хотел бы добавить запятую между et al.и годом только для \citeкоманды (но не для \textciteкоманды), т.е.

Эркус и др., 2010

Эркус и др. (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

Этого можно добиться, установив natbib=trueопцию в \usepackagefor 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}

Сигфридссон и Райд, 1998; Аксын и др., 2006; Херрманн и др., 2006; Нуссбаум, 1978 // Сигфридссон и Райд (1998), Аксын и др. (2006), Херрманн и др. (2006) и Нуссбаум (1978)

Если вы посмотрите наblx-natbib.def, вы увидите, что он использует точно такую ​​же команду, как предложено здесь. Вот почему natbib=true(как предложено вАлекс'отвечать) также создает нужную запятую.

Связанный контент