Minitoc 带有 hyperref 和 \sectounter{section}{0} 导致转到错误的部分

Minitoc 带有 hyperref 和 \sectounter{section}{0} 导致转到错误的部分

我有以下问题minitoc

我有第一章编号章节,包含第 1 和第 2 节,第二章未编号章节,包含第 1 和第 2 节(使用 重置章节\setcounter{section}{0})。如果我不重置章节编号,第二章未编号,则它们的编号为 3 和 4,这不是我想要的。

当我生成 minitoc 时,它们生成正确,但是超链接是错误的:单击未编号章节的 minitoc 会导致转到上一个编号章节的相应部分。

有人知道如何解决这个问题吗?

这是一个最小工作示例:

\documentclass{book}
\usepackage{minitoc}
\usepackage{hyperref}

\dominitoc
\begin{document}
\tableofcontents
\chapter{foo}
\minitoc
\section{a}
\section{b}

\chapter*{foo foo}
\setcounter{section}{0}
\addstarredchapter{foo foo}
\markboth{foo foo}{}
\minitoc

\section{c}
\section{d}

\end{document}

答案1

一般情况下hyperref,假定所有部分都有不同的编号。因此,当您有两个编号为 的部分时1.1hyperref日志中会出现以下提示:

pdfTeX warning (ext4): destination with the sa
me identifier (name{section.1.1}) has been already used, duplicate ignored
<to be read again> 
                   \relax 
l.22 \section{c}

这里的一个解决方案是定义一个内部hyperref始终唯一的内部计数器表示。

在这里你也许可以使用

\renewcommand\theHsection{\thesection.\thepage}

只要在同一页面上不会出现两个具有相同编号的部分即可。

相关内容