%PDF- %PDF-
| Direktori : /proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/fmtcount/ |
| Current File : //proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/fmtcount/fcnumparser.sty |
%%
%% This is file `fcnumparser.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% fmtcount.dtx (with options: `fcnumparser.sty,package')
%%
%% fmtcount.dtx
%% Copyright 2012 Nicola Talbot and Vincent Belaïche
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license of (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 Nicola Talbot and Vincent Belaïche.
%%
%% This work consists of the files fmtcount.dtx and fmtcount.ins and the derived files fcnumparser.sty, fcprefix.sty, fmtcount.sty, fc-american.def, fc-british.def, fc-english.def, fc-francais.def, fc-french.def, fc-frenchb.def, fc-german.def, fc-germanb.def, fc-italian.def, fc-ngerman.def, fc-ngermanb.def, fc-portuges.def, fc-spanish.def, fc-UKenglish.def, fc-USenglish.def.
%%
%% \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 \~}
%%\subsection{Prefixes}
%%\label{sec:latin-prefixes}
%%
%%\begin{definition}[\DescribeMacro{\latinnumeralstring}]
%%\cs{latinnumeralstring}\marg{counter}\oarg{prefix options}
%%\end{definition}
%%
%%\begin{definition}[\DescribeMacro{\latinnumeralstringnum}]
%%\cs{latinnumeralstringnum}\marg{number}\oarg{prefix options}
%%\end{definition}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fcnumparser}[2012/09/28]
\def\fc@counter@parser#1{%
\expandafter\fc@number@parser\expandafter{\the#1.}%
}
\newcount\fc@digit@counter
\def\fc@end@{\fc@end}
\def\fc@number@analysis#1\fc@nil{%
\def\@tempb##1.##2\fc@nil{\def\fc@integer@part{##1}\def\@tempa{##2}}%
\@tempb#1.\fc@end\fc@nil
\ifx\@tempa\fc@end@
\def\@tempb##1,##2\fc@nil{\def\fc@integer@part{##1}\def\@tempa{##2}}%
\@tempb#1,\fc@end\fc@nil
\ifx\@tempa\fc@end@
\def\fc@fractional@part{}%
\else
\def\@tempb##1,\fc@end{\def\fc@fractional@part{##1}}%
\expandafter\@tempb\@tempa
\fi
\else
\def\@tempb##1.\fc@end{\def\fc@fractional@part{##1}}%
\expandafter\@tempb\@tempa
\fi
}
\def\fc@number@parser#1{%
\let\@tempa\@empty
\def\@tempb##1##2\fc@nil{%
\def\@tempc{##1}%
\ifx\@tempc\space
\else
\expandafter\def\expandafter\@tempa\expandafter{\@tempa ##1}%
\fi
\def\@tempc{##2}%
\ifx\@tempc\@empty
\expandafter\@gobble
\else
\expandafter\@tempb
\fi
##2\fc@nil
}%
\@tempb#1\fc@nil
\def\@tempb##1##2\fc@nil{\def\fc@sign{##1}\def\fc@number{##2}}%
\expandafter\@tempb\@tempa\fc@nil
\expandafter\if\fc@sign+%
\def\fc@sign@case{1}%
\else
\expandafter\if\fc@sign-%
\def\fc@sign@case{2}%
\else
\def\fc@sign{}%
\def\fc@sign@case{0}%
\let\fc@number\@tempa
\fi
\fi
\ifx\fc@number\@empty
\PackageError{fcnumparser}{Invalid number}{Number must contain at least one non blank
character after sign}%
\fi
\expandafter\fc@number@analysis\fc@number\fc@nil
\expandafter\fc@digit@counter\fc@unit@weight
\expandafter\fc@parse@integer@digits\fc@integer@part\fc@end\fc@nil
\fc@digit@counter -\fc@digit@counter
\advance\fc@digit@counter by \fc@unit@weight
\advance\fc@digit@counter by \fc@unit@weight
\advance\fc@digit@counter by -1 %
\edef\fc@max@weight{\the\fc@digit@counter}%
{%
\count0 \fc@unit@weight\relax
\count1 \fc@max@weight\relax
\advance\count0 by -\count1 %
\advance\count0 by -1 %
\def\@tempa##1{\def\@tempb{\def\@tempi{##1}}}%
\expandafter\@tempa\expandafter{\the\count0}%
\expandafter
}\@tempb
\expandafter\fc@digit@counter\fc@unit@weight
\def\@templ{%
\ifnum\fc@digit@counter>\fc@max@weight
\let\next\relax
\else
{%
\count0 \@tempi
\advance\count0 by \fc@digit@counter
\expandafter\def\expandafter\@tempd\expandafter{\csname fc@digit@\the\count0\endcsname}%
\expandafter\def\expandafter\@tempe\expandafter{\csname fc@digit@\the\fc@digit@counter\endcsname}%
\def\@tempa####1####2{\def\@tempb{\let####1####2}}%
\expandafter\expandafter\expandafter\@tempa\expandafter\@tempe\@tempd
\expandafter
}\@tempb
\advance\fc@digit@counter by 1 %
\fi
\next
}%
\let\next\@templ
\@templ
\expandafter\fc@digit@counter\fc@unit@weight
\expandafter\fc@parse@integer@digits\fc@fractional@part\fc@end\fc@nil
\edef\fc@min@weight{\the\fc@digit@counter}%
}
\@ifundefined{fc@parse@integer@digits}{}{%
\PackageError{fcnumparser}{Duplicate definition}{Redefinition of
macro `fc@parse@integer@digits'}}
\def\fc@parse@integer@digits#1#2\fc@nil{%
\def\@tempa{#1}%
\ifx\@tempa\fc@end@
\def\next##1\fc@nil{}%
\else
\let\next\fc@parse@integer@digits
\advance\fc@digit@counter by -1
\expandafter\def\csname fc@digit@\the\fc@digit@counter\endcsname{#1}%
\fi
\next#2\fc@nil
}
\newcommand*{\fc@unit@weight}{0}
\@ifundefined{fc@read@unit}{}{%
\PackageError{fcnumparser}{Duplicate definition}{Redefinition of macro `fc@read@unit'}}
\def\fc@read@unit#1#2{%
\ifnum#2>\fc@max@weight
#1=0\relax
\else
\ifnum#2<\fc@min@weight
#1=0\relax
\else
{%
\edef\@tempa{\number#2}%
\count0=\@tempa
\edef\@tempa{\csname fc@digit@\the\count0\endcsname}%
\def\@tempb##1{\def\@tempa{#1=##1\relax}}%
\expandafter\@tempb\expandafter{\@tempa}%
\expandafter
}\@tempa
\fi
\fi
}
\@ifundefined{fc@read@hundred}{}{%
\PackageError{fcnumparser}{Duplicate definition}{Redefinition of macro `fc@read@hundred'}}
\def\fc@read@hundred#1#2{%
{%
\fc@read@unit{\count0}{#2}%
\def\@tempa##1{\fc@read@unit{\count1}{##1}}%
\count2=#2%
\advance\count2 by 1 %
\expandafter\@tempa{\the\count2}%
\multiply\count1 by 10 %
\advance\count1 by \count0 %
\def\@tempa##1{\def\@tempb{#1=##1\relax}}
\expandafter\@tempa\expandafter{\the\count1}%
\expandafter
}\@tempb
}
\@ifundefined{fc@read@thousand}{}{%
\PackageError{fcnumparser}{Duplicate definition}{Redefinition of macro
`fc@read@thousand'}}
\def\fc@read@thousand#1#2{%
{%
\fc@read@unit{\count0}{#2}%
\def\@tempa##1{\fc@read@hundred{\count1}{##1}}%
\count2=#2%
\advance\count2 by 1 %
\expandafter\@tempa{\the\count2}%
\multiply\count1 by 10 %
\advance\count1 by \count0 %
\def\@tempa##1{\def\@tempb{#1=##1\relax}}
\expandafter\@tempa\expandafter{\the\count1}%
\expandafter
}\@tempb
}
\@ifundefined{fc@read@myriad}{}{%
\PackageError{fcnumparser}{Duplicate definition}{Redefinition of macro
`fc@read@myriad'}}
\def\fc@read@myriad#1#2{%
{%
\fc@read@hundred{\count0}{#2}%
\def\@tempa##1{\fc@read@hundred{\count1}{##1}}%
\count2=#2
\advance\count2 by 2
\expandafter\@tempa{\the\count2}%
\multiply\count1 by 100 %
\advance\count1 by \count0 %
\def\@tempa##1{\def\@tempb{#1=##1\relax}}%
\expandafter\@tempa\expandafter{\the\count1}%
\expandafter
}\@tempb
}
\@ifundefined{fc@check@nonzeros}{}{%
\PackageError{fcnumparser}{Duplicate definition}{Redefinition of macro
`fc@check@nonzeros'}}
\def\fc@check@nonzeros#1#2#3{%
{%
\edef\@@tempa{\number#1}%
\edef\@tempb{\number#2}%
\count0=\@@tempa
\count1=\@tempb\relax
\fc@@check@nonzeros@inner
\def\@tempd##1{\def\@tempa{\def#3{##1}}}%
\expandafter\@tempd\expandafter{\@tempc}%
\expandafter
}\@tempa
}
\def\fc@@check@nonzeros@inner{%
\ifnum\count0<\fc@min@weight
\count0=\fc@min@weight\relax
\fi
\ifnum\count1>\fc@max@weight\relax
\count1=\fc@max@weight
\fi
\count2\count0 %
\advance\count2 by 1 %
\ifnum\count0>\count1 %
\PackageError{fcnumparser}{Unexpected arguments}{Number in argument 2 of macro
`fc@check@nonzeros' must be at least equal to number in argument 1}%
\else
\fc@@check@nonzeros@inner@loopbody
\ifnum\@tempc>0 %
\ifnum\@tempc<9 %
\ifnum\count0>\count1 %
\else
\let\@tempd\@tempc
\fc@@check@nonzeros@inner@loopbody
\ifnum\@tempc=0 %
\let\@tempc\@tempd
\else
\def\@tempc{9}%
\fi
\fi
\fi
\fi
\fi
}
\def\fc@@check@nonzeros@inner@loopbody{%
% \@tempc <- digit of weight \count0
\expandafter\let\expandafter\@tempc\csname fc@digit@\the\count0\endcsname
\advance\count0 by 1 %
\ifnum\@tempc=0 %
\ifnum\count0>\count1 %
\let\next\relax
\else
\let\next\fc@@check@nonzeros@inner@loopbody
\fi
\else
\ifnum\count0>\count2 %
\def\@tempc{9}%
\fi
\let\next\relax
\fi
\next
}
\@ifundefined{fc@intpart@find@last}{}{%
\PackageError{fcnumparser}{Duplicate definition}{Redefinition of macro
`fc@intpart@find@last'}}
\def\fc@intpart@find@last#1{%
{%
\count0=\fc@unit@weight\space
\ifnum\count0<\fc@min@weight\space
\count0=\fc@min@weight\space
\fi
\def\@templ{%
\ifnum\csname fc@digit@\the\count0\endcsname=0 %
\advance\count0 by 1 %
\ifnum\count0>\fc@max@weight\space
\let\next\relax
\fi
\else
\let\next\relax
\fi
\next
}%
\let\next\@templ
\@templ
\toks0{#1}%
\edef\@tempa{\the\toks0=\the\count0}%
\expandafter
}\@tempa\space
}
\@ifundefined{fc@get@last@word}{}{\PackageError{fcnumparser}{Duplicate definition}{Redefinition
of macro `fc@get@last@word'}}%
\def\fc@get@last@word#1#2#3{%
{%
\def\@tempa##1\fc@case##2\@nil\fc@end{%
\toks0{##1}%
\toks1{##2\fc@case}%
}%
\@tempa#1\fc@end
\def\@tempa##1\fc@case##2\fc@end{%
\toks2{##1}%
\def\@tempb{##2}%
\toks3{##2}%
}%
\toksdef\@tempt0 %
\def\@templ{%
\expandafter\@tempa\the\toks1 \fc@end
\ifx\@tempb\@empty
\let\next\relax
\else
\expandafter\expandafter\expandafter\@tempt
\expandafter\expandafter\expandafter{%
\expandafter\the\expandafter\@tempt
\expandafter\fc@case\the\toks2}%
\toks1\toks3 %
\fi
\next
}%
\let\next\@templ
\@templ
\edef\@tempa{\def\noexpand#2{\the\toks0}\def\noexpand#3{\the\toks2}}%
\expandafter
}\@tempa
}
\@ifundefined{fc@get@last@letter}{}{\PackageError{fcnumparser}{Duplicate definition}{Redefinition
of macro `fc@get@last@letter'}}%
\def\fc@get@last@letter#1#2#3{%
{%
\toks1{#1}%
\toks0{}%
\toksdef\@tempt0 %
\def\@tempa##1##2\fc@nil{%
\toks2{##1}%
\toks3{##2}%
\def\@tempb{##2}%
}%
\def\@templ{%
\expandafter\@tempa\the\toks1 \fc@nil
\ifx\@tempb\@empty
\let\next\relax
\else
\expandafter\expandafter\expandafter\@tempt
\expandafter\expandafter\expandafter{%
\expandafter\the\expandafter\@tempt
\the\toks2}%
\toks1\toks3 %
\fi
\next
}%
\let\next\@templ
\next
\edef\@tempa{\def\noexpand#2{\the\toks0}\def\noexpand#3{\the\toks1}}%
\expandafter
}\@tempa
}%
\iffalse Local variables: \fi
\iffalse mode: docTeX \fi
\iffalse End: \fi
\endinput
%%
%% End of file `fcnumparser.sty'.