第二部分的书签指向错误的页面(第一部分的页面)

第二部分的书签指向错误的页面(第一部分的页面)

PDF 中的书签/链接指向第二部分(“Quels impacts ?”)指向错误的页面(早了一页)。PDF 中的目录也是如此(此处的页码是正确的,只是超链接是错误的)。

例如:

\documentclass[french,a4paper,12pt,twoside]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{lmodern}
\usepackage{float}
\usepackage{graphicx}
\usepackage{numprint}
\usepackage{eurosym}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{listings}
\usepackage{wrapfig}
\usepackage[top=3cm, bottom=3cm, left=2cm, right=2cm]{geometry}
\usepackage{framed}
\usepackage{fancyhdr}
\usepackage{listings}
\usepackage{url}
\usepackage{csquotes}
\usepackage{lettrine}
\usepackage{chngcntr}
\usepackage[table]{xcolor}
\counterwithout{figure}{chapter}
\counterwithout{table}{chapter}
\counterwithout{footnote}{chapter}
%\counterwithin*{chapter}{part}
\makeatletter\@addtoreset{chapter}{part}\makeatother%

\newcounter{intext}

\usepackage[autolang=hyphen,backend=biber,
style=numeric,pagetracker=false,
ibidtracker=true,
citetracker=context]{biblatex}

\usepackage[tight]{shorttoc} 
\addtocontents{toc}{\protect\thispagestyle{empty}}

\usepackage{lastpage}
\usepackage{color}
\usepackage[
bookmarks,
colorlinks=true,
]{hyperref}


\setcounter{tocdepth}{6}
\setcounter{secnumdepth}{6}

%voir aussi le fichier report.cls
%car j'ai modifié 2 ou 3 trucs
\renewcommand{\thepart}{Partie \Roman{part}}
\renewcommand{\thechapter}{\arabic{chapter}}
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\Alph{subsection})}
\renewcommand{\thesubsubsection}{\arabic{subsubsection}.}
\renewcommand{\theparagraph}{\alph{paragraph})}

\patchcmd{\footnotemark}{\stepcounter{footnote}}{\refstepcounter{footnote}}{}{}

\newcommand{\npshorttableofcontents}[2]{%
  \begingroup
  \let\aslsavedcontentsline\contentsline
  \renewcommand{\contentsline}[3]{%
    \aslsavedcontentsline{##1}{##2}{}%
  }%
  \shorttableofcontents{#1}{#2}
  \endgroup
}

\usepackage{bookmark}

\setlength\parskip{1.5pt plus 1.0pt}
\begin{document}
\clearpage
\chapter*{Remerciements}
\chapter*{Introduction.\label{introduction}}
\addcontentsline{toc}{part}{Introduction.}
\npshorttableofcontents{Sommaire.}{0}
\thispagestyle{plain}

\clearpage
\part{concept et réglementation.}
\chapter{Caractéristiques et composantes.}
\section{Caractéristiques.}
\subsection{Le mouvement }
\chapter{Régime juridique.}
\clearpage
\part{Quels impacts ?}
\chapter{amélioration du service public}
\section{Amélioration.}
\subsection{Améliorer la gouvernance}


\clearpage
\phantomsection 
\addcontentsline{toc}{chapter}{Bibliographie.}
\printbibliography

\clearpage
\phantomsection 
\addcontentsline{toc}{chapter}{\listfigurename.}
\listoffigures

\clearpage
\phantomsection 
\addcontentsline{toc}{chapter}{\listtablename.}
\listoftables

\clearpage

\protect\thispagestyle{fancy}
\tableofcontents
\end{document}

结果是:结果链接错误

该链接指向第 5 页,而不是第 8 页。

怎么了 ?

答案1

只需移动\@addtoreset\counterwithin hyperref已加载,因为hyperref重新定义它们以调整用于锚点(目标)名称的附加计数器theHchapter。这些名称必须是唯一的。由于章节号不再唯一,因此部分编号将添加到 中的章节号中theHchapter

答案2

由于您将chapter计数器重新定义为从属于part,因此第二部分中的书签将引用第一部分中编号相同的部分。您可以从表单的警告中看到这一点

pdfTeX warning (ext4): destination with the same identifier (name{chapte
r.1}) has been already used, duplicate ignored
<to be read again> 
                   \relax 
l.90 \chapter{amélioration du service public}

解决方法:定义\theHchapter,因此hyperref将使用它来代替\thechapter

\counterwithin*{chapter}{part}
\newcommand{\theHchapter}{\thepart\arabic{chapter}}

顺便说一下,

\makeatletter\@addtoreset{chapter}{part}\makeatother

只是一种复杂的形式\counterwithin*{chapter}{part}

在此处输入图片描述

相关内容