我的参考文献之一是 J. Doe (1999)。在bib
文件中,它可能看起来像这样:
@article{doe-1999,
author="John Doe",
title="Some Paper",
journal="Some Journal",
volume=1, number=1, pages={1--10}, year=1999}
我的序言如下
\documentclass{article}
\usepackage{natbib}
\usepackage{hyperref} % Hyperlinks bib references.
\begin{document}
Please see \cite{doe-1999}.
\bibliographystyle{plainnat}
\bibliography{mybib}
\end{document}
在文本中,我通常使用 来引用它\cite{doe-1999}
,这很好。但是在我的文档中有一个地方,我想在其中包含 Doe 的首字母(或者如果我在 bib 中包含他的名字),我使用的是natbib
/plainnat
作者年份样式。有没有命令可以帮助我在文本中获取“J. Doe (1999)”或“John Doe (1999)”,并且仍然通过 超链接整个内容hyperref
?
答案1
如果您想在少数情况下执行此操作,则更简单的解决方案是定义别名并使用\citealias
。
举个例子,在序言中定义:
\defcitealias{smith13}{Waldo Smith (2013)}
并在文中使用:
\citetalias{smith13}
结果将是文本中的 Waldo Smith (2013),参考文献的添加方式与其他参考文献相同。如果使用\citet{smith13}
,则会返回通常的 Smith (2013)。
该命令\citetalias
可从 natbib 包获取。因此,您必须将其包含\usepackage{natbib}
在序言中。
注意:这个问题与作者的全名及文中引用(citet{} 指令)
答案2
使用标准natbib
样式时,\citet*{...}
和\citep*{...}
命令会给出完整的作者列表,而使用 和 得到的可能是缩写的作者列表\citet{...}
。\citep{...}
我们将修改这个较长的作者列表,使其也包含名字。
- 复制
plainnat.bst
,比如plainnat2.bst
,并将其放在 BibTeX 可以找到的地方。 在编辑器中打开副本,找到函数
format.full.names
。它应该在第 306 行。将行"{vv~}{ll}" format.name$ 't :=
进入
"{ff~}{vv~}{ll}" format.name$ 't := %% added {ff~}
保存并关闭它。
正常使用:
\documentclass{article}
\usepackage{natbib}
\usepackage[colorlinks]{hyperref}
\begin{document}
Short form: \citet{Ca04}, \citet{MeGa05}, \citet{MaGaJoGoAsFrFr00}.
\medskip
Long form: \citet*{Ca04}, \citet*{MeGa05}, \citet*{MaGaJoGoAsFrFr00}.
% \bibliographystyle{plainnat}
\bibliographystyle{plainnat2}
\bibliography{test}
\end{document}