summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/expl3/l3num.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/expl3/l3num.dtx')
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3num.dtx504
1 files changed, 101 insertions, 403 deletions
diff --git a/Master/texmf-dist/source/latex/expl3/l3num.dtx b/Master/texmf-dist/source/latex/expl3/l3num.dtx
index 325eef2e131..51281eaf7ac 100644
--- a/Master/texmf-dist/source/latex/expl3/l3num.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3num.dtx
@@ -1,5 +1,5 @@
% \iffalse
-%% File: l3num.dtx Copyright (C) 2005-2008 Frank Mittelbach, LaTeX3 project
+%% File: l3num.dtx Copyright (C) 2005-2009 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
@@ -17,7 +17,7 @@
%%
%% The development version of the bundle can be found at
%%
-%% http://www.latex-project.org/cgi-bin/cvsweb.cgi/
+%% http://www.latex-project.org/svnroot/experimental/trunk/
%%
%% for those people who are interested.
%%
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3num.dtx 741 2008-08-01 13:37:16Z morten $
+\GetIdInfo$Id: l3num.dtx 1362 2009-05-28 20:19:21Z joseph $
{L3 Experimental token numbers}
%\iffalse
%<*driver>
@@ -44,9 +44,9 @@
\ProvidesFile{\filename.\filenameext}
[\filedate\space v\fileversion\space\filedescription]
%\iffalse
-\documentclass{l3doc}
+\documentclass[full]{l3doc}
\begin{document}
-\DocInput{\filename.\filenameext}
+\DocInput{l3num.dtx}
\end{document}
%</driver>
% \fi
@@ -55,12 +55,12 @@
% \title{The \textsf{l3num} package\thanks{This file
% has version number \fileversion, last
% revised \filedate.}\\
-% Integer in macros}
+% Integers in macros}
% \author{\Team}
% \date{\filedate}
% \maketitle
%
-% \section{Macro Counters}
+% \begin{documentation}
%
% Instead of using counter registers for manipulation of
% integer values it is sometimes useful to keep such values in
@@ -75,7 +75,7 @@
% allocation module can do its bookkeeping without the aid of
% \meta{int} registers.
%
-% \subsection{Functions}
+% \section{Functions}
%
% \begin{function}{%
% \num_new:N |
@@ -135,12 +135,24 @@
% \num_gset:cn |
% }
% \begin{syntax}
-% "\num_set:Nn" <num> "{" <integer> "}"
+% "\num_set:Nn" <num> \Arg{integer}
% \end{syntax}
% These functions will set the <num> register to the <integer> value.
% \end{function}
%
% \begin{function}{%
+% \num_set_eq:NN |
+% \num_set_eq:cN |
+% \num_set_eq:Nc |
+% \num_set_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_gset_eq:NN |
% \num_gset_eq:cN |
% \num_gset_eq:Nc |
@@ -149,7 +161,7 @@
% \begin{syntax}
% "\num_gset_eq:NN" <num1> <num2>
% \end{syntax}
-% These functions will set the <num1> register equal to <num2>.
+% These functions will globally set the <num1> register equal to <num2>.
% \end{function}
%
% \begin{function}{%
@@ -159,7 +171,7 @@
% \num_gadd:cn |
% }
% \begin{syntax}
-% "\num_add:Nn" <num> "{" <integer> "}"
+% "\num_add:Nn" <num> \Arg{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
@@ -184,112 +196,37 @@
% \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{function}{ \num_show:N |
+% \num_show:c }
% \begin{syntax}
-% "\num_compare_p:nNn" "{"<num~expr>"}" <rel> "{"<num~expr>"}"
+% "\num_show:N" <num>
% \end{syntax}
-% A predicate version of the above functions.
+% This function pauses the compilation and displays the integer value kept
+% in <num> on the console output.
% \end{function}
%
-% \begin{function}{%
-% \num_max_of:nn |
-% \num_min_of:nn |
-% }
-% \begin{syntax}
-% "\num_max_of:nn" "{"<num~expr>"}" "{"<num~expr>"}"
-% \end{syntax}
-% Return the largest or smallest of two \m{num} expressions.
-% \end{function}
%
-% \begin{function}{%
-% \num_abs:n |
-% }
-% \begin{syntax}
-% "\num_abs:n" "{"<num~expr>"}"
-% \end{syntax}
-% Return the numerical value of a \m{num} expression.
-% \end{function}
%
% \begin{function}{%
% \num_elt_count:n |
+% \num_elt_count_prop:Nn |
% }
% \begin{syntax}
-% "\num_elt_count:n" "{"<balanced text>"}"
+% "\num_elt_count:n" \Arg{balanced text}
+% "\num_elt_count_prop:Nn" <prop> \Arg{balanced text}
% \end{syntax}
-% Discards \m{balanced text} and puts a "+1" in the input stream. Used
+% Discards their arguments and puts a "+1" in the input stream. Used
% to count elements in a token list.
% \end{function}
%
-% \subsection{Formatting a counter value}
+% \section{Formatting a counter value}
%
% See the \textsf{l3int} module for ways of doing this.
%
-% \subsection{Variable and constants}
+% \section{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}
+% \begin{variable}{ \c_max_register_num }
+% Maximum number of registers; possibly engine-specific.
% \end{variable}
%
% \begin{variable}{%
@@ -299,50 +236,20 @@
% \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}
+% \section{Primitive functions}
%
%
% \begin{function}{%
-% \num_value:w |
-% }
-% \begin{syntax}
-% "\num_value:w" <integer> \\
-% "\num_value:w" <tokens> <optional space>
-% \end{syntax}
-% Expands <tokens> until an <integer> is formed. One space may be
-% gobbled in the process. Preferably use with "\num_eval:n".
-% \begin{texnote}
-% This is the \TeX{} primitive \tn{number}.
-% \end{texnote}
-% \end{function}
-%
-% \begin{function}{%
-% \num_eval:w |
-% }
-% \begin{syntax}
-% "\num_eval:w" <integer expression> "\num_eval_end:"
-% \end{syntax}
-% Evaluates <integer expression>. The evaluation stops when an
-% unexpandable token of catcode other than 12 is reached or
-% "\num_eval_end:" 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
+% Compare two numbers. It is recommended to use "\intexpr_eval:n" to
% correctly evaluate and terminate these numbers. <rel> is one of
% "<", "=" or ">" with catcode 12.
% \begin{texnote}
@@ -351,18 +258,6 @@
% \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: |
% }
@@ -370,52 +265,40 @@
% "\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".
+% Chooses case <number>. If you wish to use negative numbers as well,
+% you can offset them with "\intexpr_eval:n".
% \begin{texnote}
% These are the \TeX{} primitives \tn{ifcase} and \tn{or}.
% \end{texnote}
% \end{function}
%
-% \StopEventually{}
+% \end{documentation}
%
-% \subsection{The Implementation}
+% \begin{implementation}
+%
+% \section{\pkg{l3num} implementation}
%
%
% We start by ensuring that the required packages are loaded.
% \begin{macrocode}
-%<package>\ProvidesExplPackage
-%<package> {\filename}{\filedate}{\fileversion}{\filedescription}
-%<package&!check>\RequirePackage{l3expan}\par
-%<package&check>\RequirePackage{l3chk}\par
+%<*package>
+\ProvidesExplPackage
+ {\filename}{\filedate}{\fileversion}{\filedescription}
+\package_check_loaded_expl:
+%</package>
%<*initex|package>
% \end{macrocode}
%
-% \begin{macro}{\num_value:w}
-% \begin{macro}{\num_eval:w}
-% \begin{macro}{\num_eval_end:}
% \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_value:w \tex_number:D
-\let_new:NN \num_eval:w \etex_numexpr:D
-\let_new:NN \num_eval_end: \scan_stop:
-\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
+\cs_new_eq:NN \if_num:w \tex_ifnum:D
+\cs_new_eq:NN \if_case:w \tex_ifcase:D
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
%
% Functions that support \LaTeX's user accessible counters should be
% added here, too. But first the internal counters.
@@ -427,10 +310,10 @@
% 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}
+\cs_set_nopar:Npn \num_incr:N #1{\num_add:Nn#1 1}
+\cs_set_nopar:Npn \num_decr:N #1{\num_add:Nn#1 \c_minus_one}
+\cs_set_nopar:Npn \num_gincr:N #1{\num_gadd:Nn#1 1}
+\cs_set_nopar:Npn \num_gdecr:N #1{\num_gadd:Nn#1 \c_minus_one}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -443,10 +326,10 @@
% \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}
+\cs_generate_variant:Nn \num_incr:N {c}
+\cs_generate_variant:Nn \num_decr:N {c}
+\cs_generate_variant:Nn \num_gincr:N {c}
+\cs_generate_variant:Nn \num_gdecr:N {c}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -459,10 +342,13 @@
% \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}
+\cs_new_nopar:Npn \num_zero:N #1 {\num_set:Nn #1 0}
+\cs_new_nopar:Npn \num_gzero:N #1 {\num_gset:Nn #1 0}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_generate_variant:Nn \num_zero:N {c}
+\cs_generate_variant:Nn \num_gzero:N {c}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -475,33 +361,27 @@
% \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}
+\cs_new_nopar:Npn \num_new:N #1{\tl_new:Nn #1{0}}
+\cs_generate_variant:Nn \num_new:N {c}
% \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\num_eval_end:}
-% \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} }
+\cs_new_nopar:Npn \num_set:Nn #1#2{
+ \tl_set:No #1{ \tex_number:D \intexpr_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 }
+\cs_generate_variant:Nn\num_set:Nn {c}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_nopar:Npn \num_gset:Nn {\pref_global:D \num_set:Nn}
+\cs_generate_variant:Nn\num_gset:Nn {c}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -514,10 +394,8 @@
% \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}
+\cs_new_eq:NN \num_set_eq:NN \tl_set_eq:NN
+\cs_generate_variant:Nn\num_set_eq:NN {c,Nc,cc}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -530,10 +408,8 @@
% \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}
+\cs_new_eq:NN \num_gset_eq:NN \tl_gset_eq:NN
+\cs_generate_variant:Nn\num_gset_eq:NN {c,Nc,cc}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -545,12 +421,15 @@
% \begin{macro}{\num_gadd:Nn}
% \begin{macro}{\num_gadd:cn}
% Adding is easily done as the second argument goes through
-% |\num_eval:n|.
+% |\intexpr_eval:n|.
% \begin{macrocode}
-\def_new:Npn \num_add:Nn #1#2 {\num_set:Nn #1{#1+#2}}
-\def_new:Npn \num_add:cn {\exp_args:Nc\num_add:Nn}
-\def_new:Npn \num_gadd:Nn {\pref_global:D \num_add:Nn}
-\def_new:Npn \num_gadd:cn {\exp_args:Nc\num_gadd:Nn}
+\cs_new_nopar:Npn \num_add:Nn #1#2 {\num_set:Nn #1{#1+#2}}
+\cs_generate_variant:Nn\num_add:Nn {c}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_nopar:Npn \num_gadd:Nn {\pref_global:D \num_add:Nn}
+\cs_generate_variant:Nn\num_gadd:Nn {c}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -562,61 +441,30 @@
% \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
+\cs_new_eq:NN\num_use:N \use:n
+\cs_new_eq:NN\num_use:c \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{macro}{\num_show:N}
+% \begin{macro}{\num_show:c}
+% Here is how num macros are diagnosed:
% \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 }
+\cs_new_eq:NN\num_show:N \cs_show:N
+\cs_new_eq:NN\num_show:c \cs_show:c
% \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}{\num_max_of:nn}
-% \begin{macro}{\num_min_of:nn}
-% \begin{macro}{\num_abs:n}
-% Functions for $\min$, $\max$, and absolute value.
-% \begin{macrocode}
-\def_new:Npn \num_abs:n#1{
- \if_num:w \num_eval:n{#1}<\c_zero \exp_after:NN -\fi: #1
-}
-\def_new:Npn \num_max_of:nn#1#2{\num_compare:nNnTF {#1}>{#2}{#1}{#2}}
-\def_new:Npn \num_min_of:nn#1#2{\num_compare:nNnTF {#1}<{#2}{#1}{#2}}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
%
% \begin{macro}{\num_elt_count:n}
% \begin{macro}{\num_elt_count_prop:Nn}
% Helper function for counting elements in a list.
% \begin{macrocode}
-\def_long_new:Npn \num_elt_count:n #1 { + 1 }
-\def_long_new:Npn \num_elt_count_prop:Nn #1#2 { + 1 }
+\cs_new:Npn \num_elt_count:n #1 { + 1 }
+\cs_new:Npn \num_elt_count_prop:Nn #1#2 { + 1 }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -641,167 +489,17 @@
% \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_if_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}}
-}
+\tex_mathchardef:D \c_max_register_num = 32767 \scan_stop:
% \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
+% \end{implementation}
+% \PrintIndex
%
+% \endinput