diff options
author | Karl Berry <karl@freefriends.org> | 2010-02-23 00:27:32 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-02-23 00:27:32 +0000 |
commit | 41a7ada80719f4f4cce32f15d40553c4f0b98e59 (patch) | |
tree | 6911b30d6937fd2dcac996f190516cd37fad2c7f /Master/texmf-dist/tex | |
parent | 2bde0cef55deb13172e07c4e37e7f2289fe1f6b7 (diff) |
comma update (22feb10)
git-svn-id: svn://tug.org/texlive/trunk@17159 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/comma/comma.sty | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/comma/comma.sty b/Master/texmf-dist/tex/latex/comma/comma.sty new file mode 100644 index 00000000000..26f6c4ac622 --- /dev/null +++ b/Master/texmf-dist/tex/latex/comma/comma.sty @@ -0,0 +1,101 @@ + +%%% comma.sty +%%% +%%% Copyright 1996 1997 David Carlisle +%%% +%%% This file may be distributed under the terms of the LPPL. +%%% See 00readme.txt for details. +%%% +%%% David Carlisle david@dcarlisle.demon.co.uk +%%% +\ProvidesPackage{comma} + [1997/12/15 v1.2 Insert commas every three digits (DPC)] + +%% This package provides a means of producing numbers with a separator +%% (by default a comma) every three digits. +%% +%% Given a LaTeX counter (eg section) +%% +%% \renewcommand\thesection{\commaform{section}} +%% +%% If section is 12345, \thesection will now print as 12,345 +%% +%% If you want something other than a comma, for instance a thin +%% space, or a full word space, redefine \commaformtoken, for instance +%% \renewcommand\commaformtoken{\,} +%% \renewcommand\commaformtoken{ } +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% v1.0 1996/09/05 +% v1.1 1997/07/10 +% v1.2 1997/12/15 + + +% #1 is the name of a LaTeX counter. +\def\commaform#1{% + \expandafter\@commaform\csname c@#1\endcsname} + +% The token to place every three digits. +\def\commaformtoken{,} + +% Internal version. +% #1 is the number. It may be a TeX count register, eg \count@ +% or an explicit number such as `1234'. +% v1.1 use \relax not empty so explicit digits need not end with a space +% token. +% (This \relax will be eaten by the parser, second two must be \@empty) +% v1.2 add \@comma@ux for very long digit strings (requested on c.t.t) +\def\@commaform#1{% + \expandafter\@commaaux + \expandafter{\expandafter}% + \number\@comma@ux#1% + \relax\@empty\@empty} + + +% If \@commaform is given a very long digit string then it may be +% too large for \number, so make sure \number only applies to the first +% token. This may leave a spurious space token, but it will be eaten +% by the \@commaaux parsing, which uses non delimited arguments, and +% so skips space tokens. +% Added in v1.2. +\def\@comma@ux#1{#1 } + +% Wander down to the end of the number and then see where +% \relax turns up. +% #1 List of digits already seen (initially {} ) +% #2#3#4 next three digits (or \@empty) in list. +\def\@commaaux#1#2#3#4{% + \ifx\relax#2% + \addcomma#1\relax + \else + \ifx\relax#3% + \addcomma\@empty\@empty#1#2\relax + \else + \ifx\relax#4% + \addcomma\@empty#1#2#3\relax + \else + \@commaauxafterfi{#1#2#3#4}% + \fi + \fi + \fi} + + +% Get out of the nested \if before recursing down the list of digits. +% #1 list of digits seen so far. +\def\@commaauxafterfi#1\fi\fi\fi{% + \fi\fi\fi\@commaaux{#1}} + +% Go down adding a `comma' every three tokens. The list will have +% been padded with 0 1 or 2 \@empty at the start so there is +% definitely a multiple of three tokens before the \relax. +% #1#2#3 are next three digits +% #4 is next digit, or \relax to stop +\def\addcomma#1#2#3#4{% + #1#2#3% + \if#4\relax + \else + \commaformtoken + \expandafter\addcomma\expandafter#4% + \fi} + |