summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-02-23 00:27:32 +0000
committerKarl Berry <karl@freefriends.org>2010-02-23 00:27:32 +0000
commit41a7ada80719f4f4cce32f15d40553c4f0b98e59 (patch)
tree6911b30d6937fd2dcac996f190516cd37fad2c7f /Master/texmf-dist/tex
parent2bde0cef55deb13172e07c4e37e7f2289fe1f6b7 (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.sty101
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}
+