如何用罗马连字符号样式进行页码编排?

如何用罗马连字符号样式进行页码编排?

我使用罗马页码作为前言,我只是想知道,是否可以将这些罗马数字作为连字符?

看。

罗曼:

罗马:

答案1

这引入了两个新的编号:xromanxRoman,它们会尝试执行您想要的操作。我们必须引入自己的 for 循环,因为我们必须使所有内容都可扩展。结果,我们只需在字母之间添加一个负空格。我们对小写字母使用小型大写字母,并使用一个强大的命令技巧在上添加点i

编辑:新版本与hyperref软件包一起工作时不会引发警告。

编辑2:新版本允许对点进行水平调整i

在此处输入图片描述

\documentclass{article}

\pagenumbering{xroman}

\usepackage{hyperref}

\makeatletter
\DeclareRobustCommand \i@xroman{\rlap{\kern-0.007em\.{}}i}
\def \@xroman@for #1#2\@nil{\if i#1\i@xroman\else#1\fi\ifx\relax#2\relax\else\hskip-0.093em\@xroman@for#2\@nil\fi}
\def \@xRoman@for #1#2\@nil{\uppercase{#1}\ifx\relax#2\else\hskip-0.09em\@xRoman@for#2\@nil\fi}
\newcommand \@Xroman [1]{\begingroup\scshape\expandafter\expandafter\expandafter\@xroman@for\@roman{#1}\relax\@nil\endgroup}
\newcommand \@XRoman [1]{\begingroup        \expandafter\expandafter\expandafter\@xRoman@for\@roman{#1}\relax\@nil\endgroup}
\newcommand \xroman [1]{\expandafter\@xroman\csname c@#1\endcsname}
\newcommand \xRoman [1]{\expandafter\@xRoman\csname c@#1\endcsname}
\AtBeginDocument{\@ifundefined{texorpdfstring}{
  \let\@xroman\@Xroman
  \let\@xRoman\@XRoman
}{
  \newcommand \@xroman [1]{\texorpdfstring{\@Xroman{#1}}{\@roman{#1}}}
  \newcommand \@xRoman [1]{\texorpdfstring{\@XRoman{#1}}{\@Roman{#1}}}
}}
\makeatother  

\begin{document}

\setcounter{page}{3678}

\section{ABC}\label{abc}

This is Section \ref{abc} on page \pageref{abc}.

hello

\end{document}

相关内容