几个月前,我问了一个关于书目连字问题的问题这里。总之,当我遇到文中引用关键词连字符的问题时,我包含了该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
包并更改\citep
为时\cite
,我得到:
我想要的是:
- 正确连字符(包括时可能
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
我希望这对其他人有帮助