I'm preparing a manuscript for submission to a journal that uses a citation format similar to natbib
's authoryear
, but that requires full author lists for in-text citations when there are three authors, as well as when there are two authors.
Is there a package or command that will do this automatically for me? The commands \citet*
and \citep*
from natbib
are great, but they don't automatically identify cases where there are three or fewer authors. Furthermore it gets really tricky when I'm parenthetically citing multiple sources (in the same citation), some of which have three authors, and some of which have more authors.
Best Answer
Since you're submitting a paper to a journal that has certain formatting requirements for the paper's bibliography (and lots of other aspects of the paper too, no doubt!), you should ask (if you haven't already done so) for a BibTeX bibliography style (.bst) file that implements the journal's requirements. With any luck, this .bst file will be compatible with
natbib
and also implement the journal's house style (of making you cite the names of all authors of pieces that have three or fewer authors).If you're not that lucky, there are three possibilities. First, if the .bst file is not compatible with
natbib
, you're obviously out of luck. (Fortunately, though,natbib
is enormously robust and works with the overwhelming majority of .bst files.) Second, if the .bst file is compatible withnatbib
but does not contain a function calledformat.lab.names
, you're also out of luck. That's what's meant, basically, by the statement in natbib's manual that "starred [citation command] versions can only list the full authors if the .bst file supports this feature." (Of course, such a .bst file must also provide a few functions that call theformat.lab.names
function...)Third, if the .bst file does contain such a function but doesn't implement the journal's house style, i.e., if the
\cite[pt]*
macros outputAdams et~al.
for a piece that has exactly three authors (and the first author's surname is "Adams"...), you are not out of luck. All you need to do is to replace the existingformat.lab.names
function with one that does obey the journal's house style. The existingformat.lab.names
function should (more or less...) look like:You should replace this code with the following code:
After making this replacement, save the .bst file under a new name and adjust the
\bibliographystyle
command to point to the new file.If you get complaints from BibTeX about nonexistent
bbl.and
and/orbbl.etal
functions, just add the following code to the new .bst file (somewhere near the top of the file, soon after the start of the section in which the bibtex functions are defined):