6

I'm using biblatex with the verbose-trad1 style. When I use the command \citeauthor* I get the author's full name and the last name in SmallCaps. That is nice but I'd like to create a NEW command from \citeauthor* that would allow me to cite the author's full name with only the first letters in uppercase.

Exemple : currently : \citeauthor* gives me John SKA (small caps) I wish : \somenewcommand that gives me John Ska BUT keeps all my other citations (\autocite) as they are, i.e.: names in small caps.

EDIT: I've modified a little bit @moewe's answer to get precisely what I wanted. The final result is :

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{csquotes}                   
\usepackage[style=verbose-trad1,
backend=bibtex,
bibencoding=inputenc,           
language=french,                
natbib=true,                    
sortcites=true,
autopunct=true,                     
babel=hyphen,                       
hyperref=true,                          
block=space,
citetracker=true,
ibidpage=true,
ibidtracker=context,
idemtracker=true,
pagetracker=true,
url=false,
]{biblatex}

\bibliography{/Users/lucianocouto/Documents/Chartres/bibliographie.bib}

\DeclareCiteCommand*{\citeauthor}
{\defcounter{maxnames}{99}%
\defcounter{minnames}{99}%
\defcounter{uniquename}{2}%
\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex{\indexnames{labelname}}{}%
\printnames{labelname}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand*{\citeauthornsc}
{\renewcommand*{\mkbibnamelast}[1]{####1}  % avoid SmallCaps for the name
\defcounter{maxnames}{99}%
\defcounter{minnames}{99}%
\defcounter{uniquename}{2}%
\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\usebibmacro{prenote}}
{\ifciteindex{\indexnames{labelname}}{}%
\printnames{labelname}}
{\multicitedelim}
{\usebibmacro{postnote}}

\DeclareCiteCommand{\citeauthornsc}
  {\renewcommand*{\mkbibnamelast}[1]{####1}  % avoid SmallCaps for the name
   \boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
   \printnames{labelname}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\begin{document}

Standard small caps : \citeauthor{Milgrom:1991aa}

The new standard command : \citeauthornsc{Milgrom:1991aa}\autocite{Milgrom:1991aa}

Full name smallcaps : \citeauthor*{Milgrom:1991aa}

The new full name small caps : \citeauthornsc*{Milgrom:1991aa}\autocite{Milgrom:1991aa}

\enddocument

enter image description here

Thanks a lot !!!

  • Please add an MWE of what you have right now. By default biblatex (in english) does not add small caps (it does in french though). – moewe May 20 '14 at 5:27
4

We can very easily define a new command \citeauthornsc and \citeauthornsc* from the standard definitions of \citeauthor that does not print last names in small caps by adding \renewcommand*{\mkbibnamefamily}[1]{####1}% to the pre-code hook (the vast number of #s is necessary due to the way commands are redefined within commands); the pre-code hook has only local scope, so that the redefinition applies only to this cite command. The two commands are basically a copy of biblatex.def's definitions with that one line added to the precode.

\documentclass{article}
\usepackage[french]{babel}
\usepackage{csquotes}
\usepackage[backend=biber,style=verbose-trad1]{biblatex}

\addbibresource{biblatex-examples.bib}

\DeclareCiteCommand{\citeauthornsc}
  {\renewcommand*{\mkbibnamefamily}[1]{####1}%
   \boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
   \printnames{labelname}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\citeauthornsc}
  {\renewcommand*{\mkbibnamefamily}[1]{####1}%
   \boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
   \printnames[][1-1]{labelname}}
  {\multicitedelim}
  {\usebibmacro{postnote}}


\begin{document}
Standard small caps:
\citeauthor{wilde}
our new command:
\citeauthornsc{wilde}
small caps again:
\citeauthor{wilde}
\autocite{wilde}
\end{document}

enter image description here

2

As of March 2016 (biblatex 3.3), you need to change

\mkbibnamefamily

instead of

\mkbibnamelast
  • 3
    Thank you for the reminder. I have updated the answer accordingly. – moewe Jun 11 '18 at 14:39
  • 4
    Welcome to TeX.SX! Thanks for the contribution, although it probably should have been a comment to the existing answer. – TeXnician Jun 11 '18 at 14:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.