重复使用目录与书签

重复使用目录与书签

下面是一个memoir基于 MWE 的例子,我们在 TOC 中添加了一些钩子,并利用这些钩子重用 TOC 来模拟 minitoc。即使使用 ,这种方法也能很好地工作hyperref

然而,这不适用于书签。它仅对应于 的最后一个实例的数据\tableofcontents,而不是组合信息。

谁能解释一下为什么它不只是把信息结合起来?

\documentclass{memoir}
\usepackage[utf8]{inputenc}
\usepackage[
bookmarks=true,
bookmarksnumbered,
colorlinks,
]{hyperref} 

\begin{document}

\frontmatter

% disable TOC part after BREAK
\cftinsertcode{BREAK}{\setcounter{tocdepth}{-10}}

\tableofcontents*

\mainmatter

\chapter{Mainmatter chapter}

\section{Mainmatter section}

\subsection{Mainmatter subsection}


\appendix

\appendixpage

\cftinserthook{toc}{BREAK}

% disable before BREAK
\setcounter{tocdepth}{-10}
% enable after break
\cftinsertcode{BREAK}{\setcounter{tocdepth}{3}}

\renewcommand\contentsname{Appendices overview}
\tableofcontents*

\clearpage

\chapter{Appendix chapter}

\section{Appendix section}

\subsection{Appendix subsection}

\end{document}

答案1

当 toc 文件被第一个执行时,\tableofcontentsBREAK 被配置为执行\setcounter{tocdepth}{-10}。但 hyperref 遵循然后当前tocdepth 的值决定了哪些内容会被添加到书签中。因此主要内容部分不会被添加到书签中。

第二个目录包含一个 BREAK,它将目录深度设置为 3。因此,接下来的附录部分将出现在书签中。

另请11.1. The hyperref option bookmarksdepth参阅 etoc 手册。

当为了多次使用 \tableofcontents 或 \localtableofcontents 而修改计数器 tocdepth 时,应该注意,包 hyperref 默认会考虑 tocdepth 计数器的当前值,以决定 pdf 文件是否包含与源文件中遇到的分段命令相对应的书签。因此,在针对给定的目录临时修改 tocdepth 后,通常需要将其重置为先前的值。

或者,可以使用 hyperref 包的 bookmarksdepth=n 选项,其中 n 表示所需文档书签的最大深度,可以是数字,也可以是 hyperref 已知的级别的名称。此文档之前将 bookmarksdepth=3 作为选项传递给 hyperref,因此即使在打印某个目录后无意中将 tocdepth 保留为 1,也不会修改 pdf 文件的书签树。现在 \etocsetnexttocdepth 已添加到包中,我们已经系统地使用它,不再需要 bookmarksdepth=3。

答案2

您可以单独设置书签深度,然后它就会起作用:

\documentclass{memoir}
\usepackage[utf8]{inputenc}
\usepackage[
bookmarks=true,
bookmarksnumbered,
colorlinks,
bookmarksdepth=10 %<-------
]{hyperref}

\begin{document}

\frontmatter

% disable TOC part after BREAK
\cftinsertcode{BREAK}{\setcounter{tocdepth}{-10}}

\tableofcontents*

\mainmatter

\chapter{Mainmatter chapter}

\section{Mainmatter section}

\subsection{Mainmatter subsection}


\appendix

\appendixpage

\cftinserthook{toc}{BREAK}

% disable before BREAK
\setcounter{tocdepth}{-10}
% enable after break
\cftinsertcode{BREAK}{\setcounter{tocdepth}{3}}

\renewcommand\contentsname{Appendices overview}
\tableofcontents*

\clearpage

\chapter{Appendix chapter}

\section{Appendix section}

\subsection{Appendix subsection}

\end{document}

在此处输入图片描述

相关内容