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.