我在将backref=page
hyperref 包的选项与带有选项的 natbib 包一起使用时遇到了一个问题square,sort&compress,numbers
。
如果 natbib 包压缩了一系列引用,则中间引用在编译后不会显示反向引用(latex、bibtex、latex、latex)。
请参阅以下简短示例:
\documentclass{article}
\usepackage[square,sort&compress,numbers]{natbib}
\usepackage[backref=page]{hyperref}
\begin{document}
\cite{foo,bar,hole}
\begin{thebibliography}{ab}
\bibitem{foo} foo
\bibitem{bar} bar
\bibitem{hole} hole
\end{thebibliography}
\end{document}
答案1
对 natbib.sty 进行以下修补:
--- natbib.sty.old 2009-07-23 10:44:10.000000000 -0400
+++ natbib.sty 2009-11-01 17:07:53.309765500 -0500
@@ -408,6 +408,7 @@
\@ifnum{\NAT@nm=\@tempcnta}{%
\@ifnum{\NAT@merge>\@ne}{}{\NAT@last@yr@mbox}%
}{%
+ \Hy@backout{\@citeb\@extra@b@citeb}%
\advance\@tempcnta by\@ne
\@ifnum{\NAT@nm=\@tempcnta}{%
\ifx\NAT@last@yr\relax
我已经向 hyperref 和 natbib 的作者报告了这个问题。Heiko(hyperref 的作者)希望在 natbib 中修复这个问题,因为这个问题在 natbib 代码中埋得太深了,他不太愿意修补它。Patrick(natbib 的作者)还没有回复我的电子邮件……
答案2
答案3
删除辅助文件。抑制该选项sort&compress
,然后根据需要多次编译文档,以生成带有反向引用的引文;然后添加该sort&compress
选项并再次编译以对引文列表进行排序和压缩。