natbib
使用该软件包时,如何仅在引用标注中显示第一作者?
有一个与我类似的问题,但从未收到过可接受的答案: BibTeX:芝加哥风格引用,第一作者相同
以下是我的序言:
\usepackage[square,authoryear]{natbib}
\bibliographystyle{plainnat}
%...
\bibliography{references}
我使用natbib
,因为它是 LaTeX 维基百科中提到的那个:
https://en.wikibooks.org/wiki/LaTeX/More_Bibliographies
https://en.wikibooks.org/wiki/LaTeX/Bibliography_Management
但我觉得我也许应该使用biblatex
,但我现在无法让它工作,所以natbib
如果可能的话我愿意坚持使用。
我尝试biblatex
使用这个序言,但失败了,因为我的文件在某些摘要和作者列表中references.bib
包含字符@
,%
,<
,>
,×
,并且日期格式不正确,并且它不喜欢如下条目:ç
biblatex
M3 = {...}
\usepackage[natbib,sorting=none,defernumbers=true,uniquelist=false,
backend=biber]{biblatex}
\addbibresource{references.bib}
\printbibliography
答案1
我建议您按如下方式进行:
在您的 TeX 发行版中找到该文件
plainnat.bst
。复制此文件并将副本命名为 。plainnatsingle.bst
(不要直接编辑 TeX 发行版的原始文件。)在文本编辑器中打开文件
plainnatsingle.bst
。你用来编辑 tex 文件的程序就可以了。在 bst 文件中,找到函数
format.lab.names
。(在我的文件副本中,该函数从第 1101 行开始。)在此函数中,替换块
#2 > { pop$ " et~al." * } { #2 < 'skip$ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " et~al." * } { " and " * s #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$
和
#1 > { pop$ " et~al." * } { pop$ "" * } if$
如果你好奇发生了什么:该函数的后半部分
format.lab.names
已被大大简化,如果作者数量超过 1,则输出“et~al.” - 否则不输出任何内容。将文件保存
plainnatsingle.bst
在主 tex 文件所在的目录中或 BibTeX 搜索的目录中。如果选择后者,请确保也适当更新 TeX 发行版的文件名数据库。在主 tex 文件中,将指令更改
\bibliographystyle{plainnat}
为\bibliographystyle{plainnatsingle}
。然后,再重新运行 LaTeX、BibTeX 和 LaTeX 两次,以完全传播所有更改。
祝您 BibTeX 愉快!
完整的 MWE:
\RequirePackage{filecontents}
\begin{filecontents}{mybib.bib}
@misc{a,
author = "Annie Author",
title = "Thoughts", year = 3001 }
@misc{ab,
author = "Annie Author and Brenda Buthor",
title = "Further Thoughts", year = 3002 }
@misc{abc,
author = "Annie Author and Brenda Buthor and Carla Cuthor",
title = "Final Thoughts", year = 3003 }
\end{filecontents}
\documentclass{article}
\usepackage[authoryear,round]{natbib}
\bibliographystyle{plainnatsingle}
\begin{document}
\noindent
\citet{a}, \citet{ab}, \cite{abc}
\bibliography{mybib}
\end{document}