From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/numnameru/README | 17 ++ macros/latex/contrib/numnameru/numnameru.pdf | Bin 0 -> 67732 bytes macros/latex/contrib/numnameru/numnameru.sty | 435 +++++++++++++++++++++++++++ macros/latex/contrib/numnameru/numnameru.tex | 48 +++ 4 files changed, 500 insertions(+) create mode 100644 macros/latex/contrib/numnameru/README create mode 100644 macros/latex/contrib/numnameru/numnameru.pdf create mode 100644 macros/latex/contrib/numnameru/numnameru.sty create mode 100644 macros/latex/contrib/numnameru/numnameru.tex (limited to 'macros/latex/contrib/numnameru') diff --git a/macros/latex/contrib/numnameru/README b/macros/latex/contrib/numnameru/README new file mode 100644 index 0000000000..578d38c3b5 --- /dev/null +++ b/macros/latex/contrib/numnameru/README @@ -0,0 +1,17 @@ +This package converts a numerical number to the russian spelled out +name of the number. For example, 1 → один, 2 → два, 12 → двенадцать. + +Attention! +Max number to converts: 2 147 483 647 → два миллиарда сто сорок +семь миллионов четыреста восемьдесят три тысячи шестьсот +сорок семь. + +Этот пакет позволяет преобразовать число в число прописью на +русском языке. Пример: 1 → один, 2 → два, 12 → двенадцать. + +Внимание! +Максимальное число для преобразования: 2 147 483 647 → два +миллиарда сто сорок семь миллионов четыреста восемьдесят +три тысячи шестьсот сорок семь. + +This code was based on ‘numname.sty’ by Peter R. Wilson. diff --git a/macros/latex/contrib/numnameru/numnameru.pdf b/macros/latex/contrib/numnameru/numnameru.pdf new file mode 100644 index 0000000000..eadf10e6e1 Binary files /dev/null and b/macros/latex/contrib/numnameru/numnameru.pdf differ diff --git a/macros/latex/contrib/numnameru/numnameru.sty b/macros/latex/contrib/numnameru/numnameru.sty new file mode 100644 index 0000000000..3f89027e21 --- /dev/null +++ b/macros/latex/contrib/numnameru/numnameru.sty @@ -0,0 +1,435 @@ +% -*- mode: latex; coding: utf-8 -*- +%% +%% This is file is `numnameru.sty' by Vit. 2012--2017 +%% +%% This file based on `numname.sty' +%% Authors of `numname.sty': +%% Peter Wilson (herries dot press at earthlink dot net) +%% Herries Press +%% Copyright 2001--2005 Peter R. Wilson +%% and +%% S Joshua Swamidass +%% +%% 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 the license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2003/06/01 or later. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Warning! +%% max number to convert - 2'147'483'647 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ProvidesPackage{numnameru} +% Логические переменные +\newif\ifpriornum +\newif\ifminusnumber +% +\newcommand*{\minusname}{минус } +% Единицы +\newcommand*{\rNamenumberO}{ноль} +\newcommand*{\rNamenumberI}{один} +\newcommand*{\rNamenumberII}{два} +\newcommand*{\rNamenumberIII}{три} +\newcommand*{\rNamenumberIV}{четыре} +\newcommand*{\rNamenumberV}{пять} +\newcommand*{\rNamenumberVI}{шесть} +\newcommand*{\rNamenumberVII}{семь} +\newcommand*{\rNamenumberVIII}{восемь} +\newcommand*{\rNamenumberIX}{девять} +% +\newcommand*{\rNamenumberX}{десять} +% первый десяток +\newcommand*{\rNamenumberXI}{одиннадцать} +\newcommand*{\rNamenumberXII}{двенадцать} +\newcommand*{\rNamenumberXIII}{тринадцать} +\newcommand*{\rNamenumberXIV}{четырнадцать} +\newcommand*{\rNamenumberXV}{пятнадцать} +\newcommand*{\rNamenumberXVI}{шестнадцать} +\newcommand*{\rNamenumberXVII}{семнадцать} +\newcommand*{\rNamenumberXVIII}{восемнадцать} +\newcommand*{\rNamenumberXIX}{девятнадцать} +% Десятки +\newcommand*{\rNamenumberIID}{двадцать} +\newcommand*{\rNamenumberIIID}{тридцать} +\newcommand*{\rNamenumberIVD}{сорок} +\newcommand*{\rNamenumberVD}{пятьдесят} +\newcommand*{\rNamenumberVID}{шестьдесят} +\newcommand*{\rNamenumberVIID}{семьдесят} +\newcommand*{\rNamenumberVIIID}{восемьдесят} +\newcommand*{\rNamenumberIXD}{девяносто} +% Сотни +\newcommand*{\rNamenumberC}{сто} +\newcommand*{\rNamenumberIIC}{двести} +\newcommand*{\rNamenumberIIIC}{триста} +\newcommand*{\rNamenumberIVC}{четыреста} +\newcommand*{\rNamenumberVC}{пятьсот} +\newcommand*{\rNamenumberVIC}{шестьсот} +\newcommand*{\rNamenumberVIIC}{семьсот} +\newcommand*{\rNamenumberVIIIC}{восемьсот} +\newcommand*{\rNamenumberIXC}{девятьсот} +% +\chardef\m@mten=10 % shorthand for 10 +% Определение счетчиков +\newcounter{ism@mctr} % Единицы +\newcounter{xsm@mctr} % Десятки +\newcounter{csm@mctr} % Сотни +\newcounter{ksm@mctr} % Тысячи +\newcounter{xksm@mctr} % Десятки тысяч +\newcounter{cksm@mctr} % Сотни тысяч +\newcounter{msm@mctr} % Миллионы +\newcounter{xmsm@mctr} % Десятки миллионов +\newcounter{cmsm@mctr} % Сотни миллионов +\newcounter{bsm@mctr} % Миллиарды +\newcounter{workm@mctr} +% +% Установка счетчиков +\newcommand*{\numdigits}[1]{% + \setcounter{ism@mctr}{0}% + \setcounter{xsm@mctr}{0}% + \setcounter{csm@mctr}{0}% + \setcounter{ksm@mctr}{0}% + \setcounter{xksm@mctr}{0}% + \setcounter{cksm@mctr}{0}% + \setcounter{msm@mctr}{0}% + \setcounter{xmsm@mctr}{0}% + \setcounter{cmsm@mctr}{0}% + \setcounter{bsm@mctr}{0}% + \setcounter{workm@mctr}{#1}% + \minusnumberfalse + \ifnum \c@workm@mctr < \z@ % Отрицательное число? + \minusnumbertrue + \c@workm@mctr = -\c@workm@mctr + \fi + \ifnum \c@workm@mctr > \m@ne % единицы + \c@ism@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@ism@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Десятки + \c@xsm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@xsm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Сотни + \c@csm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@csm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Тысячи + \c@ksm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@ksm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Десятки тысяч + \c@xksm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@xksm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Сотни тысяч + \c@cksm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@cksm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Миллионы + \c@msm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@msm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Десятки миллионов + \c@xmsm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@xmsm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Сотни миллионов + \c@cmsm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@cmsm@mctr by -\c@workm@mctr + \divide \c@workm@mctr by \m@mten + \fi + \ifnum \c@workm@mctr > \z@ % Миллиарды + \c@bsm@mctr = \c@workm@mctr + \divide \c@workm@mctr by \m@mten + \multiply \c@workm@mctr by \m@mten + \advance \c@bsm@mctr by -\c@workm@mctr + \fi +} +% +% Формирование строки +\newcommand*{\form@tnumber}[1]{% + \numdigits{#1}% + \ifminusnumber -\fi + \priornumfalse + \ifpriornum % Миллиарды (max-2) + \thebsm@mctr + \else + \ifnum \c@bsm@mctr > \z@ + \priornumtrue + \thebsm@mctr + \fi + \fi + \ifpriornum % Сотни миллионов + \thecmsm@mctr + \else + \ifnum \c@cmsm@mctr > \z@ + \priornumtrue + \thecmsm@mctr + \fi + \fi + \ifpriornum % Десятки миллионов + \thexmsm@mctr + \else + \ifnum \c@xmsm@mctr > \z@ + \priornumtrue + \thexmsm@mctr + \fi + \fi + \ifpriornum % Миллионы + \themsm@mctr + \else + \ifnum \c@msm@mctr > \z@ + \priornumtrue + \themsm@mctr + \fi + \fi + \ifpriornum % Сотни тысяч + \thecksm@mctr + \else + \ifnum \c@cksm@mctr > \z@ + \priornumtrue + \thecksm@mctr + \fi + \fi + \ifpriornum % Десятки тысяч + \thexksm@mctr + \else + \ifnum \c@xksm@mctr > \z@ + \priornumtrue + \thexksm@mctr + \fi + \fi + \ifpriornum % Тысячи + \theksm@mctr + \else + \ifnum \c@ksm@mctr > \z@ + \priornumtrue + \theksm@mctr + \fi + \fi + \ifpriornum % Сотни + \thecsm@mctr + \else + \ifnum \c@csm@mctr > \z@ + \priornumtrue + \thecsm@mctr + \fi + \fi + \ifpriornum % Десятки + \thexsm@mctr + \else + \ifnum \c@xsm@mctr > \z@ + \priornumtrue + \thexsm@mctr + \fi + \fi + \theism@mctr % Единицы +} +% +\newcommand*{\unitnumbername}[2]{% + \ifcase #1% + {\rNamenumberO}% + \or{\ifnum #2=\@ne одна\else\rNamenumberI\fi}% Для тысяч + \or{\ifnum #2=\@ne две\else\rNamenumberII\fi}% Для тысяч + \or{\rNamenumberIII}% + \or{\rNamenumberIV}% + \or{\rNamenumberV}% + \or{\rNamenumberVI}% + \or{\rNamenumberVII}% + \or{\rNamenumberVIII}% + \or{\rNamenumberIX}% + \fi +} +% +\newcommand*{\teennumbername}[1]{% + \ifcase #1 + \rNamenumberX% + \or\rNamenumberXI% + \or\rNamenumberXII% + \or\rNamenumberXIII% + \or\rNamenumberXIV% + \or\rNamenumberXV% + \or\rNamenumberXVI% + \or\rNamenumberXVII% + \or\rNamenumberXVIII% + \or\rNamenumberXIX% + \fi +}% +% +\newcommand*{\tensnumbername}[3]{% + \ifnum #1=\@ne% + \teennumbername{#2}% + \else% + \ifcase #1 + \or + \or\rNamenumberIID% + \or\rNamenumberIIID% + \or\rNamenumberIVD% + \or\rNamenumberVD% + \or\rNamenumberVID% + \or\rNamenumberVIID% + \or\rNamenumberVIIID% + \or\rNamenumberIXD% + \fi + \ifnum #2 > \z@% + \space\unitnumbername{#2}{#3}% + \fi + \fi +}% +% +\newcommand*{\centnumbername}[1]{% + \ifnum #1 > \z@ + \ifcase #1 + \or\rNamenumberC% + \or\rNamenumberIIC% + \or\rNamenumberIIIC% + \or\rNamenumberIVC% + \or\rNamenumberVC% + \or\rNamenumberVIC% + \or\rNamenumberVIIC% + \or\rNamenumberVIIIC% + \or\rNamenumberIXC% + \fi + \fi +}% +%% +%% Подготовка строки +\newcommand*{\n@me@number}[1]{% + \numdigits{#1}% + \ifminusnumber\minusname\fi + \priornumfalse + %% Миллиарды + \ifnum \c@bsm@mctr > \z@ + \unitnumbername{\thebsm@mctr}{0} миллиард% + \ifnum\c@bsm@mctr=1% + \else\ifnum\c@bsm@mctr=2 а% + \else\ifnum\c@bsm@mctr=3 а% + \else\ifnum\c@bsm@mctr=4 а% + \else ов% + \fi\fi\fi\fi + \priornumtrue + \fi + %% Сотни миллионов + \ifnum \c@cmsm@mctr > \z@ + \ifpriornum\protect\space\fi + \centnumbername{\thecmsm@mctr}% + \ifnum\c@msm@mctr=0% + \ifnum\c@xmsm@mctr=0% + \protect\space миллионов\fi\fi + \priornumtrue + \fi + %% Десятки и единицы миллионов + \ifnum \c@xmsm@mctr > \z@ + \ifpriornum\protect\space\fi + % + \tensnumbername{\thexmsm@mctr}{\themsm@mctr}{0} миллион% + \ifnum\c@xmsm@mctr=1 ов% + \else\ifnum\c@msm@mctr=1% + \else\ifnum\c@msm@mctr=2 а% + \else\ifnum\c@msm@mctr=3 а% + \else\ifnum\c@msm@mctr=4 а% + \else ов% + \fi\fi\fi\fi\fi + \priornumtrue + \else + \ifnum \c@msm@mctr > \z@ + \ifpriornum\protect\space\fi + % + \unitnumbername{\themsm@mctr}{0} миллион% + \ifnum\c@msm@mctr=1% + \else\ifnum\c@msm@mctr=2 а% + \else\ifnum\c@msm@mctr=3 а% + \else\ifnum\c@msm@mctr=4 а% + \else ов% + \fi\fi\fi\fi + \priornumtrue + \fi + \fi + %% Сотни тысяч + \ifnum \c@cksm@mctr > \z@% + \ifpriornum\protect\space\fi + \centnumbername{\thecksm@mctr}% + \ifnum\c@ksm@mctr=0% + \ifnum\c@xksm@mctr=0 + \protect\space тысяч% + \fi\fi + \priornumtrue + \fi + %% Десятки и единицы тысяч + \ifnum \c@xksm@mctr > \z@% + % + \ifpriornum\protect\space\fi + \tensnumbername{\thexksm@mctr}{\theksm@mctr}{1} тысяч% + \priornumtrue + \else + \ifnum \c@ksm@mctr > \z@ + \ifpriornum\protect\space\fi% + % + \unitnumbername{\theksm@mctr}{1} тысяч% + \priornumtrue + \fi\fi + \ifnum\c@xksm@mctr=1\else% + \ifnum\c@ksm@mctr=1 а% + \else\ifnum\c@ksm@mctr=2 и% + \else\ifnum\c@ksm@mctr=3 и% + \else\ifnum\c@ksm@mctr=4 и% + \else\fi\fi\fi\fi\fi + %% Сотни + \ifnum \c@csm@mctr > \z@% + \ifpriornum\protect\space\fi + \centnumbername{\thecsm@mctr}% + \priornumtrue + \fi + %% Десятки/единицы + \ifnum \c@xsm@mctr > \z@% + \ifpriornum\protect\space\fi + % + \tensnumbername{\thexsm@mctr}{\theism@mctr}{0}% + \else + \ifnum \c@ism@mctr > \z@ + \ifpriornum\protect\space\fi% + % + \unitnumbername{\theism@mctr}{0}% + \else + \ifpriornum\else\unitnumbername{\theism@mctr}{0}\fi + \fi + \fi +}% +% +% Warning! +% max number to convert - 2'147'483'647 +% +\newcommand*{\numnameru}[1]{% + \n@me@number{#1}% +} +%% End of file `numnameru.sty'. +\endinput diff --git a/macros/latex/contrib/numnameru/numnameru.tex b/macros/latex/contrib/numnameru/numnameru.tex new file mode 100644 index 0000000000..a55d345860 --- /dev/null +++ b/macros/latex/contrib/numnameru/numnameru.tex @@ -0,0 +1,48 @@ +\documentclass[pagesize=auto, parskip=full, fontsize=14pt, DIV=9]{scrartcl} + +\usepackage{fixltx2e} +\usepackage{etex} +\usepackage{xspace} +\usepackage{cmap} +\usepackage[T1,T2A]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[english,main=russian]{babel} +\usepackage{textcomp} +\usepackage{microtype} +\usepackage[pdflang=russian,% +unicode,% +pdfencoding=unicode% +]{hyperref} + +\usepackage{numnameru} + +\newcommand*{\pkg}[1]{\textsf{#1}} +\newcommand*{\cls}[1]{\textsf{#1}} + +\addtokomafont{title}{\rmfamily} + +\title{The \pkg{numnameru} package} +\author{Vit} +\date{2017/07/26} + + +\begin{document} +\maketitle +\par This package converts a numerical number to the russian spelled out +name of the number. For example, 1~$\to$~\numnameru{1}, 2~$\to$~\numnameru{2}, 12~$\to$~\numnameru{12}.% +\par Attention!% +\par Max number to converts: 2\,147\,483\,647~$\to$~\numnameru{2147483647}.% +\par Этот пакет позволяет преобразовать число в число прописью на русском языке. +Пример: 1~$\to$~\numnameru{1}, 2~$\to$~\numnameru{2}, 12~$\to$~\numnameru{12}.% +\par Внимание!% +\par Максимальное число для преобразования: 2\,147\,483\,647~$\to$~\numnameru{2147483647}.% +\par This code was based on `numname.sty' by Peter R. Wilson.% + +\end{document} + +%%% Local Variables: +%%% mode: latex +%%% coding: utf-8 +%%% compile-command: "pdflatex numnameru.tex" +%%% TeX-master: t +%%% End: -- cgit v1.2.3