![重复使用目录与书签](https://linux22.com/image/376732/%E9%87%8D%E5%A4%8D%E4%BD%BF%E7%94%A8%E7%9B%AE%E5%BD%95%E4%B8%8E%E4%B9%A6%E7%AD%BE.png)
下面是一个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 文件被第一个执行时,\tableofcontents
BREAK 被配置为执行\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}