获取章节引用的字面编号

获取章节引用的字面编号

当我通过命令获取他的号码时,我尝试输入部分的文字号码而不是数字(“ten”而不是“10”)\ref{}

因此,要将数字转换为文字数字,我使用包\numberstringnum{}中的命令fmtcount,如以下 MWE 所示:

\documentclass{article}
\usepackage{fmtcount}

\begin{document}

\section{foo}
\label{sec:foo}

lorem ipsum dolor

\section{bar}
foo reference number : \ref{sec:foo}

foo reference litteral : \numberstringnum{\ref{sec:foo}} % See here

\end{document}

但是,xelatex还是pdflatex拒绝编译它:

! Missing = inserted for \ifnum.
<to be read again> 
                   \hbox 
l.14 ...litteral : \numberstringnum{\ref{sec:foo}}

那么,如何将数字引用转换为文本文字数字?

答案1

使用refcount\getrefnumber

\documentclass{article}
\usepackage{fmtcount,refcount}

\begin{document}

\section{foo}
\label{sec:foo}

lorem ipsum dolor

\section{bar}
foo reference number: \ref{sec:foo}

foo reference in words: \numberstringnum{\getrefnumber{sec:foo}} % See here

\end{document}

在此处输入图片描述

答案2

这种方法不起作用,因为 的内部\ref还会检查标签是否已定义,并且这不是可以赋予​​ 的有效数字\numberstringnum

一种方法是从 LaTeX 内核窃取的定义\ref并使其适应\numberstringnum

\documentclass{article}
\usepackage{fmtcount}

\makeatletter
\def\@setnumref#1#2#3{%
  \ifx#1\relax
   \protect\G@refundefinedtrue
   \nfss@text{\reset@font\bfseries ??}%
   \@latex@warning{Reference `#3' on page \thepage \space
             undefined}%
  \else
   \numberstringnum{\expandafter#2#1}\null
  \fi}
\def\numref#1{\expandafter\@setnumref\csname r@#1\endcsname\@firstoftwo{#1}}
\def\numpageref#1{\expandafter\@setnumref\csname r@#1\endcsname\@secondoftwo{#1}}
\makeatother

\begin{document}

\section{foo}
\label{sec:foo}

lorem ipsum dolor

\section{bar}
foo reference number : \ref{sec:foo}

foo reference litteral : \numref{sec:foo} on page \numpageref{sec:foo} % See here

\end{document}

在此处输入图片描述

相关内容