这是一个很疯狂的问题:有人能写一个代码把数字转换成相应的单词吗?例如:
4 -> 'four'
31 -> 'thirty-one'
等等。显然,建立一个数组来存储数字和与之关联的单词,然后只打印存储的单词而不是数字是不够的。让事情变得更加复杂的是像 11(“eleven”)这样的数字。我打算用它来编号方程式。那么,有人能做到吗?
答案1
您可以使用该fmtcount
包来实现这一点:
\documentclass{minimal}
\usepackage{fmtcount}
\begin{document}
4: \numberstringnum{4}
31: \numberstringnum{31}
\end{document}
分别使用\Numberstringnum
和\NUMBERstringnum
表示大写和全大写版本。
答案2
fmcount
仅适用于 100,000 以下的数字。对于更大的数字,您需要使用numname
它借用了 memoir 类的代码。据我回忆,这可以处理更大的数字。自述文件和软件包文档都没有真正告诉您要使用的命令是什么,因此它们如下:
\numtoname
将数字转换为小写单词(例如 one)\numtoName
同上,但首字母大写\NumToName
如上所述,但所有单词都大写\ordinaltoname
将数字转换为 lc 序数(例如 first)\ordinaltoName
同上但首字母大写\OrdinalToName
同上但所有单词均大写
这个包似乎可以管理所有不超过 TeX 限制 2147483647 的数字。(numname
有帮助地告诉我这是:二十亿,一亿四千七百四十八万三千六百四十七)
答案3
这莫雷努姆软件包已经做到了这一点。
\documentclass{article}
\usepackage{moreenum}
\newcounter{mycounter}
\renewcommand{\themycounter}{\Nthwords{mycounter}}
\begin{document}
\setcounter{mycounter}{11}
\themycounter
\setcounter{mycounter}{470}
\themycounter
\end{document}
结果:
用于\nthwords
小写。我认为在下一版本的软件包中,这些将更改为\nwords
和\Nwords
。