列出参考文献中 \citep 显示的引用键。

列出参考文献中 \citep 显示的引用键。

几个月前,我问了一个关于书目连字问题的问题这里。总之,当我遇到文中引用关键词连字符的问题时,我包含了该natbib包,问题就解决了。但是,文章末尾的参考文献列表并没有像以前一样显示文中出现的关键词。

以下是一个例子:

使用以下代码:

\documentclass[12pt,a5paper]{article}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{microtype}
\usepackage[square]{natbib}

\title{Test}
\author{Tester}
\date{\today}

\begin{document}
\maketitle

asd asd Hello world \citep{SaCouto:2010:HemodynamicBirth},
\citep{SaCouto:2010:HemodynamicBirth},
\citep{SaCouto:2010:HemodynamicBirth}

\bibliographystyle{apalike}
\bibliography{fullbiblio}

\end{document}

我得到: 与 natbib


当评论该natbib包并更改\citep为时\cite,我得到: 无natbib


我想要的是:

  • 正确连字符(包括时可能natbib
  • 参考文献包含文中显示的关键字(不包含时可能natbib)。此关键字应为 [姓氏,年份]。

所以我的问题是,我该如何实现这一点?

答案1

尝试将其添加到你的前置示例中:

\makeatletter
\def\@lbibitem[#1]#2{%
\if\relax\@extra@b@citeb\relax\else
\@ifundefined{br@#2\@extra@b@citeb}{}{%
\@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}}\fi
\@ifundefined{b@#2\@extra@b@citeb}{\def\NAT@num{}}{\NAT@parse{#2}}%
\item[\hfil\hyper@natanchorstart{#2\@extra@b@citeb}\citep{#2}%
\hyper@natanchorend]%
\NAT@ifcmd#1(@)(@)\@nil{#2}}
\makeatother

来源:http://newsgroups.derkeiler.com/Archive/Comp/comp.text.tex/2008-07/msg00540.html

答案2

我有类似的问题以前。Natbib 默认不将引用键放在参考文献部分。

作者+年份这两个数字就足以选出正确的参考文献。

执行您所要求的操作的一种方法是获取 .bst 文件。我知道这可能有点棘手,但我认为 LaTeX Companion 可能会在这种情况下有所帮助(我最近palinnat.bst使用反复试验技术编辑了该文件,并得到了我想要的结果)。

答案3

与@jpz 提出的理念相同,但这里有一个不同的版本。\citep如果您使用 ,则会出现问题hyperref

这是我想出的解决方法:

\makeatletter

\def\mysplit#1(#2)#3\@nil{%
\ifthenelse{\equal{#2}{}}%
{\def\mycitep{#1}}
{\def\mycitep{#1, #2}}
}

\def\@lbibitem[#1]#2{%
\mysplit#1\@nil
\if\relax\@extra@b@citeb\relax\else
\@ifundefined{br@#2\@extra@b@citeb}{}{%
\@namedef{br@#2}{\@nameuse{br@#2\@extra@b@citeb}}}\fi
\@ifundefined{b@#2\@extra@b@citeb}{\def\NAT@num{}}{\NAT@parse{#2}}%
\item[\hfil\hyper@natanchorstart{#2\@extra@b@citeb}{[{\mycitep}]}%
\hyper@natanchorend]%
\NAT@ifcmd#1(@)(@)\@nil{#2}}
\makeatother

我希望这对其他人有帮助

相关内容