[Tex/LaTex] biblatex: How to set citation options per citation command

author-numberbiblatex

In the alphabetic style, I am using maxcitenames=4 and minnames=3 as global options. However, when using \textcite instead of \cite, these settings are pretty unreasonable, and I want it to behave as if maxcitenames=3 and minnames=1 were set. How do I achieve this?

To be more specific, in the example below I want

\cite{ABCDE}

to produce

[ABG+01]

, and

\textcite{ADCDE}

to produce

Alpha, et al. [ABG+01]

Example:

\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}

Best Answer

With biber this can be handled by the following option settings.

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

With BibTeX you can define variants of existing citation commands in your document preamble.

\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}

Note that since minnames and maxnames are entry-specific options, they must be reset using an entry-specific hook like \AtEveryCitekey.