有没有办法当且仅当有两个姓氏相同的作者在同一篇文章中被引用时,使用 BibTeX 和 自动将首字母添加到引用中natbib
?(我不想从 切换natbib
,但会考虑使用另一个提供芝加哥或 APA 风格作者年份引用的软件包。)
这本质上是同一个问题这个,但这个问题是关于biblatex
,我更喜欢使用 BibTeX,因为这个答案另一个问题。
这个类似的问题有一个很好的答案,但唯一的答案是总是为姓氏相同的两位作者添加首字母。如果我没有引用其中一位作者,那么当我引用另一位作者时,我不希望添加首字母。定义\disambiguate
答案中建议的两个版本的命令很容易——一个版本用于引用两位作者,另一个版本用于仅引用一位作者——但如果我在添加和删除引用时不必记住更改它,那就更好了。
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}
我的.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},
}
答案1
该apacite
包(可与 一起使用natbib
)会自动执行此操作。但请注意,如果两位作者还具有相同的首字母(如您的问题标题中最初所述但不是您的实际例子),它将失败。
这些的正确 APA 引用格式是“FirstName LastName (Year)”,参考书目中为“LastName, F. [FirstName] (Year)”。该apacite
包明确表示它无法处理这种情况。
\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}
输出双作者引文
输出一位作者的引文
biblatex-apa
正确处理这个问题
尽管您说您不想使用biblatex
,但该biblatex-apa
包确实可以正确处理这些情况:
\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}