Space after et al. too big

In merlin.mbs the "et al." is is produced by a function as follows:

FUNCTION {bbl.etal}
{ "et~al." }

Replace this in your generated bst file by

FUNCTION {bbl.etal}
{ "et~al.\@" }

which should do the trick. Perhaps worth reporting to the author as a bug.

Might be that this is overdoing it and what is really necessary are two such functions: one that sets the \spacefactor to 1000 (via \@) and one that doesn't in places where the dot "et al." is both the abbrev as well as a sentence ending period.


In case of plainnat.bst the above doesn't quite work as this bibtex style doesn't capsule the string in a function but uses it directly. Thus in this case one would need to open the bst file in a text editor and change all occurances of "et~al." with "et~al.\@" and then save the result under a new name, e.g., myplain.bst and use this style instead.

The alternative is to update the natbib macro(s) as suggested by @egreg. In either case it is a bug in the natbib system which I think should be brought to Patrick's attention.


A hack that seems to work is the following

\usepackage{xpatch}
\xpatchcmd\citeauthor{\begingroup}{\begingroup\aftergroup\@}{}{}
\makeatletter
\renewcommand*{\NAT@nmfmt}[1]{\textsc{#1\@}}
\makeatother

This shouldn't have adverse effects, as the space factor will be influent only when the citation ends with punctuation.

If the package xpatch is not available, the same effect can be obtained by

\usepackage{etoolbox}
\expandafter\patchcmd\csname citeauthor \endcsname
  {\begingroup}{\begingroup\aftergroup\@}{}{}

In case one doesn't redefine \NAT@nmfmt, the following should do:

\let\patched@NAT@nmfmt\NAT@nmfmt
\xpatchcmd{\patchedNAT@nmfmt}{#1}{#1\@}{}{}
\AtBeginDocument{\let\NAT@nmfmt\patchedNAT@nmfmt}

(Note that \xpatchcmd can be changed into \patchcmd, if one prefers.)

Disclaimer: I'm the author of xpatch