diff options
author | Karl Berry <karl@freefriends.org> | 2007-06-17 23:25:52 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-06-17 23:25:52 +0000 |
commit | de976b5e75878b17c6342e05a14548999a38078e (patch) | |
tree | cecb4cfdf4e57adc5c2482a90cc1e2849449c7bc /Master/texmf-dist/tex/latex/unroman | |
parent | 511b03aa4ca8c27384178598e449388afd251f9c (diff) |
new latex package unroman (11jun07)
git-svn-id: svn://tug.org/texlive/trunk@4463 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/unroman')
-rw-r--r-- | Master/texmf-dist/tex/latex/unroman/unroman.sty | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/unroman/unroman.sty b/Master/texmf-dist/tex/latex/unroman/unroman.sty new file mode 100644 index 00000000000..30d0bdc0c1f --- /dev/null +++ b/Master/texmf-dist/tex/latex/unroman/unroman.sty @@ -0,0 +1,200 @@ +%% +%% This is file `unroman.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% unroman.dtx (with options: `package') +%% ---------------------------------------------------------------- +%% The unroman package - From Roman numerals to Arabic numbers +%% Maintained by Joseph Wright +%% E-mail: joseph.wright@morningstar2.co.uk +%% Released under the GNU General Public License +%% See http://www.gnu.org/licenses/gpl.txt +%% ---------------------------------------------------------------- +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{unroman}% + [2007/06/11 v1.0 From Roman numerals to Arabic numbers] +\RequirePackage{coolstr} +\newcounter{urm@counta} +\newcounter{urm@countb} +\newcounter{urm@value} +\newcounter{urm@stringlength} +\newif\ifurm@tailerror +\def\urm@numtoint#1{% + \if#1i% + 1% + \else% + \if#1v% + 5% + \else% + \if#1x% + 10% + \else% + \if#1l% + 50% + \else% + \if#1c% + 100% + \else% + \if#1d% + 500% + \else% + \if#1m% + 1000% + \else% + \if#1I% + 1% + \else + \if#1V% + 5% + \else% + \if#1X% + 10% + \else% + \if#1L% + 50% + \else% + \if#1C% + 100% + \else% + \if#1D% + 500% + \else% + \if#1M% + 1000% + \else% + -1% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi% +} +\def\urm@calc#1#2\end{% + \setcounter{urm@counta}{\urm@numtoint{#1}}% + \ifnum\the\value{urm@counta}>\z@% + \ifnum\the\value{urm@counta}<\the\value{urm@countb}% + \setcounter{urm@counta}{-\the\value{urm@counta}}% + \fi% + \addtocounter{urm@value}{\the\value{urm@counta}}% + \setcounter{urm@countb}{\the\value{urm@counta}}% + \def\urm@string@a{#2}% + \else% + \ifurm@tailerror% + \PackageInfo{unroman}% + {Invalid character in string --- returning value 0}% + \setcounter{urm@value}{0}% + \fi% + \def\urm@string@a{}% + \fi% +} +\def\urm@reverse@string#1#2\end{% + \edef\urm@string@b{#1\urm@string@b}% + \def\urm@string@c{#2}% +} +\def\urm@reversestring#1{% + \def\urm@string@c{#1}% + \strlenstore{#1}{urm@stringlength}% + \def\urm@string@b{}% + \@whilenum\the\value{urm@stringlength}>\z@\do% + {\expandafter\urm@reverse@string\urm@string@c\end% + \strlenstore{\urm@string@c}{urm@stringlength}% + }% +} +\def\urm@roman@length#1#2\end{% + \setcounter{urm@counta}{\urm@numtoint{#1}}% + \ifnum\the\value{urm@counta}>\z@% + \addtocounter{urm@value}{1}% + \def\urm@string@a{#2}% + \else% + \def\urm@string@a{}% + \fi% +} +\def\urm@romanlength#1{% + \setcounter{urm@value}{0}% + \strlenstore{#1}{urm@stringlength}% + \def\urm@string@a{#1}% + \@whilenum\the\value{urm@stringlength}>\z@\do% + {\expandafter\urm@roman@length\urm@string@a\end% + \strlenstore{\urm@string@a}{urm@stringlength}% + }% +} +\def\urm@make@head#1#2\end{% + \setcounter{urm@counta}{\urm@numtoint{#1}}% + \ifnum\the\value{urm@counta}>\z@% + \edef\urm@string@b{\urm@string@b#1}% + \def\urm@string@a{#2}% + \else% + \def\urm@string@a{}% + \fi% +} +\def\urm@makehead#1{% + \strlenstore{#1}{urm@stringlength}% + \def\urm@string@a{#1}% + \def\urm@string@b{}% + \@whilenum\the\value{urm@stringlength}>\z@\do% + {\expandafter\urm@make@head\urm@string@a\end% + \strlenstore{\urm@string@a}{urm@stringlength}% + }% +} +\newcommand*{\urm@unroman}[1]{% + \setcounter{urm@value}{0}% + \setcounter{urm@countb}{0}% + \urm@reversestring{#1}% + \let\urm@string@a\urm@string@b% + \strlenstore{\urm@string@a}{urm@stringlength}% + \@whilenum\the\value{urm@stringlength}>\z@\do% + {\expandafter\urm@calc\urm@string@a\end% + \strlenstore{\urm@string@a}{urm@stringlength}% + }% +} +\DeclareRobustCommand*{\reversestr}[1]{% + \urm@reversestring{#1}% + \urm@string@b% +} +\newcommand*{\unroman}[1]{% + \urm@tailerrortrue% + \urm@unroman{#1}% + \the\value{urm@value}% +} +\newcommand*{\unromanstore}[2]{% + \urm@tailerrortrue% + \urm@unroman{#1}% + \setcounter{#2}{\the\value{urm@value}}% +} +\newcommand*{\unromantail}[1]{% + \urm@tailerrorfalse% + \urm@unroman{#1}% + \the\value{urm@value}% +} +\newcommand*{\unromantailstore}[2]{% + \urm@tailerrorfalse% + \urm@unroman{#1}% + \setcounter{#2}{\the\value{urm@value}}% +} +\newcommand*{\unromanhead}[1]{% + \urm@makehead{#1}% + \expandafter\unroman\expandafter{\urm@string@b}% +} +\newcommand*{\unromanheadstore}[2]{% + \urm@makehead{#1}% + \expandafter\unromanstore\expandafter{\urm@string@b}{#2}% +} +\newcommand*{\romanheadlen}[1]{% + \urm@romanlength{#1}% + \the\value{urm@value}% +} +\newcommand*{\romanheadlenstore}[2]{% + \urm@romanlength{#1}% + \setcounter{#2}{\the\value{urm@value}}% +} +\newcommand*{\romantaillen}[1]{% + \urm@reversestring{#1}% + \expandafter\urm@romanlength\expandafter{\urm@string@b}% + \the\value{urm@value}% +} +\newcommand*{\romantaillenstore}[2]{% + \urm@reversestring{#1}% + \expandafter\urm@romanlength\expandafter{\urm@string@b}% + \setcounter{#2}{\the\value{urm@value}}% +} +\endinput +%% +%% End of file `unroman.sty'. |