如何重新定义 \citep 命令以便它返回多个作者的作者年份样式引用?

如何重新定义 \citep 命令以便它返回多个作者的作者年份样式引用?

我需要文内引用格式为作者-年份,即:“Author1, 1999”。我已经实施

\renewcommand{\citep}[1]{(\citeauthor{#1},~\citeyear{#1})}

(从这个帖子) 如果只有一位作者,它将返回我想要的内容。但如果有多个作者,它将返回:

(Author1, Author2, 1999, 1998)

我需要的是:

(Author1, 1999, Author2, 1998)

我怎样才能做到这一点?

答案1

您不应该更改引用命令,而应该设置引用样式。据我从示例中推断,您的情况应该是:

\setcitestyle{authoryear,comma,aysep{,}}

第一个选项表示使用作者年份,第二个选项表示引用之间需要用逗号分隔,最后一个选项表示作者和年份之间需要用逗号分隔。

答案2

biblatex如果您按照标记建议的方式使用,请使用authoryear样式、设置nameyeardelim\multicitedelim引用\autocite

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear]{biblatex}

\renewcommand*{\multicitedelim}{\addcomma\space}

\DeclareDelimFormat[parencite]{nameyeardelim}{\addcomma\space}

\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson,worman}
dolor \autocite{nussbaum}

\printbibliography
\end{document}

Lorem(Sigfridsson 和 Ryde,1998 年,Worman,2002 年)忧伤(Nussbaum,1978 年)

\...cite将几个命令组合成一个命令几乎总是一个坏主意\newcommand,因为这样定义的命令无法处理多个引用,需要额外的帮助来处理前后注释,并且会混淆各种引用跟踪功能。

相关内容