summaryrefslogtreecommitdiff
path: root/info/examples/tex-in-practice/ntotext.tip
diff options
context:
space:
mode:
Diffstat (limited to 'info/examples/tex-in-practice/ntotext.tip')
-rw-r--r--info/examples/tex-in-practice/ntotext.tip119
1 files changed, 119 insertions, 0 deletions
diff --git a/info/examples/tex-in-practice/ntotext.tip b/info/examples/tex-in-practice/ntotext.tip
new file mode 100644
index 0000000000..cd1f26a4d0
--- /dev/null
+++ b/info/examples/tex-in-practice/ntotext.tip
@@ -0,0 +1,119 @@
+% This macro source file is from the four volume series
+% "TeX in Practice" by Stephan von Bechtolsheim, published
+% 1993 by Springer-Verlag, New York.
+% Copyright 1993 Stephan von Bechtolsheim.
+% No warranty or liability is assumed.
+% This macro may be copied freely if no fees other than
+% media cost or shipping charges are charged and as long
+% as this copyright and the following source code itself
+% is not changed. Please see the series for further information.
+%
+% Version: 1.0
+% Date: May 1, 1993
+%
+%
+% This source code is documented in 3.3.16, p. I-63.
+% Original source in file "reg1.TEX", starting line 1835.
+\wlog{L: "ntotext.tip" ["reg1.TEX," l. 1835, p. I-63]}%
+% This file DOES belong to format "texip."
+\InputD{imodn.tip}
+\catcode`\@ = 11
+\def\@OneDigitNumberText #1#2{%
+ \ifcase #2\relax
+ \ifnum #1=0
+ \else
+ zero%
+ \fi
+ \or
+ one\or
+ two\or
+ three\or
+ four\or
+ five\or
+ six\or
+ seven\or
+ eight\or
+ nine%
+ \else
+ \errmessage{\string\@OneDigitNumberText: number
+ \number#2 out of range.}%
+ \fi
+}
+\newcount\@NumberToConvert
+\newcount\@NumberToConvertTwo
+\newcount\@NumberToConvertAndFlag
+\def\NumberToText #1{%
+ \@NumberToConvert = #1\relax
+ \ifnum\@NumberToConvert < 0
+ minus
+ \@NumberToConvert = -\@NumberToConvert
+ \fi
+ \CheckRange{\@NumberToConvert}{0}{999999}%
+ {\string\NumberToText: numbers >= 1.000.000
+ not handled.}%
+ \@NumberToConvertAndFlag = 0
+ \ifnum\@NumberToConvert > 999
+ \@NumberToConvertTwo = \@NumberToConvert
+ \divide\@NumberToConvert by 1000
+ \@NumberToText
+ \space thousand and
+ \IModN{\@NumberToConvertTwo}{1000}{\@NumberToConvert}%
+ \fi
+ \CheckRange{\@NumberToConvert}{0}{999}%
+ {\string\NumberToText: internal error 1}%
+ \@NumberToText
+}
+\newcount\@NumberToTextTmp
+\def\@NumberToText{%
+ \ifnum\@NumberToConvert > 99
+ \ValueOfDecimalPosition{\@NumberToConvert}{2}%
+ {\@NumberToTextTmp}%
+ \@OneDigitNumberText{1}{\@NumberToTextTmp}%
+ \space hundred and
+ \IModN{\@NumberToConvert}{100}{\@NumberToConvert}%
+ \fi
+ \ValueOfDecimalPosition{\@NumberToConvert}{1}%
+ {\@NumberToTextTmp}%
+ \ifnum\@NumberToTextTmp > 1
+ \ifcase\@NumberToTextTmp
+ \errmessage{\string\@NumberToText:
+ internal error 1.}%
+ \or
+ \errmessage{\string\@NumberToText:
+ internal error 2.}%
+ \or
+ twenty\or
+ thirty\or
+ forty\or
+ fifty\or
+ sixty\or
+ seventy\or
+ eighty\or
+ ninety%
+ \else
+ \errmessage{\string\@NumberToText:
+ internal error 4.}%
+ \fi
+ \IModN{\@NumberToConvert}{10}{\@NumberToTextTmp}%
+ \@OneDigitNumberText{0}{\@NumberToTextTmp}%
+ \else
+ \ifnum\@NumberToTextTmp = 1
+ \advance\@NumberToConvert by -10
+ \ifcase\@NumberToConvert
+ ten\or
+ eleven\or
+ twelve\or
+ thirteen\or
+ fourteen\or
+ fifteen\or
+ sixteen\or
+ seventeen\or
+ eighteen\or
+ nineteen%
+ \fi
+ \else
+ \@OneDigitNumberText{1}{\@NumberToConvert}%
+ \fi
+ \fi
+}
+\catcode`\@ = 12