![获取章节引用的字面编号](https://linux22.com/image/376532/%E8%8E%B7%E5%8F%96%E7%AB%A0%E8%8A%82%E5%BC%95%E7%94%A8%E7%9A%84%E5%AD%97%E9%9D%A2%E7%BC%96%E5%8F%B7.png)
当我通过命令获取他的号码时,我尝试输入部分的文字号码而不是数字(“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
答案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}