如何在书籍类中自定义页码方式为“章节号+页码”?

如何在书籍类中自定义页码方式为“章节号+页码”?

我正在撰写我的最终论文,我想更改默认页码,例如(也在目录中):

1. Introduction             1-1
   1.1 Background ......... 1-1
   1.1 Object ......... ... 1-2
   1.1 Outline ............ 1-4

2. State of the art         2-1
   2.1 Introduction ....... 2-1
   2.1 Blabla ......... ... 2-4
   2.1 Blabla ............. 2-18

  ...

Reference                   R-1
Appendix A                  A-1
Appendix B                  A-3

其中R和分别A代表ReferenceAppendix

使用fancyhdr

\fancyhead[LE]{ \thechapter - \thepage }
\fancyhead[RO]{ \thechapter - \thepage }

其中,第 5 号是第 2 章的第一页,应为2-1,第二个页码应为 ,2-2而不是2-6。此外, 中的罗马页码frontmatter应为 ,例如0-XVetc。

在此处输入图片描述

我浏览了一些相关的帖子,但它们都无法解决这个问题。

我想要的是使整个文档的页码以Chapter No. + page No.开头chapter No. + 1,并使用默认的罗马数字作为frontmatter页码without chapter No.

那么该如何解决这个问题呢?

答案1

\thepage在 的开头重新定义\mainmatter,并更改内部宏的定义\@chapter,以便如果开关为真,它也会将页面计数器重置为 1。mainmatter(请注意,\clearpage/\cleardoublepage在 之前调用\@chapter。)

\documentclass{book}

\usepackage{etoolbox}

\makeatletter
\appto{\mainmatter}{\renewcommand*{\thepage}{\thechapter-\arabic{page}}}
\patchcmd{\@chapter}{\if@mainmatter}{\if@mainmatter\setcounter{page}{1}}{}{}
% If \backmatter is used
\appto{\backmatter}{%
  \renewcommand*{\thepage}{\arabic{page}}%
  \setcounter{page}{1}%
}
\makeatother

\usepackage{lipsum}

\begin{document}

\frontmatter

\tableofcontents

\chapter{Preface}

\lipsum[1-3]

\mainmatter

\chapter{foo}

\section{foobar}

\lipsum[1-12]

\chapter{gnu}

\section{gnugnat}

\lipsum[1-12]

\cleardoublepage
\renewcommand*{\thepage}{R-\arabic{page}}
\setcounter{page}{1}

\addcontentsline{toc}{chapter}{\bibname}% optional

% "Fake" Bibliography chapter
\begin{thebibliography}{9}
\bibitem{A01} A bibitem.
\end{thebibliography}

\cleardoublepage
\renewcommand*{\thepage}{\thechapter-\arabic{page}}
\appendix

\chapter{appfoo}

\lipsum[1-12]

\end{document}​

编辑:如果您坚持手动“编号”附录章节,这里有一个替代方案。另请注意,更新后的页码编号方案不一致(部分章节以 [Prefix-]1 页开头,但并非所有章节都是如此)。

\documentclass{book}

\usepackage{etoolbox}

\makeatletter
\appto{\mainmatter}{\renewcommand*{\thepage}{\thechapter-\arabic{page}}}
\patchcmd{\@chapter}{\if@mainmatter}{\if@mainmatter\setcounter{page}{1}}{}{}
\makeatother

\usepackage{lipsum}

\begin{document}

\frontmatter

\tableofcontents

\chapter{Preface}

\lipsum[1-3]

\mainmatter

\chapter{foo}

\section{foobar}

\lipsum[1-12]

\chapter{gnu}

\section{gnugnat}

\lipsum[1-12]

\cleardoublepage
\renewcommand*{\thepage}{R-\arabic{page}}
\setcounter{page}{1}

\addcontentsline{toc}{chapter}{\bibname}% optional

% "Fake" Bibliography chapter
\begin{thebibliography}{9}
\bibitem{A01} A bibitem.
\end{thebibliography}

\cleardoublepage
\renewcommand*{\thepage}{A-\arabic{page}}
\setcounter{page}{1}
\backmatter

\chapter{Appendix~A}

\lipsum[1-12]

\chapter{Appendix~B}

\lipsum[1-12]

\end{document}

相关内容