biblatex:如何设置每个引用命令的引用选项?

biblatex:如何设置每个引用命令的引用选项?

alphabetic样式中,我使用maxcitenames=4minnames=3作为全局选项。但是,当使用\textcite而不是 时\cite,这些设置非常不合理,我希望它表现得像设置了maxcitenames=3和 一样minnames=1。我该如何实现这一点?

更具体地说,在下面的例子中,我想要

\cite{ABCDE}

生产

[ABG+01]

, 和

\textcite{ADCDE}

生产

Α,[ABG+01]

例子:

\documentclass{article}

\usepackage[ style=alphabetic, maxcitenames=4, minnames=3 ]{biblatex}

% set \textcite option maxcitenames=3 and minnames=1 here

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{ABCDE,
  author = {Alpha, A. and Beta, B. and Gamma, G. and Delta, D. and Epsilon, E.},
  year = 2001
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}

\cite{ABCDE}
\textcite{ABCDE}    

\end{document}

答案1

使用 biber 可以通过以下选项设置来处理这个问题。

maxcitenames=3,minnames=1,maxalphanames=4,minalphanames=3

使用 BibTeX,您可以在文档序言中定义现有引用命令的变体。

\newbool{cbx:resetnames}
\AtEveryCitekey{%
  \ifbool{cbx:resetnames}
    {\defcounter{minnames}{1}\defcounter{maxnames}{3}}
    {}}

\let\origtextcite\textcite
\renewrobustcmd{\textcite}{%
  \AtNextCite{\booltrue{cbx:resetnames}}\origtextcite}

\let\origtextcites\textcites
\renewrobustcmd{\textcites}{%
  \AtNextCite{\booltrue{cbx:resetnames}}\origtextcites}

\let\origciteauthor\citeauthor
\renewrobustcmd{\citeauthor}{%
  \AtNextCite{\booltrue{cbx:resetnames}}\origciteauthor}

请注意,由于minnamesmaxnames是特定于条目的选项,因此必须使用特定于条目的钩子(如)来重置它们\AtEveryCitekey

答案2

\AtNextCite您可以使用并将计数器设置maxnames为所需值来定义新命令minnames;类似于以下示例所示的内容:

\documentclass{article}
\usepackage[ style=alphabetic, maxcitenames=4, minnames=3 ]{biblatex}

\newrobustcmd{\TExtcite}{%
  \AtNextCite{\defcounter{maxnames}{3}\defcounter{minnames}{1}}\textcite}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{ABCDE,
  author = {Alpha, A. and Beta, B. and Gamma, G. and Delta, D. and Epsilon, E.},
  year = 2001
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
\cite{ABCDE}

\TExtcite{ABCDE}    

\textcite{ABCDE}
\end{document}

在此处输入图片描述

相关内容