From f4eb27d3314d15838f674a3872000159d029f88b Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 22 May 2007 17:46:23 +0000
Subject: update expl3

git-svn-id: svn://tug.org/texlive/trunk@4335 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/expl3/l3num.dtx | 749 +++++++++++++++++++++++++
 1 file changed, 749 insertions(+)
 create mode 100644 Master/texmf-dist/source/latex/expl3/l3num.dtx

(limited to 'Master/texmf-dist/source/latex/expl3/l3num.dtx')

diff --git a/Master/texmf-dist/source/latex/expl3/l3num.dtx b/Master/texmf-dist/source/latex/expl3/l3num.dtx
new file mode 100644
index 00000000000..e74c57db79b
--- /dev/null
+++ b/Master/texmf-dist/source/latex/expl3/l3num.dtx
@@ -0,0 +1,749 @@
+% \iffalse
+%% File: l3num.dtx Copyright (C) 2005-2006 Frank Mittelbach, LaTeX3 project
+%%
+%% It may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License (LPPL), either version 1.3c of this
+%% license or (at your option) any later version.  The latest version
+%% of this license is in the file
+%%
+%%    http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the ``expl3 bundle'' (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% The released version of this bundle is available from CTAN.
+%%
+%% -----------------------------------------------------------------------
+%%
+%% The development version of the bundle can be found at
+%%
+%%    http://www.latex-project.org/cgi-bin/cvsweb.cgi/
+%%
+%% for those people who are interested.
+%%
+%%%%%%%%%%%
+%% NOTE: %%
+%%%%%%%%%%%
+%%
+%%   Snapshots taken from the repository represent work in progress and may
+%%   not work or may contain conflicting material!  We therefore ask
+%%   people _not_ to put them into distributions, archives, etc. without
+%%   prior consultation with the LaTeX Project Team.
+%%
+%% -----------------------------------------------------------------------
+%
+%<package>\RequirePackage{l3names}
+%<*dtx>
+%\fi
+\def\GetIdInfo$Id: #1.dtx #2 #3-#4-#5 #6 #7$#8{%
+  \def\fileversion{#2}%
+  \def\filedate{#3/#4/#5}%
+  \ProvidesFile{#1.dtx}[#3/#4/#5 v#2 #8]%
+}
+%\iffalse
+%</dtx>
+%\fi
+\GetIdInfo$Id: l3num.dtx 573 2006-08-21 20:59:37Z morten $
+       {L3 Experimental token numbers}
+%
+% \iffalse
+%<*driver>
+\documentclass{l3doc}
+
+\begin{document}
+\DocInput{l3num.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+% \title{The \textsf{l3num} package\thanks{This file
+%         has version number \fileversion, last
+%         revised \filedate.}\\
+% Integer in macros}
+% \author{\Team}
+% \date{\filedate}
+% \maketitle
+%
+% \section{Macro Counters}
+%
+% Instead of using counter registers for manipulation of
+% integer values it is sometimes useful to keep such values in
+% macros. For this \LaTeX3 offers the  type ``num''.
+%
+% One reason is the limited number of registers inside
+% \TeX{}. However, when using \eTeX{} this is no longer an issue. It
+% remains to be seen if there are other compelling reasons to keep
+% this module.
+%
+% It turns out there might be as with a \meta{num} data type, the
+% allocation module can do its bookkeeping without the aid of
+% \meta{int} registers.
+%
+% \subsection{Functions}
+%
+% \begin{function}{%
+%                  \num_new:N |
+%                  \num_new:c |
+% }
+% \begin{syntax}
+%    "\num_new:N"   <num>
+% \end{syntax}
+% Defines <num> to be a new variable of type "num" (initialized to
+% zero). There is no way to
+% define constant counters with these functions.
+% \end{function}
+%
+% \begin{function}{%
+%                  \num_incr:N |
+%                  \num_incr:c |
+%                  \num_gincr:N |
+%                  \num_gincr:c
+% }
+% \begin{syntax}
+%   "\num_incr:N"   <num>
+% \end{syntax}
+% Increments <num> by one. For global variables the global versions
+% should be used.
+% \end{function}
+%
+% \begin{function}{%
+%                  \num_decr:N |
+%                  \num_decr:c |
+%                  \num_gdecr:N |
+%                  \num_gdecr:c |
+% }
+% \begin{syntax}
+%   "\num_decr:N"   <num>
+% \end{syntax}
+% Decrements <num> by one. For global variables the global versions
+% should be used.
+% \end{function}
+%
+% \begin{function}{%
+%                  \num_zero:N |
+%                  \num_zero:c |
+%                  \num_gzero:N |
+%                  \num_gzero:c |
+% }
+% \begin{syntax}
+%   "\num_zero:N"   <num>
+% \end{syntax}
+% Resets <num> to zero. For global variables the global versions
+% should be used.
+% \end{function}
+%
+% \begin{function}{%
+%                  \num_set:Nn |
+%                  \num_set:cn |
+%                  \num_gset:Nn |
+%                  \num_gset:cn |
+% }
+% \begin{syntax}
+%   "\num_set:Nn"   <num> "{" <integer> "}"
+% \end{syntax}
+% These functions will set the <num> register to the <integer> value.
+% \end{function}
+%
+% \begin{function}{%
+%                  \num_gset_eq:NN |
+%                  \num_gset_eq:cN |
+%                  \num_gset_eq:Nc |
+%                  \num_gset_eq:cc |
+% }
+% \begin{syntax}
+%   "\num_gset_eq:NN"   <num1> <num2>
+% \end{syntax}
+% These functions will set the <num1> register equal to <num2>.
+% \end{function}
+%
+% \begin{function}{%
+%                  \num_add:Nn |
+%                  \num_gadd:Nn |
+% }
+% \begin{syntax}
+%   "\num_add:Nn"   <num> "{" <integer> "}"
+% \end{syntax}
+% These functions will add to the <num> register the value <integer>.  If
+% the second argument is a <num> register too, the surrounding braces
+% can be left out.
+%
+% \end{function}
+%
+%
+% \begin{function}{%
+%                  \num_use:N |
+%                  \num_use:c |
+% }
+% \begin{syntax}
+%   "\num_use:N"   <num>
+% \end{syntax}
+% This function returns the integer value kept in <num> in a way
+% suitable for further processing.
+% \begin{texnote}
+%   Since these <num>s are implemented as macros, the function
+%   "\num_use:N" is effectively a noop and mainly there for
+%   consistency with similar functions in other modules.
+% \end{texnote}
+% \end{function}
+%
+%
+% \begin{function}{%
+%                  \num_eval:n |
+% }
+% \begin{syntax}
+%   "\num_eval:n"   "{" <integer-expr> "}"
+% \end{syntax}
+% Evaluates the integer expression allowing normal mathematical
+% operators like |+-/*|.
+% \end{function}
+%
+%
+% \begin{function}{%
+%                  \num_compare:nNnTF |
+%                  \num_compare:cNcTF |
+%                  \num_compare:nNnT |
+%                  \num_compare:nNnF |
+% }
+% \begin{syntax}
+%   "\num_compare:nNnTF"   "{"<num~expr>"}" <rel> "{"<num~expr>"}"
+%                          "{"<true>"}" "{"<false>"}"
+% \end{syntax}
+% These functions test two \m{num} expressions against each other. They
+% are both evaluated by "\num_eval:n".
+% \end{function}
+%
+% \begin{function}{%
+%                  \num_compare_p:nNn |
+% }
+% \begin{syntax}
+%   "\num_compare_p:nNn"   "{"<num~expr>"}" <rel> "{"<num~expr>"}"
+% \end{syntax}
+% A predicate version of the above functions.
+% \end{function}
+%
+%
+% \subsection{Formatting a counter value}
+%
+% See the \textsf{l3int} module for ways of doing this.
+%
+% \subsection{Variable and constants}
+%
+% \begin{function}{%
+%                  \const_new:Nn |
+% }
+% \begin{syntax}
+%   "\const_new:Nn"  "\c_"<value> "{" <value> "}"
+% \end{syntax}
+% Defines a constant with <value>. If the constant is negative
+% or very large it requires an <int> register.
+% \end{function}
+%
+% \begin{variable}{%
+%                  \c_minus_one |
+%                  \c_zero |
+%                  \c_one |
+%                  \c_two |
+%                  \c_three |
+%                  \c_four |
+%                  \c_six |
+%                  \c_seven |
+%                  \c_nine |
+%                  \c_ten |
+%                  \c_eleven |
+%                  \c_sixteen |
+%                  \c_hundred_one |
+%                  \c_twohundred_fifty_five |
+%                  \c_twohundred_fifty_six |
+%                  \c_thousand |
+%                  \c_ten_thousand |
+%                  \c_twenty_thousand 
+% }
+% \\
+% Set of constants denoting useful values.
+% \begin{texnote}
+% Most of these constants have been available under \LaTeX2 under names
+% like \tn{tw@}, \tn{thr@@} etc.
+% \end{texnote}
+% \end{variable}
+%
+% \begin{variable}{%
+%                  \l_tmpa_num |
+%                  \l_tmpb_num |
+%                  \l_tmpc_num |
+%                  \g_tmpa_num |
+%                  \g_tmpb_num |
+% }
+% \\
+% Scratch register for immediate use. They are not used by conditionals
+% or predicate functions.
+% \end{variable}
+%
+% \subsection{Primitive functions}
+%
+%
+% \begin{function}{%
+%                  \num_eval:w |
+% }
+% \begin{syntax}
+%   "\num_eval:w" <integer expression> "\scan_stop:"
+% \end{syntax}
+% Evaluates <integer expression>. The evaluation stops when an
+% unexpandable token of catcode other than 12 is reached or
+% "\scan_stop:" is read. The latter is gobbled by the scanner
+% mechanism.
+% \begin{texnote}
+% This is the \eTeX{} primitive \tn{numexpr}.
+% \end{texnote}
+% \end{function}
+%
+% \begin{function}{%
+%                  \if_num:w |
+% }
+% \begin{syntax}
+%   "\if_num:w" <number1> <rel> <number2> <true> "\else:" <false> "\fi:"
+% \end{syntax}
+% Compare two numbers. It is recommended to use "\num_eval:n" to
+% correctly evaluate and terminate these numbers. <rel> is one of
+% "<", "=" or ">" with catcode 12.
+% \begin{texnote}
+% This is the \TeX{} primitive \tn{ifnum}.
+% \end{texnote}
+% \end{function}
+%
+% \begin{function}{%
+%                  \if_num_odd:w |
+% }
+% \begin{syntax}
+%   "\if_num_odd:w" <number>  <true> "\else:" <false> "\fi:"
+% \end{syntax}
+% Execute <true> if <number> is odd, <false> otherwise.
+% \begin{texnote}
+% This is the \TeX{} primitive \tn{ifodd}.
+% \end{texnote}
+% \end{function}
+%
+% \begin{function}{%
+%                  \if_case:w |
+%                  \or: |
+% }
+% \begin{syntax}
+%   "\if_case:w" <number> <case0> "\or:" <case1> "\or:" "..." "\else:"
+%   <default> "\fi:"
+% \end{syntax}
+% Chooses case<number>. If you wish to use negative numbers as well,
+% you can offset them with "\num_eval:n".
+% \begin{texnote}
+% These are the \TeX{} primitives \tn{ifcase} and \tn{or}.
+% \end{texnote}
+% \end{function}
+%
+% \StopEventually{}
+%
+% \subsection{The Implementation}
+%
+%
+%    We start by ensuring that the required packages are loaded.
+%    \begin{macrocode}
+%<package&!check>\RequirePackage{l3expan}\par
+%<package&check>\RequirePackage{l3chk}\par
+%<*initex|package>
+%    \end{macrocode}
+%
+% \begin{macro}{\num_eval:w}
+% \begin{macro}{\if_num:w}
+% \begin{macro}{\if_num_odd:w}
+% \begin{macro}{\if_case:w}
+% \begin{macro}{\or:}
+%   Here are the remaining primitives for number comparisons and
+%   expressions.
+%    \begin{macrocode}
+\let_new:NN \num_eval:w         \etex_numexpr:D
+\let_new:NN \if_num:w           \tex_ifnum:D
+\let_new:NN \if_num_odd:w       \tex_ifodd:D
+\let_new:NN \if_case:w          \tex_ifcase:D
+\let_new:NN \or:                \tex_or:D
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\use_arg_after_or:w}
+% \begin{macro}{\use_arg_after_else:w}
+% \begin{macro}{\use_arg_after_fi:w}
+%   When you're using the |\if_case:w| primitive it is not as easy as
+%   usual to get the code to be executed past the |\or:|, |\else:| and
+%   |\fi:|. If you know that there is only one token, then prefix it
+%   with |\exp_after:NN|, else you can use these functions. Be sure to
+%   hide any |\if| functions in the skipped text!
+%
+%   All other conditionals are two way switches for which you can just
+%   use the safe methods provided by the TF type functions.
+%    \begin{macrocode}
+\def_long_new:Npn \use_arg_after_or:w #1\or: #2\fi:{\fi: #1}
+\def_long_new:Npn \use_arg_after_else:w #1\else: #2\fi:{\fi: #1}
+\def_long_new:Npn \use_arg_after_fi:w #1\fi:{\fi: #1}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Functions that support \LaTeX's user accessible counters should be
+% added here, too. But first the internal counters.
+%
+% \begin{macro}{\num_incr:N}
+% \begin{macro}{\num_decr:N}
+% \begin{macro}{\num_gincr:N}
+% \begin{macro}{\num_gdecr:N}
+%    Incrementing and decrementing of integer registers is done with
+%    the following functions.
+%    \begin{macrocode}
+\def:Npn \num_incr:N #1{\num_add:Nn#1 1}
+\def:Npn \num_decr:N #1{\num_add:Nn#1 \c_minus_one}
+\def:Npn \num_gincr:N #1{\num_gadd:Nn#1 1}
+\def:Npn \num_gdecr:N #1{\num_gadd:Nn#1 \c_minus_one}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\num_incr:c}
+% \begin{macro}{\num_decr:c}
+% \begin{macro}{\num_gincr:c}
+% \begin{macro}{\num_gdecr:c}
+%    We also need \ldots
+%    \begin{macrocode}
+\def_new:Npn \num_incr:c {\exp_args:Nc \num_incr:N}
+\def_new:Npn \num_decr:c {\exp_args:Nc \num_decr:N}
+\def_new:Npn \num_gincr:c {\exp_args:Nc \num_gincr:N}
+\def_new:Npn \num_gdecr:c {\exp_args:Nc \num_gdecr:N}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\num_zero:N}
+% \begin{macro}{\num_zero:c}
+% \begin{macro}{\num_gzero:N}
+% \begin{macro}{\num_gzero:c}
+%    We also need \ldots
+%    \begin{macrocode}
+\def_new:Npn \num_zero:N #1 {\num_set:Nn #1 0}
+\def_new:Npn \num_gzero:N #1 {\num_gset:Nn #1 0}
+\def_new:Npn \num_zero:c {\exp_args:Nc \num_zero:N}
+\def_new:Npn \num_gzero:c {\exp_args:Nc \num_gzero:N}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\num_new:N}
+% \begin{macro}{\num_new:c}
+%    Allocate a new \m{num} variable and initialize it with zero.
+%    \begin{macrocode}
+\def_new:Npn \num_new:N #1{\tlp_new:Nn #1{0}}
+\def_new:Npn \num_new:c {\exp_args:Nc \num_new:N}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\num_eval:n}
+% This function enables us to do all the operations without the aid of
+% an \m{int} register.
+%    \begin{macrocode}
+\def_new:Npn \num_eval:n #1{\num_eval:w #1\scan_stop:}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\num_set:Nn}
+% \begin{macro}{\num_set:cn}
+% \begin{macro}{\num_gset:Nn}
+% \begin{macro}{\num_gset:cn}
+% Assigning values to \m{num} registers.
+%    \begin{macrocode}
+\def_new:Npn \num_set:Nn #1#2{
+  \tlp_set:No #1{ \tex_number:D \num_eval:n {#2} }
+}
+\def_new:Npn \num_gset:Nn {\pref_global:D \num_set:Nn}
+\def_new:Npn \num_set:cn {\exp_args:Nc \num_set:Nn }
+\def_new:Npn \num_gset:cn {\exp_args:Nc \num_gset:Nn }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\num_set_eq:NN}
+% \begin{macro}{\num_set_eq:cN}
+% \begin{macro}{\num_set_eq:Nc}
+% \begin{macro}{\num_set_eq:cc}
+% Setting \m{num} registers equal to each other.
+%    \begin{macrocode}
+\let_new:NN \num_set_eq:NN \tlp_set_eq:NN
+\def_new:Npn \num_set_eq:cN {\exp_args:Nc \num_set_eq:NN}
+\def_new:Npn \num_set_eq:Nc {\exp_args:NNc \num_set_eq:NN}
+\def_new:Npn \num_set_eq:cc {\exp_args:Ncc \num_set_eq:NN}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\num_gset_eq:NN}
+% \begin{macro}{\num_gset_eq:cN}
+% \begin{macro}{\num_gset_eq:Nc}
+% \begin{macro}{\num_gset_eq:cc}
+% Setting \m{num} registers equal to each other.
+%    \begin{macrocode}
+\let_new:NN \num_gset_eq:NN \tlp_gset_eq:NN
+\def_new:Npn \num_gset_eq:cN {\exp_args:Nc \num_gset_eq:NN}
+\def_new:Npn \num_gset_eq:Nc {\exp_args:NNc \num_gset_eq:NN}
+\def_new:Npn \num_gset_eq:cc {\exp_args:Ncc \num_gset_eq:NN}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\num_add:Nn}
+% \begin{macro}{\num_gadd:Nn}
+% Adding is easily done as the second argument goes through
+% |\num_eval:n|.
+%    \begin{macrocode}
+\def_new:Npn \num_add:Nn #1#2 {\num_set:Nn #1{#1+#2}}
+\def_new:Npn \num_gadd:Nn {\pref_global:D \num_add:Nn}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\num_use:N}
+% \begin{macro}{\num_use:c}
+%    Here is how num macros are accessed:
+%    \begin{macrocode}
+\let_new:NN\num_use:N \use_arg_i:n
+\let_new:NN\num_use:c \cs_use:c
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\num_compare:nNnTF}
+% \begin{macro}{\num_compare:nNnT}
+% \begin{macro}{\num_compare:nNnF}
+% Simple comparison tests.
+%    \begin{macrocode}
+\def_test_function_new:npn {num_compare:nNn}#1#2#3{
+  \if_num:w \num_eval:n {#1}#2\num_eval:n {#3}
+}
+\def_new:Npn \num_compare:cNcTF { \exp_args:NcNc\num_compare:nNnTF }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\num_compare_p:nNn}
+% A predicate function.
+%    \begin{macrocode}
+\def_new:Npn \num_compare_p:nNn #1#2#3{
+  \if_num:w \num_eval:n {#1}#2\num_eval:n {#3}
+    \c_true
+  \else:
+    \c_false
+  \fi:
+}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\l_tmpa_num}
+% \begin{macro}{\l_tmpb_num}
+% \begin{macro}{\l_tmpc_num}
+% \begin{macro}{\g_tmpa_num}
+% \begin{macro}{\g_tmpb_num}
+%    We provide an number local and two global \m{num}s, maybe we
+%    need more or less.
+%    \begin{macrocode}
+\num_new:N \l_tmpa_num
+\num_new:N \l_tmpb_num
+\num_new:N \l_tmpc_num
+\num_new:N \g_tmpa_num
+\num_new:N \g_tmpb_num
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%  \subsubsection{Defining constants}
+%  As stated, most constants can be defined as |\tex_chardef:D| or
+%  |\tex_mathchardef:D| but that's engine dependent. Omega/Aleph
+%  allows |\tex_chardef:D|s up to 65535 which is also the maximum
+%  number of registers of all types.
+%  \begin{macro}{\const_new:Nn}
+%  \begin{macro}{\c_max_register_num}
+%  \begin{macro}{\const_new_aux:Nw}
+%    \begin{macrocode}
+%    \begin{macrocode}
+\engine_aleph:TF
+{
+  \let_new:NN \const_new_aux:Nw \tex_chardef:D
+  \const_new_aux:Nw \c_max_register_num = 65535 \scan_stop:
+}
+{
+  \let_new:NN \const_new_aux:Nw \tex_mathchardef:D
+  \const_new_aux:Nw \c_max_register_num = 32767 \scan_stop:
+}
+\def_new:Npn \const_new:Nn #1#2 {
+  \num_compare:nNnTF  {#2} > \c_minus_one
+  {
+    \num_compare:nNnTF {#2} > \c_max_register_num 
+    {\int_new:N #1 \int_set:Nn #1{#2}}
+    {\chk_new_cs:N #1 \const_new_aux:Nw #1 = #2 \scan_stop: }
+  }
+  {\int_new:N #1 \int_set:Nn #1{#2}}
+}
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%  \end{macro}
+%
+% \begin{macro}{\c_minus_one}
+% \begin{macro}{\c_zero}
+% \begin{macro}{\c_one}
+% \begin{macro}{\c_two}
+% \begin{macro}{\c_three}
+% \begin{macro}{\c_four}
+% \begin{macro}{\c_six}
+% \begin{macro}{\c_seven}
+% \begin{macro}{\c_nine}
+% \begin{macro}{\c_ten}
+% \begin{macro}{\c_eleven}
+% \begin{macro}{\c_sixteen}
+% \begin{macro}{\c_thirty_two}
+% \begin{macro}{\c_hundred_one}
+% \begin{macro}{\c_twohundred_fifty_five}
+% \begin{macro}{\c_twohundred_fifty_six}
+% \begin{macro}{\c_thousand}
+% \begin{macro}{\c_ten_thousand}
+% \begin{macro}{\c_ten_thousand_one}
+% \begin{macro}{\c_ten_thousand_two}
+% \begin{macro}{\c_ten_thousand_three}
+% \begin{macro}{\c_ten_thousand_four}
+% \begin{macro}{\c_twenty_thousand}
+%    And the usual constants, others are still missing. Please, make
+%    every constant a real constant at least for the moment. We can
+%    easily convert things in the end when we have found what
+%    constants are used in critical places and what not.
+%    \begin{macrocode}
+ %% \tex_countdef:D \c_minus_one = 10 \scan_stop:
+ %% \c_minus_one = -1 \scan_stop:        %% in l3basics
+ %% \tex_chardef:D \c_sixteen    = 16\scan_stop: %% in l3basics
+\const_new:Nn \c_zero   {0}
+\const_new:Nn \c_one    {1}
+\const_new:Nn \c_two    {2}
+\const_new:Nn \c_three  {3}
+\const_new:Nn \c_four   {4}
+\const_new:Nn \c_six    {6}
+\const_new:Nn \c_seven  {7}
+\const_new:Nn \c_nine   {9}
+\const_new:Nn \c_ten    {10}
+\const_new:Nn \c_eleven {11}
+\const_new:Nn \c_thirty_two {32}
+%    \end{macrocode}
+% The next one may seem a little odd (obviously!) but is useful when
+% dealing with logical operators.
+%    \begin{macrocode}
+\const_new:Nn \c_hundred_one          {101}
+\const_new:Nn \c_twohundred_fifty_five {255}
+\const_new:Nn \c_twohundred_fifty_six {256}
+\const_new:Nn \c_thousand             {1000}
+\const_new:Nn \c_ten_thousand         {10000}
+\const_new:Nn \c_ten_thousand_one     {10001}
+\const_new:Nn \c_ten_thousand_two     {10002}
+\const_new:Nn \c_ten_thousand_three   {10003}
+\const_new:Nn \c_ten_thousand_four    {10004}
+\const_new:Nn \c_twenty_thousand      {20000}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%    \begin{macrocode}
+%</initex|package>
+%    \end{macrocode}
+%
+% \endinput
+%
+% $Log$
+% Revision 1.17  2006/03/20 18:26:37  braams
+% Updated the copyright notice (2006) and demoted all implementation
+% sections to subsections and so on to clean up the toc for source3.tex
+%
+% Revision 1.16  2005/12/27 10:03:01  morten
+% Changed RCS information retrieval
+%
+% Revision 1.15  2005/12/06 13:41:02  morten
+% Added a few functions to ease processing with \if_case:w
+%
+% Revision 1.14  2005/12/03 12:57:36  morten
+% Minor touch-ups.
+%
+% Revision 1.13  2005/10/27 22:39:02  morten
+% Forgot to add \if_num_odd:w
+%
+% Revision 1.12  2005/10/27 22:34:26  morten
+% Added \if_num:w, \if_case:w and \or: as they really belong here.
+%
+% Revision 1.11  2005/04/06 22:36:53  braams
+% Missed one occurence of \c_max_register_int
+%
+% Revision 1.10  2005/04/06 21:38:46  morten
+% Removed dependency on l3prg and added a missing function.
+%
+% Revision 1.9  2005/04/05 22:05:38  braams
+% Renamed \c_max_regsiter_int to \c_max_register_num,
+% Fixed const_new to allow 32767 as a value for \tex_mathchardef:D
+% Added \c_ten and \c_eleven as constants
+%
+% Revision 1.8  2005/03/26 21:06:35  morten
+% Update documentation
+%
+% Revision 1.7  2005/03/22 23:21:32  morten
+% Now independent of l3int and can be used as a very primitive module.
+%
+% Revision 1.6  2005/03/16 22:36:20  braams
+% Added the tweaks necessary to be able to load with initex
+%
+% Revision 1.5  2005/03/11 21:39:47  braams
+% Fixed the use of RCS information; added \StopEventually
+%
-- 
cgit v1.2.3

