
Я использую 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
опцию в \usepackage
for 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
(как предложено вАлекс'отвечать) также создает нужную запятую.