使用 pageref 在页脚中混合使用罗马和阿拉伯页码

使用 pageref 在页脚中混合使用罗马和阿拉伯页码

在我的文章中,正文部分之前的所有部分都必须用罗马数字编号。标题页之后,目录获得正确的编号 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至关重要。

相关内容