如何将 \ref 输出格式化为单词而不是数字?

如何将 \ref 输出格式化为单词而不是数字?

我正在处理的课程文档中有一个要求,book要求全部以下的数字(0 到 9,但我认为不是负数)可以写成一个单词。

因此,在我的文档中,我使用 来引用章节标题\ref{}。根据此要求,这些引用也必须写成一个单词(即第一章而不是第 1 章)。

我在网上寻找一些提示,发现可以使用该包将fmtcount数字(在一定范围内)格式化为单词。特别是,\Numberstring{}\Numberstringnum{}被使用。这似乎\ref{}在使用时与命令一起使用\Numberstringnum{}。下面提供了一个最小的工作示例

\documentclass{book}

%\usepackage{hyperref}
\usepackage{fmtcount}

\newcommand{\chapref}[1]{Chapter \ref{#1}}
\newcommand{\cchapref}[1]{Chapter \Numberstring{\ref{#1}}}
\newcommand{\ccchapref}[1]{Chapter \Numberstringnum{\ref{#1}}}

\begin{document}

\chapter{} \label{ch1}

A reference to \chapref{ch1}, but not to \cchapref{ch1}, however, it is one to \ccchapref{ch1}.

\end{document}

输出如下

已编译文档的片段,包含可接受的答案

如果有人尝试使用包含包的 MWE hyperref(我的文档中也有这个包),这个解决方案就会失效。提供了示例输出

编译后的错误文档片段

有人知道该如何做吗?

答案1

对章节编号应用这一要求似乎有些奇怪,因为章节编号只是标签而不是“用于计数的对象”意义上的数字。

您是否还需要用文字对页面进行编号,从 1 到 9?我认为不需要。


您可以使用refcount

\documentclass{book}

\usepackage{refcount}
\usepackage{fmtcount}
\usepackage{hyperref}

\newcommand{\chapref}[1]{Chapter~\ref{#1}}
\newcommand{\cchapref}[1]{Chapter~\hyperref[#1]{\Numberstringnum{\getrefnumber{#1}}}}

\begin{document}

\chapter{Title} \label{ch1}

A reference to \chapref{ch1} and to \cchapref{ch1}.

\end{document}

如果不加载hyperref,第二个命令应该只是

\newcommand{\cchapref}[1]{Chapter~\Numberstringnum{\getrefnumber{#1}}}

图中,红色矩形表示链接。

在此处输入图片描述


稍有不同的版本,其中\chapref使用从 1 到 9 章的单词;\cchapref无论如何也有强制单词。

\documentclass{book}

\usepackage{refcount}
\usepackage{fmtcount}
\usepackage{hyperref}


\newcommand{\chapref}[1]{%
  Chapter~%
  \ifnum\getrefnumber{#1}<10
    \hyperref[#1]{\Numberstringnum{\getrefnumber{#1}}}%
  \else
    \ref{#1}%
  \fi
  }
\newcommand{\cchapref}[1]{Chapter~\hyperref[#1]{\Numberstringnum{\getrefnumber{#1}}}}

\begin{document}

\chapter{Title} \label{ch1}

A reference to \chapref{ch1} and to \cchapref{ch1}.

A reference to \chapref{ch12} and to \cchapref{ch12}.

\setcounter{chapter}{11}

\chapter{Title}\label{ch12}

\end{document}

在此处输入图片描述

相关内容