diff options
author | Karl Berry <karl@freefriends.org> | 2010-11-26 23:34:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-11-26 23:34:47 +0000 |
commit | a881f79f85c5ae2491b5448cd8bc0d5a28b55bf5 (patch) | |
tree | 0620e635477f75be996071619fd104866445d00e /Master/texmf-dist/source/latex/expl3 | |
parent | fe6482d3468ca040e53f8e5347548495db754e98 (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.dtx | 7 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/expl3/l3fp.dtx | 78 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/expl3/l3keys.dtx | 34 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/expl3/l3prop.dtx | 13 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/expl3/l3skip.dtx | 89 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/expl3/l3tl.dtx | 10 |
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 |