[Tex/LaTex] How to cite two different authors with the same surname in BibTeX

bibtexnatbib

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

Best Answer

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

Related Question