Natbib:在文中引用名字或首字母

Natbib:在文中引用名字或首字母

我的参考文献之一是 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{...}我们将修改这个较长的作者列表,使其也包含名字。

  1. 复制plainnat.bst,比如plainnat2.bst,并将其放在 BibTeX 可以找到的地方。
  2. 在编辑器中打开副本,找到函数format.full.names。它应该在第 306 行。将行

    "{vv~}{ll}" format.name$ 't :=
    

    进入

    "{ff~}{vv~}{ll}" format.name$ 't :=   %% added {ff~}
    
  3. 保存并关闭它。

正常使用:

\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}

示例输出

相关内容