我想在正文完成后继续对文档的前言进行罗马数字编号。遗憾的是,以下方法不起作用。计数器从 1 重新开始。
\pagenumbering{roman}
...
\setcounter{savepage}{\number\value{page}}
\newpage
\pagenumbering{arabic}
\section{Introduction}
\lipsum{}
\newpage
\setcounter{page}{\number\value{savepage}}
\pagenumbering{roman}
\begin{appendix}
\section*{Appendix}
\end{appendix}
答案1
\pagenumbering
做以下两件事(来自latex.ltx
):
\def\pagenumbering#1{%
\global\c@page \@ne
\gdef\thepage{\csname @#1\endcsname \c@page}}
- 页码设置为一(
\global\c@page \@ne
) - 页码表示更改为使用参数 (
\gdef\thepage{\csname @#1\endcsname \c@page}
)
由于它将页码重置为 1,因此您保存和恢复页码的操作不会保留。因此,请使用以下编码顺序:
\pagenumbering{roman}
\setcounter{page}{\value{savepage}}
请注意,这将使附录中的第一页相当于你的前页。如果您希望它从下一页开始,请使用
\setcounter{page}{\numexpr\value{savepage}+1}
答案2
比 Werner 的解决方案稍微复杂一些,但可以存储整个“计数器”树。
使用包xassoccnt
,定义一个backup counter group
,比如说pagebackup
,用计数器填充它page
,将状态存储到某个 id 中(比如说roman
),然后在将计数器输出roman
再次更改为 后恢复它\pagenumbering
。
在下面的使用示例中,前五页vi
按要求用罗马数字编号,附录编号继续用 。
我同意,对于这样的场合来说这太过分了,但对于其他问题来说,了解一下还是有好处的。
\documentclass{article}
\usepackage{xassoccnt}
\DeclareBackupCountersGroupName{pagebackup}
\AssignBackupCounters[name=pagebackup]{page}
\usepackage{blindtext}
\begin{document}
\pagenumbering{roman}
\blindtext[20]
\clearpage
\BackupCounterGroup[backup-id=roman]{pagebackup}
\pagenumbering{arabic}
\section{Introduction}
\blindtext[10]
\clearpage
\pagenumbering{roman}
\RestoreBackupCounterGroup[backup-id=roman]{pagebackup}
\appendix
\section*{Appendix}
\blindtext[50]
\end{document}