# biblatex: How to set citation options per citation command?

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}

\begin{document}

\cite{ABCDE}
\textcite{ABCDE}

\end{document}

-

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.

-
Perfect, thanks! –  Holger Oct 2 '12 at 20:41
How can your second approach be adjusted for fullcite or footfullcite? –  sebschub Jul 22 '13 at 15:50
@sebschub I've revised the second approach. It should work with any citation command, including multi-citation commands. –  Audrey Jul 22 '13 at 20:32
@Audrey Thanks a lot, I adopted your approach to my needs! –  sebschub Jul 23 '13 at 11:06

You can define a new command using \AtNextCite and setting the maxnames, minnames counters to the desired values; something along the lines illustrated in the following example:

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

\begin{document}
\cite{ABCDE}

\TExtcite{ABCDE}

\textcite{ABCDE}
\end{document}


-
This does not seem to work with biblatex 2.7: your \TExtcite yields the same result as \textcite. Any suggestions? –  sebschub Jul 22 '13 at 15:02
@sebschub Try Audrey's answer. –  Gonzalo Medina Jul 22 '13 at 15:06
@sebschub This answer was always a bit of a cheat - it never worked when processing more than one entry. This is because minnames and friends are set-able per entry; the values should really be set via a key-specific hook. As of 2.7, \textcite in most standard styles processes each entry at least twice, so resetting the counters via \AtNextCite won't work at all. –  Audrey Jul 22 '13 at 20:27