summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/numname
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/numname
Initial commit
Diffstat (limited to 'macros/latex/contrib/numname')
-rw-r--r--macros/latex/contrib/numname/README7
-rw-r--r--macros/latex/contrib/numname/numname.pdfbin0 -> 113649 bytes
-rw-r--r--macros/latex/contrib/numname/numname.sty591
-rw-r--r--macros/latex/contrib/numname/numname.tex34
4 files changed, 632 insertions, 0 deletions
diff --git a/macros/latex/contrib/numname/README b/macros/latex/contrib/numname/README
new file mode 100644
index 0000000000..847772addf
--- /dev/null
+++ b/macros/latex/contrib/numname/README
@@ -0,0 +1,7 @@
+This package converts a numerical number to the english spelled out
+name of the number. For example, 1-> one, 2-> two, 12-> twelve. It
+can also convert to the ordinal number, 1->first, 2->second, etc.
+
+This code was cut and paste from the memoir.cls for use as an
+independent package for projects which prefer not to use the memoir
+class.
diff --git a/macros/latex/contrib/numname/numname.pdf b/macros/latex/contrib/numname/numname.pdf
new file mode 100644
index 0000000000..df025610e6
--- /dev/null
+++ b/macros/latex/contrib/numname/numname.pdf
Binary files differ
diff --git a/macros/latex/contrib/numname/numname.sty b/macros/latex/contrib/numname/numname.sty
new file mode 100644
index 0000000000..f2ca80ae18
--- /dev/null
+++ b/macros/latex/contrib/numname/numname.sty
@@ -0,0 +1,591 @@
+%%
+%%
+%% This is file is `numname.sty'.
+%%
+%% This is file is the number formatting portion of `memoir.cls'. And provides
+%% some simple commands to write out the english name of a number. Refer to the
+%% memoir packages documentation for usage.
+%%
+%% Author: S Joshua Swamidass
+%%
+%% The header of the original source file this was generated from:
+%%
+%% memoir.dtx (with options: `class')
+%%
+%% Author: Peter Wilson (herries dot press at earthlink dot net)
+%% Herries Press
+%% Copyright 2001--2005 Peter R. Wilson
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3 of this license or (at your option) any
+%% later version.
+%% The latest version of the license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2003/06/01 or later.
+%%
+%% This work has the LPPL maintenance status "author-maintained".
+%%
+%% This work consists of the files listed in the README file.
+%%
+%%
+%%
+
+%%%%%%%%%%%%%%%%%%%% number formatting
+
+\newif\iflowernumtoname
+ \lowernumtonamefalse
+\newif\ifpriornum
+\newif\ifminusnumber
+\newif\ifnotnumtonameallcaps
+\newif\ifmakeordinal
+
+\newcommand*{\namenumberand}{ and }
+\newcommand*{\namenumbercomma}{, }
+\newcommand*{\lcminusname}{minus }
+\newcommand*{\ucminusname}{Minus }
+\let\minusname\lcminusname
+\newcommand*{\fnumbersep}{,}
+\newcommand*\tensunitsep{-}
+\newcommand*{\nthstring}{th} % nth
+\newcommand*{\iststring}{st} % 1st
+\newcommand*{\iindstring}{nd} % 2nd
+\newcommand*{\iiirdstring}{rd} % 3rd
+\newcommand*{\tiethstring}{tieth} % tieth
+\newcommand*{\teenstring}{teen} % teen
+\newcommand{\ordscript}[1]{#1}
+
+\chardef\m@mten=10 % shorthand for 10
+
+\newcounter{ism@mctr} % units
+\newcounter{xsm@mctr} % tens
+\newcounter{csm@mctr} % hundreds
+\newcounter{ksm@mctr} % thousands
+\newcounter{xksm@mctr} % ten thousands
+\newcounter{cksm@mctr} % hundred thousands
+\newcounter{msm@mctr} % millions
+\newcounter{xmsm@mctr} % ten millions
+\newcounter{cmsm@mctr} % hundred millions
+\newcounter{bsm@mctr} % billions
+\newcounter{workm@mctr}
+
+\newcommand*{\numdigits}[1]{%
+ \setcounter{ism@mctr}{0}%
+ \setcounter{xsm@mctr}{0}%
+ \setcounter{csm@mctr}{0}%
+ \setcounter{ksm@mctr}{0}%
+ \setcounter{xksm@mctr}{0}%
+ \setcounter{cksm@mctr}{0}%
+ \setcounter{msm@mctr}{0}%
+ \setcounter{xmsm@mctr}{0}%
+ \setcounter{cmsm@mctr}{0}%
+ \setcounter{bsm@mctr}{0}%
+ \setcounter{workm@mctr}{#1}%
+ \minusnumberfalse
+ \ifnum \c@workm@mctr < \z@ % negative
+ \minusnumbertrue
+ \c@workm@mctr = -\c@workm@mctr
+ \fi
+ \ifnum \c@workm@mctr > \m@ne % units
+ \c@ism@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@ism@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % tens
+ \c@xsm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@xsm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % hundreds
+ \c@csm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@csm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % thousands
+ \c@ksm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@ksm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % ten thousands
+ \c@xksm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@xksm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % hundred thousands
+ \c@cksm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@cksm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % millions
+ \c@msm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@msm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % ten millions
+ \c@xmsm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@xmsm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@ % hundred millions
+ \c@cmsm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@cmsm@mctr by -\c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \fi
+ \ifnum \c@workm@mctr > \z@% billions
+ \c@bsm@mctr = \c@workm@mctr
+ \divide \c@workm@mctr by \m@mten
+ \multiply \c@workm@mctr by \m@mten
+ \advance \c@bsm@mctr by -\c@workm@mctr
+ \fi
+}
+
+\newcommand*{\form@tnumber}[1]{%
+ \numdigits{#1}%
+ \ifminusnumber-\fi
+ \priornumfalse
+ \ifnum \c@bsm@mctr > \z@ % billions
+ \priornumtrue
+ \thebsm@mctr\fnumbersep
+ \fi
+ \ifpriornum % hundred millions
+ \thecmsm@mctr
+ \else
+ \ifnum \c@cmsm@mctr > \z@
+ \priornumtrue
+ \thecmsm@mctr
+ \fi
+ \fi
+ \ifpriornum % ten millions
+ \thexmsm@mctr
+ \else
+ \ifnum \c@xmsm@mctr > \z@
+ \priornumtrue
+ \thexmsm@mctr
+ \fi
+ \fi
+ \ifpriornum % millions
+ \themsm@mctr\fnumbersep
+ \else
+ \ifnum \c@msm@mctr > \z@
+ \priornumtrue
+ \themsm@mctr\fnumbersep
+ \fi
+ \fi
+ \ifpriornum % hundred thousands
+ \thecksm@mctr
+ \else
+ \ifnum \c@cksm@mctr > \z@
+ \priornumtrue
+ \thecksm@mctr
+ \fi
+ \fi
+ \ifpriornum % ten thousands
+ \thexksm@mctr
+ \else
+ \ifnum \c@xksm@mctr > \z@
+ \priornumtrue
+ \thexksm@mctr
+ \fi
+ \fi
+ \ifpriornum % thousands
+ \theksm@mctr\fnumbersep
+ \else
+ \ifnum \c@ksm@mctr > \z@
+ \priornumtrue
+ \theksm@mctr\fnumbersep
+ \fi
+ \fi
+ \ifpriornum % hundreds
+ \thecsm@mctr
+ \else
+ \ifnum \c@csm@mctr > \z@
+ \priornumtrue
+ \thecsm@mctr
+ \fi
+ \fi
+ \ifpriornum % tens
+ \thexsm@mctr
+ \else
+ \ifnum \c@xsm@mctr > \z@
+ \priornumtrue
+ \thexsm@mctr
+ \fi
+ \fi
+ \theism@mctr % units
+}
+
+\newcommand*{\cardinal}[1]{%
+ \begingroup
+ \let\fnumbersep\relax
+ \form@tnumber{#1}%
+ \endgroup}
+\newcommand*{\fcardinal}[1]{%
+ \begingroup
+ \form@tnumber{#1}%
+ \endgroup}
+
+\newcommand*{\ordinal}[1]{%
+ \begingroup
+ \let\fnumbersep\relax
+ \form@tnumber{#1}%
+ \let\ordstring\nthstring
+ \ifnum \c@xsm@mctr=\@ne\else
+ \ifcase \c@ism@mctr
+ \or \let\ordstring\iststring% 1st
+ \or \let\ordstring\iindstring% 2nd
+ \or \let\ordstring\iiirdstring% 3rd
+ \fi
+ \fi
+ \ordscript{\ordstring}%
+ \endgroup
+}
+\newcommand*{\fordinal}[1]{%
+ \begingroup
+ \form@tnumber{#1}%
+ \let\ordstring\nthstring
+ \ifnum \c@xsm@mctr=\@ne\else
+ \ifcase \c@ism@mctr
+ \or \let\ordstring\iststring% 1st
+ \or \let\ordstring\iindstring% 2nd
+ \or \let\ordstring\iiirdstring% 3rd
+ \fi
+ \fi
+ \ordscript{\ordstring}%
+ \endgroup
+}
+
+\newcommand*\nNameo{\iflowernumtoname z\else Z\fi ero}
+\newcommand*\nNamec{\iflowernumtoname h\else H\fi undred}
+\newcommand*\nNamem{\iflowernumtoname t\else T\fi housand}
+\newcommand*\nNamemm{\iflowernumtoname m\else M\fi illion}
+\newcommand*\nNamemmm{\iflowernumtoname b\else B\fi illion}
+
+\newcommand*\nNamei{\iflowernumtoname o\else O\fi ne}
+\newcommand*\nNameii{\iflowernumtoname t\else T\fi wo}
+\newcommand*\nNameiii{\iflowernumtoname t\else T\fi hree}
+\newcommand*\nNameiv{\iflowernumtoname f\else F\fi our}
+\newcommand*\nNamev{\iflowernumtoname f\else F\fi ive}
+\newcommand*\nNamevi{\iflowernumtoname s\else S\fi ix}
+\newcommand*\nNamevii{\iflowernumtoname s\else S\fi even}
+\newcommand*\nNameviii{\iflowernumtoname e\else E\fi ight}
+\newcommand*\nNameix{\iflowernumtoname n\else N\fi ine}
+\newcommand*\nNamex{\iflowernumtoname t\else T\fi en}
+\newcommand*\nNamexi{\iflowernumtoname e\else E\fi leven}
+\newcommand*\nNamexii{\iflowernumtoname t\else T\fi welve}
+\newcommand*\nNamexiii{\iflowernumtoname t\else T\fi hir\teenstring}
+\newcommand*\nNamexiv{\iflowernumtoname f\else F\fi our\teenstring}
+\newcommand*\nNamexv{\iflowernumtoname f\else F\fi if\teenstring}
+\newcommand*\nNamexvi{\iflowernumtoname s\else S\fi ix\teenstring}
+\newcommand*\nNamexvii{\iflowernumtoname s\else S\fi even\teenstring}
+\newcommand*\nNamexviii{\iflowernumtoname e\else E\fi igh\teenstring}
+\newcommand*\nNamexix{\iflowernumtoname n\else N\fi ine\teenstring}
+\newcommand*\nNamexx{\iflowernumtoname t\else T\fi wenty}
+\newcommand*\nNamexxx{\iflowernumtoname t\else T\fi hirty}
+\newcommand*\nNamexl{\iflowernumtoname f\else F\fi orty}
+\newcommand*\nNamel{\iflowernumtoname f\else F\fi ifty}
+\newcommand*\nNamelx{\iflowernumtoname s\else S\fi ixty}
+\newcommand*\nNamelxx{\iflowernumtoname s\else S\fi eventy}
+\newcommand*\nNamelxxx{\iflowernumtoname e\else E\fi ighty}
+\newcommand*\nNamexc{\iflowernumtoname n\else N\fi inety}
+
+\newcommand*{\unitnumbername}[1]{%
+ \ifcase #1 \nNameo\or
+ \nNamei\or
+ \nNameii\or
+ \nNameiii\or
+ \nNameiv\or
+ \nNamev\or
+ \nNamevi\or
+ \nNamevii\or
+ \nNameviii\or
+ \nNameix\fi}
+
+\newcommand*{\teennumbername}[1]{%
+ \ifcase #1 \nNamex\or
+ \nNamexi\or
+ \nNamexii\or
+ \nNamexiii\or
+ \nNamexiv\or
+ \nNamexv\or
+ \nNamexvi\or
+ \nNamexvii\or
+ \nNamexviii\or
+ \nNamexix\fi}
+
+\newcommand*{\tensnumbername}[2]{%
+ \ifnum #1=\@ne
+ \teennumbername{#2}\ifnotnumtonameallcaps\lowernumtonametrue\fi
+ \else
+ \ifcase #1
+ \or
+ \or \nNamexx
+ \or \nNamexxx
+ \or \nNamexl
+ \or \nNamel
+ \or \nNamelx
+ \or \nNamelxx
+ \or \nNamelxxx
+ \or \nNamexc
+ \fi
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi
+ \ifnum #2 > \z@ \tensunitsep\unitnumbername{#2}\fi
+ \fi}
+
+\newcommand*\nthNameo{\nNameo\nthstring}
+\newcommand*\nthNamei{\iflowernumtoname f\else F\fi irst}
+\newcommand*\nthNameii{\iflowernumtoname s\else S\fi econd}
+\newcommand*\nthNameiii{\iflowernumtoname t\else T\fi hird}
+\newcommand*\nthNameiv{\nNameiv\nthstring}
+\newcommand*\nthNamev{\iflowernumtoname f\else F\fi if\nthstring}
+\newcommand*\nthNamevi{\nNamevi\nthstring}
+\newcommand*\nthNamevii{\nNamevii\nthstring}
+\newcommand*\nthNameviii{\iflowernumtoname e\else E\fi igh\nthstring}
+\newcommand*\nthNameix{\iflowernumtoname n\else N\fi in\nthstring}
+\newcommand*\nthNamexii{\iflowernumtoname t\else T\fi welf\nthstring}
+
+\newcommand*{\unitordinalname}[1]{%
+ \ifcase #1 \nthNameo\or
+ \nthNamei\or
+ \nthNameii\or
+ \nthNameiii\or
+ \nthNameiv\or
+ \nthNamev\or
+ \nthNamevi\or
+ \nthNamevii\or
+ \nthNameviii\or
+ \nthNameix\fi}
+
+\newcommand*{\teenordinalname}[1]{%
+ \ifcase #1 \nNamex\nthstring\or
+ \nNamexi\nthstring\or
+ \nthNamexii\or
+ \nNamexiii\nthstring\or
+ \nNamexiv\nthstring\or
+ \nNamexv\nthstring\or
+ \nNamexvi\nthstring\or
+ \nNamexvii\nthstring\or
+ \nNamexviii\nthstring\or
+ \nNamexix\nthstring\fi}
+
+\newcommand*{\tensordinalname}[2]{%
+ \ifnum #1=\@ne
+ \teenordinalname{#2}\ifnotnumtonameallcaps\lowernumtonametrue\fi
+ \else
+ \ifnum #2> \z@
+ \ifcase #1
+ \or
+ \or \nNamexx
+ \or \nNamexxx
+ \or \nNamexl
+ \or \nNamel
+ \or \nNamelx
+ \or \nNamelxx
+ \or \nNamelxxx
+ \or \nNamexc
+ \fi
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi
+ \tensunitsep\unitordinalname{#2}
+ \else
+ \ifcase #1
+ \or
+ \or \nthNamexx
+ \or \nthNamexxx
+ \or \nthNamexl
+ \or \nthNamel
+ \or \nthNamelx
+ \or \nthNamelxx
+ \or \nthNamelxxx
+ \or \nthNamexc
+ \fi
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi
+ \fi
+ \fi}
+
+\newcommand*\nthNamexx{\iflowernumtoname t\else T\fi wen\tiethstring}
+\newcommand*\nthNamexxx{\iflowernumtoname t\else T\fi hir\tiethstring}
+\newcommand*\nthNamexl{\iflowernumtoname f\else F\fi or\tiethstring}
+\newcommand*\nthNamel{\iflowernumtoname f\else F\fi if\tiethstring}
+\newcommand*\nthNamelx{\iflowernumtoname s\else S\fi ix\tiethstring}
+\newcommand*\nthNamelxx{\iflowernumtoname s\else S\fi even\tiethstring}
+\newcommand*\nthNamelxxx{\iflowernumtoname e\else E\fi igh\tiethstring}
+\newcommand*\nthNamexc{\iflowernumtoname n\else N\fi ine\tiethstring}
+
+\newcommand*{\n@me@number}[1]{%
+\begingroup
+ \numdigits{#1}%
+ \ifminusnumber\minusname\fi
+ \priornumfalse
+%% billions
+ \ifnum \c@bsm@mctr > \z@
+ \unitnumbername{\thebsm@mctr}\space
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamemmm
+ \priornumtrue
+ \fi
+%% hundred millions
+ \ifnum \c@cmsm@mctr > \z@
+ \ifpriornum\namenumbercomma\fi
+ \unitnumbername{\thecmsm@mctr}\space
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamec
+ \priornumtrue
+ \fi
+%% tens/units millions
+ \ifnum \c@xmsm@mctr > \z@
+ \ifpriornum
+ \ifnum\c@cmsm@mctr>\z@\namenumberand\else\namenumbercomma\fi
+ \fi
+ \tensnumbername{\thexmsm@mctr}{\themsm@mctr}%
+ \priornumtrue
+ \else
+ \ifnum \c@msm@mctr > \z@
+ \ifpriornum
+ \ifnum\c@cmsm@mctr>\z@\namenumberand\else\namenumbercomma\fi
+ \fi
+ \unitnumbername{\themsm@mctr}%
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi
+ \priornumtrue
+ \fi
+ \fi
+ \ifnum \c@cmsm@mctr > \z@
+ \ifpriornum\space\fi
+ \nNamemm
+ \else
+ \ifnum \c@xmsm@mctr > \z@
+ \ifpriornum\space\fi
+ \nNamemm
+ \else
+ \ifnum \c@msm@mctr > \z@
+ \ifpriornum\space\fi
+ \nNamemm
+ \fi
+ \fi
+ \fi
+%% hundred thousands
+ \ifnum \c@cksm@mctr > \z@
+ \ifpriornum\namenumbercomma\fi
+ \unitnumbername{\thecksm@mctr}\space
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamec
+ \priornumtrue
+ \fi
+%% tens/units thousands
+ \ifnum \c@xksm@mctr > \z@
+ \ifpriornum
+ \ifnum\c@cksm@mctr>\z@\namenumberand\else\namenumbercomma\fi
+ \fi
+ \tensnumbername{\thexksm@mctr}{\theksm@mctr}%
+ \priornumtrue
+ \else
+ \ifnum \c@ksm@mctr > \z@
+ \ifpriornum
+ \ifnum\c@cksm@mctr>\z@\namenumberand\else\namenumbercomma\fi
+ \fi
+ \unitnumbername{\theksm@mctr}%
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi
+ \priornumtrue
+ \fi
+ \fi
+ \ifnum \c@cksm@mctr > \z@
+ \ifpriornum\space\fi
+ \nNamem
+ \else
+ \ifnum \c@xksm@mctr > \z@
+ \ifpriornum\space\fi
+ \nNamem
+ \else
+ \ifnum \c@ksm@mctr > \z@
+ \ifpriornum\space\fi
+ \nNamem
+ \fi
+ \fi
+ \fi
+%% hundreds
+ \ifnum \c@csm@mctr > \z@
+ \ifpriornum\namenumbercomma\fi
+ \unitnumbername{\thecsm@mctr}\space
+ \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamec
+ \priornumtrue
+ \fi
+%% tens/units
+ \ifmakeordinal
+ \ifnum \c@xsm@mctr > \z@
+ \ifpriornum\namenumberand\fi
+ \tensordinalname{\thexsm@mctr}{\theism@mctr}%
+ \else
+ \ifnum \c@ism@mctr > \z@
+ \ifpriornum\namenumberand\fi
+ \unitordinalname{\theism@mctr}%
+ \else
+ \ifpriornum\nthstring\else\unitordinalname{\theism@mctr}\fi
+ \fi
+ \fi
+ \else % not ordinal
+ \ifnum \c@xsm@mctr > \z@
+ \ifpriornum\namenumberand\fi
+ \tensnumbername{\thexsm@mctr}{\theism@mctr}%
+ \else
+ \ifnum \c@ism@mctr > \z@
+ \ifpriornum\namenumberand\fi
+ \unitnumbername{\theism@mctr}%
+ \else
+ \ifpriornum\else\unitnumbername{\theism@mctr}\fi
+ \fi
+ \fi
+ \fi % end ifmakeordinal
+\endgroup
+}
+
+\newcommand*{\numtoname}[1]{%
+ \makeordinalfalse
+ \notnumtonameallcapstrue%
+ \lowernumtonametrue%
+ \n@me@number{#1}}
+
+\newcommand*{\numtoName}[1]{%
+ \makeordinalfalse
+ \notnumtonameallcapstrue%
+ \lowernumtonamefalse%
+ \n@me@number{#1}}
+
+\newcommand*{\NumToName}[1]{%
+ \makeordinalfalse
+ \notnumtonameallcapsfalse%
+ \lowernumtonamefalse%
+ \n@me@number{#1}}
+
+\newcommand*{\ordinaltoname}[1]{%
+ \makeordinaltrue
+ \notnumtonameallcapstrue%
+ \lowernumtonametrue%
+ \n@me@number{#1}}
+
+\newcommand*{\ordinaltoName}[1]{%
+ \makeordinaltrue
+ \notnumtonameallcapstrue%
+ \lowernumtonamefalse%
+ \n@me@number{#1}}
+
+\newcommand*{\OrdinalToName}[1]{%
+ \makeordinaltrue
+ \notnumtonameallcapsfalse%
+ \lowernumtonamefalse%
+ \n@me@number{#1}}
+%%
+%% End of file `numname.sty'.
diff --git a/macros/latex/contrib/numname/numname.tex b/macros/latex/contrib/numname/numname.tex
new file mode 100644
index 0000000000..ffc04d16a8
--- /dev/null
+++ b/macros/latex/contrib/numname/numname.tex
@@ -0,0 +1,34 @@
+\documentclass[pagesize=auto, parskip=full, fontsize=14pt, DIV=9]{scrartcl}
+
+\usepackage{fixltx2e}
+\usepackage{etex}
+\usepackage{xspace}
+\usepackage{lmodern}
+\usepackage[T1]{fontenc}
+\usepackage{textcomp}
+\usepackage{microtype}
+\usepackage{hyperref}
+
+\newcommand*{\pkg}[1]{\textsf{#1}}
+\newcommand*{\cls}[1]{\textsf{#1}}
+
+\addtokomafont{title}{\rmfamily}
+
+\title{The \pkg{numname} package}
+\author{S Joshua Swamidass}
+\date{2007/07/05}
+
+
+\begin{document}
+
+\maketitle
+
+This package converts a numerical number to the english spelled out
+name of the number. For example, 1~$\to$~one, 2~$\to$~two, 12~$\to$~twelve. It
+can also convert to the ordinal number, 1~$\to$~first, 2~$\to$~second, etc.
+
+This code was cut and paste from the \cls{memoir.cls} for use as an
+independent package for projects which prefer not to use the \cls{memoir}
+class.
+
+\end{document}