如何修复:添加 \addtocontents{toc}{\protect\setcounter{tocdepth}{1}} 后,“更深”的 PDF 书签消失

如何修复:添加 \addtocontents{toc}{\protect\setcounter{tocdepth}{1}} 后,“更深”的 PDF 书签消失

我的book基于类的文档通常具有以下结构:章节 -> 节 -> 小节 -> 小小节。通常,PDF 查看器(例如 Adob​​e Reader)中的 PDF 书签反映的就是这一点。以下是一个具有预期行为的 MWE:

\documentclass{book}
%\usepackage[estonian]{babel}
%\usepackage{mathtools}
%\usepackage{tocloft}
%\usepackage{titlesec}
\usepackage[hypertexnames=false]{hyperref}
%\usepackage{bookmark}

\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}

\begin{document}
    
    \tableofcontents
    
    \chapter{Test C}
    A
    \section{Test C1}
    B
    \subsection{Test C11}
    C
    \subsubsection{Test C111}
    D
    
    \include{Testing bookmarks}
    
\end{document}

哪里Testing bookmarks.tex

\appendix
%\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}
\chapter{Test A}
A
\section{Test A1}
B

书签符合预期:

预期的书签结构。图片1


然而, 什么\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}时候添加/取消注释Testing bookmarks.tex,两个更深层次的书签有消失了

损坏/不完整的书签结构。图片 2

我怎样才能解决这个问题?

  • 请确保在进行更改时编译文档适当次数(这里有时是三次)。
  • (与原始文档相比,MWE 确实非常小。)

答案1

显然,添加\addtocontents{toc}{\protect\setcounter{tocdepth}{1}}似乎不知何故使用 更改书签的默认行为hyperref

但修复它(最终)很简单:只需添加bookmarksdepth=3到设置中就可以了。所以

\documentclass{book}
%\usepackage[estonian]{babel}
%\usepackage{mathtools}
%\usepackage{tocloft}
%\usepackage{titlesec}
\usepackage[hypertexnames=false, bookmarksdepth=3]{hyperref} % changed line
%\usepackage{bookmark}

\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}

\begin{document}

    \tableofcontents

    \chapter{Test C}
    A
    \section{Test C1}
    B
    \subsection{Test C11}
    C
    \subsubsection{Test C111}
    D

    \include{Testing bookmarks}

\end{document}

这给出了预期的书签结构:

书签结构,书签深度=3

相关内容