summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/expl3
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2010-11-26 23:34:47 +0000
committerKarl Berry <karl@freefriends.org>2010-11-26 23:34:47 +0000
commita881f79f85c5ae2491b5448cd8bc0d5a28b55bf5 (patch)
tree0620e635477f75be996071619fd104866445d00e /Master/texmf-dist/source/latex/expl3
parentfe6482d3468ca040e53f8e5347548495db754e98 (diff)
expl3 2093 (25nov10)
git-svn-id: svn://tug.org/texlive/trunk@20578 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/expl3')
-rw-r--r--Master/texmf-dist/source/latex/expl3/expl3.dtx7
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3fp.dtx78
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3keys.dtx34
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3prop.dtx13
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3skip.dtx89
-rw-r--r--Master/texmf-dist/source/latex/expl3/l3tl.dtx10
6 files changed, 172 insertions, 59 deletions
diff --git a/Master/texmf-dist/source/latex/expl3/expl3.dtx b/Master/texmf-dist/source/latex/expl3/expl3.dtx
index 8ca42a428ab..c4f035ec41f 100644
--- a/Master/texmf-dist/source/latex/expl3/expl3.dtx
+++ b/Master/texmf-dist/source/latex/expl3/expl3.dtx
@@ -37,7 +37,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: expl3.dtx 2056 2010-10-02 17:31:05Z will $
+\GetIdInfo$Id: expl3.dtx 2083 2010-11-13 13:01:31Z will $
{L3 Experimental code bundle wrapper}%
%\iffalse
%<*driver>
@@ -87,6 +87,11 @@
% document mark-up or style specification. Instead, it is intended that
% such features will be built on top of the conventions described here.
%
+% This document is an introduction to the ideas behind the \pkg{expl3}
+% programming interface. For the complete documentation of the programming
+% layer provided by the \LaTeX3 Project, see the accompanying \texttt{source3}
+% document.
+%
% \end{abstract}
%
% \section{Introduction}
diff --git a/Master/texmf-dist/source/latex/expl3/l3fp.dtx b/Master/texmf-dist/source/latex/expl3/l3fp.dtx
index e8ecdad5480..f5b1d427096 100644
--- a/Master/texmf-dist/source/latex/expl3/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3fp.dtx
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3fp.dtx 2080 2010-10-27 11:02:09Z joseph $
+\GetIdInfo$Id: l3fp.dtx 2092 2010-11-25 20:44:04Z joseph $
{L3 Experimental floating-point operations}
%\iffalse
%<*driver>
@@ -100,9 +100,9 @@
%
%\subsection{Constants}
%
-%\begin{variable}{ \c_infinity_fp }
-% A marker value for an infinite result from a calculation, such as
-% \( \tan ( \pi / 2 ) \).
+%\begin{variable}{ \c_one_fp }
+% A floating point variable with permanent value \( 1 \): used for
+% speeding up some comparisons.
%\end{variable}
%
%\begin{variable}{ \c_undefined_fp }
@@ -268,6 +268,17 @@
% can be used in a variety of contexts. The \cs{fp_use:N} function
% should also be consulted in this context, as it will insert the
% value of the floating point variable as a real number.
+%
+%\begin{function}{
+% \fp_to_dim:N / (EXP) |
+% \fp_to_dim:c / (EXP) |
+%}
+% \begin{syntax}
+% \cs{fp_to_dim:N} \meta{floating point variable}
+% \end{syntax}
+% Inserts the value of the \meta{floating point variable}
+% into the input stream converted into a dimension in points.
+%\end{function}
%
%\begin{function}{
% \fp_to_int:N / (EXP) |
@@ -370,23 +381,6 @@
%\subsection{Tests on floating-point values}
%
%\begin{function}{
-% \fp_if_infinity_p:N / (EXP) |
-% \fp_if_infinity:N / (EXP) (TF) |
-%}
-% \begin{syntax}
-% \cs{fp_if_infinity_p:N} \meta{fixed-point}
-% \cs{fp_if_infinity:NTF} \meta{fixed-point}
-% ~~\Arg{true code} \Arg{false code}
-% \end{syntax}
-% Tests if \meta{floating point} is infinite (\emph{i.e}.~equal to the
-% special \cs{c_infinity_fp} variable). The branching versions then
-% leave either \meta{true code} or \meta{false code} in the input
-% stream, as appropriate to the truth of the test and the variant of
-% the function chosen. The logical truth of the test is left in the
-% input stream by the predicate version.
-%\end{function}
-%
-%\begin{function}{
% \fp_if_undefined_p:N / (EXP) |
% \fp_if_undefined:N / (EXP) (TF) |
%}
@@ -766,12 +760,11 @@
%\end{macro}
%\end{macro}
%
-%\begin{macro}{\c_infinity_fp}
-% Infinity is the biggest number that can be represented by \TeX's
-% \texttt{count} data type.
+%\begin{macro}{\c_one_fp}
+% The constant value \( 1 \): used for fast comparisons.
% \begin{macrocode}
-\tl_new:N \c_infinity_fp
-\tl_set:Nn \c_infinity_fp { + 2147483647 . 2147483647 e 2147483647 }
+\tl_new:N \c_one_fp
+\tl_set:Nn \c_one_fp { + 1.000000000 e 0 }
% \end{macrocode}
%\end{macro}
%
@@ -1051,6 +1044,8 @@
% \begin{macrocode}
\cs_new_protected_nopar:Npn \fp_split:Nn #1#2 {
\tl_set:Nx \l_fp_tmp_tl {#2}
+ \tl_set_rescan:Nno \l_fp_tmp_tl { \char_make_ignore:n { 32 } }
+ { \l_fp_tmp_tl }
\l_fp_split_sign_int \c_one
\fp_split_sign:
\use:c { l_fp_input_ #1 _sign_int } \l_fp_split_sign_int
@@ -1624,6 +1619,16 @@
% a form that can be used by \TeX. Here, the functions are slightly
% different, as some information may be discarded.
%
+%\begin{macro}{\fp_to_dim:N}
+%\begin{macro}{\fp_to_dim:c}
+% A very simple wrapper.
+% \begin{macrocode}
+\cs_new_nopar:Npn \fp_to_dim:N #1 { \fp_use:N #1 pt }
+\cs_generate_variant:Nn \fp_to_dim:N { c }
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%
%\begin{macro}{\fp_to_int:N}
%\begin{macro}{\fp_to_int:c}
%\begin{macro}[aux]{\fp_to_int_aux:w}
@@ -3266,7 +3271,7 @@
\l_fp_output_decimal_int
\l_fp_output_exponent_int
\tl_new:c { c_fp_sin ( \l_fp_trig_arg_tl ) _tl }
- \tl_set:cx { c_fp_sin ( \l_fp_trig_arg_tl ) _tl }
+ \tl_gset:cx { c_fp_sin ( \l_fp_trig_arg_tl ) _tl }
{
\tex_ifnum:D \l_fp_input_a_sign_int > \c_zero
+
@@ -3376,7 +3381,7 @@
\l_fp_output_decimal_int
\l_fp_output_exponent_int
\tl_new:c { c_fp_cos ( \l_fp_trig_arg_tl ) _tl }
- \tl_set:cx { c_fp_cos ( \l_fp_trig_arg_tl ) _tl }
+ \tl_gset:cx { c_fp_cos ( \l_fp_trig_arg_tl ) _tl }
{
\tex_ifnum:D \l_fp_input_a_sign_int > \c_zero
+
@@ -3697,7 +3702,7 @@
\l_fp_output_decimal_int
\l_fp_output_exponent_int
\tl_new:c { c_fp_tan ( \l_fp_trig_arg_tl ) _tl }
- \tl_set:cx { c_fp_tan ( \l_fp_trig_arg_tl ) _tl }
+ \tl_gset:cx { c_fp_tan ( \l_fp_trig_arg_tl ) _tl }
{
\tex_ifnum:D \l_fp_output_sign_int > \c_zero
+
@@ -3727,21 +3732,6 @@
%
%\subsection{Tests for special values}
%
-%\begin{macro}{\fp_if_infinity_p:N}
-%\begin{macro}[TF]{\fp_if_infinity:N}
-% Testing for infinity is easy.
-% \begin{macrocode}
-\prg_new_conditional:Npnn \fp_if_infinity:N #1 { p , T , F , TF } {
- \tex_ifx:D #1 \c_infinity_fp
- \prg_return_true:
- \tex_else:D
- \prg_return_false:
- \tex_fi:D
-}
-% \end{macrocode}
-%\end{macro}
-%\end{macro}
-%
%\begin{macro}{\fp_if_undefined_p:N}
%\begin{macro}[TF]{\fp_if_undefined:N}
% Testing for an undefined value is easy.
diff --git a/Master/texmf-dist/source/latex/expl3/l3keys.dtx b/Master/texmf-dist/source/latex/expl3/l3keys.dtx
index 8bab244c997..48a38c7ee84 100644
--- a/Master/texmf-dist/source/latex/expl3/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3keys.dtx
@@ -35,7 +35,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3keys.dtx 2079 2010-10-27 07:08:41Z joseph $
+\GetIdInfo$Id: l3keys.dtx 2082 2010-11-11 11:34:57Z joseph $
{L3 Experimental key-value support}
%\iffalse
%<*driver>
@@ -986,16 +986,25 @@
%\end{macro}
%
%\begin{macro}{\keys_define:nn}
+%\begin{macro}[aux]{\keys_define_aux:nnn}
+%\begin{macro}[aux]{\keys_define_aux:onn}
% The main key-defining function mainly sets up things for \pkg{l3keyval}
% to use.
% \begin{macrocode}
-\cs_new_protected:Npn \keys_define:nn #1#2 {
- \tl_set:Nn \l_keys_module_tl {#1}
+\cs_new_protected:Npn \keys_define:nn {
+ \keys_define_aux:onn { \l_keys_module_tl }
+}
+\cs_new_protected:Npn \keys_define_aux:nnn #1#2#3 {
+ \tl_set:Nn \l_keys_module_tl {#2}
\KV_process_no_space_removal_no_sanitize:NNn
- \keys_define_elt:n \keys_define_elt:nn {#2}
+ \keys_define_elt:n \keys_define_elt:nn {#3}
+ \tl_set:Nn \l_keys_module_tl {#1}
}
+\cs_generate_variant:Nn \keys_define_aux:nnn { o }
% \end{macrocode}
%\end{macro}
+%\end{macro}
+%\end{macro}
%
%\begin{macro}{\keys_define_elt:n}
%\begin{macro}{\keys_define_elt:nn}
@@ -1195,19 +1204,28 @@
%\begin{macro}{\keys_set:nn}
%\begin{macro}{\keys_set:nV}
%\begin{macro}{\keys_set:nv}
+%\begin{macro}{\keys_set_aux:nnn}
+%\begin{macro}{\keys_set_aux:onn}
% The main setting function just does the set up to get \pkg{l3keyval}
% to do the hard work.
% \begin{macrocode}
-\cs_new_protected:Npn \keys_set:nn #1#2 {
- \tl_set:Nn \l_keys_module_tl {#1}
- \KV_process_space_removal_sanitize:NNn
- \keys_set_elt:n \keys_set_elt:nn {#2}
+\cs_new_protected:Npn \keys_set:nn {
+ \keys_set_aux:onn { \l_keys_module_tl }
}
\cs_generate_variant:Nn \keys_set:nn { nV, nv }
+\cs_new_protected:Npn \keys_set_aux:nnn #1#2#3 {
+ \tl_set:Nn \l_keys_module_tl {#2}
+ \KV_process_space_removal_sanitize:NNn
+ \keys_set_elt:n \keys_set_elt:nn {#3}
+ \tl_set:Nn \l_keys_module_tl {#1}
+}
+\cs_generate_variant:Nn \keys_set_aux:nnn { o }
% \end{macrocode}
%\end{macro}
%\end{macro}
%\end{macro}
+%\end{macro}
+%\end{macro}
%
%\begin{macro}{\keys_set_elt:n}
%\begin{macro}{\keys_set_elt:nn}
diff --git a/Master/texmf-dist/source/latex/expl3/l3prop.dtx b/Master/texmf-dist/source/latex/expl3/l3prop.dtx
index 8de35d67a5c..13e938e8477 100644
--- a/Master/texmf-dist/source/latex/expl3/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3prop.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3prop.dtx 1857 2010-03-21 21:32:09Z joseph $
+\GetIdInfo$Id: l3prop.dtx 2087 2010-11-23 18:21:44Z joseph $
{L3 Experimental Property Lists}
%\iffalse
%<*driver>
@@ -99,10 +99,13 @@
%
% \begin{function}{%
% \prop_put:Nnn |
+% \prop_put:Nno |
% \prop_put:NnV |
% \prop_put:NVn |
% \prop_put:NVV |
+% \prop_put:Nnx |
% \prop_put:cnn |
+% \prop_put:cnx |
% \prop_gput:Nnn |
% \prop_gput:NVn |
% \prop_gput:Nno |
@@ -564,10 +567,13 @@
% \end{macro}
%
% \begin{macro}{\prop_put:Nnn}
+% \begin{macro}{\prop_put:Nno}
% \begin{macro}{\prop_put:NnV}
+% \begin{macro}{\prop_put:Nnx}
% \begin{macro}{\prop_put:NVn}
% \begin{macro}{\prop_put:NVV}
% \begin{macro}{\prop_put:cnn}
+% \begin{macro}{\prop_put:cnx}
% \begin{macro}{\prop_gput:Nnn}
% \begin{macro}{\prop_gput:NVn}
% \begin{macro}{\prop_gput:NnV}
@@ -608,7 +614,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\cs_generate_variant:Nn \prop_put:Nnn { NnV, NVn, NVV, cnn }
+\cs_generate_variant:Nn \prop_put:Nnn { Nno , NnV, Nnx, NVn, NVV, cnn , cnx }
% \end{macrocode}
%
% \begin{macrocode}
@@ -627,6 +633,9 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\prop_del:Nn}
% \begin{macro}{\prop_del:NV}
diff --git a/Master/texmf-dist/source/latex/expl3/l3skip.dtx b/Master/texmf-dist/source/latex/expl3/l3skip.dtx
index 87174998097..c42de0485e7 100644
--- a/Master/texmf-dist/source/latex/expl3/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3skip.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3skip.dtx 2063 2010-10-03 08:26:49Z mittelba $
+\GetIdInfo$Id: l3skip.dtx 2088 2010-11-23 20:27:27Z joseph $
{L3 Experimental skip registers}
%\iffalse
%<*driver>
@@ -312,6 +312,56 @@
% \end{syntax}
% These functions will set the <dim> register to the <dim value> value.
% \end{function}
+%
+%\begin{function}{
+% \dim_set_max:Nn |
+% \dim_set_max:cn |
+%}
+% \begin{syntax}
+% \cs{dim_set_max:Nn} \meta{dimension} \Arg{dimension expression}
+% \end{syntax}
+% Compares the current value of the \meta{dimension} with that of the
+% \meta{dimension expression}, and sets the \meta{dimension} to the
+% larger of these two value. This assignment is local to the current
+% \TeX\ group.
+%\end{function}
+%
+%\begin{function}{
+% \dim_gset_max:Nn |
+% \dim_gset_max:cn |
+%}
+% \begin{syntax}
+% \cs{dim_gset_max:Nn} \meta{dimension} \Arg{dimension expression}
+% \end{syntax}
+% Compares the current value of the \meta{dimension} with that of the
+% \meta{dimension expression}, and sets the \meta{dimension} to the
+% larger of these two value. This assignment is global.
+%\end{function}
+%
+%\begin{function}{
+% \dim_set_min:Nn |
+% \dim_set_min:cn |
+%}
+% \begin{syntax}
+% \cs{dim_set_min:Nn} \meta{dimension} \Arg{dimension expression}
+% \end{syntax}
+% Compares the current value of the \meta{dimension} with that of the
+% \meta{dimension expression}, and sets the \meta{dimension} to the
+% smaller of these two value. This assignment is local to the current
+% \TeX\ group.
+%\end{function}
+%
+%\begin{function}{
+% \dim_gset_min:Nn |
+% \dim_gset_min:cn |
+%}
+% \begin{syntax}
+% \cs{dim_gset_min:Nn} \meta{dimension} \Arg{dimension expression}
+% \end{syntax}
+% Compares the current value of the \meta{dimension} with that of the
+% \meta{dimension expression}, and sets the \meta{dimension} to the
+% smaller of these two value. This assignment is global.
+%\end{function}
%
%
% \begin{function}{%
@@ -907,6 +957,43 @@
% \end{macrocode}
% \end{macro}\end{macro}\end{macro}\end{macro}
% \end{macro}\end{macro}\end{macro}
+%
+%\begin{macro}{\dim_set_max:Nn}
+%\begin{macro}{\dim_set_max:cn}
+%\begin{macro}{\dim_set_min:Nn}
+%\begin{macro}{\dim_set_min:cn}
+%\begin{macro}{\dim_gset_max:Nn}
+%\begin{macro}{\dim_gset_max:cn}
+%\begin{macro}{\dim_gset_min:Nn}
+%\begin{macro}{\dim_gset_min:cn}
+% Setting maximum and minimum values is simply a case of so build-in
+% comparison. This only applies to dimensions as skips are not ordered.
+% \begin{macrocode}
+\cs_new_protected_nopar:Npn \dim_set_max:Nn #1#2 {
+ \dim_compare:nNnT {#1} < {#2} { \dim_set:Nn #1 {#2} }
+}
+\cs_generate_variant:Nn \dim_set_max:Nn { c }
+\cs_new_protected_nopar:Npn \dim_set_min:Nn #1#2 {
+ \dim_compare:nNnT {#1} > {#2} { \dim_set:Nn #1 {#2} }
+}
+\cs_generate_variant:Nn \dim_set_min:Nn { c }
+\cs_new_protected_nopar:Npn \dim_gset_max:Nn #1#2 {
+ \dim_compare:nNnT {#1} < {#2} { \dim_gset:Nn #1 {#2} }
+}
+\cs_generate_variant:Nn \dim_gset_max:Nn { c }
+\cs_new_protected_nopar:Npn \dim_gset_min:Nn #1#2 {
+ \dim_compare:nNnT {#1} > {#2} { \dim_gset:Nn #1 {#2} }
+}
+\cs_generate_variant:Nn \dim_gset_min:Nn { c }
+% \end{macrocode}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
+%\end{macro}
%
% \begin{macro}{\dim_zero:N}
% \begin{macro}{\dim_gzero:N}
diff --git a/Master/texmf-dist/source/latex/expl3/l3tl.dtx b/Master/texmf-dist/source/latex/expl3/l3tl.dtx
index a717c11c23c..c77feb5b947 100644
--- a/Master/texmf-dist/source/latex/expl3/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/expl3/l3tl.dtx
@@ -36,7 +36,7 @@
\RequirePackage{l3names}
%</driver|package>
%\fi
-\GetIdInfo$Id: l3tl.dtx 2081 2010-10-29 07:47:38Z joseph $
+\GetIdInfo$Id: l3tl.dtx 2084 2010-11-17 19:12:14Z joseph $
{L3 Experimental Token Lists}
%\iffalse
%<*driver>
@@ -318,8 +318,8 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}{ \tl_set_rescan:Nnn | \tl_set_rescan:Nnx |
-% \tl_gset_rescan:Nnn | \tl_gset_rescan:Nnx }
+% \begin{function}{ \tl_set_rescan:Nnn | \tl_set_rescan:Nno | \tl_set_rescan:Nnx |
+% \tl_gset_rescan:Nnn | \tl_gset_rescan:Nno | \tl_gset_rescan:Nnx }
% \begin{syntax}
% "\tl_set_rescan:Nnn" <\tlvar> \Arg{catcode setup} \Arg{\tlist}
% \end{syntax}
@@ -1698,6 +1698,7 @@
% \end{macro}
%
% \begin{macro}{\tl_set_rescan:Nnn, \tl_gset_rescan:Nnn}
+% \begin{macro}{\tl_set_rescan:Nno, \tl_gset_rescan:Nno}
% These functions store the \marg{\tlist} in \meta{\tlvar} after
% redefining catcodes, etc., in argument "#2".
% \begin{arguments}
@@ -1708,6 +1709,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \tl_set_rescan:Nnn { \tl_set_rescan_aux:NNnn \tl_set:Nn }
\cs_new_protected:Npn \tl_gset_rescan:Nnn { \tl_set_rescan_aux:NNnn \tl_gset:Nn }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nno }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno }
% \end{macrocode}
%
% \begin{macro}[aux]{\tl_set_rescan_aux:NNnn}
@@ -1752,6 +1755,7 @@
}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{arguments}
% \item "\tl_set" function