\setcounter{section} TOC 超链接问题

\setcounter{section} TOC 超链接问题

在撰写论文时,我有两个部分,每个部分都由几个章节组成。我使用 \input 来包含不同的章节文件。在每个部分的开头,我想写一个介绍部分,并希望它在目录中显示为第 i.1 节和第 i.2 节。现在命名和页码编号工作正常。但是,目录中的超链接指向具有相同编号的上一节。这个 MWE 更清楚:

主要文件是

\documentclass [a4paper,12 pt]{book}
\usepackage{hyperref}
\usepackage{lipsum}

\begin{document}

\frontmatter
\renewcommand\contentsname{Table of Contents}
\tableofcontents
\clearpage{\pagestyle{empty}\cleardoublepage}

\mainmatter
\input{File1}
\clearpage{\pagestyle{empty}\cleardoublepage}

%%%%-----------------------%

\phantomsection
\addcontentsline{toc}{part}{Title Part 1}
\input{File2}
\clearpage{\pagestyle{empty}\cleardoublepage}

\end{document}

文件 1 是

\section{First section}
\lipsum

\section{Second section}
\lipsum

文件 2 是

\thispagestyle{empty} \phantom{}

\vfill
\begin{center}
{\huge \scshape\bfseries Title Part I\\}
\end{center}
\vfill
\newpage

{\clearpage\phantomsection\renewcommand\thechapter{\rm S}
\setcounter{section}{0} 
\label{sec:intro1}
\section{Section S1}
\lipsum}

% In the real file I have here many others Chapters and Sections.

{\clearpage\phantomsection\renewcommand\thechapter{\rm S}
\setcounter{section}{1}
\section{Section S2}
\label{sec:intro2}
\lipsum}

现在我编译时,第 i1 节的可点击链接指向第一节,第 i2 节的可点击链接指向第二节。如何让链接指向正确的位置?

答案1

我会定义一个环境,以避免文档主体中出现过多的重复代码。主要技巧是保存“部分部分”的值并进行本地重新定义,\theHsection以免hyperref与对同一对象的双重引用混淆。

\documentclass[a4paper,12pt]{book}
\usepackage{emptypage}
\usepackage{hyperref}
\usepackage{bookmark}

\usepackage{lipsum}

\renewcommand\contentsname{Table of Contents}

\newcounter{partsection}

\newenvironment{Part}[1]
 {%
  \cleardoublepage
  \phantomsection
  \setcounter{section}{\value{partsection}}%
  \renewcommand{\thesection}{S\arabic{section}}%
  \renewcommand{\theHsection}{S\arabic{section}}%
  \addcontentsline{toc}{part}{#1}%
  \thispagestyle{empty}
  \vspace*{\fill}%
  \begin{center}
  \huge\scshape #1
  \end{center}
  \vspace*{\fill}
  \clearpage
 }
 {%
  \setcounter{partsection}{\value{section}}%
  \cleardoublepage
}

\begin{document}

\frontmatter

\tableofcontents

\mainmatter

\chapter{First chapter}

\section{First section}
\lipsum

\section{Second section}
\lipsum

\begin{Part}{Title Part I}

\section{Section i1}
\label{sec:intro1}
\lipsum

\section{Section i2}
\label{sec:intro2}
\lipsum
\end{Part}

\chapter{Second chapter}

\section{First section}
\lipsum

\section{Second section}
\lipsum


\begin{Part}{Title Part II}

\section{Section i1}
\label{sec:intro3}
\lipsum

\section{Section i2}
\label{sec:intro4}
\lipsum
\end{Part}

\chapter{Third chapter}

\section{First section}
\lipsum

\section{Second section}
\lipsum

\ref{sec:intro1} \ref{sec:intro2}
\ref{sec:intro3} \ref{sec:intro4}

\end{document}

在此处输入图片描述

相关内容