在撰写论文时,我有两个部分,每个部分都由几个章节组成。我使用 \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}