hyperref 和 hypdvips 的问题

hyperref 和 hypdvips 的问题

在我的目录中,有些条目跨越多行。由于我使用 LaTeX -> PS -> PDF 进行编译,因此创建的链接无法正确显示在输出文件 (pdf) 中。为了解决这个问题,我在序言中 hyperref添加了。\usepackage{hypdvips}

这是我的最小工作示例:

\documentclass{scrbook}

%\usepackage[USenglish]{babel}
%\usepackage[T1]{fontenc}
%\usepackage[latin1]{inputenc} 
\usepackage[breaklinks=true]{hyperref} %breaklinks=true allows link text to break across lines;
\usepackage{hypdvips} %The hypdvips package fixes some problems when using hyperref with dvips as backend driver.

\listfiles

\begin{document}

\tableofcontents

\chapter{A short chapter heading}

    \section{A short section heading}

\chapter{A very long never ending far reaching comprehensive illustrative long chapter heading}

    \section{A very long never ending far reaching comprehensive illustrative long section heading}

        \subsection{Short: Two alternative models for the workforce assignment problem} 

        \subsection{Long: Limitations of the models and potential remedies and extensions} 

\end{document}

然而,添加hypdvips导致两个错误消息:

  1. ! Undefined control sequence.
    \tableofcontents ->\backrefsetup 
                                     {disable}\pp@backup@tableofcontents \backre...
    l.15 \tableofcontents
    
  2. ! Undefined control sequence.
    \tableofcontents ...tableofcontents \backrefsetup 
                                                      {enable}
    l.15 \tableofcontents
    

输出文件已创建并且所有链接都正确显示,但输出文件中出现“disable”和“enable”字样。

该问题似乎与已经报告的问题类似这里。我使用最新版本的hypdvips软件包(Version 3.01)和pdfTeX,Version 3.1415926-2.5-1.40.14(MiKTeX 2.9)(预加载格式=latex 2014.3.24)。

我测试的所有文档类都会发生此错误(scrbookbookscrartclarticlescrreprtreport。如能提供任何帮助,我将不胜感激。

答案1

这是 中的一个错误hypdvips。根据选项设置,hyperef不会加载包backref。但hypdvips会重新定义\tableofcontents和 朋友以禁用那里的反向引用。它使用\backrefsetup未定义,因为backref未加载。

解决方法:

  • 提供以下虚拟定义\backrefsetup

    \providecommand*{\backrefsetup}[1]{}
    
  • 选项backrefpagebackref用于hyperref启用反向引用并加载包backref

  • 使用选项tocbrlofbrlotbrloabrhypdvips然后hypdvips不重新定义\tableofcontents和朋友插入\backrefsetup命令以禁用那里的反向引用。


当然,backref应该是最新的:

显示,当ChangeLog定义时:hyperref\backrefstup

2012-07-24

  • backref1.37:

    • \backrefsetup添加。
    • 选项enabledisable添加。

答案2

对我来说,上述建议的解决方案都没有真正起作用。相反,重新定义以下命令(由 hypdvips 包定义),使其不执行任何操作,使得 hypdvips 和 biblatex 包在我的情况下兼容。

\renewcommand*{\Hy@backout}[1]{}

相关内容