正确的 hyperref-page 引用

正确的 hyperref-page 引用

这是对该问题的某种后续回答:hypertexnames=false 与索引的兼容性

我将发布 Ulrike Fischer 的回答,该回答现在将作为该问题的 MWE:

\documentclass[index=totoc]{scrbook}
\usepackage{lipsum}
\usepackage{makeidx}
\makeindex

\usepackage[hypertexnames=false]{hyperref}

\makeatletter
\usepackage{etoolbox}
\patchcmd\Hy@EveryPageBoxHook{\Hy@EveryPageAnchor}{\Hy@hypertexnamestrue\Hy@EveryPageAnchor}{}{\fail}
\makeatother

\begin{document}

\frontmatter

\title{Title}
\maketitle

\mainmatter

\chapter{Chapter 1}
\label{chap1}
\index{BeginningChapter1}\lipsum\index{EndChapter1}

\chapter{Chapter 2}
\index{BeginningChapter2}\lipsum\index{EndChapter2}
\pageref{chap1}
\printindex
\end{document}

尽管 Ulrike Fischer 警告说该选项“尚未经过太多测试”,但它也适用于迄今为止我编译的每个文档(大小不一):页面引用指向正确的页码,并且显示正确。

出现了一个新问题:绝对页码仍然存储在某个地方,并在某些 PDF 阅读器中使用,并在光标悬停在引用上时显示。来自 Okular 和 qpdfviewer 的两个屏幕截图(Adobe Acrobat Reader 什么都没有显示,但我使用的是带有 wine 的旧版本):

pdf阅读器

奥库拉

知道这是否可以通过hyperref什么方式修复?(另一个用户遇到了同样的问题这里在不同情况下。hyperref答案中建议的先加载实际上适用于 MWE,但我依赖于hyperref在许多文档中加载其他几个包。)

相关内容