From f55680bd0ff263586a423e55926277b7f6c19b7a Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 10 Feb 2017 23:31:15 +0000 Subject: numspell (9feb17) git-svn-id: svn://tug.org/texlive/trunk@43189 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/numspell/numspell-german.sty | 262 +++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/numspell/numspell-german.sty (limited to 'Master/texmf-dist/tex/latex/numspell/numspell-german.sty') diff --git a/Master/texmf-dist/tex/latex/numspell/numspell-german.sty b/Master/texmf-dist/tex/latex/numspell/numspell-german.sty new file mode 100644 index 00000000000..bd100313f88 --- /dev/null +++ b/Master/texmf-dist/tex/latex/numspell/numspell-german.sty @@ -0,0 +1,262 @@ +%% +%% `numspell-german.sty' German 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-german}[2017/02/09 v1.0 German language package for numspell] + +%% GROUP NAMES +\def\numspell@group@ii@de@name{\numspell@{tausend}} +\def\numspell@group@iii@de@name{\numspell@{Million}} +\def\numspell@group@iv@de@name{\numspell@{Milliarde}} +\def\numspell@group@v@de@name{\numspell@{Billion}} +\def\numspell@group@vi@de@name{\numspell@{Billiarde}} +\def\numspell@group@vii@de@name{\numspell@{Trillion}} +\def\numspell@group@viii@de@name{\numspell@{Trilliarde}} +\def\numspell@group@ix@de@name{\numspell@{Quadrillion}} +\def\numspell@group@x@de@name{\numspell@{Quadrilliarde}} +\def\numspell@group@xi@de@name{\numspell@{Quintillion}} +\def\numspell@group@xii@de@name{\numspell@{Quintilliarde}} +\def\numspell@group@xiii@de@name{\numspell@{Sextillion}} +\def\numspell@group@xiv@de@name{\numspell@{Sextilliarde}} +\def\numspell@group@xv@de@name{\numspell@{Septillion}} +\def\numspell@group@xvi@de@name{\numspell@{Septilliarde}} +\def\numspell@group@xvii@de@name{\numspell@{Oktillion}} +\def\numspell@group@xviii@de@name{\numspell@{Oktilliarde}} +\def\numspell@group@xix@de@name{\numspell@{Nonillion}} +\def\numspell@group@xx@de@name{\numspell@{Nonilliarde}} +\def\numspell@group@xxi@de@name{\numspell@{Dezillion}} +\def\numspell@group@xxii@de@name{\numspell@{Dezilliarde}} + +%% ORDINAL GROUP NAMES +\def\numspell@ordgroup@iii@de@name{\numspell@{millionste}} +\def\numspell@ordgroup@iv@de@name{\numspell@{milliardste}} +\def\numspell@ordgroup@v@de@name{\numspell@{billionste}} +\def\numspell@ordgroup@vi@de@name{\numspell@{billiardste}} +\def\numspell@ordgroup@vii@de@name{\numspell@{trillionste}} +\def\numspell@ordgroup@viii@de@name{\numspell@{trilliardste}} +\def\numspell@ordgroup@ix@de@name{\numspell@{quadrillionste}} +\def\numspell@ordgroup@x@de@name{\numspell@{quadrilliardste}} +\def\numspell@ordgroup@xi@de@name{\numspell@{quintillionste}} +\def\numspell@ordgroup@xii@de@name{\numspell@{quintilliardste}} +\def\numspell@ordgroup@xiii@de@name{\numspell@{sextillionste}} +\def\numspell@ordgroup@xiv@de@name{\numspell@{sextilliardste}} +\def\numspell@ordgroup@xv@de@name{\numspell@{septillionste}} +\def\numspell@ordgroup@xvi@de@name{\numspell@{septilliardste}} +\def\numspell@ordgroup@xvii@de@name{\numspell@{oktillionste}} +\def\numspell@ordgroup@xviii@de@name{\numspell@{oktilliardste}} +\def\numspell@ordgroup@xix@de@name{\numspell@{nonillionste}} +\def\numspell@ordgroup@xx@de@name{\numspell@{nonilliardste}} +\def\numspell@ordgroup@xxi@de@name{\numspell@{dezillionste}} +\def\numspell@ordgroup@xxii@de@name{\numspell@{dezilliardste}} + +%% SPELLING CARDINAL NUMBER GROUP +%% --------------------------------- +%% \numspell@group@spell@de{} (=000,001,...,999) +%% --------------------------------- +%% \numspell@group@digits{} +%% Adding the spelling to \thenumspell +%% +\def\numspell@group@spell@de#1{% + \numspell@group@digits{#1}% + \ifcase\numspell@group@digit@i% + \or\numspell@{ein}\or\numspell@{zwei}\or\numspell@{drei}\or\numspell@{vier}\or\numspell@{f\"{u}nf}% + \or\numspell@{sechs}\or\numspell@{sieben}\or\numspell@{acht}\or\numspell@{neun}% + \fi% + \ifnum\numspell@group@digit@i>0% + \numspell@{hundert}% + \fi% + \ifnum\number\numexpr100*\numspell@group@digit@i+10*\numspell@group@digit@ii+\numspell@group@digit@iii>1% + \ifcase\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii% + \or\numspell@{eins}\or\numspell@{zwei}\or\numspell@{drei}\or\numspell@{vier}\or\numspell@{f\"{u}nf}% + \or\numspell@{sechs}\or\numspell@{sieben}\or\numspell@{acht}\or\numspell@{neun}% + \or\numspell@{zehn}\or\numspell@{elf}\or\numspell@{zw\"{o}lf}\or\numspell@{dreizehn}% + \or\numspell@{vierzehn}\or\numspell@{f\"{u}nfzehn}\or\numspell@{sechzehn}\or\numspell@{siebzehn}% + \or\numspell@{achtzehn}\or\numspell@{neunzehn}% + \fi% + \fi% + \ifnum\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii>19% + \ifcase\numspell@group@digit@iii% + \or\numspell@{ein}\or\numspell@{zwei}\or\numspell@{drei}\or\numspell@{vier}\or\numspell@{f\"{u}nf}% + \or\numspell@{sechs}\or\numspell@{sieben}\or\numspell@{acht}\or\numspell@{neun}% + \fi% + \fi% + \ifnum\number\numexpr\numspell@group@digit@ii*\numspell@group@digit@iii>0% + \ifnum\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii>20% + \numspell@{und}% + \fi% + \fi% + \ifnum\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii>19% + \ifcase\numspell@group@digit@ii% + \or\or\numspell@{zwanzig}\or\numspell@{drei\ss{}ig}\or\numspell@{vierzig}\or\numspell@{f\"{u}nfzig}% + \or\numspell@{sechzig}\or\numspell@{siebzig}\or\numspell@{achtzig}\or\numspell@{neunzig}% + \fi% + \fi% +} + +%% SPELLING ORDINAL NUMBER GROUP +%% ------------------------------------ +%% \numspell@ordgroup@spell@de{} (=000,001,...,999) +%% ------------------------------------ +%% \numspell@group@digits{} +%% Adding the ordinal spelling to \thenumspell +%% +\def\numspell@ordgroup@spell@de#1{% + \numspell@group@digits{#1}% + \ifcase\numspell@group@digit@i% + \or\numspell@{ein}\or\numspell@{zwei}\or\numspell@{drei}\or\numspell@{vier}\or\numspell@{f\"{u}nf}% + \or\numspell@{sechs}\or\numspell@{sieben}\or\numspell@{acht}\or\numspell@{neun}% + \fi% + \ifnum\numspell@group@digit@i>0% + \ifnum\number\numexpr\numspell@group@digit@ii+\numspell@group@digit@iii=0% + \numspell@{hundertste}% + \else% + \numspell@{hundert}% + \fi% + \fi% + \ifnum\number\numexpr100*\numspell@group@digit@i+10*\numspell@group@digit@ii+\numspell@group@digit@iii>1% + \ifcase\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii% + \or\numspell@{erste}\or\numspell@{zweite}\or\numspell@{dritte}\or\numspell@{vierte}\or\numspell@{f\"{u}nfte}% + \or\numspell@{sechste}\or\numspell@{siebte}\or\numspell@{achte}\or\numspell@{neunte}% + \or\numspell@{zehnte}\or\numspell@{elfte}\or\numspell@{zw\"{o}lfte}\or\numspell@{dreizehnte}% + \or\numspell@{vierzehnte}\or\numspell@{f\"{u}nfzehnte}\or\numspell@{sechzehnte}\or\numspell@{siebzehnte}% + \or\numspell@{achtzehnte}\or\numspell@{neunzehnte}% + \fi% + \fi% + \ifnum\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii>19% + \ifcase\numspell@group@digit@iii% + \or\numspell@{ein}\or\numspell@{zwei}\or\numspell@{drei}\or\numspell@{vier}\or\numspell@{f\"{u}nf}% + \or\numspell@{sechs}\or\numspell@{sieben}\or\numspell@{acht}\or\numspell@{neun}% + \fi% + \fi% + \ifnum\number\numexpr\numspell@group@digit@ii*\numspell@group@digit@iii>0% + \ifnum\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii>20% + \numspell@{und}% + \fi% + \fi% + \ifnum\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii>19% + \ifcase\numspell@group@digit@ii% + \or\or\numspell@{zwanzigste}\or\numspell@{drei\ss{}igste}\or\numspell@{vierzigste}\or\numspell@{f\"{u}nfzigste}% + \or\numspell@{sechzigste}\or\numspell@{siebzigste}\or\numspell@{achtzigste}\or\numspell@{neunzigste}% + \fi% + \fi% +} + +%% SPELLING CARDINAL NUMBER +%% -------------------------------------- +%% \numspell@num@spell@de{}{} +%% -------------------------------------- +%% \numspell@groups{}{} +%% Adding the \numspell@num spelling to \thenumspell +%% +\def\numspell@num@spell@de#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}{}{% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}{\numspell@{eine}}{}% + \numspell@group@spell@de{\csname numspell@group@\roman{numspell@groupcount}\endcsname}% + \numspell@{ }% + \csname numspell@group@\roman{numspell@groupcount}@de@name\endcsname% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}{}{\ifodd\value{numspell@groupcount}\numspell@{e}\fi}% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}{}{\numspell@{n}}% + \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname>0\numspell@{ }\fi% + }% + \addtocounter{numspell@groupcount}{-1}% + }% + \IfEq{\numspell@group@ii}{0}{}{% + \IfEq{\numspell@group@ii}{1}{\numspell@{ein}}{}% + \numspell@group@spell@de{\numspell@group@ii}% + \numspell@group@ii@de@name% + }% + \IfEq{\numspell@group@i}{0}{}{% + \IfEq{\numspell@group@i}{1}{\numspell@{eins}}{}% + \numspell@group@spell@de{\numspell@group@i}% + }% + \ifnum\numspell@group@max=0\numspell@{null}\fi% +} + +%% SPELLING ORDINAL NUMBER +%% ----------------------------------------- +%% \numspell@ordnum@spell@de{}{} +%% ----------------------------------------- +%% \numspell@groups{}{} +%% Adding the \numspell@num ordinal spelling to \thenumspell +%% +\def\numspell@ordnum@spell@de#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}{}{% + \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname>0% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}{\numspell@{eine}}{}% + \numspell@group@spell@de{\csname numspell@group@\roman{numspell@groupcount}\endcsname}% + \numspell@{ }% + \csname numspell@group@\roman{numspell@groupcount}@de@name\endcsname% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}{}{\ifodd\value{numspell@groupcount}\numspell@{e}\fi}% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}{}{\numspell@{n}}\numspell@{ }% + \else% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}{\numspell@{ein}}{}% + \numspell@group@spell@de{\csname numspell@group@\roman{numspell@groupcount}\endcsname}% + \csname numspell@ordgroup@\roman{numspell@groupcount}@de@name\endcsname% + \fi% + }% + \addtocounter{numspell@groupcount}{-1}% + }% + \IfEq{\numspell@group@ii}{0}{}{% + \IfEq{\numspell@group@ii}{1}{\numspell@{ein}}{}% + \numspell@group@spell@de{\numspell@group@ii}% + \numspell@group@ii@de@name% + \ifnum\numspell@group@ii@before=0\numspell@{ste}\fi% + }% + \IfEq{\numspell@group@i}{0}{}{% + \IfEq{\numspell@group@i}{1}{\numspell@{erste}}{}% + \numspell@ordgroup@spell@de{\numspell@group@i}% + }% + \ifnum\numspell@group@max=0\numspell@{nullte}\fi% +} + +%% ---------------------- +%% \numspell@uppercase@de +%% ---------------------- +%% E.g. \def\thenumspell{ein}\numspell@uppercase\thenumspell --> 'Ein' +%% \MakeUppercase does not work on pdf bookmark (see hyperref), so using another effective macro. +%% +\def\numspell@uppercase@de{% + \fullexpandarg% + \StrChar{\thenumspell}{1}[\numspell@firstletter]% + \expandarg% + \StrGobbleLeft{\thenumspell}{1}[\numspell@trunc]% + \fullexpandarg% + \def\numspell@the{}% + \IfStrEq{\numspell@firstletter}{e}{\g@addto@macro\numspell@the{E}}{}% ein + \IfStrEq{\numspell@firstletter}{z}{\g@addto@macro\numspell@the{Z}}{}% zwei + \IfStrEq{\numspell@firstletter}{d}{\g@addto@macro\numspell@the{D}}{}% drei + \IfStrEq{\numspell@firstletter}{v}{\g@addto@macro\numspell@the{V}}{}% vier + \IfStrEq{\numspell@firstletter}{f}{\g@addto@macro\numspell@the{F}}{}% f\"{u}nf + \IfStrEq{\numspell@firstletter}{s}{\g@addto@macro\numspell@the{S}}{}% sechs + \IfStrEq{\numspell@firstletter}{a}{\g@addto@macro\numspell@the{A}}{}% acht + \IfStrEq{\numspell@firstletter}{n}{\g@addto@macro\numspell@the{N}}{}% neun + \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 -- cgit v1.2.3