![如何将 \ref 输出格式化为单词而不是数字?](https://linux22.com/image/409644/%E5%A6%82%E4%BD%95%E5%B0%86%20%5Cref%20%E8%BE%93%E5%87%BA%E6%A0%BC%E5%BC%8F%E5%8C%96%E4%B8%BA%E5%8D%95%E8%AF%8D%E8%80%8C%E4%B8%8D%E6%98%AF%E6%95%B0%E5%AD%97%EF%BC%9F.png)
我正在处理的课程文档中有一个要求,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}