我的问题基于这个。也就是说,我希望拥有以下结构:
附录(部分)
附录第一部分(章节)
A.1 第一部分第一节(Section)
以下是 MWE:
\documentclass[11pt,twoside]{report}
\usepackage[hypertexnames=false]{hyperref}
\begin{document}
\tableofcontents
\phantomsection
\chapter*{Preface}
\addcontentsline{toc}{chapter}{Preface}
%===
\phantomsection
\part*{APPENDIX}
\addcontentsline{toc}{part}{APPENDIX}
%
\setcounter{chapter}{0}
\renewcommand{\thechapter}{\Alph{chapter}}
%
\chapter*{First chapter of the appendix}
\addcontentsline{toc}{chapter}{\numberline{A}First chapter of the appendix}
%
\setcounter{section}{0}
\renewcommand{\thesection}{\Alph{chapter} . \arabic{section}}
\section{First section of the first chapter}
\end{document}
对于部分和章节,这很好,但对于部分,我得到
. 1 First part of the first chapter
chapter
也就是说,中的计数器\thesection
丢失了。这是怎么回事?
另外,有趣的是,如果没有,\setcounter{section}{0}
我得到的是,其中 3 是上一章. 3
的值。为什么没有重新初始化它?\thesection
自从我开始提问以来,还有另外一个小问题。在目录中,我看到附录在第 4 页,而在正文中它在第 3 页。
答案1
不用摆弄计数器:您想要的是,对于附录,章节标题的排版就像带星号的一样。
\documentclass[11pt,twoside]{report}
\usepackage{hyperref}
\makeatletter
\newcommand{\startappendix}{%
\cleardoublepage
\appendix
\phantomsection\addcontentsline{toc}{part}{APPENDIX}
\part*{APPENDIX}
\let\@makechapterhead\@makeschapterhead
}
\makeatother
\begin{document}
\tableofcontents
\phantomsection
\chapter*{Preface}
\addcontentsline{toc}{chapter}{Preface}
\chapter{Title}
\section{First}
\section{second}
\startappendix
\chapter{First chapter of the appendix}
\section{First section of the first chapter}
\section{Second section of the first chapter}
\chapter{Second chapter of the appendix}
\section{First section of the first chapter}
\end{document}
答案2
解决你的问题的最简单方法是对章节进行编号。
问题在于计数器chapter
为零。你写章节时没有数字,计数器就不会增加,因此为零。该函数\Alph
将数字转换为大写字母,从 1->A 开始,依此类推,直到 26->Z。高于 26 的数字将出现错误。现在,当计数器为零时,它不会给出任何输出。与下面的代码进行比较
\documentclass{article}
\newcounter{TestCount}
\begin{document}
\setcounter{TestCount}{0}
First: \Alph{TestCount}.
\setcounter{TestCount}{1}
Second: \Alph{TestCount}.
\setcounter{TestCount}{26}
Third: \Alph{TestCount}.
\end{document}
答案3
您之所以得到输出,是因为您使用了\chapter*
,这会导致一个空\thechapter
变量。请尝试使用\chapter{First part of appendix}
。此外,您还应该在问题中提供完整的 MWE(包含文档标题和内容)。
编辑:我的表述不好。\thecapter
是空的,因为计数器章节为 0。要获得所需的行为,您可以像这样手动推进计数器:
\chapter*{foo}
\setcounter{chapter}{1}
为了从整体上摆脱“第 1 章”的束缚,您可以看看这个问题:如何抑制 \chapter 中的“章节”(同时保留编号)
EDIT2:关于目录中部分的错误页面:(仅猜测)这可能是由于\part
命令清除页面造成的。您可以尝试以下更改:
\clearpage
\addcontentsline{toc}{part}{APPENDIX}
\phantomsection
\part*{APPENDIX}
答案4
在我看来,在未编号的章节中使用编号部分很奇怪。
为了防止弄乱数字,我引入了一个假章节计数器\addtocounter{chapter}{-1}\stepcounter{chapter}
——这将重置章节的完整计数器列表。\setcounter{section}{0}
这还不够。
我也换了另一个版本的\appendix
宏。
\documentclass[11pt,twoside]{report}
\usepackage[hypertexnames=false]{hyperref}
\newcounter{fakechapter}
\usepackage{xpatch}
\makeatletter
\AtBeginDocument{%
\xpretocmd{\@schapter}{\phantomsection\refstepcounter{fakechapter}\addtocounter{chapter}{-1}\stepcounter{chapter}}{\typeout{success!}}{}% This will reset the section counter
}
\let\appendixorig\appendix
\renewcommand{\appendix}{%
\appendixorig
\renewcommand{\appendixname}{APPENDIX}
\part*{\appendixname}
\renewcommand{\thefakechapter}{\Alph{fakechapter}}
\renewcommand{\thesection}{\arabic{section}}
\setcounter{fakechapter}{0}
}
\makeatother
\begin{document}
\tableofcontents
\phantomsection
\chapter*{Preface}
\addcontentsline{toc}{chapter}{Preface}
%===
\chapter{Normalchapter}
\section{Foo section}
\section{Foobar section}
\section{FoobarFoo section}
\appendix
\chapter*{First chapter of the appendix}
\addcontentsline{toc}{chapter}{\protect\numberline{\thefakechapter}First chapter of the appendix}
\section{First section of the first chapter}
\end{document}