为大写罗马数字添加书签

为大写罗马数字添加书签

拥有 MWE:

\documentclass{article}
\usepackage[backref=page,hypertexnames]{hyperref}
\newcommand{\RNum}[1]{\uppercase\expandafter{\romannumeral #1\relax}}

\begin{document}
    \section{Sec. \RNum{1}}
    \section{Sec. \RNum{2}}
\end{document}

PDF 中的书签显示数字确实是小写(而应该是大写)。如何修复?

答案1

您需要一个可扩展的版本,\RNum以便它正确显示在书签中。但\uppercase不可扩展(请参阅\expandafter 与 \uppercase),因此你需要与 LaTeX 内核略有不同的定义(另请参阅如何在文本中获取罗马数字?, 谢谢至马塞尔·克鲁格指出最初的答案只是逐字复制\RNum

\documentclass{article}
\usepackage{hyperref}

\makeatletter
\newcommand*{\RNum}{} % empty def to throw error if name already taken
\let\RNum\@Roman      % actual definition
\makeatother

\begin{document}
    \section{Sec.\ \RNum{1}}
    \section{Sec.\ \RNum{2}}
\end{document}

书签侧栏显示“Sec. I”和“Sec. II”

相关内容