使用时hyperref
's pagebackref
,如果引用在特定页面上出现多次,则同一页面将被列出多次。
例如:
A. Hindle、M. Godfrey 和 R. Holt。使用恢复的统一流程视图进行软件流程恢复。在软件维护 (ICSM) 中,2010 年 IEEE 国际会议,第 1-10 页。IEEE,2010 年。doi:10.1109/ICSM.2010.5609670。(第 3、3、6、6、6、6 页)。
如何从列表中删除重复条目?
边注:
您可能已经注意到,我添加了“page”/“pages”这里) 归结为:
\renewcommand*{\backreflastsep}{, }
\renewcommand*{\backreftwosep}{, }
\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{%
\ifcase #1 %
No citations.% use \relax if you do not want the "No citations" message
\or
(page #4).%
\else
(pages #4).%
\fi%
}
如果没有这个添加,引用也会出现多次。
答案1
只需在重新定义中替换#4
为#2
\backrefalt
:反向引用手册解释,\backrefalt
采用四个参数:
- 无重复的引用次数。
- 返回没有重复的引用列表。
- 所有引用的数量(包括重复)。
- 返回包含所有条目(包括重复项)的参考列表。
这#2
正是您所需要的。
最小测试用例:
\documentclass{article}
\begin{filecontents*}{bibliography.bib}
@INPROCEEDINGS{5609670,
author={Hindle, A. and Godfrey, M.W. and Holt, R.C.},
booktitle={Software Maintenance (ICSM), 2010 IEEE International Conference on},
title={Software process recovery using Recovered Unified Process Views},
year={2010},
month={sept.},
volume={},
number={},
pages={1 -10},
doi={10.1109/ICSM.2010.5609670},
ISSN={1063-6773},}
\end{filecontents*}
\usepackage[pagebackref]{hyperref}
\renewcommand*{\backreflastsep}{, }
\renewcommand*{\backreftwosep}{, }
\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{%
\ifcase #1 %
No citations.% use \relax if you do not want the "No citations" message
\or
(page #2).%
\else
(pages #2).%
\fi%
}
\begin{document}
\null\clearpage
\null\clearpage
\cite{5609670}\cite{5609670}\clearpage
\null\clearpage
\null\clearpage
\cite{5609670}\cite{5609670}\cite{5609670}\cite{5609670}\clearpage
\bibliographystyle{plain}
\bibliography{bibliography}
\end{document}