我使用类编写的文档report
有 2 个未编号的章节。第 2 章的各节按照第 1 章的各节的编号进行编号,如下所示:
MY FIRST UNNUMBERED CHAPTER
1 First Section
2 Second Section
3 Third Section
MY SECOND UNNUMBERED CHAPTER
4 First Section
5 Second Section
我希望它在每次创建新的未编号章节时重置章节编号:
MY FIRST UNNUMBERED CHAPTER
1 First Section
2 Second Section
3 Third Section
MY SECOND UNNUMBERED CHAPTER
1 First Section
2 Second Section
为此,我尝试过:
\@addtoreset{section}{chapter*}
,它编译通过,但部分编号不正确,并且 PDF 书签变得混乱。\setcounter{section}{0}
,它正确地对章节进行了编号,但是第二章各章节的 PDF 书签指向第一章。
那么,如何在不破坏 PDF 书签的情况下重置未编号章节之间的章节编号?
答案1
包hyperref
需要计数器值来生成唯一的锚点名称。但有些计数器值不是唯一的。例如,您有多个带有数字的部分1
。
因此,hyperref
已引入\theH<counter>
并更倾向于将其\the<counter>
用于锚点名称。\the<counter>
可能包含奇怪或重复的值。只要\theH<counter>
扩展为简单唯一的字符串,hyperref
就很开心。
以下示例为 提供了唯一定义\theHsection
:
\documentclass{report}
\usepackage{hyperref}
\usepackage{bookmark}
\bookmarksetup{
numbered,
open
}
\renewcommand*{\thesection}{\arabic{section}}
\begin{document}
\tableofcontents
\chapter{First numbered chapter}
\section{AB}
\section{BC}
\section{DE}
\chapter*{First unnumbered chapter}
\addcontentsline{toc}{chapter}{First unnumbered chapter}
\setcounter{section}{0}
\renewcommand*{\theHsection}{chX.\the\value{section}}
\section{FG}
\section{HI}
\section{IJ}
\chapter*{Second unnumbered chapter}
\addcontentsline{toc}{chapter}{Second unnumbered chapter}
\setcounter{section}{0}
\renewcommand*{\theHsection}{chY.\the\value{section}}
\section{KL}
\section{MN}
\section{NO}
\renewcommand*{\theHsection}{\theHchapter.\the\value{section}}
\chapter{Last numbered chapter}
\section{PQ}
\section{RS}
\section{TU}
\end{document}