我使用 natbib 进行引用。我想在正文中引用时显示作者的全名
\citep{smith1990}
通常只给出姓氏(Smith,1990)。
我想要一个可以显示完整名称的选项,例如:(John Smith,1990)。这似乎是一个显而易见的问题,但我找不到正确的技巧。
答案1
引用标注中使用的名称的格式不受natbib
包的控制,而是受所使用的参考书目样式的控制。
我假设您希望显示所有作者的名字,而不仅仅是选定作者的名字。同时,我还假设您希望显示任何“次要”姓名组成部分(如果存在)。最后,您希望条目仍然按作者姓氏而不是按名字排序,对吗?
由于您使用的是plainnat
参考书目样式,我建议您按以下步骤操作:
在您的 TeX 发行版中找到该文件
plainnat.bst
并复制一份。将副本命名为 。plainnat-full.bst
(不要直接编辑或修改 TeX 发行版中的文件。)在文本编辑器中打开文件
plainnat-full.bst
。你用于 tex 文件的编辑器就可以了。在 中
plainnat-full.bst
,找到函数format.lab.names
。(在我的文件副本中,该函数从第 1101 行开始。)在此函数中,将行替换为
s #1 "{vv~}{ll}" format.name$
和
s #1 "{ff }{vv~}{ll}{, jj}" format.name$
仍然在同一个函数中,将以下行替换
{ " and " * s #2 "{vv~}{ll}" format.name$ * }
和
{ " and " * s #2 "{ff }{vv~}{ll}{, jj}" format.name$ * }
如果您不想显示“初级”组件,请省略
{, jj}
前面两个步骤中的子字符串。保存文件
plainnat-full.bst
,并将其存储在包含主 .tex 文件的目录中或 BibTeX 搜索的目录中。如果选择后者,请确保也更新 TeX 发行版的文件名数据库。在您的主 tex 文件中,将指令更改
\bibliographystyle{plainnat}
为\bibliographystyle{plainnat-full}
并通过重新运行 LaTeX、BibTeX 和 LaTeX 两次以上来重新编译文档,以完全传播所有更改。
祝您 BibTeX 愉快!
\RequirePackage{filecontents}
\begin{filecontents}{bibx.bib}
@misc{smith:3001,
author = "Smith, Jr., John and Smythe, III, Anna",
title = "Thoughts",
year = 3001,
}
\end{filecontents}
\documentclass{article}
\usepackage{natbib}
\bibliographystyle{plainnat-full}
\begin{document}
\citet{smith:3001}
\citep{smith:3001}
\bibliography{bibx}
\end{document}