12

Is there a way to automatically add initials to citations if and only if there are two authors with the same last name, cited in the same article, using BibTeX and natbib? (I'd rather not switch from natbib, but would consider another package that provides Chicago or APA style author-year citations.)

This is essentially the same question as this one, but that question is about biblatex, and I would prefer to use BibTeX because of this answer to another question.

This similar question has a nice answer, but the sole answer is designed to always add first initials for the two authors with the same last name. If I don't cite one of the authors, I don't want the initial added when I cite the other author. It would be easy to define two versions of the \disambiguate command suggested in the answer--one version for use when I cite both authors, and one for use when I only cite one--but it would be better if I didn't have to remember to change this as I add and remove citations.

An MWE:

\documentclass{article}
\usepackage{natbib}
\begin{document}

More than one author has made this point \citep{CGeertz:Negara,
HGeertz:BalineseTemple}.  Here's how the citation should look 
(C. \citealt{CGeertz:Negara}; H. \citealt{HGeertz:BalineseTemple}).

\bibliographystyle{chicago}
\bibliography{my}

\end{document}

my.bib:

@Book{CGeertz:Negara,
  author =  {Geertz, Clifford},
  title =   {Negara: The Theatre State in 19th Century Bali},
  publisher =   {Princeton},
  year =    {1981},
}

@Book{HGeertz:BalineseTemple,
  author =  {Geertz, Hildred},
  title =   {The Life of a Balinese Temple},
  publisher =   {University of Hawaii Press},
  year =    {2004},
}

enter image description here

1
  • The apacite package with the apacite bibliography style does this automatically.
    – Alan Munn
    Jan 17, 2016 at 1:00

1 Answer 1

6

The apacite package (which can be used with natbib) does this automatically. Note however, if both authors also have the same initial, (as originally stated in your question title but not your actual example) it will fail.

The proper APA citation form for these is "FirstName LastName (Year)" and in the bibliography "LastName, F. [FirstName] (Year)". The apacite package explicitly says it can't deal with such cases.

\begin{filecontents}{\jobname.bib}
@Book{CGeertz:Negara,
  author =  {Geertz, Clifford},
  title =   {Negara: The Theatre State in 19th Century {Bali}},
  publisher =   {Princeton},
  year =    {1981},
}

@Book{HGeertz:BalineseTemple,
  author =  {Geertz, Hildred},
  title =   {The Life of a {Balinese} Temple},
  publisher =   {University of Hawaii Press},
  year =    {2004},
}
\end{filecontents}
\documentclass{article}
\usepackage[natbibapa]{apacite}
\bibliographystyle{apacite}

\begin{document}
\cite{CGeertz:Negara, HGeertz:BalineseTemple}
\bibliography{\jobname}
\end{document}

Output of two author citation

output of two author code

Output of one author citation

output of one author code

biblatex-apa deals with this correctly

Although you said you didn't want to use biblatex, the biblatex-apa package does deal with these cases properly:

\begin{filecontents}{\jobname.bib}
@Book{Smith1994,
  author =  {Smith, John},
  title =   {A book by John Smith},
  publisher =   {Princeton},
  year =    {1994},
}

@Book{Smith1999,
  author =  {Smith, James},
  title =   {A book by James Smith},
  publisher =   {University of Hawaii Press},
  year =    {1999},
}
\end{filecontents}
\documentclass[11pt]{article}
\usepackage[american]{babel} 
\usepackage{csquotes} 
\usepackage[style=apa,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{\jobname.bib}
\begin{document}
\textcite{Smith1994,Smith1999}
\printbibliography
\end{document}

output of biblatex-apa code

1
  • 1
    Beautiful. I didn't have to change a thing except for two preamble lines. "Note however, if both authors also have the same initial, (as originally stated in your question title but not your actual example) it will fail." OK--I'll cross that bridge when I come to it. Good to know that biblatex-apa handles it. Thanks.
    – Mars
    Jan 17, 2016 at 6:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .