目的:第一个part的计数器设置为0,第二个part计数器设为1并正常递增。
MWE如下:
\documentclass{book}
\counterwithout{subsection}{section} %为了实现其他排版要求
\usepackage{hyperref}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\part{zeroth part}
\setcounter{part}{0}
\part{first part}
\setcounter{part}{0}
\addtocounter{part}{1}
\chapter{first chapter}
\part{second part}
\chapter{second chapter}
\chapter{third chapter}
\backmatter
\end{document}
复现使用的.latexmkrc:
$pdf_mode = 2;
$postscript_mode = $dvi_mode = 0;
(即使用pdflatex编译)
出现的效果如图:
但是使用xelatex编译,能得到符合预期的目录行为。使用.latexmkrc:
$pdf_mode = 5;
$postscript_mode = $dvi_mode = 0;
效果:
应明白章节标题命令的一个潜在作用(虽然lshort中没有明讲,但基本能自悟到):创建编号的同时给编号计数加1。因此,没有必要在正文区中使用多余的\setcounter,\addtocounter
。
另外,\part
的编号默认为罗马数字样式,该样式没有计数为0的形式吧...这里为方便表示,我修改了\part,\section
的编号样式,您可再另外调整:
\renewcommand{\thepart}{\arabic{part}} % 阿拉伯数字形式
\renewcommand{\thechapter}{\alph{chapter}} % 小写字母形式
由于需求为“第一个\part
的计数为0”,因此在“第一个\part
之前将其计数设为-1:,由此\part
被执行时其计数加1刚好等于0:
\setcounter{part}{-1}
MWE:
\documentclass{book}
\counterwithout{subsection}{section} %为了实现其他排版要求
\renewcommand{\thepart}{\arabic{part}}
\renewcommand{\thechapter}{\alph{chapter}}
\usepackage{hyperref}
\begin{document}
\frontmatter
\tableofcontents
\mainmatter
\setcounter{part}{-1}
\part{zeroth part}
\part{first part}
\chapter{first chapter}
\part{second part}
\chapter{second chapter}
\chapter{third chapter}
\backmatter
\end{document}
效果:
无论哪种编译选项,pdf正常、书签正常。
而且别忘了:使用hyperref宏包时,除latexmk以外都需编译2次。
感谢您的帮助。
测试时发现,罗马数字没有0,所以当样式为罗马数字且计数器为0时,不显示任何内容。如图:

(此为在工程文件改动产生的效果)
我还是不知道为什么pdflatex在初始的MWE下会产生奇怪的书签行为,但就不管它了(ง •_•)ง
补充一下对于「原提问中MWE」的测试结果:
1.「
latexmk mwe
」书签有问题2.「
latexmk -pdf mwe
」书签有问题3.「
latexmk -pdfxe mwe
」书签一切正常4.「
latexmk -pdflua mwe
」书签有问题所以关于「为什么
pdflatex
在初始的MWE下会产生奇怪的书签行为」实际上还和引擎有关。在
book.cls
里定义为:其中核心为
\@chapter
:不难看到
\refstepcounter{chapter}
自动实现了「创建编号的同时给编号计数加1」。所以我会再给出更短的MWE:
有以下两种现象:
pdflatex-pdflatex
或者lualatex-lualatex
编译:xelatex-xelatex
编译得到正常的预期效果:step-further:对于不同的编译引擎
pdflatex
和lualatex
第一次编译得到的.aux
文件xelatex
第一次编译得到的.aux
文件找一下茬,发现一个原因在于不同引擎 可能 「写书签」的方式不尽相同:
以及
@u70550 告诉E老师一个有趣的事:我把MWE缩到更小了,且为方便观察换成
article
类的case。pdflatex
和lualatex
编译就会出现上述“书签混乱”的问题,但xelatex
的无该问题。另外,把如下语句注释则无问题:
或
暂时看不出原因。