% 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