From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/numspell/numspell-italian.sty | 332 +++++++++++++++++++++ 1 file changed, 332 insertions(+) create mode 100644 macros/latex/contrib/numspell/numspell-italian.sty (limited to 'macros/latex/contrib/numspell/numspell-italian.sty') diff --git a/macros/latex/contrib/numspell/numspell-italian.sty b/macros/latex/contrib/numspell/numspell-italian.sty new file mode 100644 index 0000000000..da1f9dc178 --- /dev/null +++ b/macros/latex/contrib/numspell/numspell-italian.sty @@ -0,0 +1,332 @@ +%% +%% `numspell-italian.sty' Italian 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-italian}[2017/09/30 v1.0 Italian language package for numspell] + +%% GROUP NAMES +\def\numspell@group@ii@it@name{\numspell@{mille}} +\def\numspell@group@iii@it@name{\numspell@{milione}} +\def\numspell@group@iv@it@name{\numspell@{miliardo}} +\def\numspell@group@v@it@name{\numspell@{bilione}} +\def\numspell@group@vi@it@name{\numspell@{biliardo}} +\def\numspell@group@vii@it@name{\numspell@{trilione}} +\def\numspell@group@viii@it@name{\numspell@{triliardo}} +\def\numspell@group@ix@it@name{\numspell@{quadrilione}} +\def\numspell@group@x@it@name{\numspell@{quadriliardo}} +\def\numspell@group@xi@it@name{\numspell@{quintilione}} +\def\numspell@group@xii@it@name{\numspell@{quintiliardo}} +\def\numspell@group@xiii@it@name{\numspell@{sextilione}} +\def\numspell@group@xiv@it@name{\numspell@{sextiliardo}} +\def\numspell@group@xv@it@name{\numspell@{septilione}} +\def\numspell@group@xvi@it@name{\numspell@{septiliardo}} +\def\numspell@group@xvii@it@name{\numspell@{octilione}} +\def\numspell@group@xviii@it@name{\numspell@{octiliardo}} +\def\numspell@group@xix@it@name{\numspell@{nonilione}} +\def\numspell@group@xx@it@name{\numspell@{noniliardo}} +\def\numspell@group@xxi@it@name{\numspell@{decilione}} +\def\numspell@group@xxii@it@name{\numspell@{deciliardo}} + +%% GROUP NAMES (PLURAL) +\def\numspell@group@ii@it@name@plural{\numspell@{mila}} +\def\numspell@group@iii@it@name@plural{\numspell@{milioni}} +\def\numspell@group@iv@it@name@plural{\numspell@{miliardi}} +\def\numspell@group@v@it@name@plural{\numspell@{bilioni}} +\def\numspell@group@vi@it@name@plural{\numspell@{biliardi}} +\def\numspell@group@vii@it@name@plural{\numspell@{trilioni}} +\def\numspell@group@viii@it@name@plural{\numspell@{triliardi}} +\def\numspell@group@ix@it@name@plural{\numspell@{quadrilioni}} +\def\numspell@group@x@it@name@plural{\numspell@{quadriliardi}} +\def\numspell@group@xi@it@name@plural{\numspell@{quintilioni}} +\def\numspell@group@xii@it@name@plural{\numspell@{quintiliardi}} +\def\numspell@group@xiii@it@name@plural{\numspell@{sextilioni}} +\def\numspell@group@xiv@it@name@plural{\numspell@{sextiliardi}} +\def\numspell@group@xv@it@name@plural{\numspell@{septilioni}} +\def\numspell@group@xvi@it@name@plural{\numspell@{septiliardi}} +\def\numspell@group@xvii@it@name@plural{\numspell@{octilioni}} +\def\numspell@group@xviii@it@name@plural{\numspell@{octiliardi}} +\def\numspell@group@xix@it@name@plural{\numspell@{nonilioni}} +\def\numspell@group@xx@it@name@plural{\numspell@{noniliardi}} +\def\numspell@group@xxi@it@name@plural{\numspell@{decilioni}} +\def\numspell@group@xxii@it@name@plural{\numspell@{deciliardi}} + +%% ORDINAL GROUP NAMES +\def\numspell@ordgroup@ii@it@name{\numspell@{millesim}} +\def\numspell@ordgroup@iii@it@name{\numspell@{milionesim}} +\def\numspell@ordgroup@iv@it@name{\numspell@{miliardesim}} +\def\numspell@ordgroup@v@it@name{\numspell@{bilionesim}} +\def\numspell@ordgroup@vi@it@name{\numspell@{biliardesim}} +\def\numspell@ordgroup@vii@it@name{\numspell@{trilionesim}} +\def\numspell@ordgroup@viii@it@name{\numspell@{triliardesim}} +\def\numspell@ordgroup@ix@it@name{\numspell@{quadrilionesim}} +\def\numspell@ordgroup@x@it@name{\numspell@{quadriliardesim}} +\def\numspell@ordgroup@xi@it@name{\numspell@{quintilionesim}} +\def\numspell@ordgroup@xii@it@name{\numspell@{quintiliardesim}} +\def\numspell@ordgroup@xiii@it@name{\numspell@{sextilionesim}} +\def\numspell@ordgroup@xiv@it@name{\numspell@{sextiliardesim}} +\def\numspell@ordgroup@xv@it@name{\numspell@{septilionesim}} +\def\numspell@ordgroup@xvi@it@name{\numspell@{septiliardesim}} +\def\numspell@ordgroup@xvii@it@name{\numspell@{octilionesim}} +\def\numspell@ordgroup@xviii@it@name{\numspell@{octiliardesim}} +\def\numspell@ordgroup@xix@it@name{\numspell@{nonilionesim}} +\def\numspell@ordgroup@xx@it@name{\numspell@{noniliardesim}} +\def\numspell@ordgroup@xxi@it@name{\numspell@{decilionesim}} +\def\numspell@ordgroup@xxii@it@name{\numspell@{deciliardesim}} + +%% GENDER +\def\numspellitmasculine{\def\numspell@it@gender{\numspell@{o}}} +\def\numspellitfeminine{\def\numspell@it@gender{\numspell@{a}}} +\numspellitmasculine + +%% SPELLING CARDINAL NUMBER GROUP +%% --------------------------------- +%% \numspell@group@spell@it{} (=000,001,...,999) +%% --------------------------------- +%% \numspell@group@digits{} +%% Adding the spelling to \thenumspell +%% +\def\numspell@group@spell@it#1{% + \numspell@group@digits{#1}% + \ifcase\numspell@group@digit@i% + \or\or\numspell@{due}\or\numspell@{tre}\or\numspell@{quattro}\or\numspell@{cinque}% + \or\numspell@{sei}\or\numspell@{sette}\or\numspell@{otto}\or\numspell@{nove}% + \fi% + \ifnum\numspell@group@digit@i>0% + \numspell@{cent}% + \ifnum\numspell@group@digit@ii=8\else% + \numspell@{o}% + \fi% + \fi% + \ifcase\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii% + \or\or\numspell@{due}\or\or\numspell@{quattro}\or\numspell@{cinque}\or\numspell@{sei}\or\numspell@{sette}% + \or\numspell@{otto}\or\numspell@{nove}\or\numspell@{dieci}\or\numspell@{undici}\or\numspell@{dodici}% + \or\numspell@{tredici}\or\numspell@{quattordici}\or\numspell@{quindici}\or\numspell@{sedici}% + \or\numspell@{diciassette}\or\numspell@{diciotto}\or\numspell@{diciannove}\or\numspell@{venti}% + \or\numspell@{ventuno}\or\numspell@{ventidue}\or\numspell@{ventitr\'{e}}\or\numspell@{ventiquattro}% + \or\numspell@{venticinque}\or\numspell@{ventisei}\or\numspell@{ventisette}\or\numspell@{ventotto}\or\numspell@{ventinove}% + \fi% + \ifcase\numspell@group@digit@ii% + \or\or\or\numspell@{trent}\or\numspell@{quarant}\or\numspell@{cinquant}\or\numspell@{sessant}% + \or\numspell@{settant}\or\numspell@{ottant}\or\numspell@{novant}% + \fi% + \ifnum\numspell@group@digit@ii>2% + \ifcase\numspell@group@digit@iii% + \numspell@{a}\or\numspell@{uno}\or\numspell@{adue}\or\numspell@{atr\'{e}}\or\numspell@{aquattro}% + \or\numspell@{acinque}\or\numspell@{asei}\or\numspell@{asette}\or\numspell@{otto}\or\numspell@{anove}% + \fi% + \fi% + \ifnum\numspell@group@digit@i>0% + \ifnum\numspell@group@digit@ii=0% + \ifcase\numspell@group@digit@iii% + \or\numspell@{uno}\or\or\numspell@{tr\'{e}}% + \fi% + \fi% + \fi% + \ifnum\number\numexpr\numspell@group@digit@i+\numspell@group@digit@ii=0% + \ifcase\numspell@group@digit@iii% + \or\or\or\numspell@{tre}% + \fi% + \fi% +} + +%% SPELLING ORDINAL NUMBER GROUP +%% ------------------------------------ +%% \numspell@ordgroup@spell@it{} (=000,001,...,999) +%% ------------------------------------ +%% \numspell@group@digits{} +%% Adding the ordinal spelling to \thenumspell +%% +\def\numspell@ordgroup@spell@it#1{% + \numspell@group@digits{#1}% + \ifcase\numspell@group@digit@i% + \or\or\numspell@{due}\or\numspell@{tre}\or\numspell@{quattro}\or\numspell@{cinque}% + \or\numspell@{sei}\or\numspell@{sette}\or\numspell@{otto}\or\numspell@{nove}% + \fi% + \ifnum\numspell@group@digit@i>0% + \numspell@{cent}% + \ifnum\numspell@group@digit@ii=8\else% + \ifnum\number\numexpr\numspell@group@digit@ii+\numspell@group@digit@iii>0\numspell@{o}\fi% + \fi% + \fi% + \ifcase\number\numexpr10*\numspell@group@digit@ii+\numspell@group@digit@iii% + \or\or\numspell@{du}\or\or\numspell@{quattr}\or\numspell@{cinqu}\or\numspell@{sei}\or\numspell@{sett}% + \or\numspell@{ott}\or\numspell@{nov}\or\numspell@{diec}\or\numspell@{undic}\or\numspell@{dodic}% + \or\numspell@{tredic}\or\numspell@{quattordic}\or\numspell@{quindic}\or\numspell@{sedic}% + \or\numspell@{diciassett}\or\numspell@{diciott}\or\numspell@{diciannov}\or\numspell@{vent}% + \or\numspell@{ventun}\or\numspell@{ventidu}\or\numspell@{ventitre}\or\numspell@{ventiquattr}% + \or\numspell@{venticinqu}\or\numspell@{ventisei}\or\numspell@{ventisett}\or\numspell@{ventott}\or\numspell@{ventinov}% + \fi% + \ifcase\numspell@group@digit@ii% + \or\or\or\numspell@{trent}\or\numspell@{quarant}\or\numspell@{cinquant}\or\numspell@{sessant}% + \or\numspell@{settant}\or\numspell@{ottant}\or\numspell@{novant}% + \fi% + \ifnum\numspell@group@digit@ii>2% + \ifcase\numspell@group@digit@iii% + \or\numspell@{un}\or\numspell@{adu}\or\numspell@{atre}\or\numspell@{aquattr}% + \or\numspell@{acinqu}\or\numspell@{asei}\or\numspell@{asett}\or\numspell@{ott}\or\numspell@{anov}% + \fi% + \fi% + \ifnum\numspell@group@digit@i>0% + \ifnum\numspell@group@digit@ii=0% + \ifcase\numspell@group@digit@iii% + \or\numspell@{un}\or\or\numspell@{tre}% + \fi% + \fi% + \fi% + \ifnum\number\numexpr\numspell@group@digit@i+\numspell@group@digit@ii=0% + \ifcase\numspell@group@digit@iii% + \or\or\or\numspell@{tre}% + \fi% + \fi% +} + +%% SPELLING CARDINAL NUMBER +%% -------------------------------------- +%% \numspell@num@spell@it{}{} +%% -------------------------------------- +%% \numspell@groups{}{} +%% Adding the \numspell@num spelling to \thenumspell +%% +\def\numspell@num@spell@it#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@{un}}{}% + \numspell@group@spell@it{\csname numspell@group@\roman{numspell@groupcount}\endcsname}% + \numspell@{ }% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}% + {\csname numspell@group@\roman{numspell@groupcount}@it@name\endcsname}% + {\csname numspell@group@\roman{numspell@groupcount}@it@name@plural\endcsname}% + \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname>0\numspell@{ }\fi% + }% + \addtocounter{numspell@groupcount}{-1}% + }% + \IfEq{\numspell@group@ii}{0}{}{% + \numspell@group@spell@it{\numspell@group@ii}% + \IfEq{\numspell@group@ii}{1}{\numspell@group@ii@it@name}{\numspell@group@ii@it@name@plural}% + \numspell@group@digits{\numspell@group@ii}% + \ifnum\numspell@group@digit@i>0\ifnum\number\numexpr\numspell@group@digit@ii+\numspell@group@digit@iii>0% + \ifnum\numspell@group@ii@before>0\numspell@{ }\fi% + \fi\fi% + }% + \IfEq{\numspell@group@i}{0}{}{% + \IfEq{\numspell@group@i}{1}{\numspell@{uno}}{}% + \ifnum\numspell@group@max>1% + \IfEq{\numspell@group@i}{3}{\numspell@{tr\'{e}}}{\numspell@group@spell@it{\numspell@group@i}}% + \else% + \numspell@group@spell@it{\numspell@group@i}% + \fi% + }% + \ifnum\numspell@group@max=0\numspell@{zero}\fi% +} + +%% SPELLING ORDINAL NUMBER +%% ----------------------------------------- +%% \numspell@ordnum@spell@it{}{} +%% ----------------------------------------- +%% \numspell@groups{}{} +%% Adding the \numspell@num ordinal spelling to \thenumspell +%% +\def\numspell@ordnum@spell@it#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@{un}}{}% + \numspell@group@spell@it{\csname numspell@group@\roman{numspell@groupcount}\endcsname}% + \numspell@{ }% + \ifnum\csname numspell@group@\roman{numspell@groupcount}@before\endcsname>0% + \IfEq{\csname numspell@group@\roman{numspell@groupcount}\endcsname}{1}% + {\csname numspell@group@\roman{numspell@groupcount}@it@name\endcsname}% + {\csname numspell@group@\roman{numspell@groupcount}@it@name@plural\endcsname}% + \numspell@{ }% + \else% + \csname numspell@ordgroup@\roman{numspell@groupcount}@it@name\endcsname% + \numspell@it@gender% + \fi% + }% + \addtocounter{numspell@groupcount}{-1}% + }% + \IfEq{\numspell@group@ii}{0}{}{% + \numspell@group@spell@it{\numspell@group@ii}% + \ifnum\numspell@group@ii@before>0% + \IfEq{\numspell@group@ii}{1}{\numspell@group@ii@it@name}{\numspell@group@ii@it@name@plural}% + \else% + \numspell@ordgroup@ii@it@name% + \numspell@it@gender% + \fi% + \numspell@group@digits{\numspell@group@ii}% + \ifnum\numspell@group@digit@i>0\ifnum\number\numexpr\numspell@group@digit@ii+\numspell@group@digit@iii>0% + \ifnum\numspell@group@ii@before>0\numspell@{ }\fi% + \fi\fi% + }% + \IfEq{\numspell@group@i}{0}{}{% + \ifnum\numspell@group@max>1% + \IfEq{\numspell@group@i}{1}{\numspell@{un}}{}% + \numspell@ordgroup@spell@it{\numspell@group@i}% + \numspell@{esim}% + \numspell@it@gender% + \else% + \ifcase\numspell@group@i% + \or\numspell@{prim}\or\numspell@{second}\or\numspell@{terz}\or\numspell@{quart}\or\numspell@{quint}% + \or\numspell@{sest}\or\numspell@{settim}\or\numspell@{ottav}\or\numspell@{non}\or\numspell@{decim}% + \else% + \numspell@ordgroup@spell@it{\numspell@group@i}% + \numspell@{esim}% + \fi% + \numspell@it@gender% + \fi% + }% + \ifnum\numspell@group@max=0\numspell@{zeresim}\numspell@it@gender\fi% +} + +%% ---------------------- +%% \numspell@uppercase@it +%% ---------------------- +%% E.g. \def\thenumspell{uno}\numspell@uppercase\thenumspell --> 'Uno' +%% \MakeUppercase does not work on pdf bookmark (see hyperref), so using another effective macro. +%% +\def\numspell@uppercase@it{% + \fullexpandarg% + \StrChar{\thenumspell}{1}[\numspell@firstletter]% + \expandarg% + \StrGobbleLeft{\thenumspell}{1}[\numspell@trunc]% + \fullexpandarg% + \def\numspell@the{}% + \IfStrEq{\numspell@firstletter}{u}{\g@addto@macro\numspell@the{U}}{}% uno + \IfStrEq{\numspell@firstletter}{d}{\g@addto@macro\numspell@the{D}}{}% due + \IfStrEq{\numspell@firstletter}{t}{\g@addto@macro\numspell@the{T}}{}% tre + \IfStrEq{\numspell@firstletter}{q}{\g@addto@macro\numspell@the{Q}}{}% quattro + \IfStrEq{\numspell@firstletter}{c}{\g@addto@macro\numspell@the{C}}{}% cinque + \IfStrEq{\numspell@firstletter}{s}{\g@addto@macro\numspell@the{S}}{}% sei + \IfStrEq{\numspell@firstletter}{o}{\g@addto@macro\numspell@the{O}}{}% otto + \IfStrEq{\numspell@firstletter}{n}{\g@addto@macro\numspell@the{N}}{}% nove + \IfStrEq{\numspell@firstletter}{v}{\g@addto@macro\numspell@the{V}}{}% venti + \IfStrEq{\numspell@firstletter}{m}{\g@addto@macro\numspell@the{M}}{}% mille + \IfStrEq{\numspell@firstletter}{z}{\g@addto@macro\numspell@the{Z}}{}% zero + \IfStrEq{\numspell@firstletter}{p}{\g@addto@macro\numspell@the{P}}{}% primo + \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