在 \mainmatter 之前使用负数页码

在 \mainmatter 之前使用负数页码

我想将负数页面放在书籍文档类的主页之前。

因此,我将得到类似页面 -4、-3、-2、-1、0(这是第一个主页)、1、2… 的内容

document我可以将其放在环境的顶部\setcounter{page}{-<number>},但我必须知道它之前有多少页\mainmatter才能将其作为<number>变量。那么我如何才能获取这个值呢?

答案1

以下示例使用包zref,尤其是 中的zref-abspage,它为绝对页码提供了计数器。将具有属性(绝对页码)的\mainmatter引用写入文件。在下一次运行中,页码在 的开头设置为 负数:mainmatterabspage.aux\frontmatter

\documentclass{book}

\usepackage{zref-abspage}

\makeatletter
% Add label to \mainmatter for the absolute page number
\g@addto@macro\mainmatter{%
  \zref@labelbyprops{mainmatter}{abspage}%
}
\g@addto@macro\frontmatter{%
  % Overwrite \pagenumbering{roman} of the original \frontmatter
  \pagenumbering{arabic}%
  % Set the page number to the number of pages in the frontmatter
  % with reverted sign.
  \setcounter{page}{-\zref@extractdefault{mainmatter}{abspage}{0}}%
  % The label is already on page n + 1, the first page of the main matter.
  \stepcounter{page}%
  % Also page number 0 is available:
  \stepcounter{page}%
  % Ensure, that the first page is odd-numbered.
  \ifodd\value{page}%
  \else
    \addtocounter{page}{-1}%
  \fi
  \zref@refused{mainmatter}%
}
\makeatother

\begin{document}
\frontmatter
\tableofcontents
\chapter{Introduction}
\mainmatter
\chapter{Main chapter}
\end{document}

结果:

  • 第 3 页:目录
  • 第 -2 页:由于 \cleardoublepage 的下列内容,页面变为空白\chapter
  • 第 1 页:章节“简介”
  • 第 0 页:由于 \cleardobulepage 以下内容,页面为空\mainmatter
  • 第 1 页:章节“主要章节”,主要内容的第一页

相关内容