采用罗马数字和阿拉伯数字混合格式的页码

采用罗马数字和阿拉伯数字混合格式的页码

如何创建混合罗马数字-阿拉伯数字 ( <Roman numeral>.<Arabic numeral>) 格式的页码?

  • 它们以如下方式递增:“I.1”、“I.2”、“I.3”等等。
  • 仅当我手动指定增加时罗马数字才会改变。
  • 我可以手动增加罗马数字,而不改变阿拉伯数字:“I.30”,\stepcounter{pageroman}“II.31”,“II.32”,“II.33”,\stepcounter{pageroman},“III.34”等等。
  • 阿拉伯数字的作用就像page计数器(每页自动增加)。
  • 我可以手动更改阿拉伯数字,而不更改罗马数字:“IV.1”,“IV.2”,\setcounter{pagearabic}{20}“IV.20”,“IV.21”等。
  • pageref与显示“I.30”交叉引用。

答案1

还有更多 LaTeX-y 解决方案,使用\pagenumbering(有多少人知道这个命令?)

\documentclass{article}

\makeatletter

\newcounter{pageroman}
\stepcounter{pageroman}

\def\@pageromanarabic{\@Roman\c@pageroman.\@arabic}
\pagenumbering{pageromanarabic}

\makeatother

\begin{document}

lorem ipsum\label{first}\newpage
lorem ipsum\newpage
lorem ipsum\newpage
lorem ipsum\newpage
\stepcounter{pageroman}
lorem ipsum\newpage
lorem ipsum, go to page \pageref{first}\newpage
\end{document}

答案2

您可以简单地\thepage使用page计数器重新定义并在前面添加一个用罗马数字表示的新计数器:

\documentclass{article}
\usepackage{lipsum}

\newcounter{mycntr}
\stepcounter{mycntr}
\renewcommand\thepage{\Roman{mycntr}.\arabic{page}}

\begin{document}
\pageref{sec:one} \pageref{sec:two} \pageref{sec:three} \pageref{sec:four}

\section{Test}\label{sec:one}
\lipsum[1-6]

\section{Test}\label{sec:two}
\lipsum[1-6]

\stepcounter{mycntr}
\section{Test}\label{sec:three}
\lipsum[1-6]

\stepcounter{page}
\section{Test}\label{sec:four}
\lipsum[1-6]

\end{document}

相关内容