使用 biblatex 引用一次全名 + 年份

使用 biblatex 引用一次全名 + 年份

我的biblatex选择如下

\usepackage[
style=authoryear,       % author-year style in references
citestyle=authoryear-icomp, % compact author-year in cites
url=false,                   % clicable urls in ref.
uniquelist=false,
uniquename=false, % turn off auto-disambiguaty
backref=true,               % auto backrefs in ref.
datezeros=true,         % dates with leading zeros
maxcitenames=1, % et al. with two or more authors
%indexing,                   % to create an index of persons
sortcites=false,
sorting=nyt,
%defernumbers=true,     % numbers in any bibliography
backend=biber]              % use biber for compiling
{biblatex}

我怎样才能在文中仅引用一次完整的作者姓名和年份,例如

格拉德威尔、马尔科姆、约翰·多伊和约翰·史密斯(2005)?

@book{Gladwell2005,
    author = {Gladwell, Malcolm and Doe, John and Smith, John},
    address = {New York, NY},
    publisher = {Back Bay Books},
    title = {Blink: The Power of Thinking Without Thinking},
    year = {2005},
}

给出的所有其他解决方案都对LaTeX stack exchange我没有任何帮助。

答案1

您可以为此定义一个新命令\extcite

\DeclareCiteCommand{\extcite}
  {\usebibmacro{cite:init}%
   \usebibmacro{prenote}}
  {\usebibmacro{citeindex}%
   \begingroup
     \defcounter{maxnames}{999}%
     \DeclareNameAlias{labelname}{given-family}%
     \usebibmacro{cite}%
   \endgroup}
  {}
  {\usebibmacro{cite:postnote}}

或者,只需这样做即可

\AtNextCite{\AtEachCitekey{\defcounter{maxnames}{999}\DeclareNameAlias{labelname}{given-family}}}

在要更改的引用之前。当然,您可以将其包装成命令:

\newcommand*{\extendnextcite}{%
  \AtNextCite{%
    \AtEachCitekey{%
       \defcounter{maxnames}{999}%
       \DeclareNameAlias{labelname}{given-family}}}}

然后使用它作为

\extendnextcite\cite{sigfridsson}

相关内容