Hyperref 级别已嵌入,不会被重置

Hyperref 级别已嵌入,不会被重置

我正在使用 hyperref 包和自定义类,但遇到了 hyperref 无法正确创建树的问题。我期望看到以下内容:

+ Section 1
++ Section 1.1
++ Section 1.2
+++ Section 1.2.1
+++ Section 1.2.2
++ Section 1.3
+ Section 2
++ Section 2.1

但我看到的却是这样的:

+ Section 1
++ Section 1.1
++ Section 1.2
+++ Section 1.2.1
+++ Section 1.2.2
++++ Section 1.3
+++++ Section 2
++++++ Section 2.1

我猜想存在某种级别计数器,用于跟踪树处于哪个级别的节、子节、子子节等,而当我运行\clearpage或创建章节或节标题时,它不会被重置。但我不知道如何重置它,也不知道 hyperref 使用什么样的机制来跟踪它。我无法弄清楚 hyperref 是如何自己做到这一点的。

我如何从 Latex 类级别控制 hyperref 的级别“计数器”?

任何帮助将不胜感激。

答案1

这里最有可能的罪魁祸首是重新定义部分排版方式的“自定义类”。具体来说,可能有一个增加相反secnumdepth环境明确地。您的选择是:

  • 要么编辑自定义文档类,\addtocounter通过删除它并用正确的、固定的 替换它来修复此问题secnumdepth。例如,在\section命令中使用\setcounter{secnumdepth}{3}。在 中\subsection,删除\addtocounter并使用\setcounter{secnumdepth}{4}。在 中\subsubsection,删除\addtocounter并使用\setcounter{secnumdepth}{5}。这将确保相应的分段命令位于不同的级别。
  • 使用etoolbox包裹在扩展之前,在所需的计数器中预先添加一个 drop。也就是说,通过添加

    \usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
    ...
    \pretocmd{\section}{\addtocounter{secnumdepth}{-1}{}{}%
    \pretocmd{\subsection}{\addtocounter{secnumdepth}{-1}{}{}%
    \pretocmd{\subsubsection}{\addtocounter{secnumdepth}{-1}{}{}%
    

相关内容