如何调试反向引用问题

如何调试反向引用问题

我使用的是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 的引用,但它没有所需的反向引用。

  1. 检查您是否确实引用了它,即,您的文档中是否有\cite{ahm:2013}某处。这可能听起来很无聊,但请记住,当您在文档\nocite{*}中的任何地方发布时,所有参考资料都会出现在参考书目章节中,即使没有明确引用。
  2. 检查你的aux文件是否包含以下三行:

    \citation{ahm:2013}
    \@writefile{brf}{\backcite{ahm:2013}{{1}{(document)}{Doc-Start}}}
    \bibcite{ahm:2013}{{1}{2013}{{ahm}}{{}}}
    
  3. 检查你的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

相关内容