我使用的是4.1 版软件包。我还使用了已发布的classicthesis
参考书目样式文件abbrvunsrtnat.bst
这里。
我在使用反向引用时遇到了问题。我的文档中有 70 多个引用。在这些引用中,有三处引用Cited on page x
在文档参考书目部分的引用末尾没有。其余的参考文献都很好,并且反向引用正确。
下面,请找MWE
。
\documentclass[
openright,
titlepage, numbers=noenddot, headinclude,%1headlines,
footinclude=true, cleardoublepage=empty,
BCOR=30mm, paper=letter, fontsize=11pt, % Binding correction, paper type and font size
ngerman, american, % Languages
]{scrreprt}
\PassOptionsToPackage{%
eulerchapternumbers,
listings,
pdfspacing,
subfig,
beramono,
parts}{classicthesis}
\PassOptionsToPackage{square,numbers,sort&compress}{natbib}
\usepackage{natbib}
\usepackage[position=t,singlelinecheck=off,font={it}]{subfig}
\PassOptionsToPackage{pdftex,hyperfootnotes=false,pdfpagelabels}{hyperref}
\usepackage{hyperref} % backref linktocpage pagebackref
\pdfcompresslevel=9
\pdfadjustspacing=1
\hypersetup{
colorlinks=true, linktocpage=true, pdfstartpage=1, pdfstartview=FitV,
breaklinks=true, pdfpagemode=UseNone, pageanchor=true, pdfpagemode=UseOutlines,
plainpages=false, bookmarksnumbered, bookmarksopen=true, bookmarksopenlevel=1,
hypertexnames=true, pdfhighlight=/O, %
}
\usepackage{ifthen} % Allows the user of the \ifthenelse command
\newboolean{enable-backrefs} % Variable to enable backrefs in the bibliography
\setboolean{enable-backrefs}{true} % Variable value: true or false
% ---------------------------------------------------------------------------------------
\newcommand{\backrefnotcitedstring}{\relax} % (Not cited.)
\newcommand{\backrefcitedsinglestring}[1]{(Cited on page~#1.)}
\newcommand{\backrefcitedmultistring}[1]{(Cited on pages~#1.)}
\ifthenelse{\boolean{enable-backrefs}} % If backrefs were enabled
{
\PassOptionsToPackage{hyperpageref}{backref}
\usepackage{backref} % to be loaded after hyperref package
\renewcommand{\backreftwosep}{ and~} % separate 2 pages
\renewcommand{\backreflastsep}{, and~} % separate last of longer list
\renewcommand*{\backref}[1]{} % disable standard
\renewcommand*{\backrefalt}[4]{% detailed backref
\ifcase #1
\backrefnotcitedstring
\or
\backrefcitedsinglestring{#2}
\else
\backrefcitedmultistring{#2}
\fi}
}{\relax}
\usepackage{classicthesis}
\begin{document}
This is test for back-referencing. \citep{ref1,ref2,ref3,ref4}.
\bibliographystyle{abbrvunsrtnat}
\bibliography{Bibliography}
\end{document}
问题出在 形式的引用中\citep{ref1,ref2,ref3,ref4}
。当我将其分离为\citep{ref1}
、\citep{ref2}
、时\citep{ref3}
,\citep{ref4}
反向引用开始正常工作。调试和查找问题原因的步骤是什么?
我发现这个帖子这是两年前发布的补丁,提供了一些解决方案。我的所有软件包都是最新的。然而,似乎这里尚未应用natbib.sty
。没有在最新版本中应用补丁有什么原因吗natbib
?
答案1
假设您的bib
文件中有一个类似 ahm:2013 的引用,但它没有所需的反向引用。
- 检查您是否确实引用了它,即,您的文档中是否有
\cite{ahm:2013}
某处。这可能听起来很无聊,但请记住,当您在文档\nocite{*}
中的任何地方发布时,所有参考资料都会出现在参考书目章节中,即使没有明确引用。 检查你的
aux
文件是否包含以下三行:\citation{ahm:2013} \@writefile{brf}{\backcite{ahm:2013}{{1}{(document)}{Doc-Start}}} \bibcite{ahm:2013}{{1}{2013}{{ahm}}{{}}}
检查你的
brf
文件是否包含\backcite{ahm:2013}{{1}{(document)}{Doc-Start}}
如果任何一项检查失败,您必须提供有关其失败原因的更多详细信息。
答案2
也许你可以尝试一下这个...
\usepackage[hyperpageref]{backref}
\renewcommand*{\backref}[1]{}
\renewcommand*{\backrefalt}[4]{%
\ifcase #1 %
\or
{\footnotesize Cited on page~#2.}%
\else
{\footnotesize Cited on pages~#2.}%
\fi