summaryrefslogtreecommitdiff
path: root/macros/latex209/contrib/misc/format.sty
blob: f63725248e07f1f8e19a64696ba73074fb1896c7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
% Written by Charles Karney (Karney%PPC.MFENET@NMFECC.ARPA) 1986/04/29.
% Format is a style option which allows the printing of floating point
% numbers in fixed format.  The argument is the counter to use.  The
% optional first argument if the power of ten to multiply counter by.  The
% default is 0.  An integer is produced if power is nonnegative.
% Otherwise, at least one digit appears before decimal point and exactly
% -power digits after decimal point.  Restriction: abs(power)<=6.
% 
% Example: label an axis with -1.0, -0.8, -0.6, ... 1.0
%     \newcounter{axis} \setcounter{axis}{-10}
%     \multiput(...)(...){11}{\format[-1]{axis}\addtocounter{axis}{2}}

\def\format{\@ifnextchar[{\format@}{\format@[0]}}
\def\format@[#1]#2{\@tempcnta#1 \@format{\@nameuse{c@#2}}}
\def\@format#1{\hbox{$
    \ifnum #1<0 - #1-#1\fi % Here's where to insert a +
    \ifnum\@tempcnta<0
        \@tempcnta-\@tempcnta
        \@tempcnta\ifcase\@tempcnta\or 10 \or 100 \or 1000 \or
                                    10000 \or 100000 \else 1000000 \fi
        \@tempcntb#1 \divide\@tempcntb \@tempcnta
        \number\@tempcntb . \multiply\@tempcntb \@tempcnta
        \advance\@tempcntb -#1 \advance\@tempcnta -\@tempcntb
        \expandafter\@gobble\number\@tempcnta
    \else
        \number #1
        \ifcase\@tempcnta\or 0\or 00\or 000\or
                         0000\or 00000\else 000000\fi\fi$}}