texlive[61132] Master/texmf-dist: numspell (23nov21)
commits+karl at tug.org
commits+karl at tug.org
Tue Nov 23 23:40:38 CET 2021
Revision: 61132
http://tug.org/svn/texlive?view=revision&revision=61132
Author: karl
Date: 2021-11-23 23:40:37 +0100 (Tue, 23 Nov 2021)
Log Message:
-----------
numspell (23nov21)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/numspell/README
trunk/Master/texmf-dist/doc/latex/numspell/numspell.pdf
trunk/Master/texmf-dist/doc/latex/numspell/numspell.tex
trunk/Master/texmf-dist/tex/latex/numspell/numspell-english.sty
trunk/Master/texmf-dist/tex/latex/numspell/numspell-french.sty
trunk/Master/texmf-dist/tex/latex/numspell/numspell-german.sty
trunk/Master/texmf-dist/tex/latex/numspell/numspell-italian.sty
trunk/Master/texmf-dist/tex/latex/numspell/numspell-magyar.sty
trunk/Master/texmf-dist/tex/latex/numspell/numspell.sty
Added Paths:
-----------
trunk/Master/texmf-dist/tex/latex/numspell/numspell-latin.sty
Modified: trunk/Master/texmf-dist/doc/latex/numspell/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/numspell/README 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/doc/latex/numspell/README 2021-11-23 22:40:37 UTC (rev 61132)
@@ -1,9 +1,9 @@
numspell.sty package
-Copyright 2017-2020 by Tibor Tomacs
+Copyright 2017-2021 by Tibor Tómács
This package supports the spelling of cardinal and ordinal numbers.
-Supported languages are English, French, German, Hungarian and Italian.
+Supported languages are English, French, German, Hungarian, Italian, and Latin.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -24,6 +24,7 @@
numspell-english.sty (English package for numspell)
numspell-french.sty (French package for numspell)
numspell-german.sty (German package for numspell)
+numspell-italian.sty (Italian package for numspell)
+numspell-latin.sty (Latin package for numspell)
numspell-magyar.sty (Hungarian package for numspell)
-numspell-italian.sty (Italian package for numspell)
numspell.tex and the derived file numspell.pdf (documentation).
\ No newline at end of file
Modified: trunk/Master/texmf-dist/doc/latex/numspell/numspell.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/numspell/numspell.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/numspell/numspell.tex 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/doc/latex/numspell/numspell.tex 2021-11-23 22:40:37 UTC (rev 61132)
@@ -1,7 +1,7 @@
%%
%% `numspell.tex' documentation of the numspell package
%%
-%% Copyright 2017-2020 by Tibor Tomacs
+%% Copyright 2017-2021 by Tibor Tomacs
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,13 +17,12 @@
%%
\documentclass{article}
\usepackage[a4paper]{geometry}
-\usepackage[pdfstartview=FitH,colorlinks,allcolors=black,bookmarksnumbered]{hyperref}
+\usepackage[pdfstartview=FitH,colorlinks,allcolors=black,bookmarksnumbered,hyperfootnotes=false]{hyperref}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
-\usepackage{numspell}
-\usepackage[magyar,italian,ngerman,french,english]{babel}
-\usepackage{listings,xcolor,amsmath,upquote}
-\usepackage[group-separator={,}]{siunitx}
+\usepackage[magyar,italian,latin,ngerman,french,english]{babel}
+\usepackage[symbol]{footmisc}
+\usepackage{numspell,listings,xcolor,amsmath,upquote}
\flushbottom
\setlength{\labelsep}{0pt}
\setlength{\parindent}{0pt}
@@ -30,7 +29,7 @@
\setlength{\parskip}{6pt}
\lstnewenvironment{examplelst}{\lstset{
-%belowskip=\bigskipamount,
+aboveskip=\bigskipamount,
basicstyle=\ttfamily,
backgroundcolor=\color{black!10},
frame=trbl,
@@ -56,15 +55,15 @@
\begin{document}
-\title{The {\bfseries\sffamily numspell} package\\{\large v1.4 (2020/11/11)}}
+\title{The {\bfseries\sffamily numspell} package\\{\large v1.5 (2021/11/23)}}
\author{Tibor Tómács\\{\normalsize\url{tomacs.tibor at uni-eszterhazy.hu}}}
\date{}
\maketitle
\section{Introduction}
-The aim of the \texttt{numspell} package is to spell the cardinal and ordinal numbers from 0 to $10^{67}-1$ (i.e.~maximum 66 digits).
+The aim of the \texttt{numspell} package is to spell the cardinal and ordinal numbers from 0 to $10^{66}-1$ (i.e.~maximum 66 digits).
-The supported languages are English (British and American), French, German, Hungarian and Italian.
+The supported languages are English (British and American), French, German, Hungarian, Italian, and Latin\footnote{Thanks to Keno Wehr for the Latin language module.} (classical, medieval, modern, and ecclesiastic).
The spelling will happen in the current language.
The \texttt{numspell} package requires the services of the \texttt{xstring} and \texttt{iflang} packages.
@@ -77,7 +76,7 @@
\section{Commands}
\begin{description}
\item\commandinline|\numspell[!<zeros>!]{!<num>!}|\\
-Spelling the cardinal number $n=\text{\color{green!50!black}\itshape$\langle$num$\rangle$}\cdot10^{\text{\color{green!50!black}\itshape$\langle$zeros$\rangle$}}$, where $0\leq n\leq 10^{67}-1$. The default value of \commandinline|!<zeros>!| is \texttt{0}. For example
+Spelling the cardinal number $n=\text{\color{green!50!black}\itshape$\langle$num$\rangle$}\cdot10^{\text{\color{green!50!black}\itshape$\langle$zeros$\rangle$}}$, where $0\leq n\leq 10^{66}-1$. The default value of \commandinline|!<zeros>!| is \texttt{0}. For example
\begin{flushleft}
\verb|\numspell{12000}| $\to$ \numspell{12000}\\
\verb|\numspell[3]{12}| $\to$ \numspell[3]{12}\\
@@ -175,7 +174,7 @@
\item\commandinline|\ordnumspell[!<zeros>!]{!<num>!}|\\
Spelling the ordinal number
$n=\text{\color{green!50!black}\itshape$\langle$num$\rangle$}\cdot10^{\text{\color{green!50!black}\itshape$\langle$zeros$\rangle$}}$,
-where $0\leq n\leq 10^{67}-1$. The default value of \commandinline|!<zeros>!| is \texttt{0}. For example
+where $0\leq n\leq 10^{66}-1$. The default value of \commandinline|!<zeros>!| is \texttt{0}. For example
\begin{flushleft}
\verb|\ordnumspell{12000}| $\to$ \ordnumspell{12000}\\
\verb|\ordnumspell[3]{12}| $\to$ \ordnumspell[3]{12}\\
@@ -349,12 +348,36 @@
{\numspellitfeminine\ordnumspell{1}}; {\numspellitmasculine\ordnumspell{1}}
\end{description}
+\section{Commands for the Latin language}
+The following commands only work, if one of the next languages is active: \texttt{latin}, \texttt{classiclatin}, \texttt{medievallatin}, or \texttt{ecclesiasticlatin}.
+\begin{description}
+\selectlanguage{latin}
+\item\commandinline|\numspelllamasculine| (default)\\
+All numbers will be printed in masculine form. For example\\
+\verb|\numspell{1}, \numspell{2}, \numspell{200}, \ordnumspell{1}|\\[2mm]
+\numspell{1}, \numspell{2}, \numspell{200}, \ordnumspell{1}
+
+\item\commandinline|\numspelllafeminine|\\
+All numbers will be printed in feminine form. For example\\
+\verb|\numspelllafeminine|\\
+\verb|\numspell{1}, \numspell{2}, \numspell{200}, \ordnumspell{1}|\\[2mm]
+\numspelllafeminine
+\numspell{1}, \numspell{2}, \numspell{200}, \ordnumspell{1}
+
+\item\commandinline|\numspelllaneuter|\\
+All numbers will be printed in neuter form. For example\\
+\verb|\numspelllaneuter|\\
+\verb|\numspell{1}, \numspell{2}, \numspell{200}, \ordnumspell{1}|\\[2mm]
+\numspelllaneuter
+\numspell{1}, \numspell{2}, \numspell{200}, \ordnumspell{1}
+\end{description}
+
\section{Examples}
\begin{examplelst}
\documentclass{article}
\usepackage[T1]{fontenc}
-\usepackage[magyar,italian,ngerman,french,english]{babel}
+\usepackage[magyar,italian,latin,ngerman,french,english]{babel}
\usepackage{numspell}
\usepackage[group-separator={,}]{siunitx}
\begin{document}
@@ -377,27 +400,33 @@
\par\smallskip\noindent
In Italian the spelling of \num{\mynum} is
\foreignlanguage{italian}{\em\numspell{\mynum}}.
+\par\smallskip\noindent
+In Latin the spelling of \num{\mynum} is
+\foreignlanguage{latin}{\em\numspell{\mynum}}.
\end{document}
\end{examplelst}
\def\mynum{123456789}
\noindent
-In British English the spelling of \num{\mynum} is
+In British English the spelling of 123,456,789 is
\emph{\numspell{\mynum}}.
\par\smallskip\noindent
-In American English the spelling of \num{\mynum} is
+In American English the spelling of 123,456,789 is
\foreignlanguage{american}{\em\numspell{\mynum}}.
\par\smallskip\noindent
-In French the spelling of \num{\mynum} is
+In French the spelling of 123,456,789 is
\foreignlanguage{french}{\em\numspell{\mynum}}.
\par\smallskip\noindent
-In German the spelling of \num{\mynum} is
+In German the spelling of 123,456,789 is
\foreignlanguage{ngerman}{\em\numspell{\mynum}}.
\par\smallskip\noindent
-In Hungarian the spelling of \num{\mynum} is
+In Hungarian the spelling of 123,456,789 is
\foreignlanguage{magyar}{\em\numspell{\mynum}}.
\par\smallskip\noindent
-In Italian the spelling of \num{\mynum} is
+In Italian the spelling of 123,456,789 is
\foreignlanguage{italian}{\em\numspell{\mynum}}.
+\par\smallskip\noindent
+In Latin the spelling of 123,456,789 is
+\foreignlanguage{latin}{\em\numspell{\mynum}}.
\begin{examplelst}
\documentclass{article}
Modified: trunk/Master/texmf-dist/tex/latex/numspell/numspell-english.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numspell/numspell-english.sty 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/tex/latex/numspell/numspell-english.sty 2021-11-23 22:40:37 UTC (rev 61132)
@@ -1,7 +1,7 @@
%%
%% `numspell-english.sty' English language package for 'numspell.sty'
%%
-%% Copyright 2017-2020 by Tibor Tomacs
+%% Copyright 2017-2021 by Tibor Tomacs
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
Modified: trunk/Master/texmf-dist/tex/latex/numspell/numspell-french.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numspell/numspell-french.sty 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/tex/latex/numspell/numspell-french.sty 2021-11-23 22:40:37 UTC (rev 61132)
@@ -1,7 +1,7 @@
%%
%% `numspell-french.sty' French language package for 'numspell.sty'
%%
-%% Copyright 2017-2020 by Tibor Tomacs
+%% Copyright 2017-2021 by Tibor Tomacs
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
Modified: trunk/Master/texmf-dist/tex/latex/numspell/numspell-german.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numspell/numspell-german.sty 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/tex/latex/numspell/numspell-german.sty 2021-11-23 22:40:37 UTC (rev 61132)
@@ -1,7 +1,7 @@
%%
%% `numspell-german.sty' German language package for 'numspell.sty'
%%
-%% Copyright 2017-2020 by Tibor Tomacs
+%% Copyright 2017-2021 by Tibor Tomacs
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
Modified: trunk/Master/texmf-dist/tex/latex/numspell/numspell-italian.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numspell/numspell-italian.sty 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/tex/latex/numspell/numspell-italian.sty 2021-11-23 22:40:37 UTC (rev 61132)
@@ -1,7 +1,7 @@
%%
%% `numspell-italian.sty' Italian language package for 'numspell.sty'
%%
-%% Copyright 2017-2020 by Tibor Tomacs
+%% Copyright 2017-2021 by Tibor Tomacs
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
Added: trunk/Master/texmf-dist/tex/latex/numspell/numspell-latin.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numspell/numspell-latin.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/numspell/numspell-latin.sty 2021-11-23 22:40:37 UTC (rev 61132)
@@ -0,0 +1,878 @@
+%%
+%% `numspell-latin.sty' Latin language package for 'numspell.sty'
+%%
+%% Copyright 2021 by Keno Wehr
+%%
+%% 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 Keno Wehr.
+%%
+\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+\ProvidesPackage{numspell-latin}[2021/11/21 v1.0 Latin language package for numspell]
+
+%% GROUP NAMES according to Latin Wikipedia
+%% https://la.wikipedia.org/wiki/Nomina_permagnorum_numerorum
+\def\numspell at group@ii at la@name{\numspell@{mille}}
+\def\numspell at group@iii at la@name{\numspell@{millio}}
+\def\numspell at group@iv at la@name{\numspell@{milliardum}}
+\def\numspell at group@v at la@name{\numspell@{billio}}
+\def\numspell at group@vi at la@name{\numspell@{billiardum}}
+\def\numspell at group@vii at la@name{\numspell@{trillio}}
+\def\numspell at group@viii at la@name{\numspell@{trilliardum}}
+\def\numspell at group@ix at la@name{\numspell@{quadrillio}}
+\def\numspell at group@x at la@name{\numspell@{quadrilliardum}}
+\def\numspell at group@xi at la@name{\numspell@{quintillio}}
+\def\numspell at group@xii at la@name{\numspell@{quintilliardum}}
+\def\numspell at group@xiii at la@name{\numspell@{sextillio}}
+\def\numspell at group@xiv at la@name{\numspell@{sextilliardum}}
+\def\numspell at group@xv at la@name{\numspell@{septillio}}
+\def\numspell at group@xvi at la@name{\numspell@{septilliardum}}
+\def\numspell at group@xvii at la@name{\numspell@{octillio}}
+\def\numspell at group@xviii at la@name{\numspell@{octilliardum}}
+\def\numspell at group@xix at la@name{\numspell@{nonillio}}
+\def\numspell at group@xx at la@name{\numspell@{nonilliardum}}
+\def\numspell at group@xxi at la@name{\numspell@{decillio}}
+\def\numspell at group@xxii at la@name{\numspell@{decilliardum}}
+
+%% GROUP NAMES (PLURAL)
+\def\numspell at group@ii at la@name at plural{\numspell@{milia}}
+\def\numspell at group@iii at la@name at plural{\numspell@{milliones}}
+\def\numspell at group@iv at la@name at plural{\numspell@{milliarda}}
+\def\numspell at group@v at la@name at plural{\numspell@{billiones}}
+\def\numspell at group@vi at la@name at plural{\numspell@{billiarda}}
+\def\numspell at group@vii at la@name at plural{\numspell@{trilliones}}
+\def\numspell at group@viii at la@name at plural{\numspell@{trilliarda}}
+\def\numspell at group@ix at la@name at plural{\numspell@{quadrilliones}}
+\def\numspell at group@x at la@name at plural{\numspell@{quadrilliarda}}
+\def\numspell at group@xi at la@name at plural{\numspell@{quintilliones}}
+\def\numspell at group@xii at la@name at plural{\numspell@{quintilliarda}}
+\def\numspell at group@xiii at la@name at plural{\numspell@{sextilliones}}
+\def\numspell at group@xiv at la@name at plural{\numspell@{sextilliarda}}
+\def\numspell at group@xv at la@name at plural{\numspell@{septilliones}}
+\def\numspell at group@xvi at la@name at plural{\numspell@{septilliarda}}
+\def\numspell at group@xvii at la@name at plural{\numspell@{octilliones}}
+\def\numspell at group@xviii at la@name at plural{\numspell@{octilliarda}}
+\def\numspell at group@xix at la@name at plural{\numspell@{nonilliones}}
+\def\numspell at group@xx at la@name at plural{\numspell@{nonilliarda}}
+\def\numspell at group@xxi at la@name at plural{\numspell@{decilliones}}
+\def\numspell at group@xxii at la@name at plural{\numspell@{decilliarda}}
+
+%% ORDINAL GROUP NAMES ("millesimus" can be found in the grammars,
+%% the other forms have been created analogously based on Italian)
+\def\numspell at ordgroup@ii at la@name{\numspell@{millesim}}
+\def\numspell at ordgroup@iii at la@name{\numspell@{millionesim}}
+\def\numspell at ordgroup@iv at la@name{\numspell@{milliardesim}}
+\def\numspell at ordgroup@v at la@name{\numspell@{billionesim}}
+\def\numspell at ordgroup@vi at la@name{\numspell@{billiardesim}}
+\def\numspell at ordgroup@vii at la@name{\numspell@{trillionesim}}
+\def\numspell at ordgroup@viii at la@name{\numspell@{trilliardesim}}
+\def\numspell at ordgroup@ix at la@name{\numspell@{quadrillionesim}}
+\def\numspell at ordgroup@x at la@name{\numspell@{quadrilliardesim}}
+\def\numspell at ordgroup@xi at la@name{\numspell@{quintillionesim}}
+\def\numspell at ordgroup@xii at la@name{\numspell@{quintilliardesim}}
+\def\numspell at ordgroup@xiii at la@name{\numspell@{sextillionesim}}
+\def\numspell at ordgroup@xiv at la@name{\numspell@{sextilliardesim}}
+\def\numspell at ordgroup@xv at la@name{\numspell@{septillionesim}}
+\def\numspell at ordgroup@xvi at la@name{\numspell@{septilliardesim}}
+\def\numspell at ordgroup@xvii at la@name{\numspell@{octillionesim}}
+\def\numspell at ordgroup@xviii at la@name{\numspell@{octilliardesim}}
+\def\numspell at ordgroup@xix at la@name{\numspell@{nonillionesim}}
+\def\numspell at ordgroup@xx at la@name{\numspell@{nonilliardesim}}
+\def\numspell at ordgroup@xxi at la@name{\numspell@{decillionesim}}
+\def\numspell at ordgroup@xxii at la@name{\numspell@{decilliardesim}}
+
+%% SPELLING VARIANTS
+%%
+%% ae, appearing in the female plural ending, was a diphthong in classical
+%% Latin. In the late antiquity it became a monophthong and was written in
+%% different ways later on. Like babel-latin, we use a ligature for medieval
+%% and ecclesiastic Latin.
+%%
+%% The letter U did not exist in classical Latin. The vowel U was always
+%% written as V. In the minuscule manuscripts of the Middle Ages it evolved to
+%% u. The distinction of U and V is of modern origin. So we do not use U and v
+%% for classical and medieval Latin, but only for modern and ecclesiastic Latin.
+%%
+\def\numspell at la@ae at diphthong{%
+ \def\numspell at la@ae{\numspell@{ae}}%
+}
+\def\numspell at la@ae at ligature{%
+ \def\numspell at la@ae{\numspell@{\ae}}%
+}
+\def\numspell at la@use at vocalic@V{%
+ \def\numspell at la@v{\numspell@{u}}%
+ \def\numspell at la@uppercase at u{V}%
+}
+\def\numspell at la@use at U@and at v{%
+ \def\numspell at la@v{\numspell@{v}}%
+ \def\numspell at la@uppercase at u{U}%
+}
+
+%% WORDING VARIANTS
+%%
+%% The classical main forms of "twentieth" and "thirtieth" are "vicesimus" and
+%% "tricesimus". Ecclesiastic Latin uses the more regular varints "vigesimus"
+%% and "trigesimus" instead.
+%%
+%% The classical main form of "seventeen" is "septendecim", but later "decem et
+%% septem" was used instead (e.g. Gen 47:28). We only use "septendecim" for
+%% classical and modern Latin.
+%% Reference: Lewis/Short, A Latin Dictionary: "septendecim was in use only
+%% among the antiqui"
+%%
+%% The word "millio" for million is of modern origin. The classical term for
+%% one million is "decies centena milia" (ten times hundred thousand).
+%% The Thesaurus Linguae Latinae even documents the form "quadringenties milies
+%% [centena milia]" (400 times 1000 times 100000, used by Sueton, ThLL v.s.
+%% "miliens").
+%% For classical and medieval Latin we use the classical wording for cardinal
+%% numbers less than 10^11 and for ordinal numbers less than 10^7. We use the
+%% modern wording in other cases.
+%%
+\def\numspell at la@classical at ordinals{%
+ \def\numspell at la@twentieth{\numspell at la@v\numspell@{icesim}}%
+ \def\numspell at la@thirtieth{\numspell@{tricesim}}%
+}
+\def\numspell at la@ecclesiastic at ordinals{%
+ \def\numspell at la@twentieth{\numspell at la@v\numspell@{igesim}}%
+ \def\numspell at la@thirtieth{\numspell@{trigesim}}%
+}
+\def\numspell at la@classical at seventeen{%
+ \def\numspell at la@seventeen{\numspell@{septendecim}}%
+}
+\def\numspell at la@postclassical at seventeen{%
+ \def\numspell at la@seventeen{\numspell@{decem et septem}}%
+}
+\newif\ifnumspell at la@modern at million
+
+%% ADDITION AND SUBTRACTION, INVERSION OF ORDINALS
+%%
+%% Numbers ending in 8 or 9 can be formed by addition or by subtraction.
+%% 28 by addition: viginti octo, 28 by subtraction: duodetriginta
+%% We use subtraction for classical and modern Latin and addition for medieval
+%% and ecclesiastic Latin.
+%%
+%% Ordinals under 20 are normally inverted (tertia decima for 13th). In
+%% ecclesiastical Latin they are not inverted (decima tertia for 13th).
+%%
+%% The reference for medieval Latin is:
+%% Peter Stotz, Handbuch zur lateinischen Sprache des Mittelalters (HLSMA)
+%%
+%% HLSMA 4, VIII, § 88
+%% »Die Zahlbez’en für ,11‘ bis ,19‘ sind bereits in der Antike, und so dann
+%% auch im MA, recht oft durch zwei asyndetische oder mit *et* verbundene
+%% einfache Zahlwörter gegeben worden: *septem (et/ac) decem* usf., etwa auch
+%% *duobus decim*. Häufig aber kommen vor: *decem et quattuor*, *d. et sex*,
+%% *d. et septem*, *d. et octo*, *decem et novem*.
+%% An Stelle der Bildungen auf *-decim* bei ,17‘ und *-deviginti* bei ,18‘, ,19‘
+%% erscheint oft auch asyndetisches oder geeintes *decem-*: *decemseptem*,
+%% *decemocto*, *decemnovem* (vgl. it. *diciasètte*, *diciòtto*, *diciannòve*).
+%% (Zum Verhältnis additiver und subtraktiver Formen in diesen Fällen vgl.
+%% weiter § 97.)«
+%%
+%% HLSMA 4, VIII, § 97.1
+%% »Subtraktive Bez’en für Zahlen unter der vollen Zehnerzahl wie *undeviginti*
+%% ,19‘, *duodetriginta* ,28‘, duodeseptuagesimus ,der 68ste‘ sind auch im MA
+%% noch belegt: *duo de sexaginta*, *duo de XX*, *duo de XL*. Häufig sind sie
+%% nicht gewesen, und als Belege kommen selbstverständlich nur in den Hss.
+%% ausgeschriebene Zahlenbenennungen in Betracht. Bereits in der Antike kommen
+%% reichlich Bez’en vor wie *decem (et) octo/novem*, *octo et viginti*, *nonus
+%% et vicesimus* u. a. m. (Vgl. auch § 88.) In aller Regel wurden im lat. MA
+%% Formen gebraucht wie *decem et octo*, *viginti octo*. Seit Livius ist das
+%% nach *undecim* usf. analogisch gebildete *octodecim* in Gebrauch; auch
+%% *novemdecim* kommt vor, sodann *octavus decimus*, *nonus decimus*.«
+%%
+\newif\ifnumspell at la@subtraction
+\newif\ifnumspell at la@invert at ordinals
+
+%% SETTINGS FOR LANGUAGE VARIANTS
+\def\numspell at la@classical at settings{%
+ \numspell at la@ae at diphthong
+ \numspell at la@use at vocalic@V
+ \numspell at la@classical at ordinals
+ \numspell at la@classical at seventeen
+ \numspell at la@subtractiontrue
+ \numspell at la@invert at ordinalstrue
+ \numspell at la@modern at millionfalse
+}
+\def\numspell at la@medieval at settings{%
+ \numspell at la@ae at ligature
+ \numspell at la@use at vocalic@V
+ \numspell at la@classical at ordinals
+ \numspell at la@postclassical at seventeen
+ \numspell at la@subtractionfalse
+ \numspell at la@invert at ordinalstrue
+ \numspell at la@modern at millionfalse
+}
+\def\numspell at la@modern at settings{%
+ \numspell at la@ae at diphthong
+ \numspell at la@use at U@and at v
+ \numspell at la@classical at ordinals
+ \numspell at la@classical at seventeen
+ \numspell at la@subtractiontrue
+ \numspell at la@invert at ordinalstrue
+ \numspell at la@modern at milliontrue
+}
+\def\numspell at la@ecclesiastic at settings{%
+ \numspell at la@ae at ligature
+ \numspell at la@use at U@and at v
+ \numspell at la@ecclesiastic at ordinals
+ \numspell at la@postclassical at seventeen
+ \numspell at la@subtractionfalse
+ \numspell at la@invert at ordinalsfalse
+ \numspell at la@modern at milliontrue
+}
+\def\numspell at la@check at language@variant{%
+ \IfLanguageName{classiclatin}{%
+ \numspell at la@classical at settings
+ }{%
+ \IfLanguageName{medievallatin}{%
+ \numspell at la@medieval at settings
+ }{%
+ \IfLanguageName{ecclesiasticlatin}{%
+ \numspell at la@ecclesiastic at settings
+ }{%
+ \ifcsname iflanguageoption\endcsname% for polyglossia
+ \iflanguageoption{latin}{variant}{classic}{%
+ \numspell at la@classical at settings
+ }{%
+ \iflanguageoption{latin}{variant}{medieval}{%
+ \numspell at la@medieval at settings
+ }{%
+ \iflanguageoption{latin}{variant}{ecclesiastic}{%
+ \numspell at la@ecclesiastic at settings
+ }{%
+ \numspell at la@modern at settings
+ }%
+ }%
+ }%
+ \else
+ \numspell at la@modern at settings
+ \fi
+ }%
+ }%
+ }%
+}
+
+%% INFLECTION ENDINGS
+\def\numspelllamasculine{%
+ \def\numspell at la@ending at sing{\numspell@{us}}%
+ \def\numspell at la@ending at plural{\numspell@{i}}%
+ \def\numspell at la@two{\numspell@{duo}}%
+ \def\numspell at la@three{\numspell@{tres}}%
+}
+\def\numspelllafeminine{%
+ \def\numspell at la@ending at sing{\numspell@{a}}%
+ \def\numspell at la@ending at plural{\numspell at la@ae}%
+ \def\numspell at la@two{\numspell@{du}\numspell at la@ae}%
+ \def\numspell at la@three{\numspell@{tres}}%
+}
+\def\numspelllaneuter{%
+ \def\numspell at la@ending at sing{\numspell@{um}}%
+ \def\numspell at la@ending at plural{\numspell@{a}}%
+ \def\numspell at la@two{\numspell@{duo}}%
+ \def\numspell at la@three{\numspell@{tria}}%
+}
+\numspelllamasculine
+
+%% TERMS FOR THE ONES
+\def\numspell at la@ones at cardinal#1{%
+ \ifcase#1%
+ \or\numspell@{un}\numspell at la@ending at sing\or\numspell at la@two\or\numspell at la@three
+ \or\numspell@{quattuor}\or\numspell@{quinque}\or\numspell@{sex}\or\numspell@{septem}%
+ \or\numspell@{octo}\or\numspell@{no}\numspell at la@v\numspell@{em}\or\numspell@{decem}%
+ \or\numspell@{undecim}\or\numspell@{duodecim}\or\numspell@{tredecim}\or\numspell@{quattuordecim}%
+ \or\numspell@{quindecim}\or\numspell@{sedecim}\or\numspell at la@seventeen
+ \fi
+}
+
+\def\numspell at la@ones at ordinal#1{%
+ \ifcase#1%
+ \or\numspell@{prim}\or\numspell@{secund}\or\numspell@{terti}\or\numspell@{quart}%
+ \or\numspell@{quint}\or\numspell@{sext}\or\numspell@{septim}\or\numspell@{octa}\numspell at la@v
+ \or\numspell@{non}\or\numspell@{decim}\or\numspell@{undecim}\or\numspell@{duodecim}%
+ \fi
+ \numspell at la@ending at sing
+}
+
+\def\numspell at la@ones at adverb#1{%
+ \ifcase#1%
+ \or\numspell@{semel}\or\numspell@{bis}\or\numspell@{ter}\or\numspell@{quater}%
+ \or\numspell@{quinquies}\or\numspell@{sexies}\or\numspell@{septies}\or\numspell@{octies}%
+ \or\numspell@{no}\numspell at la@v\numspell@{ies}\or\numspell@{decies}\or\numspell@{undecies}%
+ \or\numspell@{duodecies}%
+ \fi
+}
+
+%% TERMS FOR THE TENS
+\def\numspell at la@tens at cardinal#1{%
+ \ifcase#1%
+ \or\numspell@{decem}\or\numspell at la@v\numspell@{iginti}\or\numspell@{triginta}%
+ \or\numspell@{quadraginta}\or\numspell@{quinquaginta}\or\numspell@{sexaginta}%
+ \or\numspell@{septuaginta}\or\numspell@{octoginta}\or\numspell@{nonaginta}\or\numspell@{centum}%
+ \fi
+}
+
+\def\numspell at la@tens at ordinal#1{%
+ \ifcase#1%
+ \or\numspell@{decim}\or\numspell at la@twentieth\or\numspell at la@thirtieth
+ \or\numspell@{quadragesim}\or\numspell@{quinquagesim}\or\numspell@{sexagesim}%
+ \or\numspell@{septuagesim}\or\numspell@{octogesim}\or\numspell@{nonagesim}\or\numspell@{centesim}%
+ \fi
+ \numspell at la@ending at sing
+}
+
+\def\numspell at la@tens at adverb#1{%
+ \ifcase#1%
+ \or\numspell@{decies}\or\numspell at la@v\numspell@{icies}\or\numspell@{tricies}%
+ \or\numspell@{quadragies}\or\numspell@{quinquagies}\or\numspell@{sexagies}%
+ \or\numspell@{septuagies}\or\numspell@{octogies}\or\numspell@{nonagies}\or\numspell@{centies}%
+ \fi
+}
+
+%% TERMS FOR THE HUNDREDS
+\def\numspell at la@hundreds at cardinal#1{%
+ \ifcase#1%
+ \or\numspell@{centum}\or\numspell@{ducent}\or\numspell@{trecent}\or\numspell@{quadringent}%
+ \or\numspell@{quingent}\or\numspell@{sescent}\or\numspell@{septingent}\or\numspell@{octingent}%
+ \or\numspell@{nongent}%
+ \fi
+ \ifnum#1>1%
+ \numspell at la@ending at plural
+ \fi
+}
+
+\def\numspell at la@hundreds at ordinal#1{%
+ \ifcase#1%
+ \or\numspell@{cent}\or\numspell@{ducent}\or\numspell@{trecent}\or\numspell@{quadringent}%
+ \or\numspell@{quingent}\or\numspell@{sescent}\or\numspell@{septingent}\or\numspell@{octingent}%
+ \or\numspell@{nongent}%
+ \fi
+ \numspell@{esim}%
+ \numspell at la@ending at sing
+}
+
+\def\numspell at la@hundreds at adverb#1{%
+ \ifcase#1%
+ \or\numspell@{centies}\or\numspell@{ducenties}\or\numspell@{trecenties}%
+ \or\numspell@{quadringenties}\or\numspell@{quingenties}\or\numspell@{sescenties}%
+ \or\numspell@{septingenties}\or\numspell@{octingenties}\or\numspell@{nongenties}%
+ \fi
+}
+
+%% NAMES OF SPECIAL NUMERALS
+\def\numspell at la@hundred at distributive{\numspell@{centena}}% neuter form, used before "milia"
+\def\numspell at la@thousand at adverb{\numspell@{milies}}
+
+%% MACROS FOR TWO-DIGIT NUMBERS
+\def\numspell at la@addition at cardinal{%
+ \numspell at la@tens at cardinal\numspell at group@digit at ii
+ \ifnum\numspell at group@digit at iii>0%
+ \numspell@{ }%
+ \ifnum\numspell at group@digit at ii=1%
+ \numspell@{et }%
+ \fi
+ \numspell at la@ones at cardinal\numspell at group@digit at iii
+ \fi
+}
+
+\def\numspell at la@addition at ordinal{%
+ \numspell at la@tens at ordinal\numspell at group@digit at ii
+ \ifnum\numspell at group@digit at iii>0%
+ \numspell@{ }%
+ \numspell at la@ones at ordinal\numspell at group@digit at iii
+ \fi
+}
+
+\def\numspell at la@addition at adverb{%
+ \numspell at la@tens at adverb\numspell at group@digit at ii
+ \ifnum\numspell at group@digit at iii>0%
+ \numspell@{ }%
+ \numspell at la@ones at adverb\numspell at group@digit at iii
+ \fi
+}
+
+\def\numspell at la@inverted at addition@ordinal{%
+ \ifnum\numspell at group@digit at iii>0%
+ \numspell at la@ones at ordinal\numspell at group@digit at iii
+ \numspell@{ }%
+ \fi
+ \numspell at la@tens at ordinal\numspell at group@digit at ii
+}
+
+\def\numspell at la@inverted at addition@adverb{%
+ \ifnum\numspell at group@digit at iii>0%
+ \numspell at la@ones at adverb\numspell at group@digit at iii
+ \numspell@{ }%
+ \fi
+ \numspell at la@tens at adverb\numspell at group@digit at ii
+}
+
+\newcount\numspell at la@tmp at count
+
+\def\numspell at la@subtraction at cardinal{%
+ \ifnum\numspell at group@digit at iii=8%
+ \numspell@{duode}%
+ \else
+ \numspell@{unde}%
+ \fi
+ \numspell at la@tmp at count\numexpr\numspell at group@digit at ii+1\relax
+ \numspell at la@tens at cardinal\numspell at la@tmp at count
+}
+
+\def\numspell at la@subtraction at ordinal{%
+ \ifnum\numspell at group@digit at iii=8%
+ \numspell@{duode}%
+ \else
+ \numspell@{unde}%
+ \fi
+ \numspell at la@tmp at count\numexpr\numspell at group@digit at ii+1\relax
+ \numspell at la@tens at ordinal\numspell at la@tmp at count
+}
+
+\def\numspell at la@subtraction at adverb{%
+ \ifnum\numspell at group@digit at iii=8%
+ \numspell@{duode}%
+ \else
+ \numspell@{unde}%
+ \fi
+ \numspell at la@tmp at count\numexpr\numspell at group@digit at ii+1\relax
+ \numspell at la@tens at adverb\numspell at la@tmp at count
+}
+
+%% SPELLING CARDINAL NUMBER GROUP
+%% ---------------------------------
+%% \numspell at group@spell at la{<group>} (<group>=000,001,...,999)
+%% ---------------------------------
+%% \numspell at group@digits{<group>}
+%% Adding the <group> spelling to \thenumspell
+%%
+\def\numspell at group@spell at la#1{%
+ \numspell at group@digits{#1}%
+ \ifnum\numspell at group@digit at i>0%
+ \numspell at la@hundreds at cardinal\numspell at group@digit at i
+ \ifnum\numexpr\numspell at group@digit at ii+\numspell at group@digit at iii>0%
+ \numspell@{ }%
+ \fi
+ \fi
+ \numspell at la@tmp at count\numexpr10*\numspell at group@digit at ii+\numspell at group@digit at iii\relax
+ \ifnum\numspell at la@tmp at count<18% 1, 2, ..., 17
+ \numspell at la@ones at cardinal\numspell at la@tmp at count% unus, duo, ..., septendecim/decem et septem
+ \else
+ \ifnum\numspell at group@digit at iii>7%
+ \ifnum\numspell at group@digit at i=0% 18, 19, 28, 29, ..., 98, 99
+ \ifnumspell at la@subtraction
+ \numspell at la@subtraction at cardinal% duodeviginti, ...
+ \else
+ \numspell at la@addition at cardinal% decem et octo, ..., viginti octo, ...
+ \fi
+ \else
+ \ifnum\numspell at group@digit at ii<9% 118, 119, 128, 129, ..., 188, 189, ..., 988, 989
+ \ifnumspell at la@subtraction
+ \numspell at la@subtraction at cardinal% centum duodeviginti, ...
+ \else
+ \numspell at la@addition at cardinal% centum decem et octo, ...
+ \fi
+ \else% 198, 199, 298, 299, ..., 998, 999
+ \numspell at la@addition at cardinal% centum nonaginta octo
+ \fi
+ \fi
+ \else
+ \ifnum\numspell at group@digit at ii>1% 20, 21, ..., 27, 30, 31, ..., 97
+ \numspell at la@addition at cardinal% viginti, viginti unus, ...
+ \fi
+ \fi
+ \fi
+}
+
+%% SPELLING ORDINAL NUMBER GROUP
+%% ------------------------------------
+%% \numspell at ordgroup@spell at la{<group>} (<group>=000,001,...,999)
+%% ------------------------------------
+%% \numspell at group@digits{<group>}
+%% Adding the <group> ordinal spelling to \thenumspell
+%%
+\def\numspell at ordgroup@spell at la#1{%
+ \numspell at group@digits{#1}%
+ \ifnum\numspell at group@digit at i>0%
+ \numspell at la@hundreds at ordinal\numspell at group@digit at i
+ \ifnum\numexpr\numspell at group@digit at ii+\numspell at group@digit at iii>0%
+ \numspell@{ }%
+ \fi
+ \fi
+ \numspell at la@tmp at count\numexpr10*\numspell at group@digit at ii+\numspell at group@digit at iii\relax
+ \ifnum\numspell at la@tmp at count>0%
+ \ifnum\numspell at la@tmp at count<13% 1, 2, ..., 12
+ \numspell at la@ones at ordinal\numspell at la@tmp at count% primus, secundus, ..., duodecimus
+ \else
+ \ifnum\numspell at la@tmp at count<18% 13, 14, ..., 17
+ \ifnumspell at la@invert at ordinals
+ \numspell at la@inverted at addition@ordinal% tertius decimus, ...
+ \else
+ \numspell at la@addition at ordinal% decimus tertius, ...
+ \fi
+ \else
+ \ifnum\numspell at group@digit at iii>7%
+ \ifnum\numspell at group@digit at i=0% 18, 19, 28, 29, ..., 98, 99
+ \ifnumspell at la@subtraction
+ \numspell at la@subtraction at ordinal% duodevicesimus, ...
+ \else
+ \ifnum\numspell at group@digit at ii=1%
+ \ifnumspell at la@invert at ordinals
+ \numspell at la@inverted at addition@ordinal% octavus decimus, ...
+ \else
+ \numspell at la@addition at ordinal% decimus octavus, ...
+ \fi
+ \else
+ \numspell at la@addition at ordinal% vicesimus octavus, ...
+ \fi
+ \fi
+ \else
+ \ifnum\numspell at group@digit at ii<9% 118, 119, 128, 129, ..., 188, 189, ..., 988, 989
+ \ifnumspell at la@subtraction
+ \numspell at la@subtraction at ordinal% centesimus undevicesimus, ...
+ \else
+ \numspell at la@addition at ordinal% centesimus decimus octavus, ...
+ \fi
+ \else% 198, 199, 298, 299, ..., 998, 999
+ \numspell at la@addition at ordinal% centesimus nonagesimus octavus, ...
+ \fi
+ \fi
+ \else
+ \ifnum\numspell at group@digit at ii>1% 20, 21, ..., 27, 30, 31, ..., 97
+ \numspell at la@addition at ordinal% vicesimus, vicesimus primus, ...
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+%% SPELLING ADVERBIAL NUMBER GROUP
+\def\numspell at adverbgroup@spell at la#1{%
+ \numspell at group@digits{#1}%
+ \ifnum\numspell at group@digit at i>0%
+ \numspell at la@hundreds at adverb\numspell at group@digit at i
+ \ifnum\numexpr\numspell at group@digit at ii+\numspell at group@digit at iii>0%
+ \numspell@{ }%
+ \fi
+ \fi
+ \numspell at la@tmp at count\numexpr10*\numspell at group@digit at ii+\numspell at group@digit at iii\relax
+ \ifnum\numspell at la@tmp at count<13% 1, 2, ..., 12
+ \numspell at la@ones at adverb\numspell at la@tmp at count% semel, bis, ..., duodecies
+ \else
+ \ifnum\numspell at la@tmp at count<18% 13, 14, ..., 17
+ \ifnumspell at la@invert at ordinals
+ \numspell at la@inverted at addition@adverb% ter decies, quater decies, ..., septies decies
+ \else
+ \numspell at la@addition at adverb% decies ter, decies quater, ..., decies septies
+ \fi
+ \else
+ \ifnum\numspell at group@digit at iii>7%
+ \ifnum\numspell at group@digit at i=0% 18, 19, 28, 29, ..., 98, 99
+ \ifnumspell at la@subtraction
+ \numspell at la@subtraction at adverb% duodevicies, ...
+ \else
+ \ifnum\numspell at group@digit at ii=1% 18, 19
+ \ifnumspell at la@invert at ordinals
+ \numspell at la@inverted at addition@adverb% octies decies, ...
+ \else
+ \numspell at la@addition at adverb% decies octies, ...
+ \fi
+ \else% 28, 29, 38, 39, ..., 98, 99
+ \numspell at la@addition at adverb% vicies octies, ...
+ \fi
+ \fi
+ \else
+ \ifnum\numspell at group@digit at ii<9% 118, 119, 128, 129, ..., 188, 189, ..., 988, 989
+ \ifnumspell at la@subtraction
+ \numspell at la@subtraction at adverb% centies duodevicies, ...
+ \else
+ \numspell at la@addition at adverb
+ \fi
+ \else% 198, 199, 298, 299, ..., 998, 999
+ \numspell at la@addition at adverb
+ \fi
+ \fi
+ \else
+ \ifnum\numspell at group@digit at ii>1% 20, 21, ..., 27, 30, 31, ..., 97
+ \numspell at la@addition at adverb% vicies, ...
+ \fi
+ \fi
+ \fi
+ \fi
+}
+
+%% SPELLING CARDINAL NUMBER WITH MODERN TERM FOR MILLIONS
+\def\numspell at la@cardinal at modern@million{%
+ \setcounter{numspell at groupcount}{22}%
+ \@whilenum\value{numspell at groupcount}>2%
+ \do{%
+ \IfEq{\csname numspell at group@\roman{numspell at groupcount}\endcsname}{0}{}{%
+ \bgroup
+ \ifodd\thenumspell at groupcount
+ \numspelllafeminine% because "millio" is feminine
+ \else
+ \numspelllaneuter% because "milliardum" is neuter
+ \fi
+ \numspell at group@spell at la{\csname numspell at group@\roman{numspell at groupcount}\endcsname}%
+ \egroup
+ \numspell@{ }%
+ \IfEq{\csname numspell at group@\roman{numspell at groupcount}\endcsname}{1}%
+ {\csname numspell at group@\roman{numspell at groupcount}@la at name\endcsname}%
+ {\csname numspell at group@\roman{numspell at groupcount}@la at name@plural\endcsname}%
+ \ifnum\csname numspell at group@\roman{numspell at groupcount}@before\endcsname>0\numspell@{ }\fi
+ }%
+ \addtocounter{numspell at groupcount}{-1}%
+ }%
+ \IfEq{\numspell at group@ii}{0}{}{%
+ \IfEq{\numspell at group@ii}{1}{\numspell at group@ii at la@name}{%
+ \bgroup
+ \numspelllaneuter% because "milia" is neuter
+ \numspell at group@spell at la{\numspell at group@ii}%
+ \egroup
+ \numspell@{ }%
+ \numspell at group@ii at la@name at plural
+ }%
+ \ifnum\numspell at group@ii at before>0\numspell@{ }\fi
+ }%
+ \IfEq{\numspell at group@i}{0}{}{%
+ \numspell at group@spell at la{\numspell at group@i}%
+ }%
+}
+
+%% SPELLING CARDINAL NUMBER WITH CLASSICAL TERM FOR MILLIONS
+%% This outputs "decies centena milia" instead of "una millio" and
+%% "decies milies centena milia" instead of "unum milliardum".
+%% Modern wording is however used for numbers >= 10^11.
+\def\numspell at la@cardinal at classical@million{%
+ \ifnum\numspell at group@max>4%
+ \numspell at la@cardinal at modern@million
+ \else
+ \ifnum\numspell at group@iv>99%
+ \numspell at la@cardinal at modern@million
+ \else
+ \StrMid{\numspell at fullnum}{56}{58}[\numspell at la@hundred at millions]%
+ \StrMid{\numspell at fullnum}{59}{61}[\numspell at la@hundred at thousands]%
+ \StrMid{\numspell at fullnum}{62}{63}[\numspell at la@thousands]%
+ \ifnum\numspell at la@hundred at millions>0%
+ \ifnum\numspell at la@hundred at millions>1%
+ \numspell at adverbgroup@spell at la{\numspell at la@hundred at millions}%
+ \numspell@{ }%
+ \fi
+ \numspell at la@thousand at adverb
+ \ifnum\numspell at la@hundred at thousands>0%
+ \numspell@{ }%
+ \numspell at adverbgroup@spell at la{\numspell at la@hundred at thousands}%
+ \numspell@{ }%
+ \numspell at la@hundred at distributive
+ \numspell@{ }%
+ \else
+ \numspell@{ }%
+ \numspell at la@hundred at distributive
+ \numspell@{ }%
+ \fi
+ \ifnum\numspell at la@thousands>0%
+ \numspell@{et }%
+ \bgroup
+ \numspelllaneuter% because "milia" is neuter
+ \numspell at group@spell at la{0\numspell at la@thousands}%
+ \egroup
+ \numspell@{ }%
+ \fi
+ \numspell at group@ii at la@name at plural% "milia"
+ \ifnum\numspell at group@ii at before>0%
+ \numspell@{ }%
+ \fi
+ \else
+ \ifnum\numspell at la@hundred at thousands>9% 100000 is "centum milia", not "semel centena milia"
+ \numspell at adverbgroup@spell at la{\numspell at la@hundred at thousands}%
+ \numspell@{ }%
+ \numspell at la@hundred at distributive
+ \numspell@{ }%
+ \ifnum\numspell at la@thousands>0%
+ \numspell@{et }%
+ \bgroup
+ \numspelllaneuter% because "milia" is neuter
+ \numspell at group@spell at la{0\numspell at la@thousands}%
+ \egroup
+ \numspell@{ }%
+ \fi
+ \numspell at group@ii at la@name at plural% "milia"
+ \ifnum\numspell at group@ii at before>0%
+ \numspell@{ }%
+ \fi
+ \else
+ \StrMid{\numspell at fullnum}{61}{63}[\numspell at la@thousands]%
+ \ifnum\numspell at la@thousands>0%
+ \ifnum\numspell at la@thousands=1%
+ \numspell at group@ii at la@name
+ \else
+ \bgroup
+ \numspelllaneuter% because "milia" is neuter
+ \IfEq{\numspell at group@iii}{0}{%
+ \numspell at group@spell at la{\numspell at la@thousands}%
+ }{%
+ \numspell at group@spell at la{0\numspell at la@thousands}%
+ }%
+ \egroup
+ \numspell@{ }%
+ \numspell at group@ii at la@name at plural
+ \fi
+ \ifnum\numspell at group@ii at before>0%
+ \numspell@{ }%
+ \fi
+ \fi
+ \fi
+ \fi
+ \IfEq{\numspell at group@i}{0}{}{%
+ \numspell at group@spell at la{\numspell at group@i}%
+ }%
+ \fi
+ \fi
+}
+
+%% SPELLING CARDINAL NUMBER
+%% --------------------------------------
+%% \numspell at num@spell at la{<num1>}{<num2>}
+%% --------------------------------------
+%% \numspell at groups{<num1>}{<num2>}
+%% Adding the \numspell at num spelling to \thenumspell
+%%
+\def\numspell at num@spell at la#1#2{%
+ \numspell at la@check at language@variant
+ \gdef\thenumspell{}%
+ \numspell at groups{#1}{#2}%
+ \ifnum\numspell at group@max=0%
+ \numspell@{null}\numspell at la@ending at sing
+ \else
+ \ifnumspell at la@modern at million
+ \numspell at la@cardinal at modern@million
+ \else
+ \numspell at la@cardinal at classical@million
+ \fi
+ \fi
+}
+
+%% SPELLING ORDINAL NUMBER WITH MODERN TERM FOR MILLIONS
+\def\numspell at la@ordinal at modern@million{%
+ \setcounter{numspell at groupcount}{22}%
+ \@whilenum\value{numspell at groupcount}>1%
+ \do{%
+ \IfEq{\csname numspell at group@\roman{numspell at groupcount}\endcsname}{0}{}{%
+ \IfEq{\csname numspell at group@\roman{numspell at groupcount}\endcsname}{1}%
+ {\csname numspell at ordgroup@\roman{numspell at groupcount}@la at name\endcsname}%
+ {%
+ \numspell at adverbgroup@spell at la{\csname numspell at group@\roman{numspell at groupcount}\endcsname}%
+ \numspell@{ }%
+ \csname numspell at ordgroup@\roman{numspell at groupcount}@la at name\endcsname
+ }%
+ \numspell at la@ending at sing
+ \ifnum\csname numspell at group@\roman{numspell at groupcount}@before\endcsname>0\numspell@{ }\fi
+ }%
+ \addtocounter{numspell at groupcount}{-1}%
+ }%
+ \IfEq{\numspell at group@i}{0}{}{%
+ \numspell at ordgroup@spell at la{\numspell at group@i}%
+ }%
+}
+
+%% SPELLING ORDINAL NUMBER WITH CLASSICAL TERM FOR MILLIONS
+%% This outputs "decies centies millesimus" instead of "millionesimus".
+%%
+%% Reference: Kühner/Holzweissig, Ausführliche Grammatik der lateinischen
+%% Sprache, vol. 1, 2nd edition, 1912, p. 632
+%%
+%% Modern wording is however used for numbers >= 10^7.
+\def\numspell at la@ordinal at classical@million{%
+ \ifnum\numspell at group@max>3%
+ \numspell at la@ordinal at modern@million
+ \else
+ \ifnum\numspell at group@iii>9%
+ \numspell at la@ordinal at modern@million
+ \else
+ \StrMid{\numspell at fullnum}{60}{61}[\numspell at la@hundred at thousands]%
+ \ifnum\numspell at la@hundred at thousands>9%
+ \numspell at adverbgroup@spell at la{0\numspell at la@hundred at thousands}%
+ \numspell@{ }%
+ \numspell at la@hundreds at adverb{1}%
+ \numspell@{ }%
+ \StrMid{\numspell at fullnum}{62}{63}[\numspell at la@thousands]%
+ \ifnum\numspell at la@thousands>0%
+ \numspell at adverbgroup@spell at la{0\numspell at la@thousands}%
+ \numspell@{ }%
+ \fi
+ \numspell at ordgroup@ii at la@name
+ \numspell at la@ending at sing
+ \ifnum\numspell at group@i>0%
+ \numspell@{ }%
+ \numspell at ordgroup@spell at la{\numspell at group@i}%
+ \fi
+ \else
+ \numspell at la@ordinal at modern@million% no difference between classical and modern
+ \fi
+ \fi
+ \fi
+}
+
+%% SPELLING ORDINAL NUMBER
+%% -----------------------------------------
+%% \numspell at ordnum@spell at la{<num1>}{<num2>}
+%% -----------------------------------------
+%% \numspell at groups{<num1>}{<num2>}
+%% Adding the \numspell at num ordinal spelling to \thenumspell
+%%
+\def\numspell at ordnum@spell at la#1#2{%
+ \numspell at la@check at language@variant
+ \gdef\thenumspell{}%
+ \numspell at groups{#1}{#2}%
+ \ifnum\numspell at group@max=0%
+ \numspell@{nullesim}\numspell at la@ending at sing
+ \else
+ \ifnumspell at la@modern at million
+ \numspell at la@ordinal at modern@million
+ \else
+ \numspell at la@ordinal at classical@million
+ \fi
+ \fi
+}
+
+%% ----------------------
+%% \numspell at uppercase@la
+%% ----------------------
+%% E.g. \def\thenumspell{unus}\numspell at uppercase\thenumspell --> 'Unus'
+%% \MakeUppercase does not work on pdf bookmark (see hyperref), so using another effective macro.
+%%
+\def\numspell at uppercase@la{%
+ \fullexpandarg
+ \StrChar{\thenumspell}{1}[\numspell at firstletter]%
+ \expandarg
+ \StrGobbleLeft{\thenumspell}{1}[\numspell at trunc]%
+ \fullexpandarg
+ \def\numspell at the{}%
+ \IfStrEq{\numspell at firstletter}{u}{\g at addto@macro\numspell at the{\numspell at la@uppercase at u}}{}% unus
+ \IfStrEq{\numspell at firstletter}{d}{\g at addto@macro\numspell at the{D}}{}% duo
+ \IfStrEq{\numspell at firstletter}{t}{\g at addto@macro\numspell at the{T}}{}% tres
+ \IfStrEq{\numspell at firstletter}{q}{\g at addto@macro\numspell at the{Q}}{}% quattuor
+ \IfStrEq{\numspell at firstletter}{s}{\g at addto@macro\numspell at the{S}}{}% sex
+ \IfStrEq{\numspell at firstletter}{o}{\g at addto@macro\numspell at the{O}}{}% octo
+ \IfStrEq{\numspell at firstletter}{n}{\g at addto@macro\numspell at the{N}}{}% novem
+ \IfStrEq{\numspell at firstletter}{v}{\g at addto@macro\numspell at the{V}}{}% viginti
+ \IfStrEq{\numspell at firstletter}{c}{\g at addto@macro\numspell at the{C}}{}% centum
+ \IfStrEq{\numspell at firstletter}{m}{\g at addto@macro\numspell at the{M}}{}% mille
+ \IfStrEq{\numspell at firstletter}{p}{\g at addto@macro\numspell at the{P}}{}% primus
+ \IfStrEq{\numspell at firstletter}{b}{\g at addto@macro\numspell at the{B}}{}% bis
+ \ifx\numspell at the\@empty\@latexerr{'numspell.sty' error! There is not '\numspell at firstletter' in uppercase!}{}\fi
+ \g at addto@macro\numspell at the{\numspell at trunc}%
+ \def\thenumspell{\numspell at the}%
+}
+
+\endinput
Property changes on: trunk/Master/texmf-dist/tex/latex/numspell/numspell-latin.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/numspell/numspell-magyar.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numspell/numspell-magyar.sty 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/tex/latex/numspell/numspell-magyar.sty 2021-11-23 22:40:37 UTC (rev 61132)
@@ -1,7 +1,7 @@
%%
%% `numspell-magyar.sty' Hungarian language package for 'numspell.sty'
%%
-%% Copyright 2017-2020 by Tibor Tomacs
+%% Copyright 2017-2021 by Tibor Tomacs
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
Modified: trunk/Master/texmf-dist/tex/latex/numspell/numspell.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numspell/numspell.sty 2021-11-23 22:39:49 UTC (rev 61131)
+++ trunk/Master/texmf-dist/tex/latex/numspell/numspell.sty 2021-11-23 22:40:37 UTC (rev 61132)
@@ -3,7 +3,7 @@
%%
%% Package for spelling the non-negative cardinal and ordinal numbers (maximum 66 digits).
%%
-%% Copyright 2017-2020 by Tibor Tomacs
+%% Copyright 2017-2021 by Tibor Tomacs
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -18,7 +18,7 @@
%% The Current Maintainer of this work is Tibor Tomacs.
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesPackage{numspell}[2020/11/11 v1.4 Package for spelling cardinal and ordinal numbers]
+\ProvidesPackage{numspell}[2021/11/23 v1.5 Package for spelling cardinal and ordinal numbers]
\RequirePackage{xstring,iflang}
@@ -43,7 +43,7 @@
}
%% --------------------------------
-%% \numspell at groups{<num1>}{<num2>} (<num1>*10^<num2>=0,1,...,999999999999...9 (66 digits)=10^67-1)
+%% \numspell at groups{<num1>}{<num2>} (<num1>*10^<num2>=0,1,...,999999999999...9 = 10^66-1 (66 digits))
%% --------------------------------
%% It generates the following parameters:
%%
@@ -242,6 +242,10 @@
\IfLanguageName{ngerman}{\@numspell at lang@notsupported at false\def\numspell at langname{de}}{}%
\IfLanguageName{french}{\@numspell at lang@notsupported at false\def\numspell at langname{fr}}{}%
\IfLanguageName{italian}{\@numspell at lang@notsupported at false\def\numspell at langname{it}}{}%
+ \IfLanguageName{latin}{\@numspell at lang@notsupported at false\def\numspell at langname{la}}{}%
+ \IfLanguageName{classiclatin}{\@numspell at lang@notsupported at false\def\numspell at langname{la}}{}%
+ \IfLanguageName{medievallatin}{\@numspell at lang@notsupported at false\def\numspell at langname{la}}{}%
+ \IfLanguageName{ecclesiasticlatin}{\@numspell at lang@notsupported at false\def\numspell at langname{la}}{}%
\if at numspell@lang at notsupported@\PackageWarning{numspell}{\languagename\space is not supported language in numspell}\fi%
}
@@ -257,6 +261,10 @@
\ifdefined\datengerman\RequirePackage{numspell-german}\fi%
\ifdefined\datefrench\RequirePackage{numspell-french}\fi%
\ifdefined\dateitalian\RequirePackage{numspell-italian}\fi%
+\ifdefined\datelatin\RequirePackage{numspell-latin}\fi%
+\ifdefined\dateclassiclatin\RequirePackage{numspell-latin}\fi%
+\ifdefined\datemedievallatin\RequirePackage{numspell-latin}\fi%
+\ifdefined\dateecclesiasticlatin\RequirePackage{numspell-latin}\fi%
}
%% ---------------------------------
More information about the tex-live-commits
mailing list.