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