diff options
author | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2008-07-29 11:23:34 +0000 |
---|---|---|
committer | Manuel Pégourié-Gonnard <mpg@elzevir.fr> | 2008-07-29 11:23:34 +0000 |
commit | ef285e6a49a93af098150d0b3125a34d3477ba55 (patch) | |
tree | 124a55595390d358e0cda8ae26f78e9a263e9a21 /Master/texmf-dist/tex/latex/expl3 | |
parent | e7477f362711cc9d05dfa1ee71301fb34cce2d94 (diff) |
expl3 update (2008/06/20)
git-svn-id: svn://tug.org/texlive/trunk@9869 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/expl3')
25 files changed, 1484 insertions, 695 deletions
diff --git a/Master/texmf-dist/tex/latex/expl3/l3basics.sty b/Master/texmf-dist/tex/latex/expl3/l3basics.sty index 161ac199227..d4e9c2abe9e 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3basics.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3basics.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3basics.dtx 583 2006-12-12 17:26:44Z morten $ +\GetIdInfo$Id: l3basics.dtx 702 2007-11-27 14:21:49Z morten $ {L3 Experimental basic definitions} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \tex_let:D \let:NwN \tex_let:D \let:NwN \if_true: \tex_iftrue:D \let:NwN \if_false: \tex_iffalse:D @@ -417,6 +419,8 @@ \def_long_new:Npn \def_test_function_aux:Nnnn #1#2#3#4{ #1 {#2TF} #3 {#4 \exp_after:NN\use_arg_i:nn\else:\exp_after:NN\use_arg_ii:nn\fi:} + #1 {#2FT} #3 {#4 + \exp_after:NN\use_arg_ii:nn\else:\exp_after:NN\use_arg_i:nn\fi:} #1 {#2T} #3 {#4 \else:\exp_after:NN\use_none:nn\fi:\use_arg_i:n} #1 {#2F} #3 {#4 @@ -424,6 +428,8 @@ \def_long_new:Npn \def_test_function_aux:Nnnx #1#2#3#4{ #1 {#2TF} #3 {#4 \exp_not:n{\exp_after:NN\use_arg_i:nn\else:\exp_after:NN\use_arg_ii:nn\fi:}} + #1 {#2FT} #3 {#4 + \exp_not:n{\exp_after:NN\use_arg_ii:nn\else:\exp_after:NN\use_arg_i:nn\fi:}} #1 {#2T} #3 {#4 \exp_not:n{\else:\exp_after:NN\use_none:nn\fi:\use_arg_i:n}} #1 {#2F} #3 {#4 @@ -473,7 +479,7 @@ \def_long_test_function_new:npn {cs_if_really_exist:c}#1{ \if_cs_exist:w #1\cs_end:} \def_new:Npn \cs_gundefine:N #1{\glet:NN #1\c_undefined} -\def_test_function_new:npn {engine_aleph:}{\if_cs_exist:N \aleph_textdir:D} +\def_test_function_new:npn {engine_if_aleph:}{\if_cs_exist:N \aleph_textdir:D} \def_new:Npn \use:c #1{\cs:w #1\cs_end:} \def_new:Npn \cs_use:c #1 { \cs:w#1\cs_end: } \def_new:Npn \use:cc #1#2 @@ -494,7 +500,8 @@ \def_long_new:Npn \use_arg_i_delimit_by_q_stop:nw #1#2\q_stop{#1} \def_long_new:Npn \use_arg_i_after_fi:nw #1\fi:{\fi: #1} \def_long_new:Npn \use_arg_i_after_else:nw #1\else:#2\fi:{\fi: #1} -\def_long_new:Npn \use_arg_i_after_or:nw #1\or: #2\fi: {\or:\fi:#1} +\def_long_new:Npn \use_arg_i_after_or:nw #1\or: #2\fi: {\fi:#1} +\def_long_new:Npn \use_arg_i_after_orelse:nw #1 #2#3\fi: {\fi:#1} \def_long_new:NNn \use_none:nn 2{} \def_long_new:NNn \use_none:nnn 3{} \def_long_new:NNn \use_none:nnnn 4{} diff --git a/Master/texmf-dist/tex/latex/expl3/l3box.sty b/Master/texmf-dist/tex/latex/expl3/l3box.sty index e155345519f..be463eacf81 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3box.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3box.sty @@ -15,7 +15,7 @@ %% Do not distribute a modified version of this file. %% %% -%% File: l3box.dtx Copyright (C) 2005-2006 LaTeX3 project +%% File: l3box.dtx Copyright (C) 2005-2007 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 @@ -48,14 +48,19 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3box.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3box.dtx 718 2007-12-16 22:59:58Z morten $ {L3 Experimental Box module} -\RequirePackage{l3prg}\par +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} +\RequirePackage{l3prg,l3token}\par \let_new:NN \box_new:N \newbox \def_new:Npn \box_new:c {\exp_args:Nc \box_new:N} \let_new:NN \if_hbox:N \tex_ifhbox:D \let_new:NN \if_vbox:N \tex_ifvbox:D \let_new:NN \if_box_empty:N \tex_ifvoid:D +\def_new:Npn \box_if_empty_p:N #1{ + \if_box_empty:N #1 \c_true \else: \c_false \fi:} +\def_new:Npn \box_if_empty_p:c {\exp_args:Nc \box_if_empty_p:N} \def_test_function_new:npn {box_if_empty:N}#1{\if_box_empty:N #1} \def_new:Npn \box_if_empty:cTF {\exp_args:Nc \box_if_empty:NTF} \def_new:Npn \box_if_empty:cT {\exp_args:Nc \box_if_empty:NT} @@ -68,11 +73,11 @@ \def_new:Npn \box_gset_eq:cN {\exp_args:Nc \box_gset_eq:NN} \def_new:Npn \box_gset_eq:Nc {\exp_args:NNc \box_gset_eq:NN} \def_new:Npn \box_gset_eq:cc {\exp_args:Ncc \box_gset_eq:NN} -\let_new:NN \R_previous_box \tex_lastbox:D -\def_new:Npn \box_set_to_previous:N #1{\tex_setbox:D#1\R_previous_box} -\def_new:Npn \box_set_to_previous:c {\exp_args:Nc \box_set_to_previous:N} -\def_new:Npn \box_gset_to_previous:N {\pref_global:D \box_set_to_previous:N} -\def_new:Npn \box_gset_to_previous:c {\exp_args:Nc \box_gset_to_previous:N} +\let_new:NN \R_last_box \tex_lastbox:D +\def_new:Npn \box_set_to_last:N #1{\tex_setbox:D#1\R_last_box} +\def_new:Npn \box_set_to_last:c {\exp_args:Nc \box_set_to_last:N} +\def_new:Npn \box_gset_to_last:N {\pref_global:D \box_set_to_last:N} +\def_new:Npn \box_gset_to_last:c {\exp_args:Nc \box_gset_to_last:N} \def_long_new:Npn \box_move_left:nn #1#2{\tex_moveleft:D\dim_eval:n{#1}{#2}} \def_long_new:Npn \box_move_right:nn #1#2{\tex_moveright:D\dim_eval:n{#1}{#2}} \def_long_new:Npn \box_move_up:nn #1#2{\tex_raise:D\dim_eval:n{#1}{#2}} @@ -134,9 +139,13 @@ \def_new:Npn \hbox_gset_to_wd:cnn{\exp_args:Nc \hbox_gset_to_wd:Nnn } \def_new:Npn \hbox_set_inline_begin:N #1 { \tex_setbox:D #1 \tex_hbox:D \c_group_begin_token } +\def:Npn \hbox_set_inline_begin:c {\exp_args:Nc + \hbox_set_inline_begin:N} \let_new:NN \hbox_set_inline_end: \c_group_end_token \def_new:Npn \hbox_gset_inline_begin:N { \pref_global:D \hbox_set_inline_begin:N } +\def:Npn \hbox_gset_inline_begin:c {\exp_args:Nc + \hbox_gset_inline_begin:N } \let_new:NN \hbox_gset_inline_end: \c_group_end_token \def_long_new:Npn \hbox_to_wd:nn #1#2 {\tex_hbox:D to #1 {#2}} \def_long_new:Npn \hbox_to_zero:n #1 {\tex_hbox:D to \c_zero_skip {#1}} diff --git a/Master/texmf-dist/tex/latex/expl3/l3calc.sty b/Master/texmf-dist/tex/latex/expl3/l3calc.sty index d3d2ef07937..6d6239ac0b6 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3calc.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3calc.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3calc.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3calc.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental calc module} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3int} \RequirePackage{l3skip} \RequirePackage{l3box} @@ -69,86 +71,98 @@ \muskip_new:N \g_calc_A_muskip \muskip_new:N \l_calc_B_muskip \muskip_new:N \l_calc_C_muskip -\def_long_new:Npn \calc_assign_generic:NNNNNn#1#2#3#4#5#6{ - \let:NN\g_calc_A_register#2\let:NN\l_calc_B_register#3 +\def_long_new:Npn \calc_assign_generic:NNNNnn#1#2#3#4#5#6{ + \let:NN\g_calc_A_register#2 + \let:NN\l_calc_B_register#3 \int_set:Nn \l_calc_current_type_int {#1} - \tlp_set:Nx\l_calc_expression_tlp{#6} - \exp_after:NN\calc_open:w\exp_after:NN(\l_calc_expression_tlp! + \group_begin: + \let:NN \real \calc_real:n + \let:NN \ratio\calc_ratio:nn + \tlp_set:Nx\l_calc_expression_tlp{#6} + \exp_after:NN + \group_end: + \exp_after:NN\calc_open:w\exp_after:NN(\l_calc_expression_tlp ! \pref_global:D\g_calc_A_register\l_calc_B_register \group_end: - #4#5\l_calc_B_register + #4{#5}\l_calc_B_register } \def_new:Npn\calc_int_set:Nn{ - \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_set:Nn + \calc_assign_generic:NNNNnn\c_zero\g_calc_A_int\l_calc_B_int\int_set:Nn } \def_new:Npn\calc_int_gset:Nn{ - \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_gset:Nn + \calc_assign_generic:NNNNnn\c_zero\g_calc_A_int\l_calc_B_int\int_gset:Nn } \def_new:Npn\calc_int_add:Nn{ - \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_add:Nn + \calc_assign_generic:NNNNnn\c_zero\g_calc_A_int\l_calc_B_int\int_add:Nn } \def_new:Npn\calc_int_gadd:Nn{ - \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_gadd:Nn + \calc_assign_generic:NNNNnn\c_zero\g_calc_A_int\l_calc_B_int\int_gadd:Nn } \def_new:Npn\calc_int_sub:Nn{ - \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_sub:Nn + \calc_assign_generic:NNNNnn\c_zero\g_calc_A_int\l_calc_B_int\int_sub:Nn } \def_new:Npn\calc_int_gsub:Nn{ - \calc_assign_generic:NNNNNn\c_zero\g_calc_A_int\l_calc_B_int\int_gsub:Nn + \calc_assign_generic:NNNNnn\c_zero\g_calc_A_int\l_calc_B_int\int_gsub:Nn } \def_new:Npn\calc_dim_set:Nn{ - \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_set:Nn + \calc_assign_generic:NNNNnn\c_one\g_calc_A_dim\l_calc_B_dim\dim_set:Nn } \def_new:Npn\calc_dim_gset:Nn{ - \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_gset:Nn + \calc_assign_generic:NNNNnn\c_one\g_calc_A_dim\l_calc_B_dim\dim_gset:Nn } \def_new:Npn\calc_dim_add:Nn{ - \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_add:Nn + \calc_assign_generic:NNNNnn\c_one\g_calc_A_dim\l_calc_B_dim\dim_add:Nn } \def_new:Npn\calc_dim_gadd:Nn{ - \calc_assign_generic:NNNNNn\c_one\g_calc_A_dim\l_calc_B_dim\dim_gadd:Nn + \calc_assign_generic:NNNNnn\c_one\g_calc_A_dim\l_calc_B_dim\dim_gadd:Nn } \def_new:Npn\calc_dim_sub:Nn{ - \calc_assign_generic:NNNNNn\c_one\g_calc_A_int\l_calc_B_int\dim_sub:Nn + \calc_assign_generic:NNNNnn\c_one\g_calc_A_int\l_calc_B_int\dim_sub:Nn } \def_new:Npn\calc_dim_gsub:Nn{ - \calc_assign_generic:NNNNNn\c_one\g_calc_A_int\l_calc_B_int\dim_gsub:Nn + \calc_assign_generic:NNNNnn\c_one\g_calc_A_int\l_calc_B_int\dim_gsub:Nn } \def_new:Npn\calc_skip_set:Nn{ - \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_set:Nn + \calc_assign_generic:NNNNnn\c_two\g_calc_A_skip\l_calc_B_skip\skip_set:Nn } \def_new:Npn\calc_skip_gset:Nn{ - \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_gset:Nn + \calc_assign_generic:NNNNnn\c_two\g_calc_A_skip\l_calc_B_skip\skip_gset:Nn } \def_new:Npn\calc_skip_add:Nn{ - \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_add:Nn + \calc_assign_generic:NNNNnn\c_two\g_calc_A_skip\l_calc_B_skip\skip_add:Nn } \def_new:Npn\calc_skip_gadd:Nn{ - \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_gadd:Nn + \calc_assign_generic:NNNNnn\c_two\g_calc_A_skip\l_calc_B_skip\skip_gadd:Nn } \def_new:Npn\calc_skip_sub:Nn{ - \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_sub:Nn + \calc_assign_generic:NNNNnn\c_two\g_calc_A_skip\l_calc_B_skip\skip_sub:Nn } \def_new:Npn\calc_skip_gsub:Nn{ - \calc_assign_generic:NNNNNn\c_two\g_calc_A_dim\l_calc_B_dim\skip_gsub:Nn + \calc_assign_generic:NNNNnn\c_two\g_calc_A_skip\l_calc_B_skip\skip_gsub:Nn } \def_new:Npn\calc_muskip_set:Nn{ - \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_set:Nn + \calc_assign_generic:NNNNnn\c_three\g_calc_A_muskip\l_calc_B_muskip + \muskip_set:Nn } \def_new:Npn\calc_muskip_gset:Nn{ - \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_gset:Nn + \calc_assign_generic:NNNNnn\c_three\g_calc_A_muskip\l_calc_B_muskip + \muskip_gset:Nn } \def_new:Npn\calc_muskip_add:Nn{ - \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_add:Nn + \calc_assign_generic:NNNNnn\c_three\g_calc_A_muskip\l_calc_B_muskip + \muskip_add:Nn } \def_new:Npn\calc_muskip_gadd:Nn{ - \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_gadd:Nn + \calc_assign_generic:NNNNnn\c_three\g_calc_A_muskip\l_calc_B_muskip + \muskip_gadd:Nn } \def_new:Npn\calc_muskip_sub:Nn{ - \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_add:Nn + \calc_assign_generic:NNNNnn\c_three\g_calc_A_muskip\l_calc_B_muskip + \muskip_add:Nn } \def_new:Npn\calc_muskip_gsub:Nn{ - \calc_assign_generic:NNNNNn\c_three\g_calc_A_dim\l_calc_B_dim\muskip_gadd:Nn + \calc_assign_generic:NNNNnn\c_three\g_calc_A_muskip\l_calc_B_muskip + \muskip_gadd:Nn } \def_new:Npn \calc_pre_scan:N #1{ \if_meaning:NN(#1 @@ -184,8 +198,11 @@ \if_meaning:NN#1*\let:NN\calc_next:w\calc_multiply:N \else: \if_meaning:NN#1/\let:NN\calc_next:w\calc_divide:N \else: \if_meaning:NN#1)\let:NN\calc_next:w\calc_close: \else: - \let:NN \calc_next:w \scan_stop: - \calc_error:N#1 + \if_meaning:NN#1\scan_stop:\let:NN\calc_next:w\calc_post_scan:N + \else: + \let:NN \calc_next:w \use_noop: + \calc_error:N#1 + \fi: \fi: \fi: \fi: @@ -257,6 +274,7 @@ \group_begin: \let:NN\g_calc_A_register\g_calc_A_int \let:NN\l_calc_B_register\l_calc_B_int + \int_zero:N \l_calc_current_type_int \group_execute_after:N#1\calc_pre_scan:N } \def_new:Npn\calc_multiply_B_by_A:{ @@ -288,17 +306,17 @@ \def:Npn \calc_calculate_box_size_aux:n#1{ + #1\l_tmpa_box} \def_protected_long:Npn \calc_textsize:Nn#1#2{ \group_begin: - \let:NN\widthof\box_wd:N - \let:NN\heightof\box_ht:N - \let:NN\depthof\box_dp:N - \def:Npn\totalheightof{\box_ht:N\box_dp:N} + \let:NN\calc_widthof_aux:n\box_wd:N + \let:NN\calc_heightof_aux:n\box_ht:N + \let:NN\calc_depthof_aux:n\box_dp:N + \def:Npn\calc_totalheightof_aux:n{\box_ht:N\box_dp:N} \exp_args:No\calc_calculate_box_size:nnn{#1} {\dim_gset:Nn\g_calc_A_register} { - \let:NN \depthof\calc_depthof:n - \let:NN \widthof\calc_widthof:n - \let:NN \heightof\calc_heightof:n - \let:NN \totalheightof\calc_totalheightof:n + \let:NN \calc_depthof_aux:n \calc_depthof_auxi:n + \let:NN \calc_widthof_aux:n \calc_widthof_auxi:n + \let:NN \calc_heightof_aux:n \calc_heightof_auxi:n + \let:NN \calc_totalheightof_aux:n \calc_totalheightof_auxi:n #2 } \group_end: @@ -403,29 +421,84 @@ \def_long_new:Npn \calc_minof:nn#1#2{ \calc_maxmin_operation:Nnn < \exp_not:n{{#1}{#2}} } -\let_new:NN \maxof \calc_maxof:nn -\let_new:NN \minof \calc_minof:nn +\let:NN \maxof \calc_maxof:nn +\let:NN \minof \calc_minof:nn \def_long_new:Npn \calc_widthof:n#1{ - \calc_textsize:Nn \exp_not:N\widthof\exp_not:n{{#1}} + \calc_textsize:Nn \exp_not:N\calc_widthof_aux:n\exp_not:n{{#1}} } \def_long_new:Npn \calc_heightof:n#1{ - \calc_textsize:Nn \exp_not:N\heightof\exp_not:n{{#1}} + \calc_textsize:Nn \exp_not:N\calc_heightof_aux:n\exp_not:n{{#1}} } \def_long_new:Npn \calc_depthof:n#1{ - \calc_textsize:Nn \exp_not:N\depthof\exp_not:n{{#1}} + \calc_textsize:Nn \exp_not:N\calc_depthof_aux:n\exp_not:n{{#1}} } \def_long_new:Npn \calc_totalheightof:n#1{ - \calc_textsize:Nn \exp_not:N\totalheightof\exp_not:n{{#1}} + \calc_textsize:Nn \exp_not:N\calc_totalheightof_aux:n \exp_not:n{{#1}} +} +\def_long_new:Npn \calc_widthof_aux:n #1{ + \exp_not:N\calc_widthof_aux:n\exp_not:n{{#1}} +} +\let_new:NN \calc_widthof_auxi:n \calc_widthof_aux:n +\def_long_new:Npn \calc_depthof_aux:n #1{ + \exp_not:N\calc_depthof_aux:n\exp_not:n{{#1}} +} +\let_new:NN \calc_depthof_auxi:n \calc_depthof_aux:n +\def_long_new:Npn \calc_heightof_aux:n #1{ + \exp_not:N\calc_heightof_aux:n\exp_not:n{{#1}} } +\let_new:NN \calc_heightof_auxi:n \calc_heightof_aux:n +\def_long_new:Npn \calc_totalheightof_aux:n #1{ + \exp_not:N\calc_totalheightof_aux:n\exp_not:n{{#1}} +} +\let_new:NN \calc_totalheightof_auxi:n \calc_totalheightof_aux:n +\def_long_new:Npn \calc_ratio:nn#1#2{ + \calc_ratio_multiply:nn\exp_not:n{{#1}{#2}}} +\def_new:Npn \calc_real:n {\calc_real_evaluate:nn} \let:NN \depthof\calc_depthof:n \let:NN \widthof\calc_widthof:n \let:NN \heightof\calc_heightof:n \let:NN \totalheightof\calc_totalheightof:n -\def_long_new:Npn \calc_ratio:nn#1#2{ - \calc_ratio_multiply:nn\exp_not:n{{#1}{#2}}} -\let_new:NN \calc_real:n \calc_real_evaluate:nn -\let_new:NN \ratio\calc_ratio:nn -\let_new:NN \real\calc_real:n +%%\let:NN \ratio\calc_ratio:nn +%%\let:NN \real\calc_real:n +\def_protected:Npn \setlength{\calc_skip_set:Nn} +\def_protected:Npn \gsetlength{\calc_skip_gset:Nn} +\def_protected:Npn \addtolength{\calc_skip_add:Nn} +\def_protected:Npn \gaddtolength{\calc_skip_gadd:Nn} +\newif\iffirstchoice@ \firstchoice@true +\def_protected:Npn \calc_setcounter:nn#1#2{ + \calc_chk_document_counter:nn{#1}{ + \exp_args:Nc\calc_int_gset:Nn {c@#1}{#2} + } +} +\def_protected:Npn \calc_addtocounter:nn#1#2{ + \iffirstchoice@ + \calc_chk_document_counter:nn{#1}{ + \exp_args:Nc\calc_int_gadd:Nn {c@#1}{#2} + } + \fi: +} +\def_protected:Npn \calc_stepcounter:n#1{ + \iffirstchoice@ + \calc_chk_document_counter:nn{#1}{ + \int_gincr:c {c@#1} + \group_begin: + \let:NN \@elt\@stpelt \cs_use:c{cl@#1} + \group_end: + } + \fi: +} +\def_new:Npn \calc_chk_document_counter:nn#1{ + \cs_if_free:cTF{c@#1}{\@nocounterr {#1}} +} +\let:NN \setcounter \calc_setcounter:nn +\let:NN \addtocounter \calc_addtocounter:nn +\let:NN \stepcounter \calc_stepcounter:n +\AtBeginDocument{ + \let:NN \setcounter \calc_setcounter:nn + \let:NN \addtocounter \calc_addtocounter:nn + \let:NN \stepcounter \calc_stepcounter:n +} +\def:cpn{ver@calc.sty}{2005/08/06} %% %% %% End of file `l3calc.sty'. diff --git a/Master/texmf-dist/tex/latex/expl3/l3chk.sty b/Master/texmf-dist/tex/latex/expl3/l3chk.sty index 1c2a8319d85..7900e8409d0 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3chk.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3chk.sty @@ -49,8 +49,10 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3names} -\GetIdInfo$Id: l3chk.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3chk.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental check module} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3basics} \RequirePackage{l3int,l3prg} \def_new:Npn \chk_local:N #1{ diff --git a/Master/texmf-dist/tex/latex/expl3/l3clist.sty b/Master/texmf-dist/tex/latex/expl3/l3clist.sty index 5d66009175a..313e4ab79c7 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3clist.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3clist.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3clist.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3clist.dtx 725 2007-12-22 21:25:00Z mittelba $ {L3 Experimental comma separated lists} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \NeedsTeXFormat{LaTeX2e} \RequirePackage{l3prg,l3quark} \def_new:Npn \clist_new:N #1{\tlp_new:Nn #1{}} @@ -110,7 +112,7 @@ \def_new:Npn \clist_put_right:No {\exp_args:Nno\clist_put_right:Nn} \def_new:Npn \clist_put_right:Nx {\exp_args:Nnx\clist_put_right:Nn} \def_new:Npn \clist_gput_right:Nn { - \clist_put_aux:NNnnNn \tlp_set:Nn \tlp_put_right:Nn , {} + \clist_put_aux:NNnnNn \tlp_gset:Nn \tlp_gput_right:Nn , {} } \def_new:Npn \clist_gput_right:No {\exp_args:NNo \clist_gput_right:Nn} \def_new:Npn \clist_gput_right:cn {\exp_args:Nc \clist_gput_right:Nn} @@ -121,20 +123,20 @@ \clist_if_empty:NF #1 { \exp_after:NN \clist_map_function_aux:Nw - \exp_after:NN #2 #1 , \q_nil , \q_stop + \exp_after:NN #2 #1 , \q_recursion_tail , \q_recursion_stop } } \def_new:Npn \clist_map_function:cN{\exp_args:Nc\clist_map_function:NN} \def_new:Npn \clist_map_function:nN #1#2{ - \tlist_if_empty:nF {#1} - { \clist_map_function_aux:Nw #2 #1 , \q_nil , \q_stop } + \tlist_if_blank:nF {#1} + { \clist_map_function_aux:Nw #2 #1 , \q_recursion_tail , \q_recursion_stop } } \def_new:Npn \clist_map_function_aux:Nw #1#2,{ - \quark_if_nil:nT{#2} \clist_map_break:w + \quark_if_recursion_tail_stop:n{#2} #1{#2} \clist_map_function_aux:Nw #1 } -\let_new:NN \clist_map_break:w \use_none_delimit_by_q_stop:w +\let_new:NN \clist_map_break:w \use_none_delimit_by_q_recursion_stop:w \int_new:N \l_clist_inline_level_int \def_new:Npn \clist_map_inline:Nn #1#2{ \clist_if_empty:NF #1 @@ -144,7 +146,7 @@ ##1{#2} \exp_args:NcE \clist_map_function_aux:Nw {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n} - #1 , \q_nil , \q_stop + #1 , \q_recursion_tail , \q_recursion_stop \int_decr:N \l_clist_inline_level_int } } @@ -157,21 +159,22 @@ ##1{#2} \exp_args:Nc \clist_map_function_aux:Nw {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n} - #1 , \q_nil , \q_stop + #1 , \q_recursion_tail , \q_recursion_stop \int_decr:N \l_clist_inline_level_int } } \def_new:Npn \clist_map_variable:nNn #1#2#3{ \tlist_if_empty:nF{#1} { - \clist_map_variable_aux:Nnw #2 {#3} #1 , \q_nil , \q_stop + \clist_map_variable_aux:Nnw #2 {#3} #1 + , \q_recursion_tail , \q_recursion_stop } } \def_new:Npn \clist_map_variable:NNn {\exp_args:No \clist_map_variable:nNn} \def_new:Npn \clist_map_variable:cNn {\exp_args:Nc \clist_map_variable:NNn} \def_new:Npn \clist_map_variable_aux:Nnw #1#2#3,{ \def:Npn #1{#3} - \quark_if_nil:NT #1 \clist_map_break:w + \quark_if_recursion_tail_stop:N #1 #2 \clist_map_variable_aux:Nnw #1{#2} } \def_new:Npn \clist_concat_aux:NNNN #1#2#3#4{ diff --git a/Master/texmf-dist/tex/latex/expl3/l3doc.cls b/Master/texmf-dist/tex/latex/expl3/l3doc.cls index ebe379a580a..59c7a7c971d 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3doc.cls +++ b/Master/texmf-dist/tex/latex/expl3/l3doc.cls @@ -37,7 +37,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e} \ProvidesClass{l3doc} - [2006/01/17 v0.0h class for documenting experimental stuff] + [2007/09/08 v0.0j class for documenting experimental stuff] % \NeedsTeXFormat{LaTeX2e} %</class> @@ -53,7 +53,7 @@ % \end{macrocode} % % \begin{macrocode} -\DeclareOption*{\PassOptionstoClass{\CurrentOption}{article}} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} % \end{macrocode} % % \section{Option Processing} @@ -77,6 +77,7 @@ % \end{macrocode} % % \begin{macrocode} +\RequirePackage{l3names,trace} \RequirePackage{doc} \renewcommand\MakePrivateLetters{\makeatletter \catcode`\_=11\relax @@ -110,7 +111,7 @@ \catcode`\_=11 - +\AtBeginDocument{\catcode`\_=11\relax} % \end{macrocode} % % Make \verb+|+ and \verb+"+ be `short verb' characters, but not in @@ -181,7 +182,7 @@ \let\patchdate=\@empty \begingroup %%\def\ProvidesFile#1\fmtversion#2{\date{#2}\endinput} - \def\ProvidesFile#1[#2 #3]{\date{#2}\endinput} + \def\ProvidesFile#1[#2#3]{\date{#2}\endinput} \input{l3vers.dtx} \global\let\X@date=\@date diff --git a/Master/texmf-dist/tex/latex/expl3/l3expan.sty b/Master/texmf-dist/tex/latex/expl3/l3expan.sty index f6e65f0ade6..4e8ee86603e 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3expan.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3expan.sty @@ -48,38 +48,50 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3expan.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3expan.dtx 735 2008-01-14 22:31:02Z morten $ {L3 Experimental Argument Expansion module} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3tlp} \tlp_new:Nn\l_exp_tlp{} -\def_new:Npn\exp_arg_next:nnn#1#2#3{ +\def_long_new:Npn\exp_arg_next:nnn#1#2#3{ #2\:::{#3#1} } -\def_new:Npn\::n#1\:::#2#3{ +\def_long_new:Npn\::n#1\:::#2#3{ #1\:::{#2{#3}} } -\def_new:Npn\::N#1\:::#2#3{ +\def_long_new:Npn\::N#1\:::#2#3{ #1\:::{#2#3} } -\def_new:Npn\::c#1\:::#2#3{ +\def_long_new:Npn\::c#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn\cs:w #3\cs_end:{#1}{#2} } -\def_new:Npn\::o#1\:::#2#3{ +\def_long_new:Npn\::o#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn\exp_after:NN{\exp_after:NN{#3}}{#1}{#2} } -\def_new:Npn\::f#1\:::#2#3{ +\def_long_new:Npn\::f#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{\exp_after:NN{\int_to_roman:w -`0 #3}} {#1}{#2} } -\def_new:Npn\::x#1\:::#2#3{ - \tlp_set:Nx\l_exp_tlp{{{#3}}} - \exp_after:NN\exp_arg_next:nnn\l_exp_tlp{#1}{#2}} -\def_new:Npn\:::#1{#1} -\def_new:Npn\::C#1\:::#2#3{ +\def_new:Npn \exp_stop_f: {~} +\let_new:NN \exp_arg:x \expanded % Move eventually. +\cs_if_free:NTF\exp_arg:x{ + \def_long_new:Npn\::x#1\:::#2#3{ + % \tlp_set:Nx\l_exp_tlp{{{#3}}} + \def:Npx \l_exp_tlp{{{#3}}} + \exp_after:NN\exp_arg_next:nnn\l_exp_tlp{#1}{#2}} +} +{ + \def_long_new:Npn\::x#1\:::#2#3{ + \exp_after:NN\exp_arg_next:nnn + \exp_after:NN{\exp_arg:x{{#3}}}{#1}{#2} + } +} +\def_long_new:Npn\:::#1{#1} +\def_long_new:Npn\::C#1\:::#2#3{ \exp_after:NN\exp_C_aux:nnn\cs:w #3\cs_end:{#1}{#2}} -\def_new:Npn\exp_C_aux:nnn #1 - { +\def_long_new:Npn\exp_C_aux:nnn #1{ \exp_after:NN \exp_arg_next:nnn \exp_after:NN @@ -87,14 +99,14 @@ \exp_after:NN {#1} } - } -\def:Npn\::E#1\:::#2#3{ +} +\def_long_new:Npn\::E#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{#3}{#1}{#2} } -\def:Npn\::e#1\:::#2#3{ +\def_long_new:Npn\::e#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{#3}{#1}{#2} } -\def:Npn\::d#1\:::#2#3{ +\def_long_new:Npn\::d#1\:::#2#3{ \exp_after:NN\exp_after:NN\exp_after:NN\exp_arg_next:nnn \exp_after:NN\exp_after:NN\exp_after:NN{ \exp_after:NN\exp_after:NN\exp_after:NN{#3}}{#1}{#2} @@ -106,26 +118,31 @@ \def:Npn \exp_args:NcE #1#2{\exp_after:NN #1\cs:w #2\exp_after:NN\cs_end:} \def:Npn \exp_args:Nd {\::d\:::} \def:Npn \exp_args:NNd {\::N\::d\:::} + \def:Npn \exp_args:NC {\::C\:::} -\def:Npn \exp_args:Ncx {\::c\::x\:::} -\def:Npn \exp_args:Ncco {\::c\::c\::o\:::} -\def:Npn \exp_args:Nccx {\::c\::c\::x\:::} -\def:Npn \exp_args:Ncnx {\::c\::n\::x\:::} +\def:Npn \exp_args:NNC {\::N\::C\:::} +\def:Npn \exp_args:NNf {\::N\::f\:::} +\def:Npn \exp_args:NNno {\::N\::n\::o\:::} +\def:Npn \exp_args:NNnx {\::N\::n\::x\:::} % new +\def:Npn \exp_args:NNoo {\::N\::o\::o\:::} % new +\def:Npn \exp_args:NNox {\::N\::o\::x\:::} % new +\def:Npn \exp_args:NNx {\::N\::x\:::} \def:Npn \exp_args:NcNc {\::c\::N\::c\:::} \def:Npn \exp_args:NcNo {\::c\::N\::o\:::} \def:Npn \exp_args:Ncco {\::c\::c\::o\:::} +\def:Npn \exp_args:Ncco {\::c\::c\::o\:::} +\def:Npn \exp_args:Nccx {\::c\::c\::x\:::} +\def:Npn \exp_args:Ncnx {\::c\::n\::x\:::} +\def:Npn \exp_args:Ncx {\::c\::x\:::} \def:Npn \exp_args:Nf {\::f\:::} -\def:Npn \exp_args:NNf {\::N\::f\:::} \def:Npn \exp_args:Nfo{\::f\::o\:::} \def:Npn \exp_args:Nnf {\::n\::f\:::} -\def:Npn \exp_args:NNno {\::N\::n\::o\:::} -%% Strange one this next one... -\def:Npn \exp_args:NnnN {\::n\::n\::N\:::} +\def:Npn \exp_args:NnnN {\::n\::n\::N\:::} %% Strange one this one... +\def:Npn \exp_args:Nnnc {\::n\::n\::c\:::} \def:Npn \exp_args:Nnno {\::n\::n\::o\:::} \def:Npn \exp_args:Nnnx {\::n\::n\::x\:::} \def:Npn \exp_args:Nno {\::n\::o\:::} \def:Npn \exp_args:Nnox {\::n\::o\::x\:::} -\def:Npn \exp_args:NNx {\::N\::x\:::} \def:Npn \exp_args:Nnx {\::n\::x\:::} \def:Npn \exp_args:Noo {\::o\::o\:::} \def:Npn \exp_args:Noox {\::o\::o\::x\:::} @@ -133,35 +150,39 @@ \def:Npn \exp_args:Nx {\::x\:::} \def:Npn \exp_args:Nxo {\::x\::o\:::} \def:Npn \exp_args:Nxx {\::x\::x\:::} -\def:Npn \exp_args:NNC {\::N\::C\:::} -\def:Npn \exp_args:Nnnc {\::n\::n\::c\:::} -\def_new:Npn\exp_not:o#1{\exp_not:n\exp_after:NN{#1}} +\def_long_new:Npn\exp_not:o#1{\exp_not:n\exp_after:NN{#1}} +\def_long_new:Npn\exp_not:d#1{ + \exp_not:n\exp_after:NN\exp_after:NN\exp_after:NN{#1} +} +\def_long_new:Npn\exp_not:f#1{ + \exp_not:n\exp_after:NN{\int_to_roman:w -`0 #1} +} \def_new:Npn\exp_not:E{\exp_after:NN\exp_not:N} -\def_new:Npn\exp_not:c#1{\exp_after:NN\exp_not:N\cs:w#1\cs_end:} -\def_new:Npn \exp_args:No #1#2{\exp_after:NN#1\exp_after:NN{#2}} -\def_new:Npn \exp_args:NOo #1#2#3{\exp_after:NN\exp_args:No \exp_after:NN#1 +\def_long_new:Npn\exp_not:c#1{\exp_after:NN\exp_not:N\cs:w#1\cs_end:} +\def_long_new:Npn \exp_args:No #1#2{\exp_after:NN#1\exp_after:NN{#2}} +\def_long_new:Npn \exp_args:NOo #1#2#3{\exp_after:NN\exp_args:No \exp_after:NN#1 \exp_after:NN#2\exp_after:NN{#3}} -\def_new:Npn \exp_args:NOOo #1#2#3#4{\exp_after:NN\exp_args:NOo +\def_long_new:Npn \exp_args:NOOo #1#2#3#4{\exp_after:NN\exp_args:NOo \exp_after:NN#1\exp_after:NN#2\exp_after:NN#3\exp_after:NN{#4}} -\def_new:Npn \exp_args:NNo #1#2#3{\exp_after:NN#1\exp_after:NN#2 +\def_long_new:Npn \exp_args:NNo #1#2#3{\exp_after:NN#1\exp_after:NN#2 \exp_after:NN{#3}} -\def_new:Npn \exp_args:NNO #1#2#3 {\exp_after:NN#1 +\def_long_new:Npn \exp_args:NNO #1#2#3 {\exp_after:NN#1 \exp_after:NN#2 #3} -\def_new:Npn \exp_args:NNOo #1#2#3#4{\exp_after:NN\exp_args:NNo +\def_long_new:Npn \exp_args:NNOo #1#2#3#4{\exp_after:NN\exp_args:NNo \exp_after:NN#1\exp_after:NN#2\exp_after:NN#3\exp_after:NN{#4}} -\def_new:Npn \exp_args:NNNo #1#2#3#4{\exp_after:NN#1\exp_after:NN#2 +\def_long_new:Npn \exp_args:NNNo #1#2#3#4{\exp_after:NN#1\exp_after:NN#2 \exp_after:NN#3\exp_after:NN{#4}} -\def_new:Npn \exp_args:Nc #1#2{\exp_after:NN#1\cs:w#2\cs_end:} -\def_new:Npn \exp_args:NNc #1#2#3{\exp_after:NN#1\exp_after:NN#2 +\def_long_new:Npn \exp_args:Nc #1#2{\exp_after:NN#1\cs:w#2\cs_end:} +\def_long_new:Npn \exp_args:NNc #1#2#3{\exp_after:NN#1\exp_after:NN#2 \cs:w#3\cs_end:} -\def_new:Npn \exp_args:NOc#1#2#3{\exp_after:NN\exp_args:No\exp_after:NN +\def_long_new:Npn \exp_args:NOc#1#2#3{\exp_after:NN\exp_args:No\exp_after:NN #1\exp_after:NN#2\cs:w#3\cs_end:} -\def_new:Npn \exp_args:Ncc #1#2#3{\exp_after:NN#1 +\def_long_new:Npn \exp_args:Ncc #1#2#3{\exp_after:NN#1 \cs:w#2\exp_after:NN\cs_end:\cs:w#3\cs_end:} -\def_new:Npn \exp_args:Nccc #1#2#3#4{\exp_after:NN#1 +\def_long_new:Npn \exp_args:Nccc #1#2#3#4{\exp_after:NN#1 \cs:w#2\exp_after:NN\cs_end:\cs:w#3\exp_after:NN \cs_end:\cs:w #4\cs_end:} -\def_new:Npn \exp_args:Nco #1#2#3{\exp_after:NN#1\cs:w#2\exp_after:NN +\def_long_new:Npn \exp_args:Nco #1#2#3{\exp_after:NN#1\cs:w#2\exp_after:NN \cs_end:\exp_after:NN{#3}} \def:Npn\exp_def_form:nnn#1#2#3{ \exp_after:NN diff --git a/Master/texmf-dist/tex/latex/expl3/l3int.sty b/Master/texmf-dist/tex/latex/expl3/l3int.sty index cbbfa2e9590..b329688b3eb 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3int.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3int.sty @@ -48,9 +48,11 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3int.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3int.dtx 702 2007-11-27 14:21:49Z morten $ {L3 Experimental Integer module} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3num} \let_new:NN \int_to_roman:w \tex_romannumeral:D \let_new:NN \int_to_number:w \tex_number:D @@ -69,6 +71,10 @@ \def:Npn \int_decr:N #1{\int_add:Nn#1\c_minus_one} \def:Npn \int_gincr:N #1{\int_gadd:Nn#1\c_one} \def:Npn \int_gdecr:N #1{\int_gadd:Nn#1\c_minus_one} +\def:Npn \int_incr:c {\exp_args:Nc\int_incr:N} +\def:Npn \int_decr:c {\exp_args:Nc\int_decr:N} +\def:Npn \int_gincr:c {\exp_args:Nc\int_gincr:N} +\def:Npn \int_gdecr:c {\exp_args:Nc\int_gdecr:N} \let:NN \int_new:N \newcount% allocation better nick the LaTeX one... \def_new:Npn \int_new:c {\exp_args:Nc \int_new:N} \def_new:Npn \int_set:Nn #1#2{#1 \int_eval:w #2\scan_stop: @@ -95,10 +101,11 @@ \def_new:Npn \int_gsub:Nn { \pref_global:D \int_sub:Nn } +\def_new:Npn \int_gadd:cn{\exp_args:Nc\int_gadd:Nn} +\def_new:Npn \int_sub:cn{\exp_args:Nc\int_sub:Nn} +\def_new:Npn \int_gsub:cn{\exp_args:Nc\int_gsub:Nn} \let_new:NN \int_use:N \tex_the:D \def_new:Npn \int_use:c #1{\int_use:N \cs:w#1\cs_end:} -\def_new:Npn \int_gincr:c {\exp_args:Nc \int_gincr:N} -\def_new:Npn \int_gdecr:c {\exp_args:Nc \int_gdecr:N} \def_new:Npn \int_to_arabic:n #1{\int_to_number:w \int_eval:n{#1}} \def_new:Npn \int_roman_lcuc_mapping:Nnn #1#2#3{ \def:cpn {int_to_lc_roman_#1:}{#2} @@ -161,7 +168,7 @@ \int_Alph_default_conversion_rule:n } \def_new:Npn \int_to_symbol:n #1{ - \mode_math:TF + \mode_if_math:TF { \int_convert_number_with_rule:nnN {#1}{9} \int_symbol_math_conversion_rule:n @@ -214,7 +221,28 @@ \int_pre_eval_two_args:Nnn\int_div_truncate_raw:nn } \def_new:Npn \int_div_truncate_raw:nn #1#2 { - \int_eval:n{ (2*#1 - #2) / (2* #2) } + \int_eval:w + \if_num:w \int_eval:w#1 = \c_zero + 0 + \else: + (#1 + \if_num:w \int_eval:w #1 < \c_zero + \if_num:w \int_eval:w#2 < \c_zero + -( #2 + + \else: + +( #2 - + \fi: + \else: + \if_num:w \int_eval:w #2 < \c_zero + +( #2 + + \else: + -( #2 - + \fi: + \fi: + 1)/2) + \fi: + /(#2) + \scan_stop: } \def_new:Npn \int_div_round:nn { \int_pre_eval_two_args:Nnn\int_div_round_raw:nn @@ -227,6 +255,9 @@ \let_new:NN \int_compare:nNnTF \num_compare:nNnTF \let_new:NN \int_compare:nNnT \num_compare:nNnT \let_new:NN \int_compare:nNnF \num_compare:nNnF +\let_new:NN \int_max_of:nn \num_max_of:nn +\let_new:NN \int_min_of:nn \num_min_of:nn +\let_new:NN \int_abs:nn \num_abs:nn \let_new:NN \int_compare_p:nNn \num_compare_p:nNn \def_new:Npn \int_if_odd_p:n #1 { \if_num_odd:w \int_eval:n{#1} @@ -236,16 +267,16 @@ \fi: } \def_test_function_new:npn {int_if_odd:n}#1{\if_num_odd:w \int_eval:n{#1}} -\def_new:Npn \int_whiledo:nNnT #1#2#3#4{ +\def_long_new:Npn \int_whiledo:nNnT #1#2#3#4{ \int_compare:nNnT {#1}#2{#3}{#4 \int_whiledo:nNnT {#1}#2{#3}{#4}} } -\def_new:Npn \int_whiledo:nNnF #1#2#3#4{ +\def_long_new:Npn \int_whiledo:nNnF #1#2#3#4{ \int_compare:nNnF {#1}#2{#3}{#4 \int_whiledo:nNnF {#1}#2{#3}{#4}} } -\def_new:Npn \int_dowhile:nNnT #1#2#3#4{ +\def_long_new:Npn \int_dowhile:nNnT #1#2#3#4{ #4 \int_compare:nNnT {#1}#2{#3}{\int_dowhile:nNnT {#1}#2{#3}{#4}} } -\def_new:Npn \int_dowhile:nNnF #1#2#3#4{ +\def_long_new:Npn \int_dowhile:nNnF #1#2#3#4{ #4 \int_compare:nNnF {#1}#2{#3}{\int_dowhile:nNnF {#1}#2{#3}{#4}} } \def_new:Npn \int_get_sign_and_digits:n #1{ diff --git a/Master/texmf-dist/tex/latex/expl3/l3io.sty b/Master/texmf-dist/tex/latex/expl3/l3io.sty index d20b5d05f85..608c6b7c624 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3io.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3io.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3io.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3io.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental i/o module} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3toks}\par \let:NN \iow_new:N \newwrite \def_new:Npn \iow_new:c {\exp_args:Nc \iow_new:N} diff --git a/Master/texmf-dist/tex/latex/expl3/l3keyval.sty b/Master/texmf-dist/tex/latex/expl3/l3keyval.sty index d5612e7e120..683d121e3aa 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3keyval.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3keyval.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3keyval.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3keyval.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental keyval processing} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3quark} \RequirePackage{l3toks} \RequirePackage{l3int} diff --git a/Master/texmf-dist/tex/latex/expl3/l3messages.sty b/Master/texmf-dist/tex/latex/expl3/l3messages.sty index aead4018e11..eee8eab7c8b 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3messages.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3messages.sty @@ -15,7 +15,7 @@ %% Do not distribute a modified version of this file. %% %% -%% File: l3messages.dtx Copyright (C) 1990-2006 LaTeX3 project +%% File: l3messages.dtx Copyright (C) 1990-2007 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 @@ -48,6 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} +\GetIdInfo$Id: l3messages.dtx 673 2007-09-28 20:50:33Z mittelba $ + {L3 Experimental LaTeX Messages module} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3basics} \RequirePackage{l3tlp} \RequirePackage{l3expan} @@ -55,8 +59,7 @@ \RequirePackage{l3io} \RequirePackage{l3int} \RequirePackage{l3toks} -\GetIdInfo$Id: l3messages.dtx 573 2006-08-21 20:59:37Z morten $ - {L3 Experimental LaTeX Messages module} +\RequirePackage{l3token} \tlp_new:Nn \g_file_curr_name_tlp {no~file} \let_new:NN \err_message:x \tex_errmessage:D \def_new:Npn \text_put_sp: {~} @@ -83,16 +86,16 @@ \def_new:Npn \l_err_label_token {} \int_set:Nn\tex_errorcontextlines:D\c_minus_one \def_new:Npn \err_info:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_log:x {#1~\io_show_file_lineno:}} \def_new:Npn \err_warn:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1~\io_show_file_lineno:}} \def_new:Npn \err_info_noline:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_log:x {#1}} \def_new:Npn \err_warn_noline:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1}} \def_new:Npn \err_interrupt:NNw #1#2{\let:NwN \l_err_label_token #2 \group_begin: @@ -102,12 +105,12 @@ %\clearshortrefmaps \tex_input:D #1~\err_display_aux:w} \def_new:Npn \err_fatal:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1~\io_show_file_lineno:} \tex_end:D } \def_new:Npn \err_fatal_noline:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1} \tex_end:D } @@ -126,9 +129,9 @@ {\err_latex_bug:x{You~closed~the~wrong~error~file~`#1'.~ Open~is~`\g_err_curr_fname'.}} \iow_long_unexpanded:Nn \c_iow_err_stream {\err_latex_bug:x{Didn't~find~the~ - correct~error~message~to~show.\iow_newline + correct~error~message~to~show.\iow_newline: Was~searching~for~a~function~ - with~the~following~meaning:\iow_newline + with~the~following~meaning:\iow_newline: \token_to_string:N\token_to_meaning:N \token_to_string:N\l_err_label_token} \group_end:} @@ -137,7 +140,7 @@ \tlp_gset_eq:NN\g_err_curr_fname\c_empty_tlp } \def_new:Npn \err_interrupt_new:NNNnnn #1{ - \group_begin: \tex_catcode:D`\#\c_other_char_code + \group_begin: \char_set_catcode:nn{`\#}{12} \if_meaning:NN#1\g_err_curr_fname \else: \err_latex_bug:x{Error~text~goes~to~wrong~err~file:~ @@ -154,9 +157,9 @@ \cmd_declare:Nnn\err_display_aux:w [#2]{ \group_end: \toks_gset:Nx\g_err_help_toks{#4} - \io_put_term:x{LaTeX~error~\io_show_file_lineno:.\iow_newline + \io_put_term:x{LaTeX~error~\io_show_file_lineno:.\iow_newline: \text_put_sp:\text_put_four_sp: \text_put_sp: - See~LaTeX~manual~for~explanation.\iow_newline + See~LaTeX~manual~for~explanation.\iow_newline: \text_put_sp:\text_put_four_sp: \text_put_sp: Type~\text_put_sp: H~<return>~\text_put_sp: for~ immediate~help.} @@ -198,9 +201,9 @@ } \err_file_new:Nn \c_kernel_err_tlp {l3in2e.err} \def:Npn\err_help_ignored: { - Your~command~was~ignored.\iow_newline + Your~command~was~ignored.\iow_newline: Type \text_put_sp: I~<command>~<return> - \text_put_sp: to~replace~it~with~another~command,\iow_newline + \text_put_sp: to~replace~it~with~another~command,\iow_newline: or~\text_put_sp: <return> \text_put_sp: to~continue~without~it.} \def:Npn\err_help_textlost: { @@ -208,7 +211,7 @@ \def:Npn\err_help_return_or_X: { Try~typing\text_put_sp: <return> - \text_put_sp: to~proceed.\iow_newline + \text_put_sp: to~proceed.\iow_newline: If~that~doesn't~work,~type \text_put_sp: X~<return>\text_put_sp: to~quit.} @@ -219,10 +222,10 @@ \err_kernel_interrupt_new:NNnnn\cs_free_p:N{1} {Command~name~`\tex_string:D#1'~already~used} {You~tried~to~define~a~command~which~already~has~ - a~meaning.\iow_newline + a~meaning.\iow_newline: If~you~really~want~to~redefine~it~try~ \token_to_string:N\cmd_declare:Nnn\text_put_sp: - next~time.\iow_newline + next~time.\iow_newline: For~this~run~I~will~ignore~your~definition.} {} @@ -235,7 +238,7 @@ \err_kernel_interrupt_new:NNnnn\newcnt{0} {No~such~counter} {The~counter~name~mentioned~in~the~operation~is~not~ - known~to~me.\iow_newline + known~to~me.\iow_newline: Check~the~spelling.} {} diff --git a/Master/texmf-dist/tex/latex/expl3/l3names.sty b/Master/texmf-dist/tex/latex/expl3/l3names.sty index e14b70f41cb..485ad03e134 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3names.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3names.sty @@ -47,19 +47,38 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\def\GetIdInfo$Id: #1.dtx #2 #3-#4-#5 #6 #7$#8{% - \def\fileversion{#2}% - \def\filedate{#3/#4/#5}% - \ProvidesPackage{#1}[#3/#4/#5 v#2 #8]% +\begingroup +\def\GetIdInfo$#1 #2.#3 #4 #5 #6 #7${% + \GetIdInfoAux #5\relax{#2}#5\relax{#4}% } -\GetIdInfo$Id: l3names.dtx 577 2006-11-21 18:10:26Z morten $ +\def\GetIdInfoAux #1#2#3#4#5#6\relax{% + \ifx#5/% + \expandafter\GetIdInfoAuxCVS + \else + \expandafter\GetIdInfoAuxSVN + \fi +} +\def\GetIdInfoAuxCVS #1#2\relax#3#4{% + \gdef\fileversion{#3}% + \gdef\filedate{#2}% + \gdef\filedescription{#4}% + \ProvidesPackage{#1}[#2 v#3 #4]% +} +\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{% + \gdef\fileversion{#5}% + \gdef\filedate{#2/#3/#4}% + \gdef\filedescription{#6}% + \ProvidesPackage{#1}[#2/#3/#4 v#5 #6] +} +\GetIdInfo$Id: l3names.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental Naming Scheme for TeX Primitives} -\catcode`\ =9\relax -\catcode`\^^I=9\relax -\catcode`\^^M=9\relax -\catcode`\~=10\relax -\catcode`\_=11\relax\catcode`\:=11\relax -\catcode`\@=11\relax % as long as we use old LaTeX stuff. +\endgroup +\catcode126=10\relax % tilde is a space char. +\catcode32=9\relax % space is ignored +\catcode9=9\relax % tab also ignored +\endlinechar=32\relax % endline is space +\catcode95=11\relax % underscore letter +\catcode58=11\relax % colon letter \let\tex_let:D\let \DeclareOption{removeoldnames}{ \long\def\name_undefine:N#1{ @@ -565,37 +584,96 @@ \name_primitive:NN \pdfsetrandomseed \pdf_setrandomseed:D \name_primitive:NN \pdfnoligatures \pdf_noligatures:D \name_primitive:NN \textdir \aleph_textdir:D -\tex_def:D\CodeStart{% - \tex_catcode:D `\ =9\tex_relax:D - \tex_catcode:D `\^^M=9\tex_relax:D - \tex_catcode:D `\^^I=9\tex_relax:D - \tex_catcode:D `\~=10\tex_relax:D - \tex_catcode:D `\@=11\tex_relax:D % For LaTeX2e - \tex_catcode:D `\_=11\tex_relax:D - \tex_catcode:D `\:=11\tex_relax:D} -\tex_def:D\CodeStop{ - \tex_catcode:D `\ =10\tex_relax:D - \tex_catcode:D `\^^M=5\tex_relax:D - \tex_catcode:D `\^^I=10\tex_relax:D - \tex_catcode:D `\~=13\tex_relax:D - \tex_catcode:D `\@=12\tex_relax:D % For LaTeX2e - \tex_catcode:D `\_=8\tex_relax:D - \tex_catcode:D `\:=12\tex_relax:D} +\tex_def:D\ExplSyntaxOn{ + \tex_def:D\ExplSyntaxStatus{00} + \tex_catcode:D 126=10 \tex_relax:D % tilde is a space char. + \tex_catcode:D 32=9 \tex_relax:D % space is ignored + \tex_catcode:D 9=9 \tex_relax:D % tab also ignored + \tex_endlinechar:D =32 \tex_relax:D % endline is space + \tex_catcode:D 95=11 \tex_relax:D % underscore letter + \tex_catcode:D 58=11 \tex_relax:D % colon letter +} +\tex_def:D\ExplSyntaxOff{ + \tex_def:D\ExplSyntaxStatus{01} + \tex_catcode:D 126=13 \tex_relax:D + \tex_catcode:D 32=10 \tex_relax:D + \tex_catcode:D 9=10 \tex_relax:D + \tex_endlinechar:D =13 \tex_relax:D + \tex_catcode:D 95=8 \tex_relax:D + \tex_catcode:D 58=12 \tex_relax:D +} +\tex_let:D \CodeStart \ExplSyntaxOn +\tex_let:D \CodeStop \ExplSyntaxOff \tex_def:D \NamesStart{ - \tex_catcode:D `\_=11\scan_stop: - \tex_catcode:D `\:=11\scan_stop: - } + \tex_catcode:D `\_=11\tex_relax:D + \tex_catcode:D `\:=11\tex_relax:D +} \tex_def:D \NamesStop{ - \tex_catcode:D `\_=8\scan_stop: - \tex_catcode:D `\:=12\scan_stop: - } -\tex_def:D\GetIdInfo{\CodeStop\GetIdInfoAux} -\tex_def:D\GetIdInfoAux$#1~#2.dtx~#3~#4-#5-#6~#7~#8$#9{% - \tex_def:D \fileversion{#3}% - \tex_def:D \filedate{#4/#5/#6}% - \ProvidesPackage{#2}[#4/#5/#6~ v#3~ #9]% - \CodeStart + \tex_catcode:D `\_=8\tex_relax:D + \tex_catcode:D `\:=12\tex_relax:D +} +\tex_def:D\GetIdInfo{ + \tex_begingroup:D + \tex_catcode:D 32=10 \tex_relax:D % needed? Probably for now. + \GetIdInfoAuxi:w +} +\tex_def:D\GetIdInfoAuxi:w$#1~#2.#3~#4~#5~#6~#7~#8$#9{ + \tex_endgroup:D + \tex_def:D\filename{#2} + \tex_def:D\fileversion{#4} + \tex_def:D\filedescription{#9} + \tex_def:D\fileauthor{#7} + \GetIdInfoAuxii:w #5\tex_relax:D + #3\tex_relax:D#5\tex_relax:D#6\tex_relax:D } +\tex_def:D\GetIdInfoAuxii:w #1#2#3#4#5#6\tex_relax:D{ + \tex_ifx:D#5/ + \tex_expandafter:D\GetIdInfoAuxCVS:w + \tex_else:D + \tex_expandafter:D\GetIdInfoAuxSVN:w + \tex_fi:D +} +\tex_def:D\GetIdInfoAuxCVS:w #1,v\tex_relax:D + #2\tex_relax:D#3\tex_relax:D{ + \tex_def:D\filedate{#2} + \tex_def:D\filenameext{#1} + \tex_def:D\filetimestamp{#3} +} +\tex_def:D\GetIdInfoAuxSVN:w #1\tex_relax:D#2-#3-#4 + \tex_relax:D#5Z\tex_relax:D{ + \tex_def:D\filenameext{#1} + \tex_def:D\filedate{#2/#3/#4} + \tex_def:D\filetimestamp{#5} +} +\tex_def:D \ProvidesExplPackage#1#2#3#4{ + \ProvidesPackage{#1}[#2~v#3~#4] + \ExplSyntaxOn +} +\tex_def:D \ProvidesExplClass#1#2#3#4{ + \ProvidesClass{#1}[#2~v#3~#4] + \ExplSyntaxOn +} +\tex_let:D \org@onefilewithoptions\@onefilewithoptions +\tex_def:D \@onefilewithoptions#1[#2][#3]#4{ + \tex_edef:D \ExplSyntaxStack{ \ExplSyntaxStatus\ExplSyntaxStack } + \ExplSyntaxOff + \org@onefilewithoptions{#1}[{#2}][{#3}]{#4} + \tex_expandafter:D\ExplSyntaxPopStack\ExplSyntaxStack\tex_relax:D +} +\g@addto@macro\@popfilename{% + \tex_ifnum:D\tex_the:D\tex_catcode:D`\@=12\tex_relax:D + \ExplSyntaxOff + \tex_fi:D +} +\tex_def:D\ExplSyntaxPopStack#1#2#3\tex_relax:D{ + \tex_def:D\ExplSyntaxStack{#3} + \tex_if:D#1#2 + \ExplSyntaxOn + \tex_else:D + \ExplSyntaxOff + \tex_fi:D +} +\tex_def:D\ExplSyntaxStack{} \tex_let:D\tex_input:D \@@input \tex_let:D\tex_underline:D \@@underline \tex_let:D\tex_end:D \@@end @@ -605,15 +683,12 @@ \tex_let:D\tex_hyphen:D \@@hyph \tex_let:D\par \tex_par:D \tex_ifx:D\name_undefine:N\@gobble + \AtEndOfPackage{\ExplSyntaxOff} \tex_def:D\name_pop_stack:w{} - \g@addto@macro\@popfilename{% - \tex_ifnum:D12=\tex_the:D\tex_catcode:D`@ - \CodeStop - \tex_fi:D} \tex_else:D \tex_def:D\ProvidesPackage{ \tex_begingroup:D - \CodeStop + \ExplSyntaxOff \package_provides:w} \tex_def:D\package_provides:w#1#2[#3]{ \tex_endgroup:D @@ -621,7 +696,7 @@ \tex_expandafter:D\tex_xdef:D \tex_csname:D ver@#1.sty\tex_endcsname:D{#1}} \tex_def:D\name_pop_stack:w#1\relax{% - \CodeStop + \ExplSyntaxOff \tex_expandafter:D\@p@pfilename\@currnamestack\@nil \tex_let:D\default@ds\@unknownoptionerror \tex_global:D\tex_let:D\ds@\@empty @@ -635,7 +710,7 @@ \tex_def:D\RequirePackage#1{ \tex_expandafter:D\tex_ifx:D \tex_csname:D ver@#1.sty\tex_endcsname:D\tex_relax:D - \CodeStart + \ExplSyntaxOn \tex_input:D#1.sty\tex_relax:D \tex_fi:D} \tex_fi:D diff --git a/Master/texmf-dist/tex/latex/expl3/l3num.sty b/Master/texmf-dist/tex/latex/expl3/l3num.sty index 3392ecd86f2..89c12cdb625 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3num.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3num.sty @@ -48,9 +48,13 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3num.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3num.dtx 702 2007-11-27 14:21:49Z morten $ {L3 Experimental token numbers} + +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3expan}\par +\let_new:NN \num_value:w \tex_number:D \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 @@ -89,7 +93,9 @@ \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} \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} \let_new:NN\num_use:N \use_arg_i:n \let_new:NN\num_use:c \cs_use:c \def_test_function_new:npn {num_compare:nNn}#1#2#3{ @@ -103,12 +109,17 @@ \c_false \fi: } +\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}} \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 -\engine_aleph:TF +\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: diff --git a/Master/texmf-dist/tex/latex/expl3/l3precom.sty b/Master/texmf-dist/tex/latex/expl3/l3precom.sty index 9f67483781a..39bf566c3f8 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3precom.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3precom.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3precom.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3precom.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental precompilation module} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3num} \RequirePackage{l3io} \RequirePackage{l3seq} diff --git a/Master/texmf-dist/tex/latex/expl3/l3prg.sty b/Master/texmf-dist/tex/latex/expl3/l3prg.sty index fad727278da..ccb7657e076 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3prg.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3prg.sty @@ -48,24 +48,27 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3prg.dtx 574 2006-08-21 23:30:10Z morten $ +\GetIdInfo$Id: l3prg.dtx 697 2007-11-27 14:14:54Z morten $ {L3 Experimental control structures} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3quark} \RequirePackage{l3toks} \RequirePackage{l3int} -\def_new:Npn \mode_vertical_p: { +\def_new:Npn \mode_if_vertical_p: { \if_mode_vertical: \c_true \else: \c_false\fi:} -\def_test_function_new:npn{mode_vertical:}{\if_mode_vertical:} -\def_new:Npn \mode_horizontal_p: { +\def_test_function_new:npn{mode_if_vertical:}{\if_mode_vertical:} +\def_new:Npn \mode_if_horizontal_p: { \if_mode_horizontal: \c_true \else: \c_false\fi:} -\def_test_function_new:npn{mode_horizontal:}{\if_mode_horizontal:} -\def_new:Npn \mode_inner_p: { +\def_test_function_new:npn{mode_if_horizontal:}{\if_mode_horizontal:} +\def_new:Npn \mode_if_inner_p: { \if_mode_inner: \c_true \else: \c_false\fi:} -\def_test_function_new:npn{mode_inner:}{\if_mode_inner:} -\def_test_function_new:npn{mode_math:} { +\def_test_function_new:npn{mode_if_inner:}{\if_mode_inner:} +\def_test_function_new:npn{mode_if_math:} { \scan_align_safe_stop: \if_mode_math: } -\def_new:Npn \group_align_safe_begin: {\if_false:{\fi:\if_num:w0=`}\fi:} -\def_new:Npn \group_align_safe_end: {\if_num:w0=`{\fi:\if_false:}\fi:} +\def_new:Npn \group_align_safe_begin: { + \if_false:{\fi:\if_num:w`}=\c_zero\fi:} +\def_new:Npn \group_align_safe_end: {\if_num:w`{=\c_zero}\fi:} \def_new:Npn \scan_align_safe_stop: { \num_compare:nNnT \etex_currentgrouptype:D = \c_six { @@ -190,15 +193,15 @@ } } \def_new:Npn \bool_new:N #1 { \let_new:NN #1 \c_false } -\def_new:Npn \bool_new:c #1 { \let_new:cN #1 \c_false } +\def_new:Npn \bool_new:c #1 { \let_new:cN {#1} \c_false } \def_new:Npn \bool_set_true:N #1 { \let:NN #1 \c_true } -\def_new:Npn \bool_set_true:c #1 { \let:cN #1 \c_true } +\def_new:Npn \bool_set_true:c #1 { \let:cN {#1} \c_true } \def_new:Npn \bool_set_false:N #1 { \let:NN #1 \c_false } -\def_new:Npn \bool_set_false:c #1 { \let:cN #1 \c_false } +\def_new:Npn \bool_set_false:c #1 { \let:cN {#1} \c_false } \def_new:Npn \bool_gset_true:N #1 { \glet:NN #1 \c_true } -\def_new:Npn \bool_gset_true:c #1 { \glet:cN #1 \c_true } +\def_new:Npn \bool_gset_true:c #1 { \glet:cN {#1} \c_true } \def_new:Npn \bool_gset_false:N #1 { \glet:NN #1 \c_false } -\def_new:Npn \bool_gset_false:c #1 { \glet:cN #1 \c_false } +\def_new:Npn \bool_gset_false:c #1 { \glet:cN {#1} \c_false } \let_new:NN \bool_set_eq:NN \let:NN \let_new:NN \bool_set_eq:Nc \let:Nc \let_new:NN \bool_set_eq:cN \let:cN @@ -261,55 +264,36 @@ \def_long_new:Npn \prg_dowhile:nF #1#2{ #2 #1 {\prg_dowhile:nF {#1}{#2}} } -\let_new:NN \prg_if_predicate:nTF \bool_if:NTF -\let_new:NN \prg_if_predicate:nT \bool_if:NT -\let_new:NN \prg_if_predicate:nF \bool_if:NF -\def_new:Npn \prg_if_predicate_or_p:nn #1#2{ - \if_num:w #1#2<\c_hundred_one - \c_true - \else: - \c_false - \fi: -} -\def_new:Npn \prg_if_predicate_and_p:nn #1#2{ - \if_case:w #1#2 ~ - \c_true - \else: - \c_false - \fi: +\def_long_new:Npn \predicate_p:n #1{ + \group_align_safe_begin: + \exp_after:NN \predicate_auxi:NN + \int_to_roman:w-`\q #1 02\scan_stop: } -\def_new:Npn \prg_if_predicate_not_p:n #1{ - \if_case:w #1 ~ - \c_false - \or: - \c_true - \fi: +\def_long_test_function_new:npn {predicate:n}#1{ + \group_align_safe_begin: + \if:w \exp_after:NN \predicate_auxi:NN + \int_to_roman:w-`\q #1 02\scan_stop: } -\def_long_new:Npn \prg_if_predicate_ands_p:n #1{ - \exp_after:NN \prg_if_predicate_andor_aux:NNN \exp_after:NN \c_true - \int_to_roman:w -`0 #1 \scan_stop: \scan_stop: +\def_new:Npn \predicate_auxi:NN 0 #1{ + \exp_after:NN \predicate_auxii:NNN \exp_after:NN #1 + \int_to_roman:w-`\q } -\def_long_new:Npn \prg_if_predicate_ors_p:n #1{ - \exp_after:NN \prg_if_predicate_andor_aux:NNN \exp_after:NN \c_false - \int_to_roman:w -`0 #1 \scan_stop: \scan_stop: +\def_new:Npn \predicate_auxii:NNN #1#2#3{ + \cs_use:c{predicate_#2#3_#1:w} } +\def_new:cpn{predicate_&&_0:w}{ + \exp_after:NN \predicate_auxi:NN\int_to_roman:w-`\q } -\def_new:Npn \prg_if_predicate_andor_aux:NNN #1#2#3{ - \token_if_eq_meaning:NNTF \scan_stop: #2 - { #1 } - { - \int_compare:nNnTF #3 = #1 - { \exp_after:NN \prg_if_predicate_andor_aux:NNN } - { \exp_after:NN \prg_if_predicate_andor_break:NNN } - \exp_after:NN #1 \int_to_roman:w -`0 - } +\def_long_new:cpn{predicate_&&_1:w} #1 02\scan_stop:{ + \group_align_safe_end: 01} +\def_long_new:cpn{predicate_||_0:w} #1 02\scan_stop:{ + \group_align_safe_end: 00} +\def_new:cpn{predicate_||_1:w}{ + \exp_after:NN \predicate_auxi:NN\int_to_roman:w-`\q } -\def_new:Npn \prg_if_predicate_andor_break:NNN #1#2#3{ - \token_if_eq_meaning:NNTF \scan_stop: #2 - { \if:w #1\c_false\else:\c_true\fi: } - { - \exp_after:NN \prg_if_predicate_andor_break:NNN \exp_after:NN #1 - \int_to_roman:w -`0 - } +\def_new:cpn{predicate_02_0:w}\scan_stop:{ \group_align_safe_end: 00 } +\def_new:cpn{predicate_02_1:w}\scan_stop:{ \group_align_safe_end: 01 } +\def_long_new:Npn \predicate_not_p:n #1{ + \if:w \predicate_p:n{#1} \c_false \else: \c_true \fi: } \def_new:NNn \prg_define_quicksort:nnn 3 { \def_long:cNx{#1_quicksort:n}1{ diff --git a/Master/texmf-dist/tex/latex/expl3/l3prop.sty b/Master/texmf-dist/tex/latex/expl3/l3prop.sty index fe956efcdab..67c2efc2d3a 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3prop.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3prop.sty @@ -48,86 +48,98 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3prop.dtx 581 2006-12-12 12:28:27Z morten $ +\GetIdInfo$Id: l3prop.dtx 668 2007-09-27 15:54:23Z mittelba $ {L3 Experimental Property Lists} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3toks}\par +\RequirePackage{l3quark}\par +\quark_new:N\q_prop + \def_new:Npn \prop_new:N #1{\toks_new:N #1} \def_new:Npn \prop_new:c {\exp_args:Nc \prop_new:N} \let_new:NN \prop_clear:N \toks_clear:N \def_new:Npn \prop_clear:c {\exp_args:Nc\prop_clear:N} \let_new:NN \prop_gclear:N \toks_gclear:N \def_new:Npn \prop_gclear:c {\exp_args:Nc\prop_gclear:N} -\let_new:NN \prop_use:N \toks_use:N -\def_long_new:Npn \prop_split_aux:NNn #1#2#3{ - \def:Npn \tmp:w ##1#2##2##3\q_stop {#3{##1}{##2}{##3}} - \exp_after:NN\tmp:w \prop_use:N#1#2\q_no_value \q_stop} -\def_long_new:NNn \prop_get:NNN 2{ - \prop_split_aux:NNn #1#2\prop_get_aux:w} -\def_long_new:NNn \prop_get_aux:w 4{\toks_set:Nn#4{#2}} -\def_new:Npn \prop_get:cNN { \exp_args:Nc \prop_get:NNN } -\def_long_new:NNn \prop_gget:NNN 2{ - \prop_split_aux:NNn #1#2\prop_gget_aux:w} -\def_new:Npn \prop_gget:NcN {\exp_args:NNc \prop_gget:NNN} -\def_new:Npn \prop_gget:cNN {\exp_args:Nc \prop_gget:NNN} -\def_long_new:NNn \prop_gget_aux:w 4{\toks_gset:Nn#4{#2}} -\def_long_new:NNn \prop_get_gdel:NNN 3{ - \prop_split_aux:NNn #1#2{\prop_get_del_aux:w #3{\toks_gset:Nn #1}#2}} +\def_long_new:Npn \prop_split_aux:Nnn #1#2#3{ + \def:Npn \tmp:w ##1\q_prop#2\q_prop##2##3\q_stop {#3{##1}{##2}{##3}} + \exp_after:NN\tmp:w \toks_use:N#1\q_prop#2\q_prop\q_no_value \q_stop +} +\def_long_new:NNn \prop_get:NnN 2{ + \prop_split_aux:Nnn #1{#2}\prop_get_aux:w} +\def_long_new:NNn \prop_get_aux:w 4{\tlp_set:Nx#4{\exp_not:n{#2}}} +\def_new:Npn \prop_get:cnN { \exp_args:Nc \prop_get:NnN } +\def_long_new:NNn \prop_gget:NnN 2{ + \prop_split_aux:Nnn #1{#2}\prop_gget_aux:w} +\def_new:Npn \prop_gget:NcN {\exp_args:NNc \prop_gget:NnN} +\def_new:Npn \prop_gget:cnN {\exp_args:Nc \prop_gget:NnN} +\def_long_new:NNn \prop_gget_aux:w 4{\tlp_gset:Nx#4{\exp_not:n{#2}}} +\def_long_new:NNn \prop_get_gdel:NnN 3{ + \prop_split_aux:Nnn #1{#2}{\prop_get_del_aux:w #3{\toks_gset:Nn #1}{#2}}} \def_long_new:NNn \prop_get_del_aux:w 6{ - \quark_if_no_value:nF{#5} { - \def:Npn \tmp:w ##1#3\q_no_value {#2{#4##1}} + \tlp_set:Nx #1{\exp_not:n{#5}} + \quark_if_no_value:NF #1 { + \def:Npn \tmp:w ##1\q_prop#3\q_prop\q_no_value {#2{#4##1}} \tmp:w #6} } -\def_long_new:NNn \prop_put:NNn 2{ - \prop_split_aux:NNn #1#2{ - \toks_clear:N #1 - \prop_put_aux:w {\toks_put_right:Nn #1}#2} +\def_long_new:NNn \prop_put:Nnn 2{ + \prop_split_aux:Nnn #1{#2}{ + \prop_clear:N #1 + \prop_put_aux:w {\toks_put_right:Nn #1}{#2}} } -\def_new:Npn \prop_put:ccn {\exp_args:Ncc \prop_put:NNn } -\def_long_new:NNn \prop_gput:NNn 2{ - \prop_split_aux:NNn #1#2{ - \toks_gclear:N #1 - \prop_put_aux:w {\toks_gput_right:Nn #1}#2} +\def_new:Npn \prop_put:ccn {\exp_args:Ncc \prop_put:Nnn } + +\def_long_new:NNn \prop_gput:Nnn 2{ + \prop_split_aux:Nnn #1{#2}{ + \prop_gclear:N #1 + \prop_put_aux:w {\toks_gput_right:Nn #1}{#2}} } -\def_new:Npn \prop_gput:NNo {\exp_args:NNNo \prop_gput:NNn} -\def_new:Npn \prop_gput:NNx {\exp_args:Nnnx \prop_gput:NNn} -\def_new:Npn \prop_gput:NOx {\exp_args:Nnox \prop_gput:NNn} -\def_new:Npn \prop_gput:NOo {\exp_args:NNOo \prop_gput:NNn} -\def_new:Npn \prop_gput:Ncn {\exp_args:NNc \prop_gput:NNn } -\def_new:Npn \prop_gput:OOo {\exp_args:NOOo \prop_gput:NNn} -\def_new:Npn \prop_gput:cNn {\exp_args:Nc \prop_gput:NNn} -\def_new:Npn \prop_gput:ccn {\exp_args:Ncc \prop_gput:NNn} -\def_new:Npn \prop_gput:cco {\exp_args:Ncco \prop_gput:NNn} -\def_new:Npn \prop_gput:ccx {\exp_args:Nccx \prop_gput:NNn} + \def_long_new:NNn \prop_put_aux:w 6{ - #1{#2{#6}#3} - \quark_if_no_value:nF {#4} + #1{\q_prop#2\q_prop{#6}#3} + \tlist_if_empty:nF{#5} { - \def:Npn \tmp:w ##1#2\q_no_value {#1{##1}} + \def:Npn \tmp:w ##1\q_prop#2\q_prop\q_no_value {#1{##1}} \tmp:w #5 } } -\def_long_new:NNn \prop_del:NN 2{ - \prop_split_aux:NNn #1#2{\prop_del_aux:w {\toks_set:Nn #1}#2}} -\def_long_new:NNn \prop_gdel:NN 2{ - \prop_split_aux:NNn #1#2{\prop_del_aux:w {\toks_gset:Nn #1}#2}} -\def_long_new:NNn \prop_del_aux:w 5{\quark_if_no_value:nF {#4} - {\def:Npn \tmp:w ##1#2\q_no_value {#1{#3##1}}\tmp:w #5}} -\def_new:NNn \prop_if_in:NNTF 2{ - \prop_split_aux:NNn #1#2\prop_if_in_aux:w} -\def_new:Npn \prop_if_in:NOTF {\exp_args:Nno \prop_if_in:NNTF} -\def_new:Npn \prop_if_in:ccTF {\exp_args:Ncc \prop_if_in:NNTF} +\def_new:Npn \prop_gput:Nno {\exp_args:NNno \prop_gput:Nnn} +\def_new:Npn \prop_gput:Nnx {\exp_args:NNnx \prop_gput:Nnn} +\def_new:Npn \prop_gput:Nox {\exp_args:NNox \prop_gput:Nnn} +\def_new:Npn \prop_gput:Noo {\exp_args:NNoo \prop_gput:Nnn} +\def_new:Npn \prop_gput:Ncn {\exp_args:NNc \prop_gput:Nnn} +\def_new:Npn \prop_gput:Ooo {\exp_args:NOoo \prop_gput:Nnn} +\def_new:Npn \prop_gput:cnn {\exp_args:Nc \prop_gput:Nnn} +\def_new:Npn \prop_gput:ccn {\exp_args:Ncc \prop_gput:Nnn} +\def_new:Npn \prop_gput:cco {\exp_args:Ncco \prop_gput:Nnn} +\def_new:Npn \prop_gput:ccx {\exp_args:Nccx \prop_gput:Nnn} +\def_long_new:NNn \prop_del:Nn 2{ + \prop_split_aux:Nnn #1{#2}{\prop_del_aux:w {\toks_set:Nn #1}{#2}}} +\def_long_new:NNn \prop_gdel:Nn 2{ + \prop_split_aux:Nnn #1{#2}{\prop_del_aux:w {\toks_gset:Nn #1}{#2}}} +\def_long_new:NNn \prop_del_aux:w 5{ + \def:Npn \tmp:w {#4} + \quark_if_no_value:NF \tmp:w + {\def:Npn \tmp:w ##1\q_prop#2\q_prop\q_no_value {#1{#3##1}} + \tmp:w #5}} +\def_new:NNn \prop_if_in:NnTF 2{ + \prop_split_aux:Nnn #1{#2}\prop_if_in_aux:w} \def_new:NNn \prop_if_in_aux:w 3{\quark_if_no_value:nFT {#2}} -\def_long_new:NNn \prop_gput_if_new:NNn 2{ - \prop_split_aux:NNn #1#2{\prop_put_if_new_aux:w #1#2}} + +\def_new:Npn \prop_if_in:NoTF {\exp_args:NNo \prop_if_in:NnTF} +\def_new:Npn \prop_if_in:ccTF {\exp_args:Ncc \prop_if_in:NnTF} +\def_long_new:NNn \prop_gput_if_new:Nnn 2{ + \prop_split_aux:Nnn #1{#2}{\prop_put_if_new_aux:w #1{#2}}} \def_long_new:NNn \prop_put_if_new_aux:w 6{ - \quark_if_no_value:nT {#4}{#1{#2{#6}#3}}} + \tlist_if_empty:nT {#5}{#1{\q_prop#2\q_prop{#6}#3}}} \let_new:NN \prop_set_eq:NN \toks_set_eq:NN -\let_new:NN \prop_set_eq:Nc \toks_set_eq:Nc +\let_new:NN \prop_set_eq:Nc \toks_set_eq:Nc \let_new:NN \prop_set_eq:cN \toks_set_eq:cN -\let_new:NN \prop_set_eq:cc \toks_set_eq:cc -\let_new:NN \prop_gset_eq:NN \toks_gset_eq:NN +\let_new:NN \prop_set_eq:cc \toks_set_eq:cc +\let_new:NN \prop_gset_eq:NN \toks_gset_eq:NN \let_new:NN \prop_gset_eq:Nc \toks_gset_eq:Nc -\let_new:NN \prop_gset_eq:cN \toks_gset_eq:cN +\let_new:NN \prop_gset_eq:cN \toks_gset_eq:cN \let_new:NN \prop_gset_eq:cc \toks_gset_eq:cc \let_new:NN \prop_if_empty_p:N \toks_if_empty_p:N \let_new:NN \prop_if_empty_p:c \toks_if_empty_p:c @@ -138,13 +150,13 @@ \let_new:NN \prop_if_empty:cT \toks_if_empty:cTF \let_new:NN \prop_if_empty:cF \toks_if_empty:cF \def_new:NNn \prop_if_eq:NNTF 2 { - \tlist_if_eq:xxTF{\prop_use:N #1}{\prop_use:N #2} + \tlist_if_eq:xxTF{\toks_use:N #1}{\toks_use:N #2} } \def_new:NNn \prop_if_eq:NNT 2 { - \tlist_if_eq:xxT{\prop_use:N #1}{\prop_use:N #2} + \tlist_if_eq:xxT{\toks_use:N #1}{\toks_use:N #2} } \def_new:NNn \prop_if_eq:NNF 2 { - \tlist_if_eq:xxF{\prop_use:N #1}{\prop_use:N #2} + \tlist_if_eq:xxF{\toks_use:N #1}{\toks_use:N #2} } \def_new:Npn \prop_if_eq:NcTF {\exp_args:NNc \prop_if_eq:NNTF} \def_new:Npn \prop_if_eq:NcT {\exp_args:NNc \prop_if_eq:NNT} @@ -156,32 +168,82 @@ \def_new:Npn \prop_if_eq:ccT {\exp_args:Ncc \prop_if_eq:NNT} \def_new:Npn \prop_if_eq:ccF {\exp_args:Ncc \prop_if_eq:NNF} \def_new:Npn \prop_map_function:NN #1#2{ - \exp_after:NN \prop_map_function_aux:NNn - \exp_after:NN #2 \prop_use:N #1 \q_nil \q_no_value \q_stop + \exp_after:NN \prop_map_function_aux:w + \exp_after:NN #2 \toks_use:N #1 \q_prop{}\q_prop \q_no_value \q_stop +} +\def_new:Npn \prop_map_function_aux:w #1\q_prop#2\q_prop#3{ + \if:w \tlist_if_empty_p:n{#2} + \exp_after:NN \prop_map_break:w + \fi: + #1{#2}{#3} + \prop_map_function_aux:w #1 } -\def_new:Npn \prop_map_function_aux:NNn #1#2#3{ - \if_meaning:NN \q_nil #1 + +\def:Npn \prop_map_function:NN #1#2{ + \exp_after:NN \prop_map_function_aux:w + \exp_after:NN #2 \toks_use:N #1 \q_prop \q_no_value \q_prop \q_no_value +} +\def:Npn \prop_map_function_aux:w #1\q_prop#2\q_prop#3{ + \quark_if_no_value:nF{#2} + { + #1{#2}{#3} + \prop_map_function_aux:w #1 + } +} + +\def:Npn \prop_map_function:NN #1#2{ + \exp_after:NN \prop_map_function_aux:w + \exp_after:NN #2 \toks_use:N #1 \q_prop \q_nil \q_prop \q_no_value \q_stop +} +\def:Npn \prop_map_function_aux:w #1\q_prop#2\q_prop#3{ + \if_meaning:NN \q_nil #2 \exp_after:NN \prop_map_break:w \fi: - #1#2{#3} - \prop_map_function_aux:NNn #1 + #1{#2}{#3} + \prop_map_function_aux:w #1 } + + \def_new:Npn \prop_map_function:cN {\exp_args:Nc \prop_map_function:NN } +\def_new:Npn \prop_map_function:Nc {\exp_args:NNc \prop_map_function:NN } \def_new:Npn \prop_map_function:cc {\exp_args:Ncc \prop_map_function:NN} \num_new:N \l_prop_inline_level_num \def_new:Npn \prop_map_inline:Nn #1#2 { \num_incr:N \l_prop_inline_level_num \def_long:cpn {prop_map_inline_ \num_use:N \l_prop_inline_level_num :n} ##1##2{#2} - \exp_args:NcE \prop_map_function:N + \prop_map_function:Nc #1 {prop_map_inline_ \num_use:N \l_prop_inline_level_num :n} - \prop_use:N #1 - \q_nil \q_no_value \q_stop \num_decr:N \l_prop_inline_level_num } \def_new:Npn \prop_map_inline:cN { \exp_args:Nc \prop_map_inline:NN } - \let_new:NN \prop_map_break:w \use_none_delimit_by_q_stop:w +\def:Npn \prop_put:NNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_put:Nnn}\prop_put:Nnn} +\def:Npn \prop_gput:NNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput:Nnn }\prop_gput:Nnn } +\def:Npn \prop_gput:NNo {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput:Nno }\prop_gput:Nno } +\def:Npn \prop_gput:cNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput:cnn }\prop_gput:cnn } +\def:Npn \prop_gput_if_new:NNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput_if_new:Nnn }\prop_gput_if_new:Nnn } +\def:Npn \prop_get:NNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_get:NnN }\prop_get:NnN } +\def:Npn \prop_get:cNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_get:cnN }\prop_get:cnN } +\def:Npn \prop_gget:NNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_gget:NnN }\prop_gget:NnN } +\def:Npn \prop_gget:cNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_gget:cnN }\prop_gget:cnN } +\def:Npn \prop_get_gdel:NNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_get_gdel:NnN }\prop_get_gdel:NnN } +\def:Npn \prop_del:NN {\typeout{Warning:~name~ + changed~ to~ \string\prop_del:Nn }\prop_del:Nn } +\def:Npn \prop_gdel:NN {\typeout{Warning:~name~ + changed~ to~ \string\prop_gdel:Nn }\prop_gdel:Nn } +\def:Npn \prop_if_in:NNTF {\typeout{Warning:~name~ + changed~ to~ \string\prop_if_in:NnTF }\prop_if_in:NnTF } %% %% %% End of file `l3prop.sty'. diff --git a/Master/texmf-dist/tex/latex/expl3/l3quark.sty b/Master/texmf-dist/tex/latex/expl3/l3quark.sty index fd88bfa9cfa..c766400bcbb 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3quark.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3quark.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3quark.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3quark.dtx 705 2007-12-02 22:14:25Z morten $ {L3 Experimental Quark Commands} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3expan}\par \def_new:Npn \quark_new:N #1{\tlp_new:Nn #1{#1}} \quark_new:N \q_stop @@ -57,6 +59,48 @@ \quark_new:N \q_nil \quark_new:N\q_error \quark_new:N\q_mark +\quark_new:N\q_recursion_tail +\quark_new:N\q_recursion_stop +\def_long_new:Npn \quark_if_recursion_tail_stop:n #1 { + \exp_after:NN\if_meaning:NN + \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail\q_recursion_tail + \exp_after:NN \use_none_delimit_by_q_recursion_stop:w + \fi: +} +\def_long_new:Npn \quark_if_recursion_tail_stop:N #1 { + \if_meaning:NN#1\q_recursion_tail + \exp_after:NN \use_none_delimit_by_q_recursion_stop:w + \fi: +} +\def_new:Npn \quark_if_recursion_tail_stop:o{ + \exp_args:No\quark_if_recursion_tail_stop:n +} +\def_long_new:Npn \quark_if_recursion_tail_stop_do:nn #1#2 { + \exp_after:NN\if_meaning:NN + \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail + \exp_after:NN \use_arg_i_delimit_by_q_recursion_stop:nw + \else: + \exp_after:NN\use_none:n + \fi: + {#2} +} +\def_long_new:Npn \quark_if_recursion_tail_stop_do:Nn #1#2 { + \if_meaning:NN #1\q_recursion_tail + \exp_after:NN \use_arg_i_delimit_by_q_recursion_stop:nw + \else: + \exp_after:NN\use_none:n + \fi: + {#2} +} +\def_new:Npn \quark_if_recursion_tail_stop_do:on{ + \exp_args:No\quark_if_recursion_tail_stop_do:nn +} +\def_long_new:Npn \quark_if_recursion_tail_aux:w + #1#2\q_nil\q_recursion_tail{#1} +\def_long_new:Npn\use_none_delimit_by_q_recursion_stop:w + #1\q_recursion_stop {} +\def_long_new:Npn\use_arg_i_delimit_by_q_recursion_stop:nw + #1#2\q_recursion_stop {#1} \def_long_test_function_new:npn {quark_if_no_value:N} #1 { \if_meaning:NN\q_no_value#1} \def_long_new:Npn \quark_if_no_value_p:N #1{ diff --git a/Master/texmf-dist/tex/latex/expl3/l3seq.sty b/Master/texmf-dist/tex/latex/expl3/l3seq.sty index 096b825697f..c4ebb497c03 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3seq.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3seq.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3seq.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3seq.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental sequences and stacks} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3quark} \RequirePackage{l3tlp} \RequirePackage{l3expan} diff --git a/Master/texmf-dist/tex/latex/expl3/l3skip.sty b/Master/texmf-dist/tex/latex/expl3/l3skip.sty index 8e24a01271b..588bcb9f88b 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3skip.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3skip.sty @@ -15,7 +15,7 @@ %% Do not distribute a modified version of this file. %% %% -%% File: l3skip.dtx Copyright (C) 2005-2006 Frank Mittelbach, LaTeX3 project +%% File: l3skip.dtx Copyright (C) 2005-2007 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 @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3skip.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3skip.dtx 666 2007-09-27 15:53:26Z mittelba $ {L3 Experimental skip registers} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3int} \RequirePackage{l3prg} \let:NN \skip_new:N \newskip @@ -100,10 +102,9 @@ \let:NN \c_zero_skip \z@ \let:NN \c_max_skip \maxdimen \def_new:Npn \skip_infinite_glue:nTF #1{ - \prg_logic_test:nTF { - \prg_logic_or_p:nn - { \int_compare_p:nNn {\etex_gluestretchorder:D #1 } > \c_zero } - { \int_compare_p:nNn {\etex_glueshrinkorder:D #1 } > \c_zero } + \predicate:nTF { + \int_compare_p:nNn {\etex_gluestretchorder:D #1 } > \c_zero || + \int_compare_p:nNn {\etex_glueshrinkorder:D #1 } > \c_zero } } \def_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4{ @@ -137,10 +138,12 @@ \def_new:Npn\dim_add:cn{\exp_args:Nc\dim_add:Nn} \def_new:Npn\dim_add:Nc{\exp_args:NNc\dim_add:Nn} \def_new:Npn \dim_gadd:Nn { \pref_global:D \dim_add:Nn } +\def_new:Npn\dim_gadd:cn{\exp_args:Nc\dim_gadd:Nn} \def_new:Npn \dim_sub:Nn #1#2{\tex_advance:D#1-#2\scan_stop:} \def_new:Npn\dim_sub:cn{\exp_args:Nc\dim_sub:Nn} \def_new:Npn\dim_sub:Nc{\exp_args:NNc\dim_sub:Nn} \def_new:Npn \dim_gsub:Nn {\pref_global:D \dim_sub:Nn } +\def_new:Npn\dim_gsub:cn{\exp_args:Nc\dim_gsub:Nn} \let_new:NN \dim_use:N \tex_the:D \def_new:Npn \dim_use:c {\exp_args:Nc\dim_use:N} \dim_new:N \l_tmpa_dim diff --git a/Master/texmf-dist/tex/latex/expl3/l3tlp.sty b/Master/texmf-dist/tex/latex/expl3/l3tlp.sty index e80ea876717..2b911f20523 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3tlp.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3tlp.sty @@ -15,7 +15,7 @@ %% Do not distribute a modified version of this file. %% %% -%% File: l3tlp.dtx Copyright (C) 1990-2006 LaTeX3 project +%% File: l3tlp.dtx Copyright (C) 1990-2007 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 @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3tlp.dtx 581 2006-12-12 12:28:27Z morten $ +\GetIdInfo$Id: l3tlp.dtx 735 2008-01-14 22:31:02Z morten $ {L3 Experimental Token List Pointers} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3basics} \def_long_new:Npn \tlp_new:Nn #1#2{ \chk_new_cs:N #1 @@ -60,6 +62,8 @@ \chk_new_cs:N #1 \gdef:Npx #1{#2} } +\def_new:Npn \tlp_new:N #1{\tlp_new:Nn #1{}} +\def_new:Npn \tlp_new:c #1{\tlp_new:cn {#1}{}} \def_new:Npn \tlp_use:N #1 { \if_meaning:NN #1 \scan_stop: \err_latex_bug:x {Token~list~pointer~ `\token_to_string:N #1'~ @@ -74,11 +78,13 @@ \def_long_new:Npn\tlp_gset:Nn#1#2{\gdef:Npn#1{#2}} \def_long_new:Npn\tlp_gset:Nx#1#2{\gdef:Npx#1{#2}} \def_new:Npn \tlp_set:No {\exp_args:NNo \tlp_set:Nn} +\def_new:Npn \tlp_set:Nd {\exp_args:NNd \tlp_set:Nn} \def_new:Npn \tlp_set:Nf {\exp_args:NNf \tlp_set:Nn} \def_new:Npn \tlp_set:cn {\exp_args:Nc \tlp_set:Nn} \def_new:Npn \tlp_set:co {\exp_args:Nco \tlp_set:Nn} \def_new:Npn \tlp_set:cx {\exp_args:Nc \tlp_set:Nx} \def_new:Npn \tlp_gset:No {\exp_args:NNo \tlp_gset:Nn} +\def_new:Npn \tlp_gset:Nd {\exp_args:NNd \tlp_gset:Nn} \def_new:Npn \tlp_gset:cn {\exp_args:Nc \tlp_gset:Nn} \def_new:Npn \tlp_gset:cx {\exp_args:Nc \tlp_gset:Nx} \let_new:NN \tlp_set_eq:NN \let:NN @@ -97,26 +103,59 @@ \def_new:Npn \tlp_clear_new:c {\exp_args:Nc \tlp_clear_new:N} \let_new:NN \tlp_gclear_new:N \tlp_gclear:N \def_new:Npn \tlp_gclear_new:c {\exp_args:Nc \tlp_gclear_new:N} -\def_new:Npn \tlp_put_left:Nn #1{ - \exp_args:No \tlp_put_left_aux:w {#1}#1} -\def_new:Npn\tlp_put_left:No{\exp_args:NNo\tlp_put_left:Nn} -\def_new:Npn \tlp_gput_left:Nn { - \pref_global:D - \tlp_put_left:Nn +\def_long_new:Npn \tlp_put_left:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:o{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_put_left:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:d{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_put_left:Nx #1#2{ + \tlp_set:Nx #1{#2\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_gput_left:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:o{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_gput_left:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:d{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_gput_left:Nx #1#2{ + \tlp_gset:Nx #1{#2\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_put_left:cn{\exp_args:Nc\tlp_put_left:Nn} +\def_long_new:Npn \tlp_put_left:co{\exp_args:Nc\tlp_put_left:No} +\def_long_new:Npn \tlp_put_left:cx{\exp_args:Nc\tlp_put_left:Nx} +\def_long_new:Npn \tlp_gput_left:cn{\exp_args:Nc\tlp_gput_left:Nn} +\def_long_new:Npn \tlp_gput_left:co{\exp_args:Nc\tlp_gput_left:No} +\def_long_new:Npn \tlp_gput_left:cx{\exp_args:Nc\tlp_gput_left:Nx} +\def_long_new:Npn \tlp_put_right:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:o{#1}\exp_not:o{\l_exp_tlp}} +} +\def_long_new:Npn \tlp_gput_right:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:o{#1}\exp_not:o{\l_exp_tlp}} +} +\def_long_new:Npn \tlp_put_right:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:o{#1}\exp_not:d{\l_exp_tlp}} } -\def_new:Npn\tlp_gput_left:No{\exp_args:NNo\tlp_gput_left:Nn} -\def_new:Npn\tlp_gput_left:Nx{\exp_args:NNx\tlp_gput_left:Nn} -\def_long_new:Npn \tlp_put_left_aux:w #1#2#3{\tlp_set:Nn #2{#3#1} +\def_long_new:Npn \tlp_gput_right:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:o{#1}\exp_not:d{\l_exp_tlp}} +} +\def_long:Npn \tlp_put_right:Nx #1#2{ + \tlp_set:Nx #1{\exp_not:o{#1}#2} +} +\def_long:Npn \tlp_gput_right:Nx #1#2{ + \tlp_gset:Nx #1{\exp_not:o{#1}#2} } -\def_long_new:Npn \tlp_put_right:Nn #1#2{\tlp_set:No #1{#1#2}} -\def_long_new:Npn \tlp_gput_right:Nn #1#2{\tlp_gset:No #1{#1#2}} -\def_new:Npn \tlp_gput_right:No {\exp_args:NNo \tlp_gput_right:Nn} -\def_new:Npn \tlp_gput_right:Nx {\exp_args:NNx \tlp_gput_right:Nn} \def_new:Npn \tlp_gput_right:cn {\exp_args:Nc \tlp_gput_right:Nn} -\def_new:Npn \tlp_gput_right:co {\exp_args:Nco \tlp_gput_right:Nn} +\def_new:Npn \tlp_gput_right:co {\exp_args:Nc \tlp_gput_right:No} \def_new:Npn \tlp_put_right:cc {\exp_args:Ncc \tlp_put_right:Nn} -\def_new:Npn \tlp_put_right:No {\exp_args:NNo \tlp_put_right:Nn} -\def_new:Npn \tlp_put_right:Nx {\exp_args:Nnx \tlp_put_right:Nn} \def_new:Npn \tlp_gset:Nc { \pref_global:D \tlp_set:Nc} @@ -184,14 +223,14 @@ \let_new:NN \tlist_to_uppercase:n \tex_uppercase:D \let_new:NN \tlist_to_str:n \etex_detokenize:D \def_long_new:Npn \tlist_map_function:nN #1#2{ - \tlist_map_function_aux:Nn #2 #1 \q_nil \q_stop + \tlist_map_function_aux:Nn #2 #1 \q_recursion_tail \q_recursion_stop } \def_new:Npn \tlp_map_function:NN #1#2{ \exp_after:NN \tlist_map_function_aux:Nn - \exp_after:NN #2 #1 \q_nil \q_stop + \exp_after:NN #2 #1 \q_recursion_tail \q_recursion_stop } \def_long_new:Npn \tlist_map_function_aux:Nn #1#2{ - \quark_if_nil:nT{#2} \tlist_map_break:w + \quark_if_recursion_tail_stop:n{#2} #1{#2} \tlist_map_function_aux:Nn #1 } \def_new:Npn\tlp_map_function:cN{\exp_args:Nc\tlp_map_function:NN} @@ -201,7 +240,7 @@ ##1{#2} \exp_args:Nc \tlist_map_function_aux:Nn {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n} - #1 \q_nil\q_stop + #1 \q_recursion_tail\q_recursion_stop \num_decr:N \l_tlp_inline_level_num } \def_long_new:Npn \tlp_map_inline:Nn #1#2{ @@ -210,22 +249,22 @@ ##1{#2} \exp_args:NcE \tlist_map_function_aux:Nn {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n} - #1 \q_nil\q_stop + #1 \q_recursion_tail\q_recursion_stop \num_decr:N \l_tlp_inline_level_num } \def_new:Npn\tlp_map_inline:cN{\exp_args:Nc\tlp_map_inline:NN} \tlp_new:Nn \l_tlp_inline_level_num{0} \def_long_new:Npn \tlist_map_variable:nNn #1#2#3{ - \tlist_map_variable_aux:Nnn #2 {#3} #1 \q_nil \q_stop + \tlist_map_variable_aux:Nnn #2 {#3} #1 \q_recursion_tail \q_recursion_stop } \def_new:Npn \tlp_map_variable:NNn {\exp_args:No \tlist_map_variable:nNn} \def_new:Npn \tlp_map_variable:cNn {\exp_args:Nc \tlp_map_variable:NNn} \def_long_new:Npn \tlist_map_variable_aux:Nnn #1#2#3{ \tlp_set:Nn #1{#3} - \quark_if_nil:NT #1 \tlist_map_break:w + \quark_if_recursion_tail_stop:N #1 #2 \tlist_map_variable_aux:Nnn #1{#2} } -\let_new:NN \tlist_map_break:w \use_none_delimit_by_q_stop:w +\let_new:NN \tlist_map_break:w \use_none_delimit_by_q_recursion_stop:w \let_new:NN \tlp_map_break:w \tlist_map_break:w \let_new:NN \tlist_compare:xx \pdfstrcmp \def_long_new:NNn \tlist_compare:nn 2{ @@ -272,12 +311,46 @@ \tlp_set:Nx \l_testb_tlp {\exp_not:n{#2}} \if_meaning:NN\l_testa_tlp \l_testb_tlp } + \def_long_test_function:npn{tlist_if_eq:no}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:n{#1}} + \tlp_set:Nx \l_testb_tlp {\exp_not:o{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:nx}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:n{#1}} + \tlp_set:Nx \l_testb_tlp {#2} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:on}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:o{#1}} + \tlp_set:Nx \l_testb_tlp {\exp_not:n{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } \def_long_test_function:npn{tlist_if_eq:oo}#1#2{ \tlp_set:Nx \l_testa_tlp {\exp_not:o{#1}} \tlp_set:Nx \l_testb_tlp {\exp_not:o{#2}} \if_meaning:NN\l_testa_tlp \l_testb_tlp } - \def_long:Npn\tlist_compare:xx #1#2{\ERROR} + \def_long_test_function:npn{tlist_if_eq:ox}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:o{#1}} + \tlp_set:Nx \l_testb_tlp {#2} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:xn}#1#2{ + \tlp_set:Nx \l_testa_tlp {#1} + \tlp_set:Nx \l_testb_tlp {\exp_not:n{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:xo}#1#2{ + \tlp_set:Nx \l_testa_tlp {#1} + \tlp_set:Nx \l_testb_tlp {\exp_not:o{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:xx}#1#2{ + \tlp_set:Nx \l_testa_tlp {#1} + \tlp_set:Nx \l_testb_tlp {#2} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } } \def_long:Npn \tlp_if_in:NnTF #1#2{ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{ @@ -288,7 +361,7 @@ \def_new:Npn \tlp_if_in:cnTF {\exp_args:Nc\tlp_if_in:NnTF} \def_long:Npn \tlp_if_in:NnT #1#2{ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{ - \quark_if_no_value:nFT{##2} + \quark_if_no_value:nF{##2} } \exp_after:NN \tmp:w #1 #2 \q_no_value \q_stop } @@ -309,11 +382,11 @@ \def_new:Npn \tlist_if_in:onTF {\exp_args:No\tlist_if_in:nnTF} \tlp_new:Nn\l_tlp_replace_tlp{} \def_long_new:NNn \tlp_replace_in_aux:NNnn 4{ - \def:Npn \tmp:w ##1#3##2\q_stop{ + \def_long:Npn \tmp:w ##1#3##2\q_stop{ \quark_if_no_value:nF{##2} { \tlp_set:Nx\l_tlp_replace_tlp{\exp_not:o{\use_none:n##1#4}} - \def:Npn \tmp:w ####1#3\q_no_value{ + \def_long:Npn \tmp:w ####1#3\q_no_value{ \tlp_put_right:Nx \l_tlp_replace_tlp {\exp_not:o{\use_none:n ####1}} } \tmp:w \q_mark ##2 @@ -329,7 +402,7 @@ \def_new:Npn \tlp_greplace_in:cnn{\exp_args:Nc\tlp_greplace_in:Nnn} \def_long:NNn \tlp_replace_all_in_aux:NNnn 4{ \tlp_clear:N \l_tlp_replace_tlp - \def:Npn \tmp:w ##1#3##2\q_stop{ + \def_long:Npn \tmp:w ##1#3##2\q_stop{ \quark_if_no_value:nTF{##2} { \tlp_put_right:Nx \l_tlp_replace_tlp {\exp_not:o{\use_none:n##1}} @@ -409,11 +482,10 @@ \def_long_test_function_new:npn {tlist_if_head_eq_catcode:nN}#1#2{ \if:w\tlist_if_head_eq_catcode_p:nN{#1}#2} \def_long_new:Npn \tlist_reverse:n #1{ - \tlist_reverse_aux:nN {} #1 \q_nil\q_stop + \tlist_reverse_aux:nN {} #1 \q_recursion_tail\q_stop } \def_long_new:Npn \tlist_reverse_aux:nN #1#2{ - \quark_if_nil:NT #2 - { \use_arg_i_delimit_by_q_stop:nw {#1} } + \quark_if_recursion_tail_stop_do:nn {#2}{ #1 } \tlist_reverse_aux:nN {#2#1} } \RequirePackage{l3expan} diff --git a/Master/texmf-dist/tex/latex/expl3/l3token.sty b/Master/texmf-dist/tex/latex/expl3/l3token.sty index ffdfc4caae9..b9f43418038 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3token.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3token.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3token.dtx 578 2006-11-21 18:13:24Z morten $ +\GetIdInfo$Id: l3token.dtx 701 2007-11-27 14:21:05Z morten $ {L3 Experimental token investigation and manipulation} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3prg} \RequirePackage{l3int} \let_new:NN \char_set_catcode:w \tex_catcode:D @@ -61,6 +63,19 @@ \def_new:Npn \char_show_value_catcode:w {\tex_showthe:D\tex_catcode:D} \def_new:Npn \char_show_value_catcode:n #1{ \char_show_value_catcode:w \int_eval:n{#1}} +\let_new:NN \char_set_mathcode:w \tex_mathcode:D +\def_new:Npn \char_set_mathcode:nn #1#2{ + \char_set_mathcode:w #1 = \int_eval:n{#2} +} +\def_protected_new:Npn \char_gset_mathcode:w {\pref_global:D\tex_mathcode:D} +\def_new:Npn \char_gset_mathcode:nn #1#2{ + \char_gset_mathcode:w #1 = \int_eval:n{#2} +} +\def_new:Npn \char_value_mathcode:w {\int_use:N\tex_mathcode:D} +\def_new:Npn \char_value_mathcode:n #1{\char_value_mathcode:w \int_eval:n{#1}} +\def_new:Npn \char_show_value_mathcode:w {\tex_showthe:D\tex_mathcode:D} +\def_new:Npn \char_show_value_mathcode:n #1{ + \char_show_value_mathcode:w \int_eval:n{#1}} \let_new:NN \char_set_lccode:w \tex_lccode:D \def_new:Npn \char_set_lccode:nn #1#2{ \char_set_lccode:w #1 = \int_eval:n{#2} @@ -478,10 +493,9 @@ \fi: } \def_new:Npn \peek_execute_branches_charcode: { - \prg_if_predicate:nTF { - \prg_if_predicate_or_p:nn - {\token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token} - {\token_if_eq_meaning_p:NN \l_peek_token \c_space_token} + \predicate:nTF { + \token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token || + \token_if_eq_meaning_p:NN \l_peek_token \c_space_token } { \l_peek_false_tlp } { \exp_after:NN \peek_execute_branches_charcode_aux:NN \l_peek_search_tlp } diff --git a/Master/texmf-dist/tex/latex/expl3/l3toks.sty b/Master/texmf-dist/tex/latex/expl3/l3toks.sty index d950644fa85..ea18f851ee0 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3toks.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3toks.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3toks.dtx 580 2006-11-26 15:56:47Z morten $ +\GetIdInfo$Id: l3toks.dtx 728 2008-01-01 16:11:58Z morten $ {L3 Experimental Token Registers} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3expan}\par \let:NN \toks_new:N \newtoks % nick from LaTeX for the moment \def_new:Npn \toks_new:c {\exp_args:Nc\toks_new:N} @@ -149,6 +151,12 @@ \def_new:Npn \toks_if_eq:ccTF {\exp_args:Ncc \toks_if_eq:NNTF} \def_new:Npn \toks_if_eq:ccT {\exp_args:Ncc \toks_if_eq:NNT} \def_new:Npn \toks_if_eq:ccF {\exp_args:Ncc \toks_if_eq:NNF} +\def_new:NNn \toks_if_eq_p:NN 2 { + \tlist_if_eq_p:xx {\toks_use:N #1} {\toks_use:N #2} +} +\def_new:Npn \toks_if_eq_p:cN {\exp_args:Nc \toks_if_eq_p:NN} +\def_new:Npn \toks_if_eq_p:Nc {\exp_args:NNc \toks_if_eq_p:NN} +\def_new:Npn \toks_if_eq_p:cc {\exp_args:Ncc \toks_if_eq_p:NN} \tex_toksdef:D \l_tmpa_toks = 255 \toks_new:N \l_tmpb_toks \toks_new:N \l_tmpc_toks diff --git a/Master/texmf-dist/tex/latex/expl3/l3xref.sty b/Master/texmf-dist/tex/latex/expl3/l3xref.sty index a99ac7bf196..4635b63f382 100644 --- a/Master/texmf-dist/tex/latex/expl3/l3xref.sty +++ b/Master/texmf-dist/tex/latex/expl3/l3xref.sty @@ -48,8 +48,10 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3xref.dtx 579 2006-11-25 23:38:03Z morten $ +\GetIdInfo$Id: l3xref.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental cross referencing} +\ProvidesExplPackage + {\filename}{\filedate}{\fileversion}{\filedescription} \RequirePackage{l3quark} \RequirePackage{l3toks} \RequirePackage{l3io} diff --git a/Master/texmf-dist/tex/latex/expl3/lbase.ini b/Master/texmf-dist/tex/latex/expl3/lbase.ini new file mode 100644 index 00000000000..9d21274ebb4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/expl3/lbase.ini @@ -0,0 +1,65 @@ +%% +%% This is file `lbase.ini', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% l3final.dtx (with options: `ini') +%% +%% +%% EXPERIMENTAL CODE +%% +%% Do not distribute this file without also distributing the +%% source files specified above. +%% +%% Do not distribute a modified version of this file. +%% +%% +%% File: l3final.dtx Copyright (C) 1990-2006 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. +%% +%% ----------------------------------------------------------------------- +%% Derived from a file by Thomas Esser + +\ifx\pdfoutput\undefined \else + \ifx\pdfoutput\relax \else + % We're building the latex format with the pdfetex engine (started 2004). + % See this file for details. + \input pdftex-dvi.tex + \fi +\fi + +%% the usual format initialization. +%%\scrollmode +\input lbase.ltx +%% +%% +%% End of file `lbase.ini'. diff --git a/Master/texmf-dist/tex/latex/expl3/lbase.ltx b/Master/texmf-dist/tex/latex/expl3/lbase.ltx index 3029de6c78f..a1e6967f6f5 100644 --- a/Master/texmf-dist/tex/latex/expl3/lbase.ltx +++ b/Master/texmf-dist/tex/latex/expl3/lbase.ltx @@ -74,22 +74,35 @@ \catcode`\#=6 % hash mark is macro parameter character \catcode`\^=7 % \catcode`\^^I=10 % ascii tab is a blank space -\def\GetIdInfo$Id: #1.dtx #2 #3-#4-#5 #6 #7$#8{% - \immediate\write-1{#1; v#2, #3/#4/#5; #8}% +\def\GetIdInfo$#1 #2.#3 #4 #5 #6 #7${% + \GetIdInfoAux #5\relax{#2}#5\relax{#4}% } -\GetIdInfo$Id: l3names.dtx 577 2006-11-21 18:10:26Z morten $ +\def\GetIdInfoAux #1#2#3#4#5#6\relax{% + \ifx#5/% + \expandafter\GetIdInfoAuxCVS + \else + \expandafter\GetIdInfoAuxSVN + \fi +} +\def\GetIdInfoAuxCVS #1#2\relax#3#4{% + \immediate\write-1{#1; v#2, #3; #4}% +} +\def\GetIdInfoAuxSVN #1#2-#3-#4\relax#5#6{% + \immediate\write-1{#1; #2/#3/#4 v#5 #6}% +} +\GetIdInfo$Id: l3names.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental Naming Scheme for TeX Primitives} \catcode`\{=1 % left brace is begin-group character \catcode`\}=2 % right brace is end-group character \catcode`\#=6 % hash mark is macro parameter character \catcode`\^=7 % \catcode`\^^I=10 % ascii tab is a blank space -\catcode`\ =9\relax -\catcode`\^^I=9\relax -\catcode`\^^M=9\relax -\catcode`\~=10\relax -\catcode`\_=11\relax\catcode`\:=11\relax -\catcode`\@=11\relax % as long as we use old LaTeX stuff. +\catcode126=10\relax % tilde is a space char. +\catcode32=9\relax % space is ignored +\catcode9=9\relax % tab also ignored +\endlinechar=32\relax % endline is space +\catcode95=11\relax % underscore letter +\catcode58=11\relax % colon letter \let\tex_let:D\let \long\def\name_undefine:N#1{ \tex_let:D#1\c_undefined} @@ -590,32 +603,70 @@ \name_primitive:NN \pdfsetrandomseed \pdf_setrandomseed:D \name_primitive:NN \pdfnoligatures \pdf_noligatures:D \name_primitive:NN \textdir \aleph_textdir:D -\tex_def:D\CodeStart{% - \tex_catcode:D `\ =9\tex_relax:D - \tex_catcode:D `\^^M=9\tex_relax:D - \tex_catcode:D `\^^I=9\tex_relax:D - \tex_catcode:D `\~=10\tex_relax:D - \tex_catcode:D `\_=11\tex_relax:D - \tex_catcode:D `\:=11\tex_relax:D} -\tex_def:D\CodeStop{ - \tex_catcode:D `\ =10\tex_relax:D - \tex_catcode:D `\^^M=5\tex_relax:D - \tex_catcode:D `\^^I=10\tex_relax:D - \tex_catcode:D `\~=13\tex_relax:D - \tex_catcode:D `\_=8\tex_relax:D - \tex_catcode:D `\:=12\tex_relax:D} +\tex_def:D\ExplSyntaxOn{ + \tex_def:D\ExplSyntaxStatus{00} + \tex_catcode:D 126=10 \tex_relax:D % tilde is a space char. + \tex_catcode:D 32=9 \tex_relax:D % space is ignored + \tex_catcode:D 9=9 \tex_relax:D % tab also ignored + \tex_endlinechar:D =32 \tex_relax:D % endline is space + \tex_catcode:D 95=11 \tex_relax:D % underscore letter + \tex_catcode:D 58=11 \tex_relax:D % colon letter +} +\tex_def:D\ExplSyntaxOff{ + \tex_def:D\ExplSyntaxStatus{01} + \tex_catcode:D 126=13 \tex_relax:D + \tex_catcode:D 32=10 \tex_relax:D + \tex_catcode:D 9=10 \tex_relax:D + \tex_endlinechar:D =13 \tex_relax:D + \tex_catcode:D 95=8 \tex_relax:D + \tex_catcode:D 58=12 \tex_relax:D +} +\tex_let:D \CodeStart \ExplSyntaxOn +\tex_let:D \CodeStop \ExplSyntaxOff \tex_def:D \NamesStart{ - \tex_catcode:D `\_=11\scan_stop: - \tex_catcode:D `\:=11\scan_stop: - } + \tex_catcode:D `\_=11\tex_relax:D + \tex_catcode:D `\:=11\tex_relax:D +} \tex_def:D \NamesStop{ - \tex_catcode:D `\_=8\scan_stop: - \tex_catcode:D `\:=12\scan_stop: - } -\tex_def:D\GetIdInfo{\CodeStop\GetIdInfoAux} -\tex_def:D\GetIdInfoAux$#1~#2.dtx~#3~#4-#5-#6~#7~#8$#9{% - \tex_immediate:D\tex_write:D-1{#2;~v#3,~#4/#5/#6;~#9}% - \CodeStart + \tex_catcode:D `\_=8\tex_relax:D + \tex_catcode:D `\:=12\tex_relax:D +} +\tex_def:D\GetIdInfo{ + \tex_begingroup:D + \tex_catcode:D 32=10 \tex_relax:D % needed? Probably for now. + \GetIdInfoAuxi:w +} +\tex_def:D\GetIdInfoAuxi:w$#1~#2.#3~#4~#5~#6~#7~#8$#9{ + \tex_endgroup:D + \tex_def:D\filename{#2} + \tex_def:D\fileversion{#4} + \tex_def:D\filedescription{#9} + \tex_def:D\fileauthor{#7} + \GetIdInfoAuxii:w #5\tex_relax:D + #3\tex_relax:D#5\tex_relax:D#6\tex_relax:D +} +\tex_def:D\GetIdInfoAuxii:w #1#2#3#4#5#6\tex_relax:D{ + \tex_ifx:D#5/ + \tex_expandafter:D\GetIdInfoAuxCVS:w + \tex_else:D + \tex_expandafter:D\GetIdInfoAuxSVN:w + \tex_fi:D +} +\tex_def:D\GetIdInfoAuxCVS:w #1,v\tex_relax:D + #2\tex_relax:D#3\tex_relax:D{ + \tex_def:D\filedate{#2} + \tex_def:D\filenameext{#1} + \tex_def:D\filetimestamp{#3} +\tex_immediate:D\tex_write:D-1 + {\filename;~ v\fileversion,~\filedate;~\filedescription} +} +\tex_def:D\GetIdInfoAuxSVN:w #1\tex_relax:D#2-#3-#4 + \tex_relax:D#5Z\tex_relax:D{ + \tex_def:D\filenameext{#1} + \tex_def:D\filedate{#2/#3/#4} + \tex_def:D\filetimestamp{#5} +\tex_immediate:D\tex_write:D-1 + {\filename;~ v\fileversion,~\filedate;~\filedescription} } %% File: l3basics.dtx Copyright (C) 1990-2006 LaTeX3 project %% @@ -649,7 +700,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3basics.dtx 583 2006-12-12 17:26:44Z morten $ +\GetIdInfo$Id: l3basics.dtx 702 2007-11-27 14:21:49Z morten $ {L3 Experimental basic definitions} \tex_let:D \let:NwN \tex_let:D \let:NwN \if_true: \tex_iftrue:D @@ -1015,6 +1066,8 @@ \def_long_new:Npn \def_test_function_aux:Nnnn #1#2#3#4{ #1 {#2TF} #3 {#4 \exp_after:NN\use_arg_i:nn\else:\exp_after:NN\use_arg_ii:nn\fi:} + #1 {#2FT} #3 {#4 + \exp_after:NN\use_arg_ii:nn\else:\exp_after:NN\use_arg_i:nn\fi:} #1 {#2T} #3 {#4 \else:\exp_after:NN\use_none:nn\fi:\use_arg_i:n} #1 {#2F} #3 {#4 @@ -1022,6 +1075,8 @@ \def_long_new:Npn \def_test_function_aux:Nnnx #1#2#3#4{ #1 {#2TF} #3 {#4 \exp_not:n{\exp_after:NN\use_arg_i:nn\else:\exp_after:NN\use_arg_ii:nn\fi:}} + #1 {#2FT} #3 {#4 + \exp_not:n{\exp_after:NN\use_arg_ii:nn\else:\exp_after:NN\use_arg_i:nn\fi:}} #1 {#2T} #3 {#4 \exp_not:n{\else:\exp_after:NN\use_none:nn\fi:\use_arg_i:n}} #1 {#2F} #3 {#4 @@ -1071,7 +1126,7 @@ \def_long_test_function_new:npn {cs_if_really_exist:c}#1{ \if_cs_exist:w #1\cs_end:} \def_new:Npn \cs_gundefine:N #1{\glet:NN #1\c_undefined} -\def_test_function_new:npn {engine_aleph:}{\if_cs_exist:N \aleph_textdir:D} +\def_test_function_new:npn {engine_if_aleph:}{\if_cs_exist:N \aleph_textdir:D} \def_new:Npn \use:c #1{\cs:w #1\cs_end:} \def_new:Npn \cs_use:c #1 { \cs:w#1\cs_end: } \def_new:Npn \use:cc #1#2 @@ -1092,7 +1147,8 @@ \def_long_new:Npn \use_arg_i_delimit_by_q_stop:nw #1#2\q_stop{#1} \def_long_new:Npn \use_arg_i_after_fi:nw #1\fi:{\fi: #1} \def_long_new:Npn \use_arg_i_after_else:nw #1\else:#2\fi:{\fi: #1} -\def_long_new:Npn \use_arg_i_after_or:nw #1\or: #2\fi: {\or:\fi:#1} +\def_long_new:Npn \use_arg_i_after_or:nw #1\or: #2\fi: {\fi:#1} +\def_long_new:Npn \use_arg_i_after_orelse:nw #1 #2#3\fi: {\fi:#1} \def_long_new:NNn \use_none:nn 2{} \def_long_new:NNn \use_none:nnn 3{} \def_long_new:NNn \use_none:nnnn 4{} @@ -1149,7 +1205,7 @@ %% %% ----------------------------------------------------------------------- %% -\GetIdInfo$Id: l3chk.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3chk.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental check module} \def_new:Npn \chk_local:N #1{ \exp_after:NN \chk_local_aux:w \token_to_string:N#1\q_stop} @@ -1242,7 +1298,7 @@ } \let_new:NN\traceon\use_none:n \let_new:NN\traceoff\use_none:n -%% File: l3tlp.dtx Copyright (C) 1990-2006 LaTeX3 project +%% File: l3tlp.dtx Copyright (C) 1990-2007 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 @@ -1274,7 +1330,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3tlp.dtx 581 2006-12-12 12:28:27Z morten $ +\GetIdInfo$Id: l3tlp.dtx 735 2008-01-14 22:31:02Z morten $ {L3 Experimental Token List Pointers} \def_long_new:Npn \tlp_new:Nn #1#2{ \chk_new_cs:N #1 @@ -1285,6 +1341,8 @@ \chk_new_cs:N #1 \gdef:Npx #1{#2} } +\def_new:Npn \tlp_new:N #1{\tlp_new:Nn #1{}} +\def_new:Npn \tlp_new:c #1{\tlp_new:cn {#1}{}} \def_new:Npn \tlp_use:N #1 { \if_meaning:NN #1 \scan_stop: \err_latex_bug:x {Token~list~pointer~ `\token_to_string:N #1'~ @@ -1299,11 +1357,13 @@ \def_long_new:Npn\tlp_gset:Nn#1#2{\gdef:Npn#1{#2}} \def_long_new:Npn\tlp_gset:Nx#1#2{\gdef:Npx#1{#2}} \def_new:Npn \tlp_set:No {\exp_args:NNo \tlp_set:Nn} +\def_new:Npn \tlp_set:Nd {\exp_args:NNd \tlp_set:Nn} \def_new:Npn \tlp_set:Nf {\exp_args:NNf \tlp_set:Nn} \def_new:Npn \tlp_set:cn {\exp_args:Nc \tlp_set:Nn} \def_new:Npn \tlp_set:co {\exp_args:Nco \tlp_set:Nn} \def_new:Npn \tlp_set:cx {\exp_args:Nc \tlp_set:Nx} \def_new:Npn \tlp_gset:No {\exp_args:NNo \tlp_gset:Nn} +\def_new:Npn \tlp_gset:Nd {\exp_args:NNd \tlp_gset:Nn} \def_new:Npn \tlp_gset:cn {\exp_args:Nc \tlp_gset:Nn} \def_new:Npn \tlp_gset:cx {\exp_args:Nc \tlp_gset:Nx} \let_new:NN \tlp_set_eq:NN \let:NN @@ -1322,26 +1382,59 @@ \def_new:Npn \tlp_clear_new:c {\exp_args:Nc \tlp_clear_new:N} \let_new:NN \tlp_gclear_new:N \tlp_gclear:N \def_new:Npn \tlp_gclear_new:c {\exp_args:Nc \tlp_gclear_new:N} -\def_new:Npn \tlp_put_left:Nn #1{ - \exp_args:No \tlp_put_left_aux:w {#1}#1} -\def_new:Npn\tlp_put_left:No{\exp_args:NNo\tlp_put_left:Nn} -\def_new:Npn \tlp_gput_left:Nn { - \pref_global:D - \tlp_put_left:Nn +\def_long_new:Npn \tlp_put_left:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:o{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_put_left:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:d{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_put_left:Nx #1#2{ + \tlp_set:Nx #1{#2\exp_not:o{#1}} } -\def_new:Npn\tlp_gput_left:No{\exp_args:NNo\tlp_gput_left:Nn} -\def_new:Npn\tlp_gput_left:Nx{\exp_args:NNx\tlp_gput_left:Nn} -\def_long_new:Npn \tlp_put_left_aux:w #1#2#3{\tlp_set:Nn #2{#3#1} +\def_long_new:Npn \tlp_gput_left:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:o{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_gput_left:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:d{\l_exp_tlp}\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_gput_left:Nx #1#2{ + \tlp_gset:Nx #1{#2\exp_not:o{#1}} +} +\def_long_new:Npn \tlp_put_left:cn{\exp_args:Nc\tlp_put_left:Nn} +\def_long_new:Npn \tlp_put_left:co{\exp_args:Nc\tlp_put_left:No} +\def_long_new:Npn \tlp_put_left:cx{\exp_args:Nc\tlp_put_left:Nx} +\def_long_new:Npn \tlp_gput_left:cn{\exp_args:Nc\tlp_gput_left:Nn} +\def_long_new:Npn \tlp_gput_left:co{\exp_args:Nc\tlp_gput_left:No} +\def_long_new:Npn \tlp_gput_left:cx{\exp_args:Nc\tlp_gput_left:Nx} +\def_long_new:Npn \tlp_put_right:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:o{#1}\exp_not:o{\l_exp_tlp}} +} +\def_long_new:Npn \tlp_gput_right:Nn #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:o{#1}\exp_not:o{\l_exp_tlp}} +} +\def_long_new:Npn \tlp_put_right:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_set:Nx #1{\exp_not:o{#1}\exp_not:d{\l_exp_tlp}} +} +\def_long_new:Npn \tlp_gput_right:No #1#2{ + \tlp_set:Nn \l_exp_tlp{#2} + \tlp_gset:Nx #1{\exp_not:o{#1}\exp_not:d{\l_exp_tlp}} +} +\def_long:Npn \tlp_put_right:Nx #1#2{ + \tlp_set:Nx #1{\exp_not:o{#1}#2} +} +\def_long:Npn \tlp_gput_right:Nx #1#2{ + \tlp_gset:Nx #1{\exp_not:o{#1}#2} } -\def_long_new:Npn \tlp_put_right:Nn #1#2{\tlp_set:No #1{#1#2}} -\def_long_new:Npn \tlp_gput_right:Nn #1#2{\tlp_gset:No #1{#1#2}} -\def_new:Npn \tlp_gput_right:No {\exp_args:NNo \tlp_gput_right:Nn} -\def_new:Npn \tlp_gput_right:Nx {\exp_args:NNx \tlp_gput_right:Nn} \def_new:Npn \tlp_gput_right:cn {\exp_args:Nc \tlp_gput_right:Nn} -\def_new:Npn \tlp_gput_right:co {\exp_args:Nco \tlp_gput_right:Nn} +\def_new:Npn \tlp_gput_right:co {\exp_args:Nc \tlp_gput_right:No} \def_new:Npn \tlp_put_right:cc {\exp_args:Ncc \tlp_put_right:Nn} -\def_new:Npn \tlp_put_right:No {\exp_args:NNo \tlp_put_right:Nn} -\def_new:Npn \tlp_put_right:Nx {\exp_args:Nnx \tlp_put_right:Nn} \def_new:Npn \tlp_gset:Nc { \pref_global:D \tlp_set:Nc} @@ -1409,14 +1502,14 @@ \let_new:NN \tlist_to_uppercase:n \tex_uppercase:D \let_new:NN \tlist_to_str:n \etex_detokenize:D \def_long_new:Npn \tlist_map_function:nN #1#2{ - \tlist_map_function_aux:Nn #2 #1 \q_nil \q_stop + \tlist_map_function_aux:Nn #2 #1 \q_recursion_tail \q_recursion_stop } \def_new:Npn \tlp_map_function:NN #1#2{ \exp_after:NN \tlist_map_function_aux:Nn - \exp_after:NN #2 #1 \q_nil \q_stop + \exp_after:NN #2 #1 \q_recursion_tail \q_recursion_stop } \def_long_new:Npn \tlist_map_function_aux:Nn #1#2{ - \quark_if_nil:nT{#2} \tlist_map_break:w + \quark_if_recursion_tail_stop:n{#2} #1{#2} \tlist_map_function_aux:Nn #1 } \def_new:Npn\tlp_map_function:cN{\exp_args:Nc\tlp_map_function:NN} @@ -1426,7 +1519,7 @@ ##1{#2} \exp_args:Nc \tlist_map_function_aux:Nn {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n} - #1 \q_nil\q_stop + #1 \q_recursion_tail\q_recursion_stop \num_decr:N \l_tlp_inline_level_num } \def_long_new:Npn \tlp_map_inline:Nn #1#2{ @@ -1435,22 +1528,22 @@ ##1{#2} \exp_args:NcE \tlist_map_function_aux:Nn {tlist_map_inline_ \num_use:N \l_tlp_inline_level_num :n} - #1 \q_nil\q_stop + #1 \q_recursion_tail\q_recursion_stop \num_decr:N \l_tlp_inline_level_num } \def_new:Npn\tlp_map_inline:cN{\exp_args:Nc\tlp_map_inline:NN} \tlp_new:Nn \l_tlp_inline_level_num{0} \def_long_new:Npn \tlist_map_variable:nNn #1#2#3{ - \tlist_map_variable_aux:Nnn #2 {#3} #1 \q_nil \q_stop + \tlist_map_variable_aux:Nnn #2 {#3} #1 \q_recursion_tail \q_recursion_stop } \def_new:Npn \tlp_map_variable:NNn {\exp_args:No \tlist_map_variable:nNn} \def_new:Npn \tlp_map_variable:cNn {\exp_args:Nc \tlp_map_variable:NNn} \def_long_new:Npn \tlist_map_variable_aux:Nnn #1#2#3{ \tlp_set:Nn #1{#3} - \quark_if_nil:NT #1 \tlist_map_break:w + \quark_if_recursion_tail_stop:N #1 #2 \tlist_map_variable_aux:Nnn #1{#2} } -\let_new:NN \tlist_map_break:w \use_none_delimit_by_q_stop:w +\let_new:NN \tlist_map_break:w \use_none_delimit_by_q_recursion_stop:w \let_new:NN \tlp_map_break:w \tlist_map_break:w \let_new:NN \tlist_compare:xx \pdfstrcmp \def_long_new:NNn \tlist_compare:nn 2{ @@ -1497,12 +1590,46 @@ \tlp_set:Nx \l_testb_tlp {\exp_not:n{#2}} \if_meaning:NN\l_testa_tlp \l_testb_tlp } + \def_long_test_function:npn{tlist_if_eq:no}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:n{#1}} + \tlp_set:Nx \l_testb_tlp {\exp_not:o{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:nx}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:n{#1}} + \tlp_set:Nx \l_testb_tlp {#2} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:on}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:o{#1}} + \tlp_set:Nx \l_testb_tlp {\exp_not:n{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } \def_long_test_function:npn{tlist_if_eq:oo}#1#2{ \tlp_set:Nx \l_testa_tlp {\exp_not:o{#1}} \tlp_set:Nx \l_testb_tlp {\exp_not:o{#2}} \if_meaning:NN\l_testa_tlp \l_testb_tlp } - \def_long:Npn\tlist_compare:xx #1#2{\ERROR} + \def_long_test_function:npn{tlist_if_eq:ox}#1#2{ + \tlp_set:Nx \l_testa_tlp {\exp_not:o{#1}} + \tlp_set:Nx \l_testb_tlp {#2} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:xn}#1#2{ + \tlp_set:Nx \l_testa_tlp {#1} + \tlp_set:Nx \l_testb_tlp {\exp_not:n{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:xo}#1#2{ + \tlp_set:Nx \l_testa_tlp {#1} + \tlp_set:Nx \l_testb_tlp {\exp_not:o{#2}} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } + \def_long_test_function:npn{tlist_if_eq:xx}#1#2{ + \tlp_set:Nx \l_testa_tlp {#1} + \tlp_set:Nx \l_testb_tlp {#2} + \if_meaning:NN\l_testa_tlp \l_testb_tlp + } } \def_long:Npn \tlp_if_in:NnTF #1#2{ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{ @@ -1513,7 +1640,7 @@ \def_new:Npn \tlp_if_in:cnTF {\exp_args:Nc\tlp_if_in:NnTF} \def_long:Npn \tlp_if_in:NnT #1#2{ \def_long:Npn\tmp:w ##1 #2 ##2\q_stop{ - \quark_if_no_value:nFT{##2} + \quark_if_no_value:nF{##2} } \exp_after:NN \tmp:w #1 #2 \q_no_value \q_stop } @@ -1534,11 +1661,11 @@ \def_new:Npn \tlist_if_in:onTF {\exp_args:No\tlist_if_in:nnTF} \tlp_new:Nn\l_tlp_replace_tlp{} \def_long_new:NNn \tlp_replace_in_aux:NNnn 4{ - \def:Npn \tmp:w ##1#3##2\q_stop{ + \def_long:Npn \tmp:w ##1#3##2\q_stop{ \quark_if_no_value:nF{##2} { \tlp_set:Nx\l_tlp_replace_tlp{\exp_not:o{\use_none:n##1#4}} - \def:Npn \tmp:w ####1#3\q_no_value{ + \def_long:Npn \tmp:w ####1#3\q_no_value{ \tlp_put_right:Nx \l_tlp_replace_tlp {\exp_not:o{\use_none:n ####1}} } \tmp:w \q_mark ##2 @@ -1554,7 +1681,7 @@ \def_new:Npn \tlp_greplace_in:cnn{\exp_args:Nc\tlp_greplace_in:Nnn} \def_long:NNn \tlp_replace_all_in_aux:NNnn 4{ \tlp_clear:N \l_tlp_replace_tlp - \def:Npn \tmp:w ##1#3##2\q_stop{ + \def_long:Npn \tmp:w ##1#3##2\q_stop{ \quark_if_no_value:nTF{##2} { \tlp_put_right:Nx \l_tlp_replace_tlp {\exp_not:o{\use_none:n##1}} @@ -1634,11 +1761,10 @@ \def_long_test_function_new:npn {tlist_if_head_eq_catcode:nN}#1#2{ \if:w\tlist_if_head_eq_catcode_p:nN{#1}#2} \def_long_new:Npn \tlist_reverse:n #1{ - \tlist_reverse_aux:nN {} #1 \q_nil\q_stop + \tlist_reverse_aux:nN {} #1 \q_recursion_tail\q_stop } \def_long_new:Npn \tlist_reverse_aux:nN #1#2{ - \quark_if_nil:NT #2 - { \use_arg_i_delimit_by_q_stop:nw {#1} } + \quark_if_recursion_tail_stop_do:nn {#2}{ #1 } \tlist_reverse_aux:nN {#2#1} } %% File: l3expan.dtx Copyright (C) 1990-2006 LaTeX3 project @@ -1673,37 +1799,47 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3expan.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3expan.dtx 735 2008-01-14 22:31:02Z morten $ {L3 Experimental Argument Expansion module} \tlp_new:Nn\l_exp_tlp{} -\def_new:Npn\exp_arg_next:nnn#1#2#3{ +\def_long_new:Npn\exp_arg_next:nnn#1#2#3{ #2\:::{#3#1} } -\def_new:Npn\::n#1\:::#2#3{ +\def_long_new:Npn\::n#1\:::#2#3{ #1\:::{#2{#3}} } -\def_new:Npn\::N#1\:::#2#3{ +\def_long_new:Npn\::N#1\:::#2#3{ #1\:::{#2#3} } -\def_new:Npn\::c#1\:::#2#3{ +\def_long_new:Npn\::c#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn\cs:w #3\cs_end:{#1}{#2} } -\def_new:Npn\::o#1\:::#2#3{ +\def_long_new:Npn\::o#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn\exp_after:NN{\exp_after:NN{#3}}{#1}{#2} } -\def_new:Npn\::f#1\:::#2#3{ +\def_long_new:Npn\::f#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{\exp_after:NN{\int_to_roman:w -`0 #3}} {#1}{#2} } -\def_new:Npn\::x#1\:::#2#3{ - \tlp_set:Nx\l_exp_tlp{{{#3}}} - \exp_after:NN\exp_arg_next:nnn\l_exp_tlp{#1}{#2}} -\def_new:Npn\:::#1{#1} -\def_new:Npn\::C#1\:::#2#3{ +\def_new:Npn \exp_stop_f: {~} +\let_new:NN \exp_arg:x \expanded % Move eventually. +\cs_if_free:NTF\exp_arg:x{ + \def_long_new:Npn\::x#1\:::#2#3{ + % \tlp_set:Nx\l_exp_tlp{{{#3}}} + \def:Npx \l_exp_tlp{{{#3}}} + \exp_after:NN\exp_arg_next:nnn\l_exp_tlp{#1}{#2}} +} +{ + \def_long_new:Npn\::x#1\:::#2#3{ + \exp_after:NN\exp_arg_next:nnn + \exp_after:NN{\exp_arg:x{{#3}}}{#1}{#2} + } +} +\def_long_new:Npn\:::#1{#1} +\def_long_new:Npn\::C#1\:::#2#3{ \exp_after:NN\exp_C_aux:nnn\cs:w #3\cs_end:{#1}{#2}} -\def_new:Npn\exp_C_aux:nnn #1 - { +\def_long_new:Npn\exp_C_aux:nnn #1{ \exp_after:NN \exp_arg_next:nnn \exp_after:NN @@ -1711,14 +1847,14 @@ \exp_after:NN {#1} } - } -\def:Npn\::E#1\:::#2#3{ +} +\def_long_new:Npn\::E#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{#3}{#1}{#2} } -\def:Npn\::e#1\:::#2#3{ +\def_long_new:Npn\::e#1\:::#2#3{ \exp_after:NN\exp_arg_next:nnn \exp_after:NN{#3}{#1}{#2} } -\def:Npn\::d#1\:::#2#3{ +\def_long_new:Npn\::d#1\:::#2#3{ \exp_after:NN\exp_after:NN\exp_after:NN\exp_arg_next:nnn \exp_after:NN\exp_after:NN\exp_after:NN{ \exp_after:NN\exp_after:NN\exp_after:NN{#3}}{#1}{#2} @@ -1730,26 +1866,31 @@ \def:Npn \exp_args:NcE #1#2{\exp_after:NN #1\cs:w #2\exp_after:NN\cs_end:} \def:Npn \exp_args:Nd {\::d\:::} \def:Npn \exp_args:NNd {\::N\::d\:::} + \def:Npn \exp_args:NC {\::C\:::} -\def:Npn \exp_args:Ncx {\::c\::x\:::} -\def:Npn \exp_args:Ncco {\::c\::c\::o\:::} -\def:Npn \exp_args:Nccx {\::c\::c\::x\:::} -\def:Npn \exp_args:Ncnx {\::c\::n\::x\:::} +\def:Npn \exp_args:NNC {\::N\::C\:::} +\def:Npn \exp_args:NNf {\::N\::f\:::} +\def:Npn \exp_args:NNno {\::N\::n\::o\:::} +\def:Npn \exp_args:NNnx {\::N\::n\::x\:::} % new +\def:Npn \exp_args:NNoo {\::N\::o\::o\:::} % new +\def:Npn \exp_args:NNox {\::N\::o\::x\:::} % new +\def:Npn \exp_args:NNx {\::N\::x\:::} \def:Npn \exp_args:NcNc {\::c\::N\::c\:::} \def:Npn \exp_args:NcNo {\::c\::N\::o\:::} \def:Npn \exp_args:Ncco {\::c\::c\::o\:::} +\def:Npn \exp_args:Ncco {\::c\::c\::o\:::} +\def:Npn \exp_args:Nccx {\::c\::c\::x\:::} +\def:Npn \exp_args:Ncnx {\::c\::n\::x\:::} +\def:Npn \exp_args:Ncx {\::c\::x\:::} \def:Npn \exp_args:Nf {\::f\:::} -\def:Npn \exp_args:NNf {\::N\::f\:::} \def:Npn \exp_args:Nfo{\::f\::o\:::} \def:Npn \exp_args:Nnf {\::n\::f\:::} -\def:Npn \exp_args:NNno {\::N\::n\::o\:::} -%% Strange one this next one... -\def:Npn \exp_args:NnnN {\::n\::n\::N\:::} +\def:Npn \exp_args:NnnN {\::n\::n\::N\:::} %% Strange one this one... +\def:Npn \exp_args:Nnnc {\::n\::n\::c\:::} \def:Npn \exp_args:Nnno {\::n\::n\::o\:::} \def:Npn \exp_args:Nnnx {\::n\::n\::x\:::} \def:Npn \exp_args:Nno {\::n\::o\:::} \def:Npn \exp_args:Nnox {\::n\::o\::x\:::} -\def:Npn \exp_args:NNx {\::N\::x\:::} \def:Npn \exp_args:Nnx {\::n\::x\:::} \def:Npn \exp_args:Noo {\::o\::o\:::} \def:Npn \exp_args:Noox {\::o\::o\::x\:::} @@ -1757,35 +1898,39 @@ \def:Npn \exp_args:Nx {\::x\:::} \def:Npn \exp_args:Nxo {\::x\::o\:::} \def:Npn \exp_args:Nxx {\::x\::x\:::} -\def:Npn \exp_args:NNC {\::N\::C\:::} -\def:Npn \exp_args:Nnnc {\::n\::n\::c\:::} -\def_new:Npn\exp_not:o#1{\exp_not:n\exp_after:NN{#1}} +\def_long_new:Npn\exp_not:o#1{\exp_not:n\exp_after:NN{#1}} +\def_long_new:Npn\exp_not:d#1{ + \exp_not:n\exp_after:NN\exp_after:NN\exp_after:NN{#1} +} +\def_long_new:Npn\exp_not:f#1{ + \exp_not:n\exp_after:NN{\int_to_roman:w -`0 #1} +} \def_new:Npn\exp_not:E{\exp_after:NN\exp_not:N} -\def_new:Npn\exp_not:c#1{\exp_after:NN\exp_not:N\cs:w#1\cs_end:} -\def_new:Npn \exp_args:No #1#2{\exp_after:NN#1\exp_after:NN{#2}} -\def_new:Npn \exp_args:NOo #1#2#3{\exp_after:NN\exp_args:No \exp_after:NN#1 +\def_long_new:Npn\exp_not:c#1{\exp_after:NN\exp_not:N\cs:w#1\cs_end:} +\def_long_new:Npn \exp_args:No #1#2{\exp_after:NN#1\exp_after:NN{#2}} +\def_long_new:Npn \exp_args:NOo #1#2#3{\exp_after:NN\exp_args:No \exp_after:NN#1 \exp_after:NN#2\exp_after:NN{#3}} -\def_new:Npn \exp_args:NOOo #1#2#3#4{\exp_after:NN\exp_args:NOo +\def_long_new:Npn \exp_args:NOOo #1#2#3#4{\exp_after:NN\exp_args:NOo \exp_after:NN#1\exp_after:NN#2\exp_after:NN#3\exp_after:NN{#4}} -\def_new:Npn \exp_args:NNo #1#2#3{\exp_after:NN#1\exp_after:NN#2 +\def_long_new:Npn \exp_args:NNo #1#2#3{\exp_after:NN#1\exp_after:NN#2 \exp_after:NN{#3}} -\def_new:Npn \exp_args:NNO #1#2#3 {\exp_after:NN#1 +\def_long_new:Npn \exp_args:NNO #1#2#3 {\exp_after:NN#1 \exp_after:NN#2 #3} -\def_new:Npn \exp_args:NNOo #1#2#3#4{\exp_after:NN\exp_args:NNo +\def_long_new:Npn \exp_args:NNOo #1#2#3#4{\exp_after:NN\exp_args:NNo \exp_after:NN#1\exp_after:NN#2\exp_after:NN#3\exp_after:NN{#4}} -\def_new:Npn \exp_args:NNNo #1#2#3#4{\exp_after:NN#1\exp_after:NN#2 +\def_long_new:Npn \exp_args:NNNo #1#2#3#4{\exp_after:NN#1\exp_after:NN#2 \exp_after:NN#3\exp_after:NN{#4}} -\def_new:Npn \exp_args:Nc #1#2{\exp_after:NN#1\cs:w#2\cs_end:} -\def_new:Npn \exp_args:NNc #1#2#3{\exp_after:NN#1\exp_after:NN#2 +\def_long_new:Npn \exp_args:Nc #1#2{\exp_after:NN#1\cs:w#2\cs_end:} +\def_long_new:Npn \exp_args:NNc #1#2#3{\exp_after:NN#1\exp_after:NN#2 \cs:w#3\cs_end:} -\def_new:Npn \exp_args:NOc#1#2#3{\exp_after:NN\exp_args:No\exp_after:NN +\def_long_new:Npn \exp_args:NOc#1#2#3{\exp_after:NN\exp_args:No\exp_after:NN #1\exp_after:NN#2\cs:w#3\cs_end:} -\def_new:Npn \exp_args:Ncc #1#2#3{\exp_after:NN#1 +\def_long_new:Npn \exp_args:Ncc #1#2#3{\exp_after:NN#1 \cs:w#2\exp_after:NN\cs_end:\cs:w#3\cs_end:} -\def_new:Npn \exp_args:Nccc #1#2#3#4{\exp_after:NN#1 +\def_long_new:Npn \exp_args:Nccc #1#2#3#4{\exp_after:NN#1 \cs:w#2\exp_after:NN\cs_end:\cs:w#3\exp_after:NN \cs_end:\cs:w #4\cs_end:} -\def_new:Npn \exp_args:Nco #1#2#3{\exp_after:NN#1\cs:w#2\exp_after:NN +\def_long_new:Npn \exp_args:Nco #1#2#3{\exp_after:NN#1\cs:w#2\exp_after:NN \cs_end:\exp_after:NN{#3}} \def:Npn\exp_def_form:nnn#1#2#3{ \exp_after:NN @@ -1848,7 +1993,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3quark.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3quark.dtx 705 2007-12-02 22:14:25Z morten $ {L3 Experimental Quark Commands} \def_new:Npn \quark_new:N #1{\tlp_new:Nn #1{#1}} \quark_new:N \q_stop @@ -1856,6 +2001,48 @@ \quark_new:N \q_nil \quark_new:N\q_error \quark_new:N\q_mark +\quark_new:N\q_recursion_tail +\quark_new:N\q_recursion_stop +\def_long_new:Npn \quark_if_recursion_tail_stop:n #1 { + \exp_after:NN\if_meaning:NN + \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail\q_recursion_tail + \exp_after:NN \use_none_delimit_by_q_recursion_stop:w + \fi: +} +\def_long_new:Npn \quark_if_recursion_tail_stop:N #1 { + \if_meaning:NN#1\q_recursion_tail + \exp_after:NN \use_none_delimit_by_q_recursion_stop:w + \fi: +} +\def_new:Npn \quark_if_recursion_tail_stop:o{ + \exp_args:No\quark_if_recursion_tail_stop:n +} +\def_long_new:Npn \quark_if_recursion_tail_stop_do:nn #1#2 { + \exp_after:NN\if_meaning:NN + \quark_if_recursion_tail_aux:w #1?\q_nil\q_recursion_tail + \exp_after:NN \use_arg_i_delimit_by_q_recursion_stop:nw + \else: + \exp_after:NN\use_none:n + \fi: + {#2} +} +\def_long_new:Npn \quark_if_recursion_tail_stop_do:Nn #1#2 { + \if_meaning:NN #1\q_recursion_tail + \exp_after:NN \use_arg_i_delimit_by_q_recursion_stop:nw + \else: + \exp_after:NN\use_none:n + \fi: + {#2} +} +\def_new:Npn \quark_if_recursion_tail_stop_do:on{ + \exp_args:No\quark_if_recursion_tail_stop_do:nn +} +\def_long_new:Npn \quark_if_recursion_tail_aux:w + #1#2\q_nil\q_recursion_tail{#1} +\def_long_new:Npn\use_none_delimit_by_q_recursion_stop:w + #1\q_recursion_stop {} +\def_long_new:Npn\use_arg_i_delimit_by_q_recursion_stop:nw + #1#2\q_recursion_stop {#1} \def_long_test_function_new:npn {quark_if_no_value:N} #1 { \if_meaning:NN\q_no_value#1} \def_long_new:Npn \quark_if_no_value_p:N #1{ @@ -1951,8 +2138,10 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3num.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3num.dtx 702 2007-11-27 14:21:49Z morten $ {L3 Experimental token numbers} + +\let_new:NN \num_value:w \tex_number:D \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 @@ -1991,7 +2180,9 @@ \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} \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} \let_new:NN\num_use:N \use_arg_i:n \let_new:NN\num_use:c \cs_use:c \def_test_function_new:npn {num_compare:nNn}#1#2#3{ @@ -2005,12 +2196,17 @@ \c_false \fi: } +\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}} \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 -\engine_aleph:TF +\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: @@ -2084,7 +2280,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3seq.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3seq.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental sequences and stacks} \let_new:NN \seq_elt:w \ERROR \let_new:NN \seq_elt_end: \ERROR @@ -2233,7 +2429,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3alloc.dtx 581 2006-12-12 12:28:27Z morten $ +\GetIdInfo$Id: l3alloc.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental register allocation}% \def_new:Npn \alloc_setup_type:nnn #1 #2 #3{ \num_new:c {g_ #1 _allocation_num} @@ -2309,7 +2505,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3io.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3io.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental i/o module} \alloc_setup_type:nnn {iow} \c_zero \c_sixteen \def_new:Npn \iow_new:N #1 {\alloc_reg:NnNN g {iow} \tex_chardef:D #1} @@ -2393,7 +2589,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3int.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3int.dtx 702 2007-11-27 14:21:49Z morten $ {L3 Experimental Integer module} \let_new:NN \int_to_roman:w \tex_romannumeral:D @@ -2413,6 +2609,10 @@ \def:Npn \int_decr:N #1{\int_add:Nn#1\c_minus_one} \def:Npn \int_gincr:N #1{\int_gadd:Nn#1\c_one} \def:Npn \int_gdecr:N #1{\int_gadd:Nn#1\c_minus_one} +\def:Npn \int_incr:c {\exp_args:Nc\int_incr:N} +\def:Npn \int_decr:c {\exp_args:Nc\int_decr:N} +\def:Npn \int_gincr:c {\exp_args:Nc\int_gincr:N} +\def:Npn \int_gdecr:c {\exp_args:Nc\int_gdecr:N} \alloc_setup_type:nnn {int} \c_eleven \c_max_register_num \def_new:Npn \int_new:N #1 {\alloc_reg:NnNN g {int} \tex_countdef:D#1} \def_new:Npn \int_new_l:N #1 {\alloc_reg:NnNN l {int} \tex_countdef:D#1} @@ -2441,10 +2641,11 @@ \def_new:Npn \int_gsub:Nn { \pref_global:D \int_sub:Nn } +\def_new:Npn \int_gadd:cn{\exp_args:Nc\int_gadd:Nn} +\def_new:Npn \int_sub:cn{\exp_args:Nc\int_sub:Nn} +\def_new:Npn \int_gsub:cn{\exp_args:Nc\int_gsub:Nn} \let_new:NN \int_use:N \tex_the:D \def_new:Npn \int_use:c #1{\int_use:N \cs:w#1\cs_end:} -\def_new:Npn \int_gincr:c {\exp_args:Nc \int_gincr:N} -\def_new:Npn \int_gdecr:c {\exp_args:Nc \int_gdecr:N} \def_new:Npn \int_to_arabic:n #1{\int_to_number:w \int_eval:n{#1}} \def_new:Npn \int_roman_lcuc_mapping:Nnn #1#2#3{ \def:cpn {int_to_lc_roman_#1:}{#2} @@ -2507,7 +2708,7 @@ \int_Alph_default_conversion_rule:n } \def_new:Npn \int_to_symbol:n #1{ - \mode_math:TF + \mode_if_math:TF { \int_convert_number_with_rule:nnN {#1}{9} \int_symbol_math_conversion_rule:n @@ -2560,7 +2761,28 @@ \int_pre_eval_two_args:Nnn\int_div_truncate_raw:nn } \def_new:Npn \int_div_truncate_raw:nn #1#2 { - \int_eval:n{ (2*#1 - #2) / (2* #2) } + \int_eval:w + \if_num:w \int_eval:w#1 = \c_zero + 0 + \else: + (#1 + \if_num:w \int_eval:w #1 < \c_zero + \if_num:w \int_eval:w#2 < \c_zero + -( #2 + + \else: + +( #2 - + \fi: + \else: + \if_num:w \int_eval:w #2 < \c_zero + +( #2 + + \else: + -( #2 - + \fi: + \fi: + 1)/2) + \fi: + /(#2) + \scan_stop: } \def_new:Npn \int_div_round:nn { \int_pre_eval_two_args:Nnn\int_div_round_raw:nn @@ -2573,6 +2795,9 @@ \let_new:NN \int_compare:nNnTF \num_compare:nNnTF \let_new:NN \int_compare:nNnT \num_compare:nNnT \let_new:NN \int_compare:nNnF \num_compare:nNnF +\let_new:NN \int_max_of:nn \num_max_of:nn +\let_new:NN \int_min_of:nn \num_min_of:nn +\let_new:NN \int_abs:nn \num_abs:nn \let_new:NN \int_compare_p:nNn \num_compare_p:nNn \def_new:Npn \int_if_odd_p:n #1 { \if_num_odd:w \int_eval:n{#1} @@ -2582,16 +2807,16 @@ \fi: } \def_test_function_new:npn {int_if_odd:n}#1{\if_num_odd:w \int_eval:n{#1}} -\def_new:Npn \int_whiledo:nNnT #1#2#3#4{ +\def_long_new:Npn \int_whiledo:nNnT #1#2#3#4{ \int_compare:nNnT {#1}#2{#3}{#4 \int_whiledo:nNnT {#1}#2{#3}{#4}} } -\def_new:Npn \int_whiledo:nNnF #1#2#3#4{ +\def_long_new:Npn \int_whiledo:nNnF #1#2#3#4{ \int_compare:nNnF {#1}#2{#3}{#4 \int_whiledo:nNnF {#1}#2{#3}{#4}} } -\def_new:Npn \int_dowhile:nNnT #1#2#3#4{ +\def_long_new:Npn \int_dowhile:nNnT #1#2#3#4{ #4 \int_compare:nNnT {#1}#2{#3}{\int_dowhile:nNnT {#1}#2{#3}{#4}} } -\def_new:Npn \int_dowhile:nNnF #1#2#3#4{ +\def_long_new:Npn \int_dowhile:nNnF #1#2#3#4{ #4 \int_compare:nNnF {#1}#2{#3}{\int_dowhile:nNnF {#1}#2{#3}{#4}} } \def_new:Npn \int_get_sign_and_digits:n #1{ @@ -2727,7 +2952,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3clist.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3clist.dtx 725 2007-12-22 21:25:00Z mittelba $ {L3 Experimental comma separated lists} \def_new:Npn \clist_new:N #1{\tlp_new:Nn #1{}} \def_new:Npn \clist_new:c {\exp_args:Nc \clist_new:N} @@ -2787,7 +3012,7 @@ \def_new:Npn \clist_put_right:No {\exp_args:Nno\clist_put_right:Nn} \def_new:Npn \clist_put_right:Nx {\exp_args:Nnx\clist_put_right:Nn} \def_new:Npn \clist_gput_right:Nn { - \clist_put_aux:NNnnNn \tlp_set:Nn \tlp_put_right:Nn , {} + \clist_put_aux:NNnnNn \tlp_gset:Nn \tlp_gput_right:Nn , {} } \def_new:Npn \clist_gput_right:No {\exp_args:NNo \clist_gput_right:Nn} \def_new:Npn \clist_gput_right:cn {\exp_args:Nc \clist_gput_right:Nn} @@ -2798,20 +3023,20 @@ \clist_if_empty:NF #1 { \exp_after:NN \clist_map_function_aux:Nw - \exp_after:NN #2 #1 , \q_nil , \q_stop + \exp_after:NN #2 #1 , \q_recursion_tail , \q_recursion_stop } } \def_new:Npn \clist_map_function:cN{\exp_args:Nc\clist_map_function:NN} \def_new:Npn \clist_map_function:nN #1#2{ - \tlist_if_empty:nF {#1} - { \clist_map_function_aux:Nw #2 #1 , \q_nil , \q_stop } + \tlist_if_blank:nF {#1} + { \clist_map_function_aux:Nw #2 #1 , \q_recursion_tail , \q_recursion_stop } } \def_new:Npn \clist_map_function_aux:Nw #1#2,{ - \quark_if_nil:nT{#2} \clist_map_break:w + \quark_if_recursion_tail_stop:n{#2} #1{#2} \clist_map_function_aux:Nw #1 } -\let_new:NN \clist_map_break:w \use_none_delimit_by_q_stop:w +\let_new:NN \clist_map_break:w \use_none_delimit_by_q_recursion_stop:w \int_new:N \l_clist_inline_level_int \def_new:Npn \clist_map_inline:Nn #1#2{ \clist_if_empty:NF #1 @@ -2821,7 +3046,7 @@ ##1{#2} \exp_args:NcE \clist_map_function_aux:Nw {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n} - #1 , \q_nil , \q_stop + #1 , \q_recursion_tail , \q_recursion_stop \int_decr:N \l_clist_inline_level_int } } @@ -2834,21 +3059,22 @@ ##1{#2} \exp_args:Nc \clist_map_function_aux:Nw {clist_map_inline_ \int_use:N \l_clist_inline_level_int :n} - #1 , \q_nil , \q_stop + #1 , \q_recursion_tail , \q_recursion_stop \int_decr:N \l_clist_inline_level_int } } \def_new:Npn \clist_map_variable:nNn #1#2#3{ \tlist_if_empty:nF{#1} { - \clist_map_variable_aux:Nnw #2 {#3} #1 , \q_nil , \q_stop + \clist_map_variable_aux:Nnw #2 {#3} #1 + , \q_recursion_tail , \q_recursion_stop } } \def_new:Npn \clist_map_variable:NNn {\exp_args:No \clist_map_variable:nNn} \def_new:Npn \clist_map_variable:cNn {\exp_args:Nc \clist_map_variable:NNn} \def_new:Npn \clist_map_variable_aux:Nnw #1#2#3,{ \def:Npn #1{#3} - \quark_if_nil:NT #1 \clist_map_break:w + \quark_if_recursion_tail_stop:N #1 #2 \clist_map_variable_aux:Nnw #1{#2} } \def_new:Npn \clist_concat_aux:NNNN #1#2#3#4{ @@ -2947,85 +3173,94 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3prop.dtx 581 2006-12-12 12:28:27Z morten $ +\GetIdInfo$Id: l3prop.dtx 668 2007-09-27 15:54:23Z mittelba $ {L3 Experimental Property Lists} +\quark_new:N\q_prop + \def_new:Npn \prop_new:N #1{\toks_new:N #1} \def_new:Npn \prop_new:c {\exp_args:Nc \prop_new:N} \let_new:NN \prop_clear:N \toks_clear:N \def_new:Npn \prop_clear:c {\exp_args:Nc\prop_clear:N} \let_new:NN \prop_gclear:N \toks_gclear:N \def_new:Npn \prop_gclear:c {\exp_args:Nc\prop_gclear:N} -\let_new:NN \prop_use:N \toks_use:N -\def_long_new:Npn \prop_split_aux:NNn #1#2#3{ - \def:Npn \tmp:w ##1#2##2##3\q_stop {#3{##1}{##2}{##3}} - \exp_after:NN\tmp:w \prop_use:N#1#2\q_no_value \q_stop} -\def_long_new:NNn \prop_get:NNN 2{ - \prop_split_aux:NNn #1#2\prop_get_aux:w} -\def_long_new:NNn \prop_get_aux:w 4{\toks_set:Nn#4{#2}} -\def_new:Npn \prop_get:cNN { \exp_args:Nc \prop_get:NNN } -\def_long_new:NNn \prop_gget:NNN 2{ - \prop_split_aux:NNn #1#2\prop_gget_aux:w} -\def_new:Npn \prop_gget:NcN {\exp_args:NNc \prop_gget:NNN} -\def_new:Npn \prop_gget:cNN {\exp_args:Nc \prop_gget:NNN} -\def_long_new:NNn \prop_gget_aux:w 4{\toks_gset:Nn#4{#2}} -\def_long_new:NNn \prop_get_gdel:NNN 3{ - \prop_split_aux:NNn #1#2{\prop_get_del_aux:w #3{\toks_gset:Nn #1}#2}} +\def_long_new:Npn \prop_split_aux:Nnn #1#2#3{ + \def:Npn \tmp:w ##1\q_prop#2\q_prop##2##3\q_stop {#3{##1}{##2}{##3}} + \exp_after:NN\tmp:w \toks_use:N#1\q_prop#2\q_prop\q_no_value \q_stop +} +\def_long_new:NNn \prop_get:NnN 2{ + \prop_split_aux:Nnn #1{#2}\prop_get_aux:w} +\def_long_new:NNn \prop_get_aux:w 4{\tlp_set:Nx#4{\exp_not:n{#2}}} +\def_new:Npn \prop_get:cnN { \exp_args:Nc \prop_get:NnN } +\def_long_new:NNn \prop_gget:NnN 2{ + \prop_split_aux:Nnn #1{#2}\prop_gget_aux:w} +\def_new:Npn \prop_gget:NcN {\exp_args:NNc \prop_gget:NnN} +\def_new:Npn \prop_gget:cnN {\exp_args:Nc \prop_gget:NnN} +\def_long_new:NNn \prop_gget_aux:w 4{\tlp_gset:Nx#4{\exp_not:n{#2}}} +\def_long_new:NNn \prop_get_gdel:NnN 3{ + \prop_split_aux:Nnn #1{#2}{\prop_get_del_aux:w #3{\toks_gset:Nn #1}{#2}}} \def_long_new:NNn \prop_get_del_aux:w 6{ - \quark_if_no_value:nF{#5} { - \def:Npn \tmp:w ##1#3\q_no_value {#2{#4##1}} + \tlp_set:Nx #1{\exp_not:n{#5}} + \quark_if_no_value:NF #1 { + \def:Npn \tmp:w ##1\q_prop#3\q_prop\q_no_value {#2{#4##1}} \tmp:w #6} } -\def_long_new:NNn \prop_put:NNn 2{ - \prop_split_aux:NNn #1#2{ - \toks_clear:N #1 - \prop_put_aux:w {\toks_put_right:Nn #1}#2} -} -\def_new:Npn \prop_put:ccn {\exp_args:Ncc \prop_put:NNn } -\def_long_new:NNn \prop_gput:NNn 2{ - \prop_split_aux:NNn #1#2{ - \toks_gclear:N #1 - \prop_put_aux:w {\toks_gput_right:Nn #1}#2} -} -\def_new:Npn \prop_gput:NNo {\exp_args:NNNo \prop_gput:NNn} -\def_new:Npn \prop_gput:NNx {\exp_args:Nnnx \prop_gput:NNn} -\def_new:Npn \prop_gput:NOx {\exp_args:Nnox \prop_gput:NNn} -\def_new:Npn \prop_gput:NOo {\exp_args:NNOo \prop_gput:NNn} -\def_new:Npn \prop_gput:Ncn {\exp_args:NNc \prop_gput:NNn } -\def_new:Npn \prop_gput:OOo {\exp_args:NOOo \prop_gput:NNn} -\def_new:Npn \prop_gput:cNn {\exp_args:Nc \prop_gput:NNn} -\def_new:Npn \prop_gput:ccn {\exp_args:Ncc \prop_gput:NNn} -\def_new:Npn \prop_gput:cco {\exp_args:Ncco \prop_gput:NNn} -\def_new:Npn \prop_gput:ccx {\exp_args:Nccx \prop_gput:NNn} +\def_long_new:NNn \prop_put:Nnn 2{ + \prop_split_aux:Nnn #1{#2}{ + \prop_clear:N #1 + \prop_put_aux:w {\toks_put_right:Nn #1}{#2}} +} +\def_new:Npn \prop_put:ccn {\exp_args:Ncc \prop_put:Nnn } + +\def_long_new:NNn \prop_gput:Nnn 2{ + \prop_split_aux:Nnn #1{#2}{ + \prop_gclear:N #1 + \prop_put_aux:w {\toks_gput_right:Nn #1}{#2}} +} + \def_long_new:NNn \prop_put_aux:w 6{ - #1{#2{#6}#3} - \quark_if_no_value:nF {#4} + #1{\q_prop#2\q_prop{#6}#3} + \tlist_if_empty:nF{#5} { - \def:Npn \tmp:w ##1#2\q_no_value {#1{##1}} + \def:Npn \tmp:w ##1\q_prop#2\q_prop\q_no_value {#1{##1}} \tmp:w #5 } } -\def_long_new:NNn \prop_del:NN 2{ - \prop_split_aux:NNn #1#2{\prop_del_aux:w {\toks_set:Nn #1}#2}} -\def_long_new:NNn \prop_gdel:NN 2{ - \prop_split_aux:NNn #1#2{\prop_del_aux:w {\toks_gset:Nn #1}#2}} -\def_long_new:NNn \prop_del_aux:w 5{\quark_if_no_value:nF {#4} - {\def:Npn \tmp:w ##1#2\q_no_value {#1{#3##1}}\tmp:w #5}} -\def_new:NNn \prop_if_in:NNTF 2{ - \prop_split_aux:NNn #1#2\prop_if_in_aux:w} -\def_new:Npn \prop_if_in:NOTF {\exp_args:Nno \prop_if_in:NNTF} -\def_new:Npn \prop_if_in:ccTF {\exp_args:Ncc \prop_if_in:NNTF} +\def_new:Npn \prop_gput:Nno {\exp_args:NNno \prop_gput:Nnn} +\def_new:Npn \prop_gput:Nnx {\exp_args:NNnx \prop_gput:Nnn} +\def_new:Npn \prop_gput:Nox {\exp_args:NNox \prop_gput:Nnn} +\def_new:Npn \prop_gput:Noo {\exp_args:NNoo \prop_gput:Nnn} +\def_new:Npn \prop_gput:Ncn {\exp_args:NNc \prop_gput:Nnn} +\def_new:Npn \prop_gput:Ooo {\exp_args:NOoo \prop_gput:Nnn} +\def_new:Npn \prop_gput:cnn {\exp_args:Nc \prop_gput:Nnn} +\def_new:Npn \prop_gput:ccn {\exp_args:Ncc \prop_gput:Nnn} +\def_new:Npn \prop_gput:cco {\exp_args:Ncco \prop_gput:Nnn} +\def_new:Npn \prop_gput:ccx {\exp_args:Nccx \prop_gput:Nnn} +\def_long_new:NNn \prop_del:Nn 2{ + \prop_split_aux:Nnn #1{#2}{\prop_del_aux:w {\toks_set:Nn #1}{#2}}} +\def_long_new:NNn \prop_gdel:Nn 2{ + \prop_split_aux:Nnn #1{#2}{\prop_del_aux:w {\toks_gset:Nn #1}{#2}}} +\def_long_new:NNn \prop_del_aux:w 5{ + \def:Npn \tmp:w {#4} + \quark_if_no_value:NF \tmp:w + {\def:Npn \tmp:w ##1\q_prop#2\q_prop\q_no_value {#1{#3##1}} + \tmp:w #5}} +\def_new:NNn \prop_if_in:NnTF 2{ + \prop_split_aux:Nnn #1{#2}\prop_if_in_aux:w} \def_new:NNn \prop_if_in_aux:w 3{\quark_if_no_value:nFT {#2}} -\def_long_new:NNn \prop_gput_if_new:NNn 2{ - \prop_split_aux:NNn #1#2{\prop_put_if_new_aux:w #1#2}} + +\def_new:Npn \prop_if_in:NoTF {\exp_args:NNo \prop_if_in:NnTF} +\def_new:Npn \prop_if_in:ccTF {\exp_args:Ncc \prop_if_in:NnTF} +\def_long_new:NNn \prop_gput_if_new:Nnn 2{ + \prop_split_aux:Nnn #1{#2}{\prop_put_if_new_aux:w #1{#2}}} \def_long_new:NNn \prop_put_if_new_aux:w 6{ - \quark_if_no_value:nT {#4}{#1{#2{#6}#3}}} + \tlist_if_empty:nT {#5}{#1{\q_prop#2\q_prop{#6}#3}}} \let_new:NN \prop_set_eq:NN \toks_set_eq:NN -\let_new:NN \prop_set_eq:Nc \toks_set_eq:Nc +\let_new:NN \prop_set_eq:Nc \toks_set_eq:Nc \let_new:NN \prop_set_eq:cN \toks_set_eq:cN -\let_new:NN \prop_set_eq:cc \toks_set_eq:cc -\let_new:NN \prop_gset_eq:NN \toks_gset_eq:NN +\let_new:NN \prop_set_eq:cc \toks_set_eq:cc +\let_new:NN \prop_gset_eq:NN \toks_gset_eq:NN \let_new:NN \prop_gset_eq:Nc \toks_gset_eq:Nc -\let_new:NN \prop_gset_eq:cN \toks_gset_eq:cN +\let_new:NN \prop_gset_eq:cN \toks_gset_eq:cN \let_new:NN \prop_gset_eq:cc \toks_gset_eq:cc \let_new:NN \prop_if_empty_p:N \toks_if_empty_p:N \let_new:NN \prop_if_empty_p:c \toks_if_empty_p:c @@ -3036,13 +3271,13 @@ \let_new:NN \prop_if_empty:cT \toks_if_empty:cTF \let_new:NN \prop_if_empty:cF \toks_if_empty:cF \def_new:NNn \prop_if_eq:NNTF 2 { - \tlist_if_eq:xxTF{\prop_use:N #1}{\prop_use:N #2} + \tlist_if_eq:xxTF{\toks_use:N #1}{\toks_use:N #2} } \def_new:NNn \prop_if_eq:NNT 2 { - \tlist_if_eq:xxT{\prop_use:N #1}{\prop_use:N #2} + \tlist_if_eq:xxT{\toks_use:N #1}{\toks_use:N #2} } \def_new:NNn \prop_if_eq:NNF 2 { - \tlist_if_eq:xxF{\prop_use:N #1}{\prop_use:N #2} + \tlist_if_eq:xxF{\toks_use:N #1}{\toks_use:N #2} } \def_new:Npn \prop_if_eq:NcTF {\exp_args:NNc \prop_if_eq:NNTF} \def_new:Npn \prop_if_eq:NcT {\exp_args:NNc \prop_if_eq:NNT} @@ -3054,32 +3289,82 @@ \def_new:Npn \prop_if_eq:ccT {\exp_args:Ncc \prop_if_eq:NNT} \def_new:Npn \prop_if_eq:ccF {\exp_args:Ncc \prop_if_eq:NNF} \def_new:Npn \prop_map_function:NN #1#2{ - \exp_after:NN \prop_map_function_aux:NNn - \exp_after:NN #2 \prop_use:N #1 \q_nil \q_no_value \q_stop + \exp_after:NN \prop_map_function_aux:w + \exp_after:NN #2 \toks_use:N #1 \q_prop{}\q_prop \q_no_value \q_stop } -\def_new:Npn \prop_map_function_aux:NNn #1#2#3{ - \if_meaning:NN \q_nil #1 +\def_new:Npn \prop_map_function_aux:w #1\q_prop#2\q_prop#3{ + \if:w \tlist_if_empty_p:n{#2} \exp_after:NN \prop_map_break:w \fi: - #1#2{#3} - \prop_map_function_aux:NNn #1 + #1{#2}{#3} + \prop_map_function_aux:w #1 +} + +\def:Npn \prop_map_function:NN #1#2{ + \exp_after:NN \prop_map_function_aux:w + \exp_after:NN #2 \toks_use:N #1 \q_prop \q_no_value \q_prop \q_no_value } +\def:Npn \prop_map_function_aux:w #1\q_prop#2\q_prop#3{ + \quark_if_no_value:nF{#2} + { + #1{#2}{#3} + \prop_map_function_aux:w #1 + } +} + +\def:Npn \prop_map_function:NN #1#2{ + \exp_after:NN \prop_map_function_aux:w + \exp_after:NN #2 \toks_use:N #1 \q_prop \q_nil \q_prop \q_no_value \q_stop +} +\def:Npn \prop_map_function_aux:w #1\q_prop#2\q_prop#3{ + \if_meaning:NN \q_nil #2 + \exp_after:NN \prop_map_break:w + \fi: + #1{#2}{#3} + \prop_map_function_aux:w #1 +} + + \def_new:Npn \prop_map_function:cN {\exp_args:Nc \prop_map_function:NN } +\def_new:Npn \prop_map_function:Nc {\exp_args:NNc \prop_map_function:NN } \def_new:Npn \prop_map_function:cc {\exp_args:Ncc \prop_map_function:NN} \num_new:N \l_prop_inline_level_num \def_new:Npn \prop_map_inline:Nn #1#2 { \num_incr:N \l_prop_inline_level_num \def_long:cpn {prop_map_inline_ \num_use:N \l_prop_inline_level_num :n} ##1##2{#2} - \exp_args:NcE \prop_map_function:N + \prop_map_function:Nc #1 {prop_map_inline_ \num_use:N \l_prop_inline_level_num :n} - \prop_use:N #1 - \q_nil \q_no_value \q_stop \num_decr:N \l_prop_inline_level_num } \def_new:Npn \prop_map_inline:cN { \exp_args:Nc \prop_map_inline:NN } - \let_new:NN \prop_map_break:w \use_none_delimit_by_q_stop:w +\def:Npn \prop_put:NNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_put:Nnn}\prop_put:Nnn} +\def:Npn \prop_gput:NNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput:Nnn }\prop_gput:Nnn } +\def:Npn \prop_gput:NNo {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput:Nno }\prop_gput:Nno } +\def:Npn \prop_gput:cNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput:cnn }\prop_gput:cnn } +\def:Npn \prop_gput_if_new:NNn {\typeout{Warning:~name~ + changed~ to~ \string\prop_gput_if_new:Nnn }\prop_gput_if_new:Nnn } +\def:Npn \prop_get:NNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_get:NnN }\prop_get:NnN } +\def:Npn \prop_get:cNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_get:cnN }\prop_get:cnN } +\def:Npn \prop_gget:NNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_gget:NnN }\prop_gget:NnN } +\def:Npn \prop_gget:cNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_gget:cnN }\prop_gget:cnN } +\def:Npn \prop_get_gdel:NNN {\typeout{Warning:~name~ + changed~ to~ \string\prop_get_gdel:NnN }\prop_get_gdel:NnN } +\def:Npn \prop_del:NN {\typeout{Warning:~name~ + changed~ to~ \string\prop_del:Nn }\prop_del:Nn } +\def:Npn \prop_gdel:NN {\typeout{Warning:~name~ + changed~ to~ \string\prop_gdel:Nn }\prop_gdel:Nn } +\def:Npn \prop_if_in:NNTF {\typeout{Warning:~name~ + changed~ to~ \string\prop_if_in:NnTF }\prop_if_in:NnTF } %% File: l3token.dtx Copyright (C) 2005-2006 LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the @@ -3112,7 +3397,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3token.dtx 578 2006-11-21 18:13:24Z morten $ +\GetIdInfo$Id: l3token.dtx 701 2007-11-27 14:21:05Z morten $ {L3 Experimental token investigation and manipulation} \let_new:NN \char_set_catcode:w \tex_catcode:D \def_new:Npn \char_set_catcode:nn #1#2{ @@ -3123,6 +3408,19 @@ \def_new:Npn \char_show_value_catcode:w {\tex_showthe:D\tex_catcode:D} \def_new:Npn \char_show_value_catcode:n #1{ \char_show_value_catcode:w \int_eval:n{#1}} +\let_new:NN \char_set_mathcode:w \tex_mathcode:D +\def_new:Npn \char_set_mathcode:nn #1#2{ + \char_set_mathcode:w #1 = \int_eval:n{#2} +} +\def_protected_new:Npn \char_gset_mathcode:w {\pref_global:D\tex_mathcode:D} +\def_new:Npn \char_gset_mathcode:nn #1#2{ + \char_gset_mathcode:w #1 = \int_eval:n{#2} +} +\def_new:Npn \char_value_mathcode:w {\int_use:N\tex_mathcode:D} +\def_new:Npn \char_value_mathcode:n #1{\char_value_mathcode:w \int_eval:n{#1}} +\def_new:Npn \char_show_value_mathcode:w {\tex_showthe:D\tex_mathcode:D} +\def_new:Npn \char_show_value_mathcode:n #1{ + \char_show_value_mathcode:w \int_eval:n{#1}} \let_new:NN \char_set_lccode:w \tex_lccode:D \def_new:Npn \char_set_lccode:nn #1#2{ \char_set_lccode:w #1 = \int_eval:n{#2} @@ -3540,10 +3838,9 @@ \fi: } \def_new:Npn \peek_execute_branches_charcode: { - \prg_if_predicate:nTF { - \prg_if_predicate_or_p:nn - {\token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token} - {\token_if_eq_meaning_p:NN \l_peek_token \c_space_token} + \predicate:nTF { + \token_if_eq_catcode_p:NN \l_peek_token \c_group_begin_token || + \token_if_eq_meaning_p:NN \l_peek_token \c_space_token } { \l_peek_false_tlp } { \exp_after:NN \peek_execute_branches_charcode_aux:NN \l_peek_search_tlp } @@ -3641,10 +3938,10 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3vers.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3vers.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental LaTeX format version} \def:Npn\c_format_name{Experimental~ LaTeX3} -\def:Npn\c_format_date{2005/12/25} +\def:Npn\c_format_date{2007/09/01} \const_new:Nn \c_fmt_too_old{12} \def:Npn\chk_format_age:w #1/#2/#3\q_stop{ \num_compare:nNnT{(\tex_year:D-#1)*12+\tex_month:D-#2}>\c_fmt_too_old @@ -3652,7 +3949,7 @@ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J !~~You~are~attempting~to~make~an~experimental~LaTeX3~format~from^^J !~~source~files~that~are~more~than~ - \num_use:N\num_eval:n{\c_fmt_too_old}~months~old.^^J + \num_value:w\num_eval:n{\c_fmt_too_old}~months~old.^^J !^^J !~~If~you~enter~<return>~to~scroll~past~this~message~then~the~format^^J !~~will~be~built,~but~please~consider~obtaining~newer~source~files^^J @@ -3670,7 +3967,7 @@ \cs_gundefine:N \chk_format_age:w \tex_everyjob:D{\io_put_term:x{\c_format_name,~<\c_format_date>}} \io_put_term:x{\c_format_name,~<\c_format_date>} -%% File: l3skip.dtx Copyright (C) 2005-2006 Frank Mittelbach, LaTeX3 project +%% File: l3skip.dtx Copyright (C) 2005-2007 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 @@ -3702,7 +3999,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3skip.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3skip.dtx 666 2007-09-27 15:53:26Z mittelba $ {L3 Experimental skip registers} \alloc_setup_type:nnn {skip} \c_zero \c_max_register_num \def_new:Npn\skip_new:N #1 {\alloc_reg:NnNN g {skip} \tex_skipdef:D #1 } @@ -3756,10 +4053,9 @@ \skip_new:N \c_max_skip \skip_set:Nn \c_max_skip {16383.99999pt} \def_new:Npn \skip_infinite_glue:nTF #1{ - \prg_logic_test:nTF { - \prg_logic_or_p:nn - { \int_compare_p:nNn {\etex_gluestretchorder:D #1 } > \c_zero } - { \int_compare_p:nNn {\etex_glueshrinkorder:D #1 } > \c_zero } + \predicate:nTF { + \int_compare_p:nNn {\etex_gluestretchorder:D #1 } > \c_zero || + \int_compare_p:nNn {\etex_glueshrinkorder:D #1 } > \c_zero } } \def_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4{ @@ -3795,10 +4091,12 @@ \def_new:Npn\dim_add:cn{\exp_args:Nc\dim_add:Nn} \def_new:Npn\dim_add:Nc{\exp_args:NNc\dim_add:Nn} \def_new:Npn \dim_gadd:Nn { \pref_global:D \dim_add:Nn } +\def_new:Npn\dim_gadd:cn{\exp_args:Nc\dim_gadd:Nn} \def_new:Npn \dim_sub:Nn #1#2{\tex_advance:D#1-#2\scan_stop:} \def_new:Npn\dim_sub:cn{\exp_args:Nc\dim_sub:Nn} \def_new:Npn\dim_sub:Nc{\exp_args:NNc\dim_sub:Nn} \def_new:Npn \dim_gsub:Nn {\pref_global:D \dim_sub:Nn } +\def_new:Npn\dim_gsub:cn{\exp_args:Nc\dim_gsub:Nn} \let_new:NN \dim_use:N \tex_the:D \def_new:Npn \dim_use:c {\exp_args:Nc\dim_use:N} \dim_new:N \l_tmpa_dim @@ -3891,7 +4189,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3toks.dtx 580 2006-11-26 15:56:47Z morten $ +\GetIdInfo$Id: l3toks.dtx 728 2008-01-01 16:11:58Z morten $ {L3 Experimental Token Registers} \alloc_setup_type:nnn {toks} \c_zero \c_max_register_num \def_new:Npn \toks_new:N #1{\alloc_reg:NnNN g {toks} \tex_toksdef:D #1} @@ -3993,6 +4291,12 @@ \def_new:Npn \toks_if_eq:ccTF {\exp_args:Ncc \toks_if_eq:NNTF} \def_new:Npn \toks_if_eq:ccT {\exp_args:Ncc \toks_if_eq:NNT} \def_new:Npn \toks_if_eq:ccF {\exp_args:Ncc \toks_if_eq:NNF} +\def_new:NNn \toks_if_eq_p:NN 2 { + \tlist_if_eq_p:xx {\toks_use:N #1} {\toks_use:N #2} +} +\def_new:Npn \toks_if_eq_p:cN {\exp_args:Nc \toks_if_eq_p:NN} +\def_new:Npn \toks_if_eq_p:Nc {\exp_args:NNc \toks_if_eq_p:NN} +\def_new:Npn \toks_if_eq_p:cc {\exp_args:Ncc \toks_if_eq_p:NN} \tex_toksdef:D \l_tmpa_toks = 255 \seq_put_right:Nn \g_toks_allocation_seq {255} \toks_new:N \l_tmpb_toks @@ -4007,7 +4311,7 @@ \toks_use:N#1\q_nil } \def_long_new:Npn\toks_remove_extra_brace_group_aux:NNw #1#2#3\q_nil{#1#2{#3}} -%% File: l3messages.dtx Copyright (C) 1990-2006 LaTeX3 project +%% File: l3messages.dtx Copyright (C) 1990-2007 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 @@ -4039,7 +4343,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3messages.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3messages.dtx 673 2007-09-28 20:50:33Z mittelba $ {L3 Experimental LaTeX Messages module} \tlp_new:Nn \g_file_curr_name_tlp {no~file} \let_new:NN \err_message:x \tex_errmessage:D @@ -4067,16 +4371,16 @@ \def_new:Npn \l_err_label_token {} \int_set:Nn\tex_errorcontextlines:D\c_minus_one \def_new:Npn \err_info:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_log:x {#1~\io_show_file_lineno:}} \def_new:Npn \err_warn:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1~\io_show_file_lineno:}} \def_new:Npn \err_info_noline:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_log:x {#1}} \def_new:Npn \err_warn_noline:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1}} \def_new:Npn \err_interrupt:NNw #1#2{\let:NwN \l_err_label_token #2 \group_begin: @@ -4086,12 +4390,12 @@ %\clearshortrefmaps \tex_input:D #1~\err_display_aux:w} \def_new:Npn \err_fatal:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1~\io_show_file_lineno:} \tex_end:D } \def_new:Npn \err_fatal_noline:nn #1#2{ - \def:Npn\err_newline:{\iow_newline#2} + \def:Npn\err_newline:{\iow_newline:#2} \io_put_term:x {#1} \tex_end:D } @@ -4110,9 +4414,9 @@ {\err_latex_bug:x{You~closed~the~wrong~error~file~`#1'.~ Open~is~`\g_err_curr_fname'.}} \iow_long_unexpanded:Nn \c_iow_err_stream {\err_latex_bug:x{Didn't~find~the~ - correct~error~message~to~show.\iow_newline + correct~error~message~to~show.\iow_newline: Was~searching~for~a~function~ - with~the~following~meaning:\iow_newline + with~the~following~meaning:\iow_newline: \token_to_string:N\token_to_meaning:N \token_to_string:N\l_err_label_token} \group_end:} @@ -4121,7 +4425,7 @@ \tlp_gset_eq:NN\g_err_curr_fname\c_empty_tlp } \def_new:Npn \err_interrupt_new:NNNnnn #1{ - \group_begin: \tex_catcode:D`\#\c_other_char_code + \group_begin: \char_set_catcode:nn{`\#}{12} \if_meaning:NN#1\g_err_curr_fname \else: \err_latex_bug:x{Error~text~goes~to~wrong~err~file:~ @@ -4138,9 +4442,9 @@ \cmd_declare:Nnn\err_display_aux:w [#2]{ \group_end: \toks_gset:Nx\g_err_help_toks{#4} - \io_put_term:x{LaTeX~error~\io_show_file_lineno:.\iow_newline + \io_put_term:x{LaTeX~error~\io_show_file_lineno:.\iow_newline: \text_put_sp:\text_put_four_sp: \text_put_sp: - See~LaTeX~manual~for~explanation.\iow_newline + See~LaTeX~manual~for~explanation.\iow_newline: \text_put_sp:\text_put_four_sp: \text_put_sp: Type~\text_put_sp: H~<return>~\text_put_sp: for~ immediate~help.} @@ -4181,7 +4485,7 @@ \text_put_four_sp:\text_put_four_sp:\text_put_four_sp:} } \err_file_new:Nn \c_kernel_err_tlp {ltxkernel.err} -%% File: l3box.dtx Copyright (C) 2005-2006 LaTeX3 project +%% File: l3box.dtx Copyright (C) 2005-2007 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 @@ -4213,7 +4517,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3box.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3box.dtx 718 2007-12-16 22:59:58Z morten $ {L3 Experimental Box module} \alloc_setup_type:nnn {box} \c_zero \c_max_register_num \seq_put_right:Nn \g_box_allocation_seq {255} @@ -4223,6 +4527,9 @@ \let_new:NN \if_hbox:N \tex_ifhbox:D \let_new:NN \if_vbox:N \tex_ifvbox:D \let_new:NN \if_box_empty:N \tex_ifvoid:D +\def_new:Npn \box_if_empty_p:N #1{ + \if_box_empty:N #1 \c_true \else: \c_false \fi:} +\def_new:Npn \box_if_empty_p:c {\exp_args:Nc \box_if_empty_p:N} \def_test_function_new:npn {box_if_empty:N}#1{\if_box_empty:N #1} \def_new:Npn \box_if_empty:cTF {\exp_args:Nc \box_if_empty:NTF} \def_new:Npn \box_if_empty:cT {\exp_args:Nc \box_if_empty:NT} @@ -4235,11 +4542,11 @@ \def_new:Npn \box_gset_eq:cN {\exp_args:Nc \box_gset_eq:NN} \def_new:Npn \box_gset_eq:Nc {\exp_args:NNc \box_gset_eq:NN} \def_new:Npn \box_gset_eq:cc {\exp_args:Ncc \box_gset_eq:NN} -\let_new:NN \R_previous_box \tex_lastbox:D -\def_new:Npn \box_set_to_previous:N #1{\tex_setbox:D#1\R_previous_box} -\def_new:Npn \box_set_to_previous:c {\exp_args:Nc \box_set_to_previous:N} -\def_new:Npn \box_gset_to_previous:N {\pref_global:D \box_set_to_previous:N} -\def_new:Npn \box_gset_to_previous:c {\exp_args:Nc \box_gset_to_previous:N} +\let_new:NN \R_last_box \tex_lastbox:D +\def_new:Npn \box_set_to_last:N #1{\tex_setbox:D#1\R_last_box} +\def_new:Npn \box_set_to_last:c {\exp_args:Nc \box_set_to_last:N} +\def_new:Npn \box_gset_to_last:N {\pref_global:D \box_set_to_last:N} +\def_new:Npn \box_gset_to_last:c {\exp_args:Nc \box_gset_to_last:N} \def_long_new:Npn \box_move_left:nn #1#2{\tex_moveleft:D\dim_eval:n{#1}{#2}} \def_long_new:Npn \box_move_right:nn #1#2{\tex_moveright:D\dim_eval:n{#1}{#2}} \def_long_new:Npn \box_move_up:nn #1#2{\tex_raise:D\dim_eval:n{#1}{#2}} @@ -4301,9 +4608,13 @@ \def_new:Npn \hbox_gset_to_wd:cnn{\exp_args:Nc \hbox_gset_to_wd:Nnn } \def_new:Npn \hbox_set_inline_begin:N #1 { \tex_setbox:D #1 \tex_hbox:D \c_group_begin_token } +\def:Npn \hbox_set_inline_begin:c {\exp_args:Nc + \hbox_set_inline_begin:N} \let_new:NN \hbox_set_inline_end: \c_group_end_token \def_new:Npn \hbox_gset_inline_begin:N { \pref_global:D \hbox_set_inline_begin:N } +\def:Npn \hbox_gset_inline_begin:c {\exp_args:Nc + \hbox_gset_inline_begin:N } \let_new:NN \hbox_gset_inline_end: \c_group_end_token \def_long_new:Npn \hbox_to_wd:nn #1#2 {\tex_hbox:D to #1 {#2}} \def_long_new:Npn \hbox_to_zero:n #1 {\tex_hbox:D to \c_zero_skip {#1}} @@ -4343,7 +4654,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3precom.dtx 573 2006-08-21 20:59:37Z morten $ +\GetIdInfo$Id: l3precom.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental precompilation module} \iow_new:N\c_cs_dump_stream \tlp_new:Nn\g_cs_dump_name_tlp{} @@ -4428,21 +4739,22 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3prg.dtx 574 2006-08-21 23:30:10Z morten $ +\GetIdInfo$Id: l3prg.dtx 697 2007-11-27 14:14:54Z morten $ {L3 Experimental control structures} -\def_new:Npn \mode_vertical_p: { +\def_new:Npn \mode_if_vertical_p: { \if_mode_vertical: \c_true \else: \c_false\fi:} -\def_test_function_new:npn{mode_vertical:}{\if_mode_vertical:} -\def_new:Npn \mode_horizontal_p: { +\def_test_function_new:npn{mode_if_vertical:}{\if_mode_vertical:} +\def_new:Npn \mode_if_horizontal_p: { \if_mode_horizontal: \c_true \else: \c_false\fi:} -\def_test_function_new:npn{mode_horizontal:}{\if_mode_horizontal:} -\def_new:Npn \mode_inner_p: { +\def_test_function_new:npn{mode_if_horizontal:}{\if_mode_horizontal:} +\def_new:Npn \mode_if_inner_p: { \if_mode_inner: \c_true \else: \c_false\fi:} -\def_test_function_new:npn{mode_inner:}{\if_mode_inner:} -\def_test_function_new:npn{mode_math:} { +\def_test_function_new:npn{mode_if_inner:}{\if_mode_inner:} +\def_test_function_new:npn{mode_if_math:} { \scan_align_safe_stop: \if_mode_math: } -\def_new:Npn \group_align_safe_begin: {\if_false:{\fi:\if_num:w0=`}\fi:} -\def_new:Npn \group_align_safe_end: {\if_num:w0=`{\fi:\if_false:}\fi:} +\def_new:Npn \group_align_safe_begin: { + \if_false:{\fi:\if_num:w`}=\c_zero\fi:} +\def_new:Npn \group_align_safe_end: {\if_num:w`{=\c_zero}\fi:} \def_new:Npn \scan_align_safe_stop: { \num_compare:nNnT \etex_currentgrouptype:D = \c_six { @@ -4567,15 +4879,15 @@ } } \def_new:Npn \bool_new:N #1 { \let_new:NN #1 \c_false } -\def_new:Npn \bool_new:c #1 { \let_new:cN #1 \c_false } +\def_new:Npn \bool_new:c #1 { \let_new:cN {#1} \c_false } \def_new:Npn \bool_set_true:N #1 { \let:NN #1 \c_true } -\def_new:Npn \bool_set_true:c #1 { \let:cN #1 \c_true } +\def_new:Npn \bool_set_true:c #1 { \let:cN {#1} \c_true } \def_new:Npn \bool_set_false:N #1 { \let:NN #1 \c_false } -\def_new:Npn \bool_set_false:c #1 { \let:cN #1 \c_false } +\def_new:Npn \bool_set_false:c #1 { \let:cN {#1} \c_false } \def_new:Npn \bool_gset_true:N #1 { \glet:NN #1 \c_true } -\def_new:Npn \bool_gset_true:c #1 { \glet:cN #1 \c_true } +\def_new:Npn \bool_gset_true:c #1 { \glet:cN {#1} \c_true } \def_new:Npn \bool_gset_false:N #1 { \glet:NN #1 \c_false } -\def_new:Npn \bool_gset_false:c #1 { \glet:cN #1 \c_false } +\def_new:Npn \bool_gset_false:c #1 { \glet:cN {#1} \c_false } \let_new:NN \bool_set_eq:NN \let:NN \let_new:NN \bool_set_eq:Nc \let:Nc \let_new:NN \bool_set_eq:cN \let:cN @@ -4638,55 +4950,36 @@ \def_long_new:Npn \prg_dowhile:nF #1#2{ #2 #1 {\prg_dowhile:nF {#1}{#2}} } -\let_new:NN \prg_if_predicate:nTF \bool_if:NTF -\let_new:NN \prg_if_predicate:nT \bool_if:NT -\let_new:NN \prg_if_predicate:nF \bool_if:NF -\def_new:Npn \prg_if_predicate_or_p:nn #1#2{ - \if_num:w #1#2<\c_hundred_one - \c_true - \else: - \c_false - \fi: -} -\def_new:Npn \prg_if_predicate_and_p:nn #1#2{ - \if_case:w #1#2 ~ - \c_true - \else: - \c_false - \fi: -} -\def_new:Npn \prg_if_predicate_not_p:n #1{ - \if_case:w #1 ~ - \c_false - \or: - \c_true - \fi: -} -\def_long_new:Npn \prg_if_predicate_ands_p:n #1{ - \exp_after:NN \prg_if_predicate_andor_aux:NNN \exp_after:NN \c_true - \int_to_roman:w -`0 #1 \scan_stop: \scan_stop: -} -\def_long_new:Npn \prg_if_predicate_ors_p:n #1{ - \exp_after:NN \prg_if_predicate_andor_aux:NNN \exp_after:NN \c_false - \int_to_roman:w -`0 #1 \scan_stop: \scan_stop: -} -\def_new:Npn \prg_if_predicate_andor_aux:NNN #1#2#3{ - \token_if_eq_meaning:NNTF \scan_stop: #2 - { #1 } - { - \int_compare:nNnTF #3 = #1 - { \exp_after:NN \prg_if_predicate_andor_aux:NNN } - { \exp_after:NN \prg_if_predicate_andor_break:NNN } - \exp_after:NN #1 \int_to_roman:w -`0 - } +\def_long_new:Npn \predicate_p:n #1{ + \group_align_safe_begin: + \exp_after:NN \predicate_auxi:NN + \int_to_roman:w-`\q #1 02\scan_stop: } -\def_new:Npn \prg_if_predicate_andor_break:NNN #1#2#3{ - \token_if_eq_meaning:NNTF \scan_stop: #2 - { \if:w #1\c_false\else:\c_true\fi: } - { - \exp_after:NN \prg_if_predicate_andor_break:NNN \exp_after:NN #1 - \int_to_roman:w -`0 - } +\def_long_test_function_new:npn {predicate:n}#1{ + \group_align_safe_begin: + \if:w \exp_after:NN \predicate_auxi:NN + \int_to_roman:w-`\q #1 02\scan_stop: +} +\def_new:Npn \predicate_auxi:NN 0 #1{ + \exp_after:NN \predicate_auxii:NNN \exp_after:NN #1 + \int_to_roman:w-`\q +} +\def_new:Npn \predicate_auxii:NNN #1#2#3{ + \cs_use:c{predicate_#2#3_#1:w} } +\def_new:cpn{predicate_&&_0:w}{ + \exp_after:NN \predicate_auxi:NN\int_to_roman:w-`\q +} +\def_long_new:cpn{predicate_&&_1:w} #1 02\scan_stop:{ + \group_align_safe_end: 01} +\def_long_new:cpn{predicate_||_0:w} #1 02\scan_stop:{ + \group_align_safe_end: 00} +\def_new:cpn{predicate_||_1:w}{ + \exp_after:NN \predicate_auxi:NN\int_to_roman:w-`\q +} +\def_new:cpn{predicate_02_0:w}\scan_stop:{ \group_align_safe_end: 00 } +\def_new:cpn{predicate_02_1:w}\scan_stop:{ \group_align_safe_end: 01 } +\def_long_new:Npn \predicate_not_p:n #1{ + \if:w \predicate_p:n{#1} \c_false \else: \c_true \fi: } \def_new:NNn \prg_define_quicksort:nnn 3 { \def_long:cNx{#1_quicksort:n}1{ @@ -4798,7 +5091,7 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3xref.dtx 579 2006-11-25 23:38:03Z morten $ +\GetIdInfo$Id: l3xref.dtx 621 2007-09-01 20:14:19Z morten $ {L3 Experimental cross referencing} \prop_new:N \g_xref_all_curr_immediate_fields_plist \prop_new:N \g_xref_all_curr_deferred_fields_plist @@ -4882,8 +5175,6 @@ %% prior consultation with the LaTeX Project Team. %% %% ----------------------------------------------------------------------- -\GetIdInfo$Id: l3final.dtx 573 2006-08-21 20:59:37Z morten $ - {L3 Experimental final module} \err_file_close:N\c_kernel_err_tlp \tex_dump:D %% |