summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/ordinalpt
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/ordinalpt
Initial commit
Diffstat (limited to 'macros/latex/contrib/ordinalpt')
-rw-r--r--macros/latex/contrib/ordinalpt/README72
-rw-r--r--macros/latex/contrib/ordinalpt/ordinalpt.dtx432
-rw-r--r--macros/latex/contrib/ordinalpt/ordinalpt.ind58
-rw-r--r--macros/latex/contrib/ordinalpt/ordinalpt.ins26
-rw-r--r--macros/latex/contrib/ordinalpt/ordinalpt.pdfbin0 -> 268537 bytes
5 files changed, 588 insertions, 0 deletions
diff --git a/macros/latex/contrib/ordinalpt/README b/macros/latex/contrib/ordinalpt/README
new file mode 100644
index 0000000000..e04a09e3d5
--- /dev/null
+++ b/macros/latex/contrib/ordinalpt/README
@@ -0,0 +1,72 @@
+ordinalpt.sty --- counters as ordinal numbers in Portuguese
+===========================================================
+
+Versions
+1.0 -> initial version
+2.0 -> reimplementation to make commands fully expandable in order to
+ work with \addcontentsline.
+3.0 -> added better forms for ordinals of 11, 12 and 13;
+ changed behavior for these numbers.
+
+Copyright (C) 2007 Miguel V. S. Frasson (mvsfrasson@gmail.com)
+
+
+LICENSE
+=======
+
+This file is the README file, part of the `ordinalpt' package.
+
+This package may be distributed under the terms of the LaTeX
+Project Public License, as described in lppl.txt in the base
+LaTeX distribution, either version 1.3 or (at your option)
+any later version.
+
+You can obtain a copy of the lppl.txt file from the internet on
+http://www.latex-project.org/lppl.txt
+
+INTRODUCTION
+============
+
+The package _ordinalpt_ provides a counter style (like \arabic, \alph
+and others) but that produces as output strings like `primeiro' (first
+in Portuguese), `segundo' (second), `terceiro' (third), etc, up to
+`mil\'esimo noningent\'esimo nonag\'esimo nono' (1999th). There are
+counter commands to output the text in UPPERCASE, Capitalized or in
+lowercase, with masculine or feminine gender.
+
+USER COMMANDS
+=============
+
+\ordptmasc{counter} --> ordinals in lowercase masculine
+\Ordptmasc{counter} --> ordinals in capitalized masculine
+\ORDPTMASC{counter} --> ordinals in uppercase masculine
+\ordptfem{counter} --> ordinals in lowercase feminine
+\Ordptfem{counter} --> ordinals in capitalized feminine
+\ORDPTFEM{counter} --> ordinals in uppercase feminine
+
+PACKAGE OPTIONS
+===============
+
+In Portuguese, both
+ `und\'ecimo' and `d\'ecimo primeiro' (for 11th)
+ `duod\'ecimo' and `d\'ecimo segundo' (for 12th)
+ `tred\'ecimo' and `d\'ecimo terceiro' (for 13th)
+ `tricent\'esimo' and `trecent\'esimo' (for 300th)
+ `sexcent\'esimo' and `seiscent\'esimo' (for 600th)
+ `noningent\'esimo' and `nongent\'esimo' (for 900th)
+are correct forms for ordinals.
+
+It is common to find the shorter forms for 11th and 12th, but a bit
+harder to find to shorter form for 13th. If this later is used, then
+all 11th up to 13th should be in shorter forms.
+
+So there are the options to set the output for resp. for 11th, 12th and 13th
+ 11-12-curtos (default) -> und\'ecimo, duod\'ecimo, d\'ecimo terceiro
+ 11-13-curtos -> und\'ecimo, duod\'ecimo, tred\'ecimo
+ 11-13-longos -> d\'ecimo primeiro, d\'ecimo segundo, d\'ecimo terceiro
+
+To choose ordinals 300th, 600th and 900th, use
+ tricentesimo (default) or trecentesimo
+ sexcentesimo (default) or seiscentesimo
+ noningentesimo (default) or nongentesimo
+
diff --git a/macros/latex/contrib/ordinalpt/ordinalpt.dtx b/macros/latex/contrib/ordinalpt/ordinalpt.dtx
new file mode 100644
index 0000000000..01a70f558d
--- /dev/null
+++ b/macros/latex/contrib/ordinalpt/ordinalpt.dtx
@@ -0,0 +1,432 @@
+%% \CheckSum{242}
+% \iffalse
+% File: ordinalpt.dtx
+% Copyright (C) 2007 Miguel V. S. Frasson (mvsfrasson@gmail.com)
+%
+% This package may be distributed under the terms of the LaTeX
+% Project Public License, as described in lppl.txt in the base
+% LaTeX distribution, either version 1.2 or (at your option)
+% any later version.
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{doc}
+\usepackage[T1]{fontenc}
+\usepackage{amstext,makeidx}
+\makeindex
+\newcommand{\ordm}{\textordmasculine}
+\newcommand{\ordf}{\textordfeminine}
+\begin{document}
+ \DocInput{ordinalpt.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \StopEventually
+%
+% \changes{1.0}{2007/01/10}{initial version}
+% \changes{2.0}{2007/01/27}{reimplemented to make macros freely expandable}
+% \changes{3.0}{2007/02/08}{add options for ordinals of 11, 12 and 13;
+% changed default behavior for these numbers}
+%
+% \MakeShortVerb+
+%
+% \title{\textsf{ordinalpt}: counters as ordinal numbers in Portuguese}
+% \author{Miguel Vin\'\i cius Santini Frasson}
+% \date{2007--02--08 version 3.0}
+%
+% \maketitle
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% The package \textsf{ordinalpt} provides a counter style like
+% +\arabic+, +\alph+, etc., but that produces as
+% output strings like ``primeiro'' (first in Portuguese),
+% ``segundo'' (second), ``terceiro'' (third), \ldots, up to
+% ``mil\'esimo noningent\'esimo nonag\'esimo nono''
+% (1999$^{\text{th}}$). There are counter commands to output the
+% text in UPPERCASE, Capitalized or in lowercase, with masculine or
+% feminine gender.
+%
+% \section{User commands}
+%
+% \newcommand{\countername}{\texttt{\textit{counter}}}
+%
+% \DescribeMacro{\ordptmasc}
+% \DescribeMacro{\Ordptmasc}
+% \DescribeMacro{\ORDPTMASC}
+% \DescribeMacro{\ordptfem}
+% \DescribeMacro{\Ordptfem}
+% \DescribeMacro{\ORDPTFEM}
+% Six commands to output all incarnations of ordinal numbers in
+% portuguese --- masculine or feminine, in ``lowercase'',
+% ``Capitalized'' or in ``UPPERCASE''---:\\
+% + \ordptmasc{+\countername+}+ (lowercase masculine),\\
+% + \Ordptmasc{+\countername+}+ (capitalized masculine),\\
+% + \ORDPTMASC{+\countername+}+ (uppercase masculine),\\
+% + \ordptfem{+\countername+}+ (lowercase feminine),\\
+% + \Ordptfem{+\countername+}+ (capitalized feminine) and\\
+% + \ORDPTFEM{+\countername+}+ (uppercase feminine).
+%
+% Example:
+%
+%\begin{verbatim}
+%\renewcommand{\thepage}{--- \Ordptfem{page} p\'agina ---}
+%\end{verbatim}
+% will produce in the place for page numbers:
+%
+%\centerline{--- Primeira p\'agina ---}
+%\centerline{--- Segunda p\'agina ---}
+%
+% \section{User options}
+%
+% \DescribeEnv{11-12-curtos}
+% \DescribeEnv{11-13-curtos}
+% \DescribeEnv{11-13-longos}
+% For the ordinals of 11, 12 and 13 there are two correct forms each:\par
+% \begin{tabular}{cll}
+% Number & Shorter & Longer\\\hline
+% 11 & und\'ecimo & d\'ecimo primeiro\\
+% 12 & duod\'ecimo & d\'ecimo segundo\\
+% 13 & tred\'ecimo & d\'ecimo terceiro
+% \end{tabular}\par\noindent
+% It is usual to find the shorter forms for 11\ordm\ and 12\ordm\ in
+% texts, including some grammars. The shorter form for 13\ordm\ is
+% a bit harder to find. It is kind of strange to see shorter for
+% 11\ordm\ and longer for 12\ordm\ and the other way around, so it
+% should not happen. If 13\ordm\ is presented in shorter form,
+% then definitely the shorter forms should be used for 11\ordm\ and
+% 12\ordm. Therefore we provide three package options
+% `\texttt{11-12-curtos}', `\texttt{11-13-curtos}' and
+% `\texttt{11-13-longos}' with the following results: \par
+% \begin{tabular}{llll}
+% Option & 11\ordm & 12\ordm & 13\ordm\\\hline
+% \texttt{11-12-curtos} (default) & und\'ecimo & duod\'ecimo & d\'ecimo terceiro\\
+% \texttt{11-13-curtos} & und\'ecimo & duod\'ecimo & tred\'ecimo\\
+% \texttt{11-13-longos} & d\'ecimo primeiro & d\'ecimo segundo & d\'ecimo terceiro
+% \end{tabular}\par\noindent
+% \textit{Nota bene}: These options affect all ordinals that
+% finish in 11, 12 and 13. For instance, with option
+% \texttt{11-12-curtos}, the ordinal for 112 becomes ``cent\'esimo
+% duod\'ecimo''.
+%
+% \DescribeEnv{tricentesimo}
+% \DescribeEnv{trecentesimo}
+% The options `\texttt{tricentesimo}' (default; closer to latin
+% \textit{tricentesimu}) and `\texttt{trecentesimo}' are provided
+% to choose between ``tricent\'esimo'' and ``trecent\'esimo'', since
+% both forms are correct for the ordinal of 300.\par
+% \begin{tabular}{ll}
+% Option & 300\ordm\\\hline
+% \texttt{tricentesimo} (default) & tricent\'esimo\\
+% \texttt{trecentesimo} & trecent\'esimo\\
+% \end{tabular}
+%
+% \DescribeEnv{sexcentesimo}
+% \DescribeEnv{seiscentesimo}
+% The options `\texttt{sexcentesimo}' (default; closer to the latin
+% \textit{sexcentesimu}) and `\texttt{seiscentesimo}' are provided
+% to choose between ``sexcent\'esimo'' and ``seiscent\'esimo'',
+% since both forms are correct for the ordinal of 600.\par
+% \begin{tabular}{ll}
+% Option & 600\ordm\\\hline
+% \texttt{sexcentesimo} (default) & sexcent\'esimo\\
+% \texttt{seiscentesimo} & seiscent\'esimo\\
+% \end{tabular}
+%
+% \DescribeEnv{noningentesimo}
+% \DescribeEnv{nongentesimo}
+% The options `\texttt{noningentesimo}' (default; from latin
+% \textit{noningentesimu}) and `\texttt{nongentesimo} (from latin
+% \textit{nongentesimu})' are provided to choose between
+% ``noningent\'esimo'' and ``nongent\'esimo'', since both forms are
+% correct for the ordinal of 900.\par
+% \begin{tabular}{ll}
+% Option & 900\ordm\\\hline
+% \texttt{noningentesimo} (default) & noningent\'esimo\\
+% \texttt{nongentesimo} & nongent\'esimo\\
+% \end{tabular}
+%
+% \section{Code}
+%
+% Identidication of the package.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ordinalpt}[2007/02/08 v2.1 Ordinal numbers in Portuguese]
+% \end{macrocode}
+%
+% \DescribeEnv{11-12-curtos}
+% \DescribeEnv{11-13-curtos}
+% \DescribeEnv{11-13-longos}
+% Declaring options `\texttt{11-12-curtos}' (default) and
+% `\texttt{11-13-curtos}' and
+% `\texttt{11-13-longos}', for the various situations for ordinals of
+% 11, 12 and 13, as discussed before.
+% \begin{macrocode}
+\newif\if@ordpt@twelveshort
+\newif\if@ordpt@thirteenshort
+\@ordpt@twelveshorttrue
+\@ordpt@thirteenshortfalse
+\DeclareOption{11-12-curtos}{%
+ \@ordpt@twelveshorttrue
+ \@ordpt@thirteenshortfalse}
+\DeclareOption{11-13-curtos}{%
+ \@ordpt@twelveshorttrue
+ \@ordpt@thirteenshorttrue}
+\DeclareOption{11-13-longos}{%
+ \@ordpt@twelveshortfalse
+ \@ordpt@thirteenshortfalse}
+\ExecuteOptions{11-12-curtos}
+% \end{macrocode}
+%
+% \DescribeEnv{tricentesimo}
+% \DescribeEnv{trecentesimo}
+% Declaring options `\texttt{tricentesimo}' (default) and
+% `\texttt{trecentesimo}', since both forms ``tricent\'esimo'' and
+% ``trecent\'esimo'' are correct for the ordinal of 300.
+% \begin{macrocode}
+\DeclareOption{tricentesimo}{\def\@ordpt@tricent{i}}
+\DeclareOption{trecentesimo}{\def\@ordpt@tricent{e}}
+\ExecuteOptions{tricentesimo}
+% \end{macrocode}
+%
+% \DescribeEnv{sexcentesimo}
+% \DescribeEnv{seiscentesimo}
+% Declaring options `\texttt{sexcentesimo}' (default; closer to the
+% latin \textit{sexcentesimu}) and
+% `\texttt{seiscentesimo}', since both forms ``sexcent\'esimo'' and
+% ``seiscent\'esimo'' are correct for the ordinal of 600.
+% \begin{macrocode}
+\DeclareOption{sexcentesimo}{\def\@ordpt@sexcent{x}}
+\DeclareOption{seiscentesimo}{\def\@ordpt@sexcent{is}}
+\ExecuteOptions{sexcentesimo}
+% \end{macrocode}
+%
+% \DescribeEnv{noningentesimo}
+% \DescribeEnv{nongentesimo}
+% Declaring options `\texttt{noningentesimo}' (default; from latin
+% \textit{noningentesimu}) and `\texttt{nongentesimo} (from latin
+% \textit{nongentesimu})', since both forms ``noningent\'esimo'' and
+% ``nongent\'esimo'' are correct for the ordinal of 900.
+% \begin{macrocode}
+\DeclareOption{noningentesimo}{\def\@ordpt@noningent{in}}
+\DeclareOption{nongentesimo}{\def\@ordpt@noningent{}}
+\ExecuteOptions{noningentesimo}
+% \end{macrocode}
+%
+% Processing options.
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% \DescribeMacro{\@ordpt@lowercase}
+% \DescribeMacro{\@ordpt@capitalize}
+% \DescribeMacro{\@ordpt@uppercase}
+% Commands that deal with letter case.
+% \begin{macrocode}
+\newcommand{\@ordpt@lowercase}[2]{#1#2}
+\newcommand{\@ordpt@capitalize}[2]{\uppercase{#1}#2}
+\newcommand{\@ordpt@uppercase}[2]{\uppercase{#1#2}}
+% \end{macrocode}
+%
+% \DescribeMacro{\@ordpt@printunits}
+% \DescribeMacro{\@ordpt@printtens}
+% \DescribeMacro{\@ordpt@printhundreds}
+% \DescribeMacro{\@ordpt@printthousands}
+% These commands take as first and second parameters the command
+% that deals with lettercase (commands above) and a letter ``o'' or
+% ``a'' for the masculine or feminine genders. The other parameters
+% are the digits necessary to print the number: one for numbers less
+% than 10, two for numbers between 10 and 99, etc. This commands
+% also have to take care of spaces that separate the words.
+% \begin{macrocode}
+\newcommand{\@ordpt@printunits}[3]{%
+ \ifcase#3 \or
+ #1{p}{rimeir#2}\or
+ #1{s}{egund#2}\or
+ #1{t}{erceir#2}\or
+ #1{q}{uart#2}\or
+ #1{q}{uint#2}\or
+ #1{s}{ext#2}\or
+ #1{s}{\'etim#2}\or
+ #1{o}{itav#2}\or
+ #1{n}{on#2}%
+ \fi}
+\newcommand{\@ordpt@printtens}[4]{%
+ \ifx#31%
+ \ifx#41%
+ \if@ordpt@twelveshort
+ #1{u}{nd\'ecim#2}%
+ \else
+ #1{d}{\'ecim#2}\space#1{p}{rimeir#2}%
+ \fi
+ \else
+ \ifx#42%
+ \if@ordpt@twelveshort
+ #1{d}{uod\'ecim#2}%
+ \else
+ #1{d}{\'ecim#2}\space#1{s}{egund#2}%%
+ \fi
+ \else
+ \ifx#43%
+ \if@ordpt@thirteenshort
+ #1{t}{red\'ecim#2}%
+ \else
+ #1{d}{\'ecim#2}\space#1{t}{erceir#2}%%
+ \fi
+ \else
+ #1{d}{\'ecim#2}%
+ \ifx#40%
+ \else
+ \space\@ordpt@printunits#1#2#4%
+ \fi
+ \fi
+ \fi
+ \fi
+ \else
+ \ifcase#3 \or\or
+ #1{v}{ig\'esim#2}\or
+ #1{t}{rig\'esim#2}\or
+ #1{q}{uadrag\'esim#2}\or
+ #1{q}{uinquag\'esim#2}\or
+ #1{s}{exag\'esim#2}\or
+ #1{s}{eptuag\'esim#2}\or
+ #1{o}{ctog\'esim#2}\or
+ #1{n}{onag\'esim#2}%
+ \fi
+ \ifx#40%
+ \else
+ \space\@ordpt@printunits#1#2#4%
+ \fi
+ \fi}
+\newcommand{\@ordpt@printhundreds}[5]{%
+ \ifcase#3 \or
+ #1{c}{ent\'esim#2}\or
+ #1{d}{ucent\'esim#2}\or
+ #1{t}{r\@ordpt@tricent cent\'esim#2}\or
+ #1{q}{uadringent\'esim#2}\or
+ #1{q}{uingent\'esim#2}\or
+ #1{s}{e\@ordpt@sexcent cent\'esim#2}\or
+ #1{s}{eptingent\'esim#2}\or
+ #1{o}{ctingent\'esim#2}\or
+ #1{n}{on\@ordpt@noningent gent\'esim#2}%
+ \fi
+ \ifx#40%
+ \ifx#50%
+ \else
+ \space\@ordpt@printunits#1#2#5%
+ \fi
+ \else
+ \space\@ordpt@printtens#1#2#4#5%
+ \fi}
+\newcommand{\@ordpt@printthousands}[6]{%
+ \ifcase#3 \or
+ #1{m}{il\'esim#2}%
+ \fi
+ \ifx#40%
+ \ifx#50%
+ \ifx#60%
+ \else
+ \space\@ordpt@printunits#1#2#6%
+ \fi
+ \else
+ \space\@ordpt@printtens#1#2#5#6%
+ \fi
+ \else
+ \space\@ordpt@printhundreds#1#2#4#5#6
+ \fi}
+% \end{macrocode}
+%
+% \DescribeMacro{\@ordpt@print}
+% The command +\@ordpt@print+ is defined with special arguments
+% (not possible to be defined with +\newcommand+). The arguments
+% are expected as follows:\\
+% + #1+ lettercase command\\
+% + #2+ gender letter o or a\\
+% + #3+ digit\\
+% + #4+ digit or ? (only units)\\
+% + #5+ digit or ? (up to tens)\\
+% + #6+ digit or ? (up to hundreds)\\
+% + #7+ ? (up to thousands) or nothing
+% \begin{macrocode}
+\newcommand{\@ordpt@print}{}
+\def\@ordpt@print#1#2#3#4#5#6#7!{%
+ \ifx#4?%
+ \@ordpt@printunits#1#2#3%
+ \else
+ \ifx#5?%
+ \@ordpt@printtens#1#2#3#4%
+ \else
+ \ifx#6?%
+ \@ordpt@printhundreds#1#2#3#4#5%
+ \else
+ \@ordpt@printthousands#1#2#3#4#5#6%
+ \fi
+ \fi
+ \fi}
+% \end{macrocode}
+%
+% \DescribeMacro{\@ordpt@ordinal}
+% In this command the value of the counter (third argument) is
+% expanded, via +\expandafter+, to a list of digits, and four ``?''
+% and a ``!'' are added and expected to be goobled by
+% +\@ordpt@print+. We need the ``?'' because of the +\ifx+ on
+% detecting how many digits the number has. This command checks if
+% the value of the counter is between 1 and 1999 (including both).
+% After the expansion of the +\the+, the command +\@ordpt@print+ is
+% used.
+% \begin{macrocode}
+\newcommand{\@ordpt@ordinal}[3]{%
+ \ifnum\csname c@#3\endcsname<1
+ \@ctrerr
+ \else
+ \ifnum\csname c@#3\endcsname>1999
+ \@ctrerr
+ \else
+ \expandafter\@ordpt@print
+ \expandafter#1\expandafter#2\the\csname c@#3\endcsname????!%
+ \fi
+ \fi}
+% \end{macrocode}
+%
+% \DescribeMacro{\ordptmasc}
+% \DescribeMacro{\Ordptmasc}
+% \DescribeMacro{\ORDPTMASC}
+% \DescribeMacro{\ordptfem}
+% \DescribeMacro{\Ordptfem}
+% \DescribeMacro{\ORDPTFEM}
+% The user commands. The diference between them is that the
+% pass to +\@ordpt@ordinal+ the letter case commands as first
+% argument and the final gender vowel as second, and the counter
+% name as third argument.
+% \begin{macrocode}
+\newcommand{\ordptmasc}[1]{\@ordpt@ordinal\@ordpt@lowercase o{#1}}
+\newcommand{\Ordptmasc}[1]{\@ordpt@ordinal\@ordpt@capitalize o{#1}}
+\newcommand{\ORDPTMASC}[1]{\@ordpt@ordinal\@ordpt@uppercase o{#1}}
+\newcommand{\ordptfem}[1]{\@ordpt@ordinal\@ordpt@lowercase a{#1}}
+\newcommand{\Ordptfem}[1]{\@ordpt@ordinal\@ordpt@capitalize a{#1}}
+\newcommand{\ORDPTFEM}[1]{\@ordpt@ordinal\@ordpt@uppercase a{#1}}
+% \end{macrocode}
+% \Finale \addcontentsline{toc}{section}{Index}\printindex %\PrintChanges
+%
+\endinput
+%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
diff --git a/macros/latex/contrib/ordinalpt/ordinalpt.ind b/macros/latex/contrib/ordinalpt/ordinalpt.ind
new file mode 100644
index 0000000000..743efc31f4
--- /dev/null
+++ b/macros/latex/contrib/ordinalpt/ordinalpt.ind
@@ -0,0 +1,58 @@
+
+ \begin{theindex}
+ \makeatletter\scan@allowedfalse
+{\bfseries\hfil Symbols\hfil}\nopagebreak
+
+ \item \verb*+\@ordpt@capitalize+\pfill \usage{3}
+ \item \verb*+\@ordpt@lowercase+\pfill \usage{3}
+ \item \verb*+\@ordpt@ordinal+\pfill \usage{6}
+ \item \verb*+\@ordpt@print+\pfill \usage{6}
+ \item \verb*+\@ordpt@printhundreds+\pfill \usage{4}
+ \item \verb*+\@ordpt@printtens+\pfill \usage{4}
+ \item \verb*+\@ordpt@printthousands+\pfill \usage{4}
+ \item \verb*+\@ordpt@printunits+\pfill \usage{4}
+ \item \verb*+\@ordpt@uppercase+\pfill \usage{3}
+ \item {\ttfamily 11-12-curtos} (option)\pfill \usage{2, 3}
+ \item {\ttfamily 11-13-curtos} (option)\pfill \usage{2, 3}
+ \item {\ttfamily 11-13-longos} (option)\pfill \usage{2, 3}
+
+ \indexspace
+{\bfseries\hfil N\hfil}\nopagebreak
+
+ \item {\ttfamily nongentesimo} (option)\pfill \usage{2, 3}
+ \item {\ttfamily noningentesimo} (option)\pfill \usage{2, 3}
+
+ \indexspace
+{\bfseries\hfil O\hfil}\nopagebreak
+
+ \item options\efill
+ \subitem {\ttfamily 11-12-curtos}\pfill \usage{2, 3}
+ \subitem {\ttfamily 11-13-curtos}\pfill \usage{2, 3}
+ \subitem {\ttfamily 11-13-longos}\pfill \usage{2, 3}
+ \subitem {\ttfamily nongentesimo}\pfill \usage{2, 3}
+ \subitem {\ttfamily noningentesimo}\pfill \usage{2, 3}
+ \subitem {\ttfamily seiscentesimo}\pfill \usage{2, 3}
+ \subitem {\ttfamily sexcentesimo}\pfill \usage{2, 3}
+ \subitem {\ttfamily trecentesimo}\pfill \usage{2, 3}
+ \subitem {\ttfamily tricentesimo}\pfill \usage{2, 3}
+
+ \item \verb*+\ORDPTFEM+\pfill \usage{1}, \usage{6}
+ \item \verb*+\Ordptfem+\pfill \usage{1}, \usage{6}
+ \item \verb*+\ordptfem+\pfill \usage{1}, \usage{6}
+ \item \verb*+\ORDPTMASC+\pfill \usage{1}, \usage{6}
+ \item \verb*+\Ordptmasc+\pfill \usage{1}, \usage{6}
+ \item \verb*+\ordptmasc+\pfill \usage{1}, \usage{6}
+
+ \indexspace
+{\bfseries\hfil S\hfil}\nopagebreak
+
+ \item {\ttfamily seiscentesimo} (option)\pfill \usage{2, 3}
+ \item {\ttfamily sexcentesimo} (option)\pfill \usage{2, 3}
+
+ \indexspace
+{\bfseries\hfil T\hfil}\nopagebreak
+
+ \item {\ttfamily trecentesimo} (option)\pfill \usage{2, 3}
+ \item {\ttfamily tricentesimo} (option)\pfill \usage{2, 3}
+
+ \end{theindex}
diff --git a/macros/latex/contrib/ordinalpt/ordinalpt.ins b/macros/latex/contrib/ordinalpt/ordinalpt.ins
new file mode 100644
index 0000000000..8e13ef2360
--- /dev/null
+++ b/macros/latex/contrib/ordinalpt/ordinalpt.ins
@@ -0,0 +1,26 @@
+\input docstrip
+
+\preamble
+
+Copyright (C) 2007 Miguel V. S. Frasson (mvsfrasson@gmail.com)
+
+This file is part of the `ordinalpt' package.
+
+This package may be distributed under the terms of the LaTeX
+Project Public License, as described in lppl.txt in the base
+LaTeX distribution, either version 1.2 or (at your option)
+any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+\endpreamble
+
+\askforoverwritefalse
+\askonceonly
+\showprogress
+
+\generate{\file{ordinalpt.sty}{\from{ordinalpt.dtx}{}}}
+
+\endbatchfile \ No newline at end of file
diff --git a/macros/latex/contrib/ordinalpt/ordinalpt.pdf b/macros/latex/contrib/ordinalpt/ordinalpt.pdf
new file mode 100644
index 0000000000..0a291b5ac2
--- /dev/null
+++ b/macros/latex/contrib/ordinalpt/ordinalpt.pdf
Binary files differ