# Redefine \defcitealias{key}{text} to include optional arguments?

Among a hundred or so citations in my thesis only one misbehaves. It is a book with four authors, say Abraham, Barminton, Cetralini and Durman (2008), that never appears as Abraham et al (2008) --- always all four authors are listed. With all other references, full list of authors appears only when the reference is cited for the first time. I've spent much time trying to identify what makes this reference special, but all to no avail.

I've considered a workaround with

\defcitealias{ABCD2008}{Abraham et al. (2008)}

and then using \citetalias{ABCD2008} to get Abraham et al. (2008). All works perfectly. Unfortunately, this culprit is one of the most frequently used references and often I used it as \citet[][sec. 3](ABCD2008) or \citet[e.g.][](ABCD2008) and similarly with \citep.

Would it be possible to redefine \defcitealias{key}{text} so I could use it with two optional arguments, like I use citet and citep?

Here is a link to http://crpit.com/natbib.sty and the relevant lines are

\newcommand\defcitealias[2]{%
\@ifundefined{al@#1\@extra@b@citeb}{}
{\PackageWarning{natbib}{Overwriting existing alias for citation #1}}
\@namedef{al@#1\@extra@b@citeb}{#2}}

\DeclareRobustCommand\citetalias{\begingroup
\NAT@swafalse\def\NAT@ctype{3}\NAT@parfalse\NAT@citetp}

\DeclareRobustCommand\citepalias{\begingroup
\NAT@swatrue\def\NAT@ctype{3}\NAT@partrue\NAT@citetp}


Any help will be much appreciated.

-
I don't use natbib, but the file you link to seems surprisingly old. I have version 8.31 (2009), and even that might be out of date. Also: wouldn't an easier workaround be to create a .bib entry where the author is listed as: author = {Abraham, Firstname and others},? Not very flexible, but if this is a bibliography for your thesis only, I don't see the harm in doing it as a one-off solution. – jon Aug 5 '12 at 18:48
From the natbib manual: "These citation commands [\citetalias and \citepalias] function much like \citet and \citep: they may take multiple keys in the argument, may contain notes, and are marked as hyperlinks." In short, you can augment these commands with one or two optional arguments, just as you're inquiring about. – Mico Aug 5 '12 at 20:41
Please also augment your question to show the author field of the entry in question, exactly as it's currently entered in your bib file. There may be a stray comma or two that's messing up BibTeX's and natbib's ability to get the citation command done correctly. – Mico Aug 5 '12 at 20:58

I'm not sure if I understand correctly what the problem is that you're encountering. For the sake of example, I'll assume that we have an entry with four authors -- say, Abraham, Barminton, Cetralini and Durman -- published in 2008 and that this entry has the "key" abcd2008. Furthermore, I take it that you're loading the natbib package with the option longnamesfirst. Finally, I understand that whereas you want the abcd2008 citation to be shown in abbreviated form, i.e., as "Abraham et al. (2008)" from the second citation instance onward, it is currently never abbreviated, i.e., it's always displayed as "Abraham, Barminton, Cetralini and Durman (2008)".

What to do? First, be sure to check that the authors' names in the entry are listed correctly: no stray commas, nothing else ontoward either.

If that issue checks out OK but the problem mysteriously remains unresolved, you could indeed use natbib's citation alias feature. Furthermore, because you mention that this item occurs so frequently, you may want to set up the citation alias as

\defcitealias{abcd2008}{Abraham et~al. (2008)}


To quote from the natbib user guided, the commands \citetalias and \citepalias ...

... function much like \citet and \citep: they may take multiple keys in the argument, may contain notes, and are marked as hyperlinks.

Thus, indeed, you could issue citation commands such as \citetalias[e.g.,][p.~59]{abcd2008}.

-
Unfortunately, it won't produce the desirable result. With \citet[][p. 123](ABCD2008), I get something like Abraham et al (2008, p. 123). With \citep[][p. 123](ABCD2008), I get something like (Abraham et al, 2008, p. 123). How to get exactly these with \citealias[][p. 123](ABCD2008) I do not know. As to the spelling and related things --- nothing unusual for this bib entry. – – Peter Pann Aug 6 '12 at 3:20