使用与 hyperref 兼容的 romanbar 进行页码编排

使用与 hyperref 兼容的 romanbar 进行页码编排

有没有一个好的方法可以使用该包romanbar进行页码编排,并且兼容hyperref

下面的例子没有它也可以工作,hyperref但是有它就不行。

\documentclass[12pt,a4paper,ngerman]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{romanbar,hyperref}

\begin{document}
\makeatletter
\renewcommand*{\thepage}{\Roman@bar{\Roman{page}}}%
\makeatother
\jobname

\end{document}

用 激活此功能就更好了\pagenumbering{Roman}

这只是一个例子。我知道\thepage以那种方式改变可能不是一个好主意。

答案1

页面标签只是文本字符串,因此romanbar不支持额外的包栏。但它们可以轻松被禁用:

\usepackage{romanbar,hyperref}
\pdfstringdefDisableCommands{\let\Roman@bar\@firstofone}

\@firstofone也可以用\@empty\relax来代替。)

答案2

我通过转换简化了用法答案 1放入 LaTeX 包中。请参阅romanbarpagenumber在 CTAN

\usepackage{romanbarpagenumber}
% And after \begin{document}
\pagenumbering{Roman}

答案3

谢谢。我刚发现我也可以重新定义,\pagemark这样更优雅一些。

我使用它来设置\pagemark何时\pagenumbering扩展。

\let\pagenumberingRaw\pagenumbering\relax%
\renewcommand{\pagenumbering}[1]{%
  \pagenumberingRaw{#1}%
  \ifthenelse{\equal{#1}{Roman}}{%
    %\renewcommand*{\pagemark}{\Roman@bar{\Roman{page}}}% not added by \pageref.
    \renewcommand*{\thepage}{\Roman@bar{\Roman{page}}}%
  }{
    %\renewcommand*{\pagemark}{\thepage}%
  }
}

编辑:毕竟,重新定义\thepage接缝是最好的方法,因为它也被使用\pageref。再次感谢 Heiko Oberdiek。

相关内容