diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:01:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:01:03 +0000 |
commit | fd257bd5c75a905dfa0ca6e3e507d9ed29338e1f (patch) | |
tree | c757616e23785687107982ba45f86c5c4ac79147 /Master/texmf-dist/tex/latex/numprint/numprint032.sty | |
parent | 26b8ca05f501c6e8522a05042c3b433a90112054 (diff) |
numprint
git-svn-id: svn://tug.org/texlive/trunk@1149 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/numprint/numprint032.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/numprint/numprint032.sty | 559 |
1 files changed, 559 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/numprint/numprint032.sty b/Master/texmf-dist/tex/latex/numprint/numprint032.sty new file mode 100644 index 00000000000..77f1aa9495d --- /dev/null +++ b/Master/texmf-dist/tex/latex/numprint/numprint032.sty @@ -0,0 +1,559 @@ +%% +%% This is file `numprint032.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% numprint032.dtx (with options: `package') +%% +%% numprint package +%% +%% Copyright 2000--2005 Harald Harders +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt; either +%% version 1 of the License, or any later version. +%% +%% h.harders@tu-bs.de +%% +\def\packagename{numprint} +\def\nprtfileversion{0.32} +\def\nprtfiledate{2003/09/18} +\def\nprtdocdate{2003/09/18} +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{numprint032}[\nprtfiledate\space v\nprtfileversion\space + Print numbers] +\message{Package `numprint032', Version \nprtfileversion\space of \nprtfiledate.} +\message{Compatiblity version of numprint for versions prior 1.00} +\RequirePackage{calc} +\RequirePackage{array} +\newif\if@numsepfour +\newcommand\@addmissingzero{} +\newcommand*{\fourdigitsep}{\@numsepfourtrue}% +\newcommand*{\fourdigitnosep}{\@numsepfourfalse}% +\newcommand*{\addmissingzero}{\def\@addmissingzero{0}}% +\newcommand*{\noaddmissingzero}{\def\@addmissingzero{}}% +\DeclareOption{nosepfour}{\fourdigitnosep} +\DeclareOption{sepfour}{\fourdigitsep} +\DeclareOption{noaddmissingzero}{\noaddmissingzero} +\DeclareOption{addmissingzero}{\addmissingzero} +\ExecuteOptions{sepfour,addmissingzero} +\ProcessOptions\relax +\newcommand{\npdecimalsign}[1]{\def\nprt@decimal{{#1}}} +\newcommand{\npthousandsep}[1]{\def\nprt@thousand{{#1}}% + \def\nprt@thousandthpart{{#1}}} +\newcommand{\npthousandthpartsep}[1]{\def\nprt@thousandthpart{{#1}}} +\newcommand{\npproductsign}[1]{\def\nprt@prod{\ensuremath{{}#1{}}}} +\newcommand{\npunitseparator}[1]{\def\nprt@unitsep{{#1}}} +\npthousandsep{\,}% +\npthousandthpartsep{\,}% +\npdecimalsign{,}% +\npproductsign{{}\cdot{}}% +\npunitseparator{\,}% +\def\@fillnull#1#2{% + \@tempcnta=0 + \loop + \g@addto@macro{#1}{0}% + \advance\@tempcnta by 1 + \ifnum\@tempcnta<#2 + \repeat +} +\newcommand\nprounddigits[1]{% + \def\nprt@rounddigits{#1}% + \def\nprt@roundnull{}% + \@fillnull{\nprt@roundnull}{#1}% +} +\newcommand\npnoround{\nprounddigits{-1}} +\npnoround +\newcommand\nproundexpdigits[1]{% + \def\nprt@roundexpdigits{#1}% + \def\nprt@roundexpnull{}% + \@fillnull{\nprt@roundexpnull}{#1}% + } +\newcommand\npnoroundexp{\nproundexpdigits{-1}} +\npnoroundexp +\newcommand\npreplacenull[1]{\def\nprt@replacenull{#1}} +\newcommand\npprintnull{\let\nprt@replacenull=\@empty} +\npprintnull +\def\nprt@plus@test{+} +\def\nprt@minus@test{-} +\def\nprt@plusminus@test{\pm} +\def\nprt@plus{\ensuremath{+}} +\def\nprt@minus{\ensuremath{-}} +\def\nprt@plusminus{\ensuremath{\pm}} +\def\nprt@printdigit#1{% + \def\nprt@tmp{#1}% + \ifx\nprt@tmp\nprt@plus@test + \nprt@plus + \else + \ifx\nprt@tmp\nprt@minus@test + \nprt@minus + \else + \ifx\nprt@tmp\nprt@plusminus@test + \nprt@plusminus + \else + #1% + \fi + \fi + \fi +} +\newif\ifnprt@block +\newif\ifnprt@blockexp +\newif\ifnprt@exponent +\newif\ifnprt@inmath +\newcommand{\digits}[2]{% + \xdef\nprt@blockbefore{#1}% + \xdef\nprt@blockafter{#2}% + \nprt@blocktrue}% +\newcommand{\nodigits}{\nprt@blockfalse}% +\newcommand{\exponentdigits}[1]{% + \xdef\nprt@blockexpbefore{#1}% + \nprt@blockexptrue}% +\newcommand{\noexponentdigits}{\nprt@blockexpfalse}% +\def\nprt@three#1#2#3#4\@empty{% + \nprt@printdigit#1% + \nprt@printdigit#2% + \nprt@printdigit#3% + \def\nprt@tmp{#4}% + \ifx\nprt@tmp\empty + \else + \nprt@thousand% + \nprt@three#4\@empty\@empty\@empty + \fi +} +\def\nprt@threeafter#1#2#3#4\@empty{% + \nprt@printdigit#1% + \nprt@printdigit#2% + \nprt@printdigit#3% + \def\nprt@tmp{#4}% + \ifx\nprt@tmp\empty + \else + \nprt@thousandthpart% + \nprt@threeafter#4\@empty\@empty\@empty + \fi +} +\def\nprt@two#1#2#3\@empty{% + \nprt@printdigit#1% + \nprt@printdigit#2% + \def\nprt@tmp{#3}% + \ifx\nprt@tmp\empty + \else + \nprt@thousand\nprt@three#3\@empty\@empty\@empty + \fi +} +\def\nprt@one#1#2\@empty{% + \nprt@printdigit#1% + \def\nprt@tmp{#2}% + \ifx\nprt@tmp\empty + \else + \def\nprt@tmp{#1}% + \ifx\nprt@tmp\nprt@plus@test + \else + \ifx\nprt@tmp\nprt@minus@test + \else + \ifx\nprt@tmp\nprt@plusminus@test + \else + \nprt@thousand + \fi + \fi + \fi + \nprt@three#2\@empty\@empty\@empty + \fi +} +\def\nprt@exptest#1e#2\@empty{\gdef\nprt@tmp{#2}} +\def\nprt@Exptest#1E#2\@empty{\gdef\nprt@tmp{#2}} +\def\nprt@commatest#1,#2\@empty{\gdef\nprt@tmp{#2}} +\def\nprt@dottest#1.#2\@empty{\gdef\nprt@tmp{#2}} +\def\nprt@exp#1e#2\@empty{\expnumprint{#1}{#2}} +\def\nprt@Exp#1E#2\@empty{\expnumprint{#1}{#2}} +\def\nprt@comma#1,#2\@empty{% + \nprt@dotcomma{#1}{#2}} +\def\nprt@dot#1.#2\@empty{% + \nprt@dotcomma{#1}{#2}} +\def\nprt@dotcomma#1#2{% + \begingroup + \ifnprt@exponent + \edef\nprt@rounddigits{\nprt@roundexpdigits}% + \edef\nprt@roundnull{\nprt@roundexpnull}% + \fi + \ifnum\nprt@rounddigits<0 + \def\nprt@charsbeforecomma{#1}% + \def\nprt@charsaftercomma{#2}% + \else + \def\nprt@charsbeforecomma{}% + \def\nprt@charsaftercomma{}% + \edef\zwei{#2\nprt@roundnull}% + \expandafter\nprt@roundaftercomma\zwei\empty + \if@@roundup + \nprt@roundbeforecomma#1\empty + \if@@roundup + \expandafter\xdef\expandafter\nprt@charsbeforecomma{% + 1\nprt@charsbeforecomma}% + \fi + \else + \def\nprt@charsbeforecomma{#1}% + \fi + \fi + \nprt@@hassignfalse + \expandafter\nprt@count\nprt@charsaftercomma\@empty\@empty\@empty + \setcounter{nprt@digitsafterdecimal}{\thenprt@digitsbeforedecimal}% + \expandafter\nprt@hassign\nprt@charsbeforecomma\@empty\@empty + \expandafter\nprt@count\nprt@charsbeforecomma\@empty\@empty\@empty + \ifnum\the\c@nprt@digitsbeforedecimal=0 + \@addmissingzero + \else + \expandafter\beforecomma\nprt@charsbeforecomma\@empty\@empty + \fi + \ifnum\nprt@rounddigits=0 + \else + \nprt@decimal + \ifnum\the\c@nprt@digitsafterdecimal>0 + \aftercomma{\nprt@charsaftercomma}% + \else + \ifx\nprt@replacenull\@empty + \@addmissingzero + \else + \nprt@replacenull + \fi + \fi + \fi + \endgroup +} +\newcommand{\expnumprint}[2]{% + \def\nprt@tmp{#1}% + \ifx\nprt@tmp\@empty + \nprt@exponenttrue + \ifmmode + 10^{\numprint{#2}}% + \else + 10\textsuperscript{\numprint{#2}}% + \fi + \else + \ifmmode + \numprint{#1}% + \nprt@exponenttrue + \nprt@prod 10^{\numprint{#2}}% + \else + \numprint{#1}% + \nprt@exponenttrue + \nprt@prod 10\textsuperscript{\numprint{#2}}% + \fi + \fi + \nprt@exponentfalse +} +\def\nprt@empty{\@empty}% +\DeclareRobustCommand*\numprint[2][\@empty]{% + \setcounter{nprt@digitsafterdecimal}{0}% + \setcounter{nprt@digitsbeforedecimal}{0}% + \edef\nprt@marg{#2}% + \expandafter\nprt@Exptest\nprt@marg E\@empty + \ifx\nprt@tmp\empty + \expandafter\nprt@exptest\nprt@marg e\@empty + \ifx\nprt@tmp\empty + \expandafter\nprt@commatest\nprt@marg,\@empty + \ifx\nprt@tmp\empty + \expandafter\nprt@dottest\nprt@marg.\@empty + \ifx\nprt@tmp\empty + \expandafter\nprt@hassign\nprt@marg\@empty + \expandafter\nprt@count\nprt@marg\@empty\@empty\@empty + \begingroup + \ifnprt@exponent + \def\nprt@rounddigits{\nprt@roundexpdigits}% + \def\nprt@roundnull{\nprt@roundexpnull}% + \fi + \ifnum\nprt@rounddigits>0 + \setcounter{nprt@digitsafterdecimal}{\nprt@rounddigits}% + \fi + \expandafter\beforecomma\nprt@marg\@empty\@empty + \ifnum\nprt@rounddigits>0 + \nprt@decimal + \aftercomma{\nprt@roundnull}% + \fi + \endgroup + \else + \expandafter\nprt@dot\nprt@marg\@empty + \fi + \else + \expandafter\nprt@comma\nprt@marg\@empty + \fi + \else + \expandafter\nprt@exp\nprt@marg\@empty + \fi + \else + \expandafter\nprt@Exp\nprt@marg\@empty + \fi + \def\nprt@unit{#1}% + \ifx\nprt@unit\nprt@empty + \else + \ensuremath{\nprt@unitsep\mathrm{\nprt@unit}}% + \fi +} +\newcounter{nprt@countblocksbefore}% +\newcounter{nprt@digitsfirstblock}% +\newcounter{nprt@digitsafterdecimal}% +\newcounter{nprt@digitsbeforedecimal}% +\newif\ifnprt@@hassign +\def\nprt@hassign#1#2\@empty{% + \ifnum-9>-1#1 + \nprt@@hassignfalse + \else + \nprt@@hassigntrue + \fi +} +\def\nprt@count#1#2\@empty{% + \setcounter{nprt@digitsbeforedecimal}{0}% + \edef\nprt@arg{#1}% + \ifx\nprt@arg\@empty + \else + \ifnprt@@hassign + \nprt@@count#2\@empty\@empty + \else + \nprt@@count#1#2\@empty\@empty + \fi + \fi + \setcounter{nprt@countblocksbefore}{\arabic{nprt@digitsbeforedecimal}/3}% + \setcounter{nprt@digitsfirstblock}{% + \arabic{nprt@digitsbeforedecimal}-3*\arabic{nprt@countblocksbefore}}% +} +\def\nprt@@count#1#2\@empty{% + \ifnum-9>-1#1 + \addtocounter{nprt@digitsbeforedecimal}{1}% + \def\nprt@tmp{#2}% + \ifx\nprt@tmp\empty + \else + \nprt@@count#2\@empty\@empty + \fi + \else + \PackageError{numprint}{Incorrect number format in + \string\numprint}{% + The main argument of the \string\numprint\space command may only + be started\MessageBreak + with \string"+\string", \string"-\string", or + \string"\string\pm\string" and then contain of\MessageBreak + digits \string"0\string" to \string"9\string", + \string",\string", \string".\string", \string"e\string", and + \string"E\string".}% + \fi +} +\newlength{\nprt@digitwidth}% +\newlength{\nprt@sepwidth}% +\newcounter{nprt@digitcount}% +\newcounter{nprt@sepcount}% +\newlength{\nprt@blockwidth}% +\def\beforecomma#1#2\@empty{% + \ifnprt@block + \ifnprt@exponent + \else + \settowidth{\nprt@digitwidth}{1}% + \settowidth{\nprt@sepwidth}{\nprt@thousand}% + \setcounter{nprt@digitcount}{\nprt@blockbefore}% + \setcounter{nprt@sepcount}{(\nprt@blockbefore-1)/3}% + \setlength{\nprt@blockwidth}{% + \arabic{nprt@digitcount}\nprt@digitwidth+% + \arabic{nprt@sepcount}\nprt@sepwidth}% + \if@numsepfour + \else + \ifnum\nprt@blockbefore=4 + \ifnum\nprt@blockafter<5 + \setlength{\nprt@blockwidth}{4\nprt@digitwidth}% + \fi + \fi + \fi + \ifmmode\nprt@inmathtrue\fi + \makebox[\nprt@blockwidth][r]{% + \ifnprt@inmath$\fi %$ (only for syntax highlighing in emacs) + \fi + \fi + \ifnprt@blockexp + \ifnprt@exponent + \settowidth{\nprt@digitwidth}{1}% + \settowidth{\nprt@sepwidth}{\nprt@thousand}% + \setcounter{nprt@digitcount}{\nprt@blockexpbefore}% + \setcounter{nprt@sepcount}{(\nprt@blockexpbefore-1)/3}% + \setlength{\nprt@blockwidth}{% + \arabic{nprt@digitcount}\nprt@digitwidth+% + \arabic{nprt@sepcount}\nprt@sepwidth}% + \if@numsepfour + \else + \ifnum\nprt@blockexpbefore=4 + \setlength{\nprt@blockwidth}{4\nprt@digitwidth}% + \fi + \fi + \ifmmode\nprt@inmathtrue\fi + \makebox[\nprt@blockwidth][r]{% + \ifnprt@inmath$\scriptstyle\fi %$ (only for syntax highlighing in emacs) + \fi + \fi + \ifnprt@@hassign + \nprt@printdigit{#1}% + \edef\nprt@tmp{#2}% + \else + \edef\nprt@tmp{#1#2}% + \fi + \ifnum\thenprt@digitsfirstblock=1 + \ifnum\thenprt@digitsbeforedecimal=4 + \if@numsepfour + \expandafter\nprt@one\nprt@tmp\@empty\@empty\@empty + \else + \ifnum\thenprt@digitsafterdecimal<5 + \nprt@tmp\ignorespaces + \else + \expandafter\nprt@one\nprt@tmp\@empty\@empty\@empty + \fi + \fi + \else + \expandafter\nprt@one\nprt@tmp\@empty\@empty\@empty + \fi + \fi + \ifnum\thenprt@digitsfirstblock=2 + \expandafter\nprt@two\nprt@tmp\@empty\@empty\@empty + \fi + \ifnum\thenprt@digitsfirstblock=0 + \expandafter\nprt@three\nprt@tmp\@empty\@empty\@empty\@empty + \fi + \ifnprt@blockexp + \ifnprt@exponent + \ifnprt@inmath$\fi %$ (only for syntax highlighing in emacs) + }% + \fi + \fi + \ifnprt@block + \ifnprt@exponent + \else + \ifnprt@inmath$\fi %$ (only for syntax highlighing in emacs) + }% + \fi + \fi +} +\newcommand{\aftercomma}[1]{% + \ifnprt@block + \ifnprt@exponent + \else + \settowidth{\nprt@digitwidth}{1}% + \settowidth{\nprt@sepwidth}{\nprt@thousand}% + \setcounter{nprt@digitcount}{\nprt@blockafter}% + \setcounter{nprt@sepcount}{(\nprt@blockafter-1)/3}% + \setlength{\nprt@blockwidth}{% + \arabic{nprt@digitcount}\nprt@digitwidth+% + \arabic{nprt@sepcount}\nprt@sepwidth}% + \if@numsepfour + \else + \ifnum\nprt@blockafter=4 + \ifnum\nprt@blockbefore<5 + \setlength{\nprt@blockwidth}{4\nprt@digitwidth}% + \fi + \fi + \fi + \ifmmode\nprt@inmathtrue\fi + \makebox[\nprt@blockwidth][l]{% + \ifnprt@inmath$\fi %$ (only for syntax highlighing in emacs) + \fi + \fi + \ifx\nprt@replacenull\@empty + \else + \ifnum#1=0 + \setcounter{nprt@digitsafterdecimal}{0}% + \fi + \fi + \ifnum\thenprt@digitsafterdecimal=4 + \if@numsepfour + \expandafter\nprt@threeafter#1\@empty\@empty\@empty + \else + \ifnum\thenprt@digitsbeforedecimal<5 + #1\ignorespaces + \else + \expandafter\nprt@threeafter#1\@empty\@empty\@empty + \fi + \fi + \else + \ifx\nprt@replacenull\@empty + \expandafter\nprt@threeafter#1\@empty\@empty\@empty + \else + \ifnum#1=0 + \nprt@replacenull + \else + \expandafter\nprt@threeafter#1\@empty\@empty\@empty + \fi + \fi + \fi + \ifnprt@block + \ifnprt@exponent + \else + \ifnprt@inmath$\fi %$ (only for syntax highlighing in emacs) + }% + \fi + \fi +} +\newcounter{nprt@position} +\newif\if@@roundup +\newcounter{nprt@thisdigit} +\def\nprt@roundaftercomma#1#2\empty{% + \addtocounter{nprt@position}{1}% + \edef\zwei{#2}% + \ifx\zwei\empty + \else + \expandafter\ifnum\thenprt@position<\nprt@rounddigits + \nprt@roundaftercomma#2\empty + \else + \nprt@roundup#2\empty + \fi + \fi + \setcounter{nprt@thisdigit}{#1}% + \if@@roundup + \addtocounter{nprt@thisdigit}{1}% + \ifnum\thenprt@thisdigit>9 + \@@rounduptrue + \setcounter{nprt@thisdigit}{0}% + \else + \@@roundupfalse + \fi + \fi + \expandafter\xdef\expandafter\nprt@charsaftercomma{% + \thenprt@thisdigit\nprt@charsaftercomma}% + \addtocounter{nprt@position}{-1}% +} +\def\nprt@roundup#1#2\empty{% + \ifnum#1>4 + \@@rounduptrue + \else + \@@roundupfalse + \fi +} +\def\nprt@roundbeforecomma#1#2\empty{% + \edef\zwei{#2}% + \ifx\zwei\empty + \else + \nprt@roundbeforecomma#2\empty + \fi + \edef\eins{#1}% + \ifnum-9>-1#1 + \setcounter{nprt@thisdigit}{#1}% + \if@@roundup + \addtocounter{nprt@thisdigit}{1}% + \ifnum\thenprt@thisdigit>9 + \@@rounduptrue + \setcounter{nprt@thisdigit}{0}% + \else + \@@roundupfalse + \fi + \fi + \expandafter\xdef\expandafter\nprt@charsbeforecomma{% + \thenprt@thisdigit\nprt@charsbeforecomma}% + \else + \if@@roundup + \expandafter\xdef\expandafter\nprt@charsbeforecomma{% + 1\nprt@charsbeforecomma}% + \@@roundupfalse + \fi + \expandafter\xdef\expandafter\nprt@charsbeforecomma{% + #1\nprt@charsbeforecomma}% + \fi +} +\newcolumntype{n}[2]{>{\digits{#1}{#2}$}l<{$\nodigits}} +\newcolumntype{N}[3]{% + >{\digits{#1}{#2}\exponentdigits{#3}$}l<{$\nodigits\noexponentdigits}} + +\endinput +%% +%% End of file `numprint032.sty'. |