hyperref 是否可以将目录包含在 PDF 内容导航器中?

hyperref 是否可以将目录包含在 PDF 内容导航器中?

简单最小文档

\documentclass[a4paper,10pt]{scrbook}

\usepackage{hyperref}

\begin{document}

\chapter*{Preface}
This is the preface.

\tableofcontents

\chapter{Chapter One}
This is chapter one.

\end{document}

通过使用hyperref,pdflatex 会在 PDF 文件中生成一个“目录”部分。这个方便的导航器不包含目录本身,对于此文档,它仅包含“第一章”。我希望我的 PDF 目录包含指向页面目录的链接。(当然,我不希望页面目录包含其自身。)这可能吗?

答案1

软件包tocbibind会将 添加ToCToC本身,因为已加载,书签本身中hyperref会有条目。如果不应出现在 中,则暂时将计数器减少到这意味着不会将任何内容写入,请使用旧命令并将计数器的增加值写入文件。ToCToCToCtocdepth-2ToC\latextableofcontentstocdepthToC

\documentclass[a4paper,10pt]{scrbook}

\usepackage{tocbibind}
\usepackage{hyperref}

\usepackage{bookmark}

\AtBeginDocument{%
\let\latextableofcontents\tableofcontents

\renewcommand{\tableofcontents}{%
  \addtocontents{toc}{\protect\setcounter{tocdepth}{-2}}
  \latextableofcontents%
  \addtocontents{toc}{\protect\setcounter{tocdepth}{3}}
}
}

\begin{document}

\chapter*{Preface}
This is the preface.

\tableofcontents

\chapter{Chapter One}
This is chapter one.

\end{document}

enter image description here

答案2

您可以使用在目录标题前\BeforeTOCHead添加。 您需要在 前添加一个,否则书签将添加到章节前言的最后一页。\pdfbookmark\cleardoublepage\pdfbookmark

\documentclass[a4paper,10pt]{scrbook}

\usepackage{hyperref}
\BeforeTOCHead[toc]{\cleardoublepage\pdfbookmark{\contentsname}{toc}}

\begin{document}

\chapter*{Preface}
This is the preface.

\tableofcontents

\chapter{Chapter One}
This is chapter one.

\end{document}

如果您希望对图表列表或表格列表进行类似的添加,您可以使用:

\BeforeTOCHead[lof]{\cleardoublepage\pdfbookmark{\listfigurename}{lof}}
\BeforeTOCHead[lot]{\cleardoublepage\pdfbookmark{\listtablename}{lot}}

或者,您可以添加选项listof=totoc\documentclass这会将这些列表也添加到目录中。但不要同时使用两者!

相关内容