summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/numspell/numspell-english.sty
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/numspell/numspell-english.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/numspell/numspell-english.sty')
-rw-r--r--macros/latex/contrib/numspell/numspell-english.sty250
1 files changed, 250 insertions, 0 deletions
diff --git a/macros/latex/contrib/numspell/numspell-english.sty b/macros/latex/contrib/numspell/numspell-english.sty
new file mode 100644
index 0000000000..2bf2f69bbf
--- /dev/null
+++ b/macros/latex/contrib/numspell/numspell-english.sty
@@ -0,0 +1,250 @@
+%%
+%% `numspell-english.sty' English language package for 'numspell.sty'
+%%
+%% Copyright 2017- by Tibor Tomacs
+%%
+%% 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 this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is Tibor Tomacs.
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{numspell-english}[2017/02/09 v1.0 English language package for numspell]
+
+%% -----------
+%% \numspellGB (Default)
+%% -----------
+%% It changes to British English
+%%
+\def\numspellGB{%
+ \def\numspell@and@en{\numspell@{ and }}%
+ \def\numspell@and@@en{\numspell@{ and }}%
+}
+\numspellGB
+
+%% -----------
+%% \numspellUS
+%% -----------
+%% It changes to American English
+%%
+\def\numspellUS{%
+ \def\numspell@and@en{\numspell@{ }}%
+ \def\numspell@and@@en{\numspell@{, }}%
+}
+
+%% GROUP NAMES
+\def\numspell@group@ii@en@name{\numspell@{thousand}}
+\def\numspell@group@iii@en@name{\numspell@{million}}
+\def\numspell@group@iv@en@name{\numspell@{billion}}
+\def\numspell@group@v@en@name{\numspell@{trillion}}
+\def\numspell@group@vi@en@name{\numspell@{quadrillion}}
+\def\numspell@group@vii@en@name{\numspell@{quintillion}}
+\def\numspell@group@viii@en@name{\numspell@{sextillion}}
+\def\numspell@group@ix@en@name{\numspell@{septillion}}
+\def\numspell@group@x@en@name{\numspell@{octillion}}
+\def\numspell@group@xi@en@name{\numspell@{nonillion}}
+\def\numspell@group@xii@en@name{\numspell@{decillion}}
+\def\numspell@group@xiii@en@name{\numspell@{undecillion}}
+\def\numspell@group@xiv@en@name{\numspell@{duodecillion}}
+\def\numspell@group@xv@en@name{\numspell@{tredecillion}}
+\def\numspell@group@xvi@en@name{\numspell@{quattuordecillion}}
+\def\numspell@group@xvii@en@name{\numspell@{quindecillion}}
+\def\numspell@group@xviii@en@name{\numspell@{sexdecillion}}
+\def\numspell@group@xix@en@name{\numspell@{septendecillion}}
+\def\numspell@group@xx@en@name{\numspell@{octodecillion}}
+\def\numspell@group@xxi@en@name{\numspell@{novemdecillion}}
+\def\numspell@group@xxii@en@name{\numspell@{vigintillion}}
+
+%% SPELLING CARDINAL NUMBER GROUP
+%% ---------------------------------
+%% \numspell@group@spell@en{<group>} (<group>=000,001,...,999)
+%% ---------------------------------
+%% \numspell@group@digits{<group>}
+%% Adding the <group> spelling to \thenumspell
+%%
+\def\numspell@group@spell@en#1{%
+ \numspell@group@digits{#1}%
+ \ifcase\numspell@group@digit@i%
+ \or\numspell@{one}\or\numspell@{two}\or\numspell@{three}\or\numspell@{four}\or\numspell@{five}%
+ \or\numspell@{six}\or\numspell@{seven}\or\numspell@{eight}\or\numspell@{nine}%
+ \fi%
+ \ifnum\numspell@group@digit@i>0%
+ \numspell@{ hundred}%
+ \fi%
+ \ifnum\number\numexpr\numspell@group@digit@i*(\numspell@group@digit@ii+\numspell@group@digit@iii)>0%
+ \numspell@and@en%
+ \fi%
+ \ifcase\numspell@group@digit@ii%
+ \or\or\numspell@{twenty}\or\numspell@{thirty}\or\numspell@{forty}\or\numspell@{fifty}\or\numspell@{sixty}%
+ \or\numspell@{seventy}\or\numspell@{eighty}\or\numspell@{ninety}%
+ \fi%
+ \ifnum\numspell@group@digit@ii>1%
+ \ifcase\numspell@group@digit@iii%
+ \or\numspell@dash@\numspell@{one}\or\numspell@dash@\numspell@{two}\or\numspell@dash@\numspell@{three}%
+ \or\numspell@dash@\numspell@{four}\or\numspell@dash@\numspell@{five}\or\numspell@dash@\numspell@{six}%
+ \or\numspell@dash@\numspell@{seven}\or\numspell@dash@\numspell@{eight}\or\numspell@dash@\numspell@{nine}%
+ \fi%
+ \fi%
+ \ifnum\numspell@group@digit@ii<2%
+ \ifcase\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii%
+ \or\numspell@{one}\or\numspell@{two}\or\numspell@{three}\or\numspell@{four}\or\numspell@{five}\or\numspell@{six}%
+ \or\numspell@{seven}\or\numspell@{eight}\or\numspell@{nine}\or\numspell@{ten}\or\numspell@{eleven}\or\numspell@{twelve}%
+ \or\numspell@{thirteen}\or\numspell@{fourteen}\or\numspell@{fifteen}\or\numspell@{sixteen}\or\numspell@{seventeen}%
+ \or\numspell@{eighteen}\or\numspell@{nineteen}%
+ \fi%
+ \fi%
+}
+
+%% SPELLING ORDINAL NUMBER GROUP
+%% ------------------------------------
+%% \numspell@ordgroup@spell@en{<group>} (<group>=000,001,...,999)
+%% ------------------------------------
+%% \numspell@group@digits{<group>}
+%% Adding the <group> ordinal spelling to \thenumspell
+%%
+\def\numspell@ordgroup@spell@en#1{%
+ \numspell@group@digits{#1}%
+ \ifcase\numspell@group@digit@i%
+ \or\numspell@{one}\or\numspell@{two}\or\numspell@{three}\or\numspell@{four}\or\numspell@{five}%
+ \or\numspell@{six}\or\numspell@{seven}\or\numspell@{eight}\or\numspell@{nine}%
+ \fi%
+ \ifnum\numspell@group@digit@i>0%
+ \ifnum\number\numexpr\numspell@group@digit@i*(\numspell@group@digit@ii+\numspell@group@digit@iii)>0%
+ \numspell@{ hundred}%
+ \else%
+ \numspell@{ hundredth}%
+ \fi%
+ \fi%
+ \ifnum\number\numexpr\numspell@group@digit@i*(\numspell@group@digit@ii+\numspell@group@digit@iii)>0%
+ \numspell@and@en%
+ \fi%
+ \ifnum\numspell@group@digit@iii>0%
+ \ifcase\numspell@group@digit@ii%
+ \or\or\numspell@{twenty}\or\numspell@{thirty}\or\numspell@{forty}\or\numspell@{fifty}\or\numspell@{sixty}%
+ \or\numspell@{seventy}\or\numspell@{eighty}\or\numspell@{ninety}%
+ \fi%
+ \else%
+ \ifcase\numspell@group@digit@ii%
+ \or\or\numspell@{twentieth}\or\numspell@{thirtieth}\or\numspell@{fortieth}\or\numspell@{fiftieth}%
+ \or\numspell@{sixtieth}\or\numspell@{seventieth}\or\numspell@{eightieth}\or\numspell@{ninetieth}%
+ \fi%
+ \fi%
+ \ifnum\numspell@group@digit@ii>1%
+ \ifcase\numspell@group@digit@iii%
+ \or\numspell@dash@\numspell@{first}\or\numspell@dash@\numspell@{second}\or\numspell@dash@\numspell@{third}%
+ \or\numspell@dash@\numspell@{fourth}\or\numspell@dash@\numspell@{fifth}\or\numspell@dash@\numspell@{sixth}%
+ \or\numspell@dash@\numspell@{seventh}\or\numspell@dash@\numspell@{eighth}\or\numspell@dash@\numspell@{ninth}%
+ \fi%
+ \fi%
+ \ifnum\numspell@group@digit@ii<2%
+ \ifcase\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii%
+ \or\numspell@{first}\or\numspell@{second}\or\numspell@{third}\or\numspell@{fourth}\or\numspell@{fifth}%
+ \or\numspell@{sixth}\or\numspell@{seventh}\or\numspell@{eighth}\or\numspell@{ninth}\or\numspell@{tenth}%
+ \or\numspell@{eleventh}\or\numspell@{twelfth}\or\numspell@{thirteenth}\or\numspell@{fourteenth}%
+ \or\numspell@{fifteenth}\or\numspell@{sixteenth}\or\numspell@{seventeenth}\or\numspell@{eighteenth}\or\numspell@{nineteenth}%
+ \fi%
+ \fi%
+}
+
+%% SPELLING CARDINAL NUMBER
+%% --------------------------------------
+%% \numspell@num@spell@en{<num1>}{<num2>}
+%% --------------------------------------
+%% \numspell@groups{<num1>}{<num2>}
+%% Adding the \numspell@num spelling to \thenumspell
+%%
+\def\numspell@num@spell@en#1#2{%
+ \gdef\thenumspell{}%
+ \numspell@groups{#1}{#2}%
+ \setcounter{numspell@groupcount}{22}%
+ \@whilenum\value{numspell@groupcount}>2%
+ \do{%
+ \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{0}{}{%
+ \numspell@group@spell@en{\csname numspell@group@\roman{numspell@groupcount}\endcsname}%
+ \numspell@{ }%
+ \csname numspell@group@\roman{numspell@groupcount}@en@name\endcsname%
+ \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname>1\numspell@{, }\fi%
+ \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname=1\numspell@and@@en\fi%
+ }%
+ \addtocounter{numspell@groupcount}{-1}%
+ }%
+ \IfEq{\numspell@group@ii}{0}{}{%
+ \numspell@group@spell@en{\numspell@group@ii}%
+ \numspell@{ }%
+ \numspell@group@ii@en@name%
+ \ifnum\numspell@group@ii@before=1\numspell@and@@en\fi%
+ }%
+ \IfEq{\numspell@group@i}{0}{}{%
+ \numspell@group@spell@en{\numspell@group@i}%
+ }%
+ \ifnum\numspell@group@max=0\numspell@{nought}\fi%
+}
+
+%% SPELLING ORDINAL NUMBER
+%% -----------------------------------------
+%% \numspell@ordnum@spell@en{<num1>}{<num2>}
+%% -----------------------------------------
+%% \numspell@groups{<num1>}{<num2>}
+%% Adding the \numspell@num ordinal spelling to \thenumspell
+%%
+\def\numspell@ordnum@spell@en#1#2{%
+ \gdef\thenumspell{}%
+ \numspell@groups{#1}{#2}%
+ \setcounter{numspell@groupcount}{22}%
+ \@whilenum\value{numspell@groupcount}>2%
+ \do{%
+ \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{0}{}{%
+ \numspell@group@spell@en{\csname numspell@group@\roman{numspell@groupcount}\endcsname}%
+ \numspell@{ }%
+ \csname numspell@group@\roman{numspell@groupcount}@en@name\endcsname%
+ \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname>1\numspell@{, }\fi%
+ \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname=1\numspell@and@@en\fi%
+ }%
+ \addtocounter{numspell@groupcount}{-1}%
+ }%
+ \IfEq{\numspell@group@ii}{0}{}{%
+ \numspell@group@spell@en{\numspell@group@ii}%
+ \numspell@{ }%
+ \numspell@group@ii@en@name%
+ \ifnum\numspell@group@ii@before=1\numspell@and@@en\fi%
+ }%
+ \IfEq{\numspell@group@i}{0}{}{%
+ \numspell@ordgroup@spell@en{\numspell@group@i}%
+ }%
+ \IfEq{\numspell@group@i}{0}{\ifnum\numspell@group@max>0\numspell@{th}\fi}{}%
+ \ifnum\numspell@group@max=0\numspell@{zeroth}\fi%
+}
+
+%% ----------------------
+%% \numspell@uppercase@en
+%% ----------------------
+%% E.g. \def\thenumspell{one}\numspell@uppercase\thenumspell --> 'One'
+%% \MakeUppercase does not work on pdf bookmark (see hyperref), so using another effective macro.
+%%
+\def\numspell@uppercase@en{%
+ \fullexpandarg%
+ \StrChar{\thenumspell}{1}[\numspell@firstletter]%
+ \expandarg%
+ \StrGobbleLeft{\thenumspell}{1}[\numspell@trunc]%
+ \fullexpandarg%
+ \def\numspell@the{}%
+ \IfStrEq{\numspell@firstletter}{o}{\g@addto@macro\numspell@the{O}}{}% one
+ \IfStrEq{\numspell@firstletter}{t}{\g@addto@macro\numspell@the{T}}{}% two
+ \IfStrEq{\numspell@firstletter}{f}{\g@addto@macro\numspell@the{F}}{}% four
+ \IfStrEq{\numspell@firstletter}{s}{\g@addto@macro\numspell@the{S}}{}% six
+ \IfStrEq{\numspell@firstletter}{e}{\g@addto@macro\numspell@the{E}}{}% eight
+ \IfStrEq{\numspell@firstletter}{n}{\g@addto@macro\numspell@the{N}}{}% nine
+ \IfStrEq{\numspell@firstletter}{z}{\g@addto@macro\numspell@the{Z}}{}% zero
+ \ifx\numspell@the\@empty\@latexerr{'numspell.sty' error! There is not '\numspell@firstletter' in uppercase!}{}\fi%
+ \g@addto@macro\numspell@the{\numspell@trunc}%
+ \def\thenumspell{\numspell@the}%
+}
+
+\endinput \ No newline at end of file