编写一本书(即\documentclass{book}
)我对书签有问题。
这是我想要获得的结构(大空间表示书签与上述对象的视觉依赖关系):
Contents
Preface
1. Introduction
Part 1
2. Title
Part 2
3. Title
而这是我得到的:
Contents
Preface
1. Introduction
Part 1
2. Title
Part 2
3. Title
这是以下一段代码的结果:
\documentclass[12pt]{book}
%
\usepackage[hypertexnames=false]{hyperref}
%
\newcommand{\mychapter}[2]{
\setcounter{chapter}{#1}
\setcounter{section}{0}
\chapter*{#2}
\addcontentsline{toc}{chapter}{#2}
}
%
%%%%%%%%%
%%%%%%%%%
\begin{document}
\pagestyle{empty}
\title{Title}
\author{Author}
\maketitle
\pagenumbering{roman}
\setcounter{page}{0}
\tableofcontents
\addcontentsline{toc}{part}{Contents}
\pagestyle{plain}
%%%%%%%%%%%%
\mychapter{0}{Preface}
\mainmatter
%%%%%%%%%%%
\chapter{Introduction}
%%%%%%%%
\part{Title}
\chapter{Title}
%%%%%%%%
\part{Title}
\chapter{Title}
\end{document}
关于这段代码有几点需要注意:
当然,如果我们删除该字符串,
\addcontentsline{toc}{part}{Contents}
所有问题都解决了,因为前言和章节“1. 介绍”都处于与“第 1 部分”和“第 2 部分”相同的书签级别。但是,这样我还是无法获取书签中的内容,而我希望它们保留在那里。我之所以包含该选项,
hypertexnames=false
是因为这是我在这里找到的解决 hyperref 问题的解决方案。该命令
\newcommand{\mychapter}[2]{... etc...}
再次是我在这里找到的我想要获得的解决方案。
欢迎就此问题提出任何反馈。
感谢您的时间。
答案1
您可以使用书签包来重置级别。并且您应该考虑使用更好的类,这样您就不必执行此 \mychapter-stuff:
\documentclass[12pt]{scrbook}
%
\usepackage[hypertexnames=false]{hyperref}
\usepackage{bookmark}
%
\begin{document}
\title{Title}
\author{Author}
\maketitle
\frontmatter
\hypertarget{toc}{}
\bookmark[dest=toc]{\contentsname}
\tableofcontents
\bookmarksetup{startatroot}
\addchap{Preface}
\mainmatter
\bookmarksetup{startatroot}
\chapter{Introduction}
\part{Title}
\chapter{Title}
\part{Title}
\chapter{Title}
\end{document}