这是对该问题的某种后续回答: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 的旧版本):
知道这是否可以通过hyperref
什么方式修复?(另一个用户遇到了同样的问题这里在不同情况下。hyperref
答案中建议的先加载实际上适用于 MWE,但我依赖于hyperref
在许多文档中加载其他几个包。)