The solution is a HACK. See the legitimate answer of PLK.
You must modify each bibitem. I would to this by setting a special keyword to the relevant bib entry. At the beginning of the bibitem you can test whether the key is set or not. If the key is set you can change the counter maxnames.
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@INPROCEEDINGS{Vallejos2009b,
author = {John Doe and Pete Peters and Jane Jones and John Johnson and Alison Anderson},
title = {Some Title},
booktitle = {...},
year = {2009},
keywords={increasemaxnames},
}
@book{test,
author="John Smith and John Doe and Pete Peters and Jane Jones and John Johnson",
title="TITLE",
year=2009,
publisher="PUP",
}
\end{filecontents}
\documentclass{article}
\usepackage[bibstyle=numeric-comp,citestyle=numeric-comp,backend=biber,maxnames=3]{biblatex}
\bibliography{\jobname.bib}
\AtEveryBibitem{%
\ifkeyword{increasemaxnames}%
{\setcounter{maxnames}{5}}
{\setcounter{maxnames}{3}}
}
\begin{document}
\cite{Vallejos2009b} \cite{test}
\printbibliography
\end{document}
EDIT:
Audrey wishes I method without editing the bib file. This is possible with a comparison of the entrykey. I build a command named \individualentry. The command needs a comma separate list of entrykeys. If the entrykey doesn't exist it will works too ;-)
Here the definition of the command:
\newrobustcmd*\individualentry[1]{%
\def\tempa{}%
\def\tempb{ ( test {\ifstrequal{2}{1}} ) }%
\forcsvlist{\listeadd\tempa}{#1}
\def\do##1{%
\gappto\tempb{ or (test {\iffieldequalstr{entrykey}{##1}}) }
}%
\dolistloop{\tempa}%
\AtEveryBibitem{
\expandafter\ifboolexpr\expandafter{\tempb}%
{\setcounter{maxnames}{5}}%
{\setcounter{maxnames}{3}}
}
}
It is important that the command is used in the preamble!
Here the whole example:
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@INPROCEEDINGS{Vallejos2009b,
author = {John Doe and Pete Peters and Jane Jones and John Johnson and Alison Anderson},
title = {Some Title},
booktitle = {...},
year = {2009},
keywords={increasemaxnames},
}
@book{test,
author="John Smith and John Doe and Pete Peters and Jane Jones and John Johnson",
title="TITLE",
year=2009,
publisher="PUP",
}
\end{filecontents}
\documentclass{article}
\usepackage[bibstyle=numeric-comp,citestyle=numeric-comp,backend=biber,maxnames=3]{biblatex}
\bibliography{\jobname.bib}
\newrobustcmd*\individualentry[1]{%
\def\tempa{}%
\def\tempb{ ( test {\ifstrequal{2}{1}} ) }%
\forcsvlist{\listeadd\tempa}{#1}%
\def\do##1{%
\gappto\tempb{ or (test {\iffieldequalstr{entrykey}{##1}}) }%
}%
\dolistloop{\tempa}%
\AtEveryBibitem{%
\expandafter\ifboolexpr\expandafter{\tempb}%
{\setcounter{maxnames}{5}}%
{\setcounter{maxnames}{3}}%
}%%
\AtEveryCitekey{%
\expandafter\ifboolexpr\expandafter{\tempb}%
{\setcounter{maxnames}{5}}%
{\setcounter{maxnames}{3}}%
}%
}
%\individualentry{foo,Vallejos2009b,test}
\individualentry{foo,Vallejos2009b}
\begin{document}
\cite{Vallejos2009b} \cite{test}
\fullcite{Vallejos2009b}
\fullcite{test}
\printbibliography
\end{document}
maxnameslocally and only before printing each bibliography entry. So aside from that concern, would this approach not be reasonable? – Audrey Sep 03 '11 at 20:01http://sourceforge.net/projects/biblatex-biber/files/biblatex-biber/0.9.5/documentation/biber.pdf
– PLK Sep 03 '11 at 20:11