我想在我准备的文档中同时使用常规页码(如 1、2、3 等)和 nm 页码(1-1、1-2、2-1、2-2 等)。
到目前为止,我一直在使用自定义计数器,但显而易见的答案是,用它\addtocounter
来减去当前章节开始的页面,\thepage
这违背了目的,因为我仍然想要常规页码。
我无法真正发布 MWE,因为我真的不知道该怎么做。下面的“伪 MWE”中\nmpage
有一个假设命令,它以格式输出页码<chapter>-<page_of_chapter>
,因此第 2 章的第 5 页将是 2-5。
关于如何实现这一目标,您有什么想法吗?
\documentclass[12pt,a4paper,openany]{book}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\chaptermark}[1]{%
\markboth{#1}{}}
\renewcommand{\sectionmark}[1]{%
\markright{\thesection #1}}
\fancyhf{}
\fancyhead[LE,RO]{\thepage}%
\fancyhead[LO]{\rightmark}%
\fancyhead[RE]{\leftmark}%
\fancyfoot[LE,RO]{\nmpage}%
\begin{document}
\chapter{Chapter 1}
Onononononon
\chapter{Chapter 2}
Yada yada yada.
\end{document}
答案1
主页号\thepage
采用常规(阿拉伯)编号。这也用于页码引用。因此我们不需要在这里做任何事情。
此外,页脚应显示形式为 的页码\thechapter-<arabic page relative to the chapter>
。我们所需要的只是章节开始的页码。由于\chaptermark
已经重新定义, 的定义\StartChapterPage
放在那里。章节开始新的一页,因此我们可以使用它\value{page}
而不必借助于引用系统。 的第二个优点\chaptermark
是它不需要未编号的章节。为了跳过前几页,\nmpage
定义为空,\printnmpage
定义为执行实际工作。在第一个编号的章节中,\nmpage
的含义\printnmpage
和复合页码显示如下:
问题的 MWE 中添加了以下定义:
\newcommand*{\StartChapterPage}{1}
\newcommand*{\nmpage}{}
\newcommand*{\printnmpage}{%
\thechapter-\the\numexpr\value{page}-\StartChapterPage+1\relax
}
变化的定义\chaptermark
如下:
\renewcommand{\chaptermark}[1]{%
\xdef\StartChapterPage{\the\value{page}}%
\global\let\nmpage\printnmpage
\markboth{#1}{}}
答案2
可以通过创建一个新的计数器来实现,该计数器在每一章中重置,然后在每次标题中使用时增加它:
\documentclass{book}
\newcounter{nmpage}[chapter]
\usepackage{fancyhdr}
\pagestyle{fancy}
\lfoot{}
\cfoot{\thechapter--\addtocounter{nmpage}{1}\thenmpage}
\usepackage{lipsum}
\begin{document}
\chapter{The beginning}
\thispagestyle{fancy}
\lipsum[1-6]
\chapter{More Material}
\thispagestyle{fancy}
\lipsum[7-8]
\end{document}
也许查看memoir
类可能是一个更好的地方。我正在使用book
类。