在我的文章中,正文部分之前的所有部分都必须用罗马数字编号。标题页之后,目录获得正确的编号 I。包含章节的以下页面编号为 1、2、... 最小示例将显示这一点:
\documentclass{article}
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[C]{}
\fancyfoot[R]{
\footnotesize
page \thepage\space of \pageref{LastPage} \\
}
\begin{document}
\begin{titlepage}
This is the title.
\end{titlepage}
\pagenumbering{Roman}
\tableofcontents
\newpage
\pagenumbering{arabic}
\section{Section 1}
\subsection{Subsection 1.1}
\end{document}
但是,对 的引用LastPage
并不符合 的定义\pagenumbering
。如您所见,出现了如下一行:
第 1 页,共 1 页
我的目的是将参考文献“拆分”LastPage
为文档开头的“罗马”部分和“阿拉伯”部分,例如:
第 II 页,共 IV 页......(及后续)......第 5 页,共 15 页
我已经看过了如何在我的文档中添加“第 # 页,共 ## 页”?,但我找不到合适的解决方案。
答案1
这是我的答案
\documentclass{article}
\usepackage{refcount}
\usepackage{lastpage}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{} % clear all fields
\renewcommand{\headrulewidth}{0pt}
\fancyfoot[R]{%
\footnotesize
page \thepage\space of \computelastpage
}
\usepackage{lipsum}
\makeatletter
\newif\if@mainmatter
\newcommand{\frontmatter}{%
\clearpage
\pagenumbering{Roman}
\edef\computelastpage{%
\uppercase{\romannumeral\numexpr\getpagerefnumber{LastFrontPage}-1\relax}}}
\newcommand{\mainmatter}{%
\clearpage
\immediate\write\@auxout{\noexpand\newlabel{LastFrontPage}{{}{\arabic{page}}}}%
\@mainmattertrue
\pagenumbering{arabic}
\def\computelastpage{\pageref{LastPage}}}
\makeatother
\begin{document}
\begin{titlepage}
This is the title.
\end{titlepage}
\frontmatter
\tableofcontents
\newpage
\lipsum
\mainmatter
\section{Section 1}
\subsection{Subsection 1.1}
\lipsum
\end{document}
我添加了一些 Lipsum 段落来展示结果。通过将\pagenumbering
说明隐藏在更高级别的说明中,您还可以获得更整洁的文档。
该\mainmatter
指令写入一个\newlabel
引用刚刚创建的新页面,但是前更改编号。因此页码将比前言最终页多一页。有了适当的定义\computelastpage
(前言和正文不同),我们就可以参考数字。使用\getpagerefcount
提供的内容refcount
至关重要。