36

I'm using biblatex with the chem-rsc package option. I sometimes make use of the \textcite{<key>} or \citeauthor{<key>} commands to put the authors' name into text. When there are many, it writes "Bloke et al.", but I would like to make it put the "et al." in italics.

I'm sure there are some hacky ways of doing this by rewriting parts of commands. I'm hoping that there is some fairly straight forward and robust method for it though.

lockstep
  • 250,273
aghsmith
  • 2,716

5 Answers5

38

"et al." corresponds to the localization key andothers. In most styles it is set by the generic bibliography macro name:andothers. You can redefine this macro to wrap \bibstring{andothers} in \emph.

\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=chem-rsc]{biblatex}

\renewbibmacro*{name:andothers}{% Based on name:andothers from biblatex.def
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmorenames
  }
    {\ifnumgreater{\value{liststop}}{1}
       {\finalandcomma}
       {}%
     \andothersdelim\bibstring[\emph]{andothers}}
    {}}

\addbibresource{biblatex-examples.bib}

\begin{document}
\textcite{companion} \citeauthor{companion}
\printbibliography
\end{document}

enter image description here

Audrey
  • 28,881
  • 1
    Thanks Audrey, this solution works. Might I ask though to any biblatex developers that might have seen this, that it would be nice to have some option to do this without redefining the name:andothers macro. – aghsmith Jan 13 '12 at 14:04
  • @aghsmith You can submit feature requests here, though I have my doubts such an option would be incorporated. This is a style issue and the existing style can easily be adapted to meet your needs. – Audrey Jan 13 '12 at 14:26
  • 8
    @Audrey: A simple: \bibstring[\emph]{andothers} is enough. – Marco Daniel Jan 13 '12 at 16:47
  • @MarcoDaniel Ah, the wrapper argument. Thanks for the suggestion. – Audrey Jan 13 '12 at 17:05
  • 1
    @aghsmith Just an addendum. egreg's new xpatch package will make it much easier to make small changes like these to both bibliography macros and drivers. Feel free to accept lockstep's answer instead. – Audrey Jan 13 '12 at 17:52
24

This is another case where egreg's xpatch package comes in handy. Instead of copy-pasting the whole content of the name:andothers bibmacro, one may selectively apply changes (as suggested by Marco Daniel):

\documentclass{article}

\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=chem-rsc]{biblatex}

\usepackage{xpatch}

\xpatchbibmacro{name:andothers}{%
  \bibstring{andothers}%
}{%
  \bibstring[\emph]{andothers}%
}{}{}

\addbibresource{biblatex-examples.bib}

\begin{document}
\textcite{companion} \citeauthor{companion}
\printbibliography
\end{document}
lockstep
  • 250,273
  • 3
    Or with the \xpatchbibmacro provided by the xpatch package, of course, soon to be also on TeX Live. :) – egreg Jan 13 '12 at 16:36
  • @egreg One of my aims in answering this question is to make Audrey aware of your great solution. :-) – lockstep Jan 13 '12 at 16:38
  • 1
    @lockstep: Please see my comment under the previous answer. The wrapper of bibstring must be command like emph. – Marco Daniel Jan 13 '12 at 16:49
  • @lockstep +1 Yes, I upvoted that answer (and your use case with the year format) other day. I considered using the patch, but went with a redefinition instead. – Audrey Jan 13 '12 at 17:12
  • @egreg Great! Could bibliography drivers be patched? Some definitions are quite long and a pain to modify when you're just wanting to make a small change. – Audrey Jan 13 '12 at 17:15
  • @Audrey Any command defined with \newbibmacro can be patched. The package provides also \xshowbibmacro to see the definition. – egreg Jan 13 '12 at 17:18
  • @egreg I don't think I was clear. I'll head over to chat. – Audrey Jan 13 '12 at 17:19
  • Maybe you would like to update your solution to use the xpatch package, so it is shorter. – moewe Jan 14 '14 at 15:16
  • 1
    @moewe Done. (some filler text) – lockstep Jan 14 '14 at 15:23
  • Very nice indeed. – moewe Jan 14 '14 at 15:28
  • Is it possible that years later something changed in biblatex sources so that this solution does not work anymore? it doesn't work for me anymore. – Nicola Gigante Aug 08 '18 at 11:48
17

Another way to achieve this is as follows:

\usepackage[maxnames=6,minnames=3]{biblatex}
\DefineBibliographyStrings{english}{%
    andothers = {\em et\addabbrvspace al\adddot}
}

You actually have control over the whole text and its styling, and you can control for different languages.

Mahdi
  • 273
10

I was using \etal in the document text (not in the bibliography) and I had to use a different style where \etal was not defined.

So I've just created the command:

\newcommand{\etal}{\textit{et al.}}
Thomio
  • 209
3

If you are using biblatex v3.17 (2022-01-25) or above you can use bibstring formatting sets to typeset "et al." in italics.

Bibstring formatting sets allow us to apply additional formatting to sets of bibstrings. We could, for example, give a set of Latin terms and use italics for those. The bibstring sets are usually defined per language inside \DefineBibliographyExtras, since their logic depends on the actual translation.

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[backend=biber, style=authoryear]{biblatex}

\DefineBibliographyExtras{british}{% \DeclareBibstringSet{latin}{andothers,ibidem}% \DeclareBibstringSetFormat{latin}{\mkbibemph{#1}}% } \UndefineBibliographyExtras{british}{% \UndeclareBibstringSet{latin}% }

\addbibresource{biblatex-examples.bib}

\begin{document} Lorem \autocite{aksin}

\printbibliography \end{document}

Italic "et al." in "Lorem (Aksın et al. 2006)"

Some more background and discussions can be found in https://github.com/plk/biblatex/pull/1028, https://github.com/plk/biblatex/pull/1027, https://github.com/plk/biblatex/issues/899.

moewe
  • 175,683