中间页码

中间页码

我想在我准备的文档中同时使用常规页码(如 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类。

相关内容