summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/numberpt
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-07-14 20:48:09 +0000
committerKarl Berry <karl@freefriends.org>2019-07-14 20:48:09 +0000
commitbadaed21f7141a96f6f45926f52fbee0d695260c (patch)
treefcc1394e921a1947d7c5d45b1f680effe6597623 /Master/texmf-dist/tex/latex/numberpt
parenta7f57f401a6a2b52cecf57cf1cd5bd78606339df (diff)
numberpt (14jul19)
git-svn-id: svn://tug.org/texlive/trunk@51640 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/numberpt')
-rw-r--r--Master/texmf-dist/tex/latex/numberpt/numberpt.sty265
1 files changed, 265 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/numberpt/numberpt.sty b/Master/texmf-dist/tex/latex/numberpt/numberpt.sty
new file mode 100644
index 00000000000..5f56ac25f4a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/numberpt/numberpt.sty
@@ -0,0 +1,265 @@
+%%
+%% This is file `numberpt.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% numberpt.dtx
+%%
+%% Copyright (C) 2019 Miguel V. S. Frasson (mvsfrasson@gmail.com)
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% 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.3c or later is part of all distributions of LaTeX
+%% version 2008/05/04 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainer of this work is the author.
+%%
+%% This work consists of the files numberpt.dtx and numberpt.ins
+%% and the derived file numberpt.sty.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{numberpt}[2019/07/12 v1.0 Counters as numbers in Portuguese]
+\RequirePackage{expl3,xparse}
+\ExplSyntaxOn
+\bool_new:N \NumberPT_catorze
+\bool_new:N \NumberPT_dezesseis
+\newcommand{\NumberPTcatorze}{\bool_set_true:N \NumberPT_catorze}
+\newcommand{\NumberPTquatorze}{\bool_set_false:N \NumberPT_catorze}
+\DeclareOption{ catorze }{ \NumberPTcatorze }
+\DeclareOption{ quatorze }{ \NumberPTquatorze }
+\ExecuteOptions{ catorze }
+\newcommand{\NumberPTdezesseis}{\bool_set_true:N \NumberPT_dezesseis}
+\newcommand{\NumberPTdezasseis}{\bool_set_false:N \NumberPT_dezesseis}
+\DeclareOption{ dezasseis }{ \NumberPTdezasseis}
+\DeclareOption{ dezesseis }{ \NumberPTdezesseis}
+\ExecuteOptions{ dezesseis }
+\ProcessOptions
+\bool_new:N \NumberPT_capital
+\bool_new:N \NumberPT_capitalfirst
+\bool_new:N \NumberPT_capitale
+\bool_new:N \NumberPT_uppercase
+\cs_new:Nn \NumberPT_case:nn {
+ \bool_if:NTF \NumberPT_capital {
+ \uppercase { #1 }
+ } {
+ #1
+ }
+ \bool_if:NTF \NumberPT_uppercase {
+ \uppercase { #2 }
+ } {
+ #2 }
+ \bool_if:NT \NumberPT_capitalfirst {
+ \bool_set_false:N \NumberPT_capital
+ }
+}
+\cs_new:Nn \NumberPT_u:n {
+ \if_case:w #1
+ \NumberPT_case:nn {z}{ero}\or:
+ \NumberPT_case:nn {u}{m}\or:
+ \NumberPT_case:nn {d}{ois}\or:
+ \NumberPT_case:nn {t}{r\^es}\or:
+ \NumberPT_case:nn {q}{uatro}\or:
+ \NumberPT_case:nn {c}{inco}\or:
+ \NumberPT_case:nn {s}{eis}\or:
+ \NumberPT_case:nn {s}{ete}\or:
+ \NumberPT_case:nn {o}{ito}\or:
+ \NumberPT_case:nn {n}{ove}%
+ \fi:}
+\cs_new:Nn \NumberPT_e_u:n {
+ \int_compare:nNnT #1 > 0 {
+ \space \bool_if:nTF \NumberPT_capitale {E}{e} \space \NumberPT_u:n #1
+ }
+}
+\cs_new:Nn \NumberPT_du:nn {
+ \if_case:w #1 % #1=0
+ \NumberPT_u:n #2
+ \or: % #1=1
+ \if_case:w #2
+ \NumberPT_case:nn {d}{ez}\or:
+ \NumberPT_case:nn {o}{nze}\or:
+ \NumberPT_case:nn {d}{oze}\or:
+ \NumberPT_case:nn {t}{reze}\or:
+ \bool_if:NTF \NumberPT_catorze {
+ \NumberPT_case:nn {c}{atorze}
+ } {
+ \NumberPT_case:nn {q}{uatorze}
+ }\or:
+ \NumberPT_case:nn {q}{uinze}\or:
+ \bool_if:NTF \NumberPT_dezesseis {
+ \NumberPT_case:nn {d}{ezesseis}
+ } {
+ \NumberPT_case:nn {d}{ezasseis}
+ }\or:
+ \bool_if:NTF \NumberPT_dezesseis {
+ \NumberPT_case:nn {d}{ezessete}
+ } {
+ \NumberPT_case:nn {d}{ezassete}
+ }\or:
+ \NumberPT_case:nn {d}{ezoito}\or:
+ \bool_if:NTF \NumberPT_dezesseis {
+ \NumberPT_case:nn {d}{ezenove}
+ } {
+ \NumberPT_case:nn {d}{ezanove}
+ }\or:
+ \fi:
+ \or: % #1>1
+ \NumberPT_case:nn {v}{inte} \NumberPT_e_u:n #2
+ \or:
+ \NumberPT_case:nn {t}{rinta} \NumberPT_e_u:n #2
+ \or:
+ \NumberPT_case:nn {q}{uarenta} \NumberPT_e_u:n #2
+ \or:
+ \NumberPT_case:nn {c}{inquenta} \NumberPT_e_u:n #2
+ \or:
+ \NumberPT_case:nn {s}{essenta} \NumberPT_e_u:n #2
+ \or:
+ \NumberPT_case:nn {s}{etenta} \NumberPT_e_u:n #2
+ \or:
+ \NumberPT_case:nn {o}{itenta} \NumberPT_e_u:n #2
+ \or:
+ \NumberPT_case:nn {n}{oventa} \NumberPT_e_u:n #2
+ \fi:
+}
+
+\cs_new:Nn \NumberPT_e_du:nn {
+ \int_compare:nNnT { #1 + #2 } > 0 {
+ \space \bool_if:nTF \NumberPT_capitale {E}{e} \space \NumberPT_du:nn #1 #2
+ }
+}
+\cs_new:Nn \NumberPT_cdu:nnn {%
+ \if_case:w #1 % #1=0
+ \NumberPT_du:nn #2 #3
+ \or: % #1=1
+ \int_compare:nNnTF { #2 + #3 } = 0 % "cem" if 00 or "cento e " + finish
+ { \NumberPT_case:nn {c}{em} }
+ { \NumberPT_case:nn {c}{ento} \NumberPT_e_du:nn #2 #3 }
+ \or: % #1>1
+ \NumberPT_case:nn {d}{uzentos} \NumberPT_e_du:nn #2 #3
+ \or:
+ \NumberPT_case:nn {t}{rezentos} \NumberPT_e_du:nn #2 #3
+ \or:
+ \NumberPT_case:nn {q}{uatrocentos} \NumberPT_e_du:nn #2 #3
+ \or:
+ \NumberPT_case:nn {q}{uinhentos} \NumberPT_e_du:nn #2 #3
+ \or:
+ \NumberPT_case:nn {s}{eiscentos} \NumberPT_e_du:nn #2 #3
+ \or:
+ \NumberPT_case:nn {s}{etecentos} \NumberPT_e_du:nn #2 #3
+ \or:
+ \NumberPT_case:nn {o}{itocentos} \NumberPT_e_du:nn #2 #3
+ \or:
+ \NumberPT_case:nn {n}{ovecentos} \NumberPT_e_du:nn #2 #3
+ \fi:
+}
+\cs_new:Nn \NumberPT_e_cdu:nnn {
+ \int_compare:nNnF {#1 + #2 + #3} = 0 {
+ \space
+ \bool_if:nT { \int_compare_p:nNn #1 = 0 || \int_compare_p:nNn {#2 + #3} = 0 }
+ {
+ \bool_if:nTF \NumberPT_capitale {E}{e}
+ \space
+ }
+ \NumberPT_cdu:nnn #1 #2 #3
+ }
+}
+\cs_new:Nn \NumberPT_abcdef:nnnnnn {
+ \int_compare:nNnTF {#1 + #2 + #3} = 0 %abc=000
+ {
+ \NumberPT_cdu:nnn #4 #5 #6
+ }
+ % else
+ {
+ % avoid "um mil", using just "mil"
+ \int_compare:nNnF {100 * #1 + 10 * #2 + #3} = 1 {
+ \NumberPT_cdu:nnn #1 #2 #3
+ \space
+ }
+ \NumberPT_case:nn {m}{il}
+ \NumberPT_e_cdu:nnn #4 #5 #6
+ }
+}
+\cs_generate_variant:Nn \NumberPT_abcdef:nnnnnn {xxxxxx}
+\int_new:N \NumberPT_digit_u
+\int_new:N \NumberPT_digit_d
+\int_new:N \NumberPT_digit_c
+\int_new:N \NumberPT_digit_um
+\int_new:N \NumberPT_digit_dm
+\int_new:N \NumberPT_digit_cm
+
+\cs_new:Nn \NumberPT_decompose:n {
+ \int_set:Nn \l_tmpa_int { #1 }
+ \int_set:Nn \NumberPT_digit_u { \int_mod:nn { \l_tmpa_int } { 10 } }
+ \int_set:Nn \l_tmpa_int { ( \l_tmpa_int - \NumberPT_digit_u ) / 10 }
+ \int_set:Nn \NumberPT_digit_d { \int_mod:nn { \l_tmpa_int } { 10 } }
+ \int_set:Nn \l_tmpa_int { ( \l_tmpa_int - \NumberPT_digit_d ) / 10 }
+ \int_set:Nn \NumberPT_digit_c { \int_mod:nn { \l_tmpa_int } { 10 } }
+ \int_set:Nn \l_tmpa_int { ( \l_tmpa_int - \NumberPT_digit_c ) / 10 }
+ \int_set:Nn \NumberPT_digit_um { \int_mod:nn { \l_tmpa_int } { 10 } }
+ \int_set:Nn \l_tmpa_int { ( \l_tmpa_int - \NumberPT_digit_um ) / 10 }
+ \int_set:Nn \NumberPT_digit_dm { \int_mod:nn { \l_tmpa_int } { 10 } }
+ \int_set:Nn \l_tmpa_int { ( \l_tmpa_int - \NumberPT_digit_dm ) / 10 }
+ \int_set:Nn \NumberPT_digit_cm { \int_mod:nn { \l_tmpa_int } { 10 } }
+}
+\msg_new:nnn
+{ numberpt } { counter-out-of-range } {Counter~`#1'~out~of~range~0~...~999999}
+
+\cs_new:Nn \NumberPT_print_counter:n {
+ \int_set:Nn \l_tmpa_int { \value{#1} }
+ \bool_if:nTF {
+ \int_compare_p:n { \l_tmpa_int >= 0 } &&
+ \int_compare_p:n { \l_tmpa_int < 1000000 }
+ }
+ {
+ \NumberPT_decompose:n { \l_tmpa_int }
+ \NumberPT_abcdef:xxxxxx
+ { \int_use:N \NumberPT_digit_cm }
+ { \int_use:N \NumberPT_digit_dm }
+ { \int_use:N \NumberPT_digit_um }
+ { \int_use:N \NumberPT_digit_c }
+ { \int_use:N \NumberPT_digit_d }
+ { \int_use:N \NumberPT_digit_u }
+ }
+ {
+ \msg_error:nnn { numberpt } { counter-out-of-range } {#1}
+ \arabic{#1}
+ }
+}
+\NewDocumentCommand{\numberpt}{m}{
+ \bool_set_false:N \NumberPT_capital
+ \bool_set_false:N \NumberPT_capitale
+ \bool_set_false:N \NumberPT_uppercase
+ \NumberPT_print_counter:n { #1 }
+}
+
+\NewDocumentCommand{\NumberPt}{s m}{
+ \bool_set_true:N \NumberPT_capital
+ \bool_set:Nn \NumberPT_capitale {! #1}
+ \bool_set_false:N \NumberPT_capitalfirst
+ \bool_set_false:N \NumberPT_uppercase
+ \NumberPT_print_counter:n { #2 }
+}
+
+\NewDocumentCommand{\Numberpt}{m}{
+ \bool_set_true:N \NumberPT_capital
+ \bool_set_false:N \NumberPT_capitale
+ \bool_set_true:N \NumberPT_capitalfirst
+ \bool_set_false:N \NumberPT_uppercase
+ \NumberPT_print_counter:n { #1 }
+}
+
+\NewDocumentCommand{\NUMBERPT}{m}{
+ \bool_set_true:N \NumberPT_capital
+ \bool_set_true:N \NumberPT_capitale
+ \bool_set_true:N \NumberPT_uppercase
+ \NumberPT_print_counter:n { #1 }
+}
+\ExplSyntaxOff
+\endinput
+%%
+%% End of file `numberpt.sty'.