diff options
author | Karl Berry <karl@freefriends.org> | 2013-07-12 22:54:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-07-12 22:54:42 +0000 |
commit | 60ede63177ff54dd8d1934012fbecce179a633ee (patch) | |
tree | 9dbd9e4608c9a0caa9864fedf49f0a2aea36fedf /Master/texmf-dist/tex | |
parent | c2d4fa6f59f3c566ccd85e3b250f0a27485bbaea (diff) |
l3 (12jul13)
git-svn-id: svn://tug.org/texlive/trunk@31181 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
30 files changed, 390 insertions, 310 deletions
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3dt/l3dt.sty b/Master/texmf-dist/tex/latex/l3experimental/l3dt/l3dt.sty index fb5cc34221f..ace519666d8 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3dt/l3dt.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3dt/l3dt.sty @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{expl3} -\GetIdInfo$Id: l3dt.dtx 4420 2013-01-08 20:00:04Z joseph $ +\GetIdInfo$Id: l3dt.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Experimental data tables} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty index 21c29315228..71ce3d901e9 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sort/l3sort.sty @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{expl3} -\GetIdInfo$Id: l3sort.dtx 4339 2012-11-24 19:16:43Z joseph $ +\GetIdInfo$Id: l3sort.dtx 4491 2013-05-12 16:22:18Z bruno $ {L3 Experimental sorting functions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -60,33 +60,6 @@ \int_new:N \l__sort_A_int \int_new:N \l__sort_B_int \int_new:N \l__sort_C_int -\cs_new:Npn \tl_sort:nN #1#2 { \__sort_quick:nNn {#1} #2 { } } -\cs_new:Npn \__sort_quick:nNn #1#2 - { - \exp_after:wN \__sort_quick:wn - \use_none:n #1 \__prg_break_point: - \__sort_quick:nnNnn { } { } #2 - #1 - { \__prg_break_point: } - \__prg_break_point: - } -\cs_new:Npn \__sort_quick:wn #1 \__prg_break_point: #2 {#2} -\cs_new:Npn \__sort_quick:nnNnn #1#2#3#4#5 - { - \__prg_break: #5 - \__sort_quick:nnNnwn {#1} {#2} - \__prg_break_point: - #3 {#4} {#5} - { \__sort_quick:nnNnn {#1} { #2 {#5} } } - { \__sort_quick:nnNnn { #1 {#5} } {#2} } - #3 {#4} - } -\cs_new:Npn \__sort_quick:nnNnwn - #1#2 \__prg_break_point: #3#4 #5 \__prg_break_point: #6 - { - \__sort_quick:nNn {#2} #3 - { \__sort_quick:nNn {#1} #3 {#6} {#4} } - } \cs_new_protected:Npn \__sort_main:NNNnNn #1#2#3#4#5#6 { \group_begin: @@ -133,10 +106,10 @@ { \__sort_toks:NNw \prg_do_nothing: \prg_do_nothing: 0 ; } } \cs_new_protected_nopar:Npn \clist_sort:Nn - { \__sort_sort:NNn \tl_set:Nn } + { \__sort_clist:NNn \tl_set:Nn } \cs_new_protected_nopar:Npn \clist_gsort:Nn - { \__sort_sort:NNn \tl_gset:Nn } -\cs_new_protected:Npn \__sort_sort:NNn #1#2#3 + { \__sort_clist:NNn \tl_gset:Nn } +\cs_new_protected:Npn \__sort_clist:NNn #1#2#3 { \clist_if_empty:NF #2 { @@ -232,6 +205,87 @@ \fi: \__sort_merge_blocks_end: } +\cs_new:Npn \tl_sort:nN #1#2 + { + \exp_not:f + { + \tl_if_blank:nF {#1} + { + \__sort_quick_prepare:Nnnn #2 { } { } + #1 + { \__prg_break_point: \__sort_quick_prepare_end:NNNnw } + \q_stop + } + } + } +\cs_new:Npn \__sort_quick_prepare:Nnnn #1#2#3#4 + { + \__prg_break: #4 \__prg_break_point: + \__sort_quick_prepare:Nnnn #1 { #2 #3 } { #1 {#4} } + } +\cs_new:Npn \__sort_quick_prepare_end:NNNnw #1#2#3#4#5 \q_stop + { + \__sort_quick_split:NnNn #4 \__sort_quick_end:nnTFNn { } + \q_mark { \__sort_quick_cleanup:w \exp_stop_f: } + \s__stop \q_stop + } +\cs_new:Npn \__sort_quick_cleanup:w #1 \s__stop \q_stop {#1} +\cs_new:Npn \__sort_quick_split:NnNn #1#2#3#4 + { + #3 {#2} {#4} \__sort_quick_only_ii:NnnnnNn \__sort_quick_only_i:NnnnnNn + \__sort_quick_single_end:nnnwnw + { #3 {#4} } { } { } {#2} + } +\cs_new:Npn \__sort_quick_only_i:NnnnnNn #1#2#3#4#5#6#7 + { + #6 {#5} {#7} \__sort_quick_split_ii:NnnnnNn \__sort_quick_only_i:NnnnnNn + \__sort_quick_only_i_end:nnnwnw + { #6 {#7} } { #3 #2 } { } {#5} + } +\cs_new:Npn \__sort_quick_only_ii:NnnnnNn #1#2#3#4#5#6#7 + { + #6 {#5} {#7} \__sort_quick_only_ii:NnnnnNn \__sort_quick_split_i:NnnnnNn + \__sort_quick_only_ii_end:nnnwnw + { #6 {#7} } { } { #4 #2 } {#5} + } +\cs_new:Npn \__sort_quick_split_i:NnnnnNn #1#2#3#4#5#6#7 + { + #6 {#5} {#7} \__sort_quick_split_ii:NnnnnNn \__sort_quick_split_i:NnnnnNn + \__sort_quick_split_end:nnnwnw + { #6 {#7} } { #3 #2 } {#4} {#5} + } +\cs_new:Npn \__sort_quick_split_ii:NnnnnNn #1#2#3#4#5#6#7 + { + #6 {#5} {#7} \__sort_quick_split_ii:NnnnnNn \__sort_quick_split_i:NnnnnNn + \__sort_quick_split_end:nnnwnw + { #6 {#7} } {#3} { #4 #2 } {#5} + } +\cs_new:Npn \__sort_quick_end:nnTFNn #1#2#3#4#5#6 {#5} +\cs_new:Npn \__sort_quick_single_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop + { #5 {#3} #6 \q_stop } +\cs_new:Npn \__sort_quick_only_i_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop + { + \__sort_quick_split:NnNn #1 + \__sort_quick_end:nnTFNn { } \q_mark {#5} + {#3} + #6 \q_stop + } +\cs_new:Npn \__sort_quick_only_ii_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop + { + \__sort_quick_split:NnNn #2 + \__sort_quick_end:nnTFNn { } \q_mark { #5 {#3} } + #6 \q_stop + } +\cs_new:Npn \__sort_quick_split_end:nnnwnw #1#2#3#4 \q_mark #5#6 \q_stop + { + \__sort_quick_split:NnNn #2 \__sort_quick_end:nnTFNn { } \q_mark + { + \__sort_quick_split:NnNn #1 + \__sort_quick_end:nnTFNn { } \q_mark {#5} + {#3} + } + #6 \q_stop + } \cs_new_protected:Npn \__sort_too_long_error:NNw #1#2 \fi: { \fi: diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty index 91a6eab725f..a06c2d882db 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex-trace.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{expl3} -\GetIdInfo$Id: l3regex.dtx 4455 2013-01-22 20:38:19Z bruno $ +\GetIdInfo$Id: l3regex.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Experimental regular expressions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty index 89f631f7e0b..f3438ed74f6 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3regex.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{expl3} -\GetIdInfo$Id: l3regex.dtx 4455 2013-01-22 20:38:19Z bruno $ +\GetIdInfo$Id: l3regex.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Experimental regular expressions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty index 5291a394382..122f0341a8e 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty @@ -484,6 +484,23 @@ } } \group_end: +\cs_new_protected_nopar:Npn \__str_convert_decode_clist: + { + \clist_set:No \g__str_result_tl \g__str_result_tl + \tl_gset:Nx \g__str_result_tl + { + \exp_args:No \clist_map_function:nN + \g__str_result_tl \__str_decode_clist_char:n + } + } +\cs_new:Npn \__str_decode_clist_char:n #1 + { #1 \s__tl \int_eval:n {#1} \s__tl } +\cs_new_protected_nopar:Npn \__str_convert_encode_clist: + { + \__str_convert_gmap_internal:N \__str_encode_clist_char:n + \tl_gset:Nx \g__str_result_tl { \tl_tail:N \g__str_result_tl } + } +\cs_new:Npn \__str_encode_clist_char:n #1 { , #1 } \cs_new_protected:Npn \__str_declare_eight_bit_encoding:nnn #1#2#3 { \tl_set:Nn \l__str_internal_tl {#1} diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty index 15d29def3e8..40b503280e3 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{expl3} -\GetIdInfo$Id: l3str.dtx 4452 2013-01-20 10:18:32Z joseph $ +\GetIdInfo$Id: l3str.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Experimental strings} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index a05256b4f44..ec016098bdd 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -14,7 +14,7 @@ %% Do not distribute a modified version of this file. %% %% File: l3galley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach -%% (C) 2010-2012 The LaTeX3 Project +%% (C) 2010-2013 The 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,7 +48,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{xparse} -\GetIdInfo$Id: l3galley.dtx 4402 2013-01-08 08:59:44Z bruno $ +\GetIdInfo$Id: l3galley.dtx 4494 2013-05-24 06:27:01Z joseph $ {L3 Experimental galley code} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -486,7 +486,7 @@ { \__galley_parshape_measure: } } { - \prg_replicate:nn \g__galley_previous_par_lines_int + \prg_replicate:nn \g_galley_previous_par_lines_int { \seq_gpop:NN \g__galley_cutout_left_seq \l__galley_tmp_tl \seq_gpop:NN \g__galley_cutout_right_seq \l__galley_tmp_tl @@ -611,7 +611,7 @@ \int_compare:nNnTF \tex_parshape:D = \c_zero { \tl_put_right:Nn \l__galley_tmp_tl - { \l__galley_total_left_margin_dim \l__galley_text_width_dim } + { \l__galley_total_left_margin_dim \l_galley_text_width_dim } } { \tl_put_right:Nx \l__galley_tmp_tl @@ -636,7 +636,7 @@ { \dim_eval:n { \l__galley_total_left_margin_dim + ( #1 ) } \c_space_tl - \dim_eval:n { \l__galley_text_width_dim - ( #1 ) } + \dim_eval:n { \l_galley_text_width_dim - ( #1 ) } \c_space_tl } { @@ -652,10 +652,19 @@ \int_incr:N \l__galley_tmp_int \tl_put_right:Nx \l__galley_tmp_tl { - \dim_eval:n { \etex_parshapeindent:D \l__galley_tmp_int } - \c_space_tl - \dim_eval:n { \etex_parshapelength:D \l__galley_tmp_int - ( #1 ) } - \c_space_tl + \int_compare:nNnTF \l__galley_tmp_int > \tex_parshape:D + { + \dim_use:N \l__galley_total_left_margin_dim + \c_space_tl + \dim_eval:n { \l_galley_text_width_dim - ( #1 ) } + \c_space_tl + } + { + \dim_eval:n { \etex_parshapeindent:D \l__galley_tmp_int } + \c_space_tl + \dim_eval:n { \etex_parshapelength:D \l__galley_tmp_int - ( #1 ) } + \c_space_tl + } } } \cs_new_protected:Npn \__galley_cutout_end:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 1685d6fc174..d8105f61edb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -60,8 +60,8 @@ } \def\ExplFileName{expl3} \def\ExplFileDescription{L3 Experimental code bundle wrapper} -\def\ExplFileDate{2013/03/14} -\def\ExplFileVersion{4469} +\def\ExplFileDate{2013/07/12} +\def\ExplFileVersion{4544} \RequirePackage{etex} \relax \reserveinserts{32} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty index 52e7a7f3735..703d134e38b 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3basics.dtx 4428 2013-01-10 13:23:29Z bruno $ +\GetIdInfo$Id: l3basics.dtx 4521 2013-07-09 11:45:31Z joseph $ {L3 Basic definitions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty index af3070bcaaa..32f90af3a29 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3box.dtx 4411 2013-01-08 12:21:52Z bruno $ +\GetIdInfo$Id: l3box.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Experimental boxes} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty index 109bf7a2733..586823f2c55 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3candidates.dtx Copyright(C) 2012 The LaTeX3 Project +%% File: l3candidates.dtx Copyright(C) 2012,2013 The 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 @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3candidates.dtx 4468 2013-03-14 20:30:45Z joseph $ +\GetIdInfo$Id: l3candidates.dtx 4521 2013-07-09 11:45:31Z joseph $ {L3 Experimental additions to l3kernel} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -491,32 +491,6 @@ { \__clist_if_empty_n:wNw } } \cs_new:Npn \__clist_if_empty_n:wNw #1 \q_mark #2#3 \q_stop {#2} -\cs_new:Npn \clist_use:Nnnn #1#2#3#4 - { - \clist_if_exist:NTF #1 - { - \int_case:nnn { \clist_count:N #1 } - { - { 0 } { } - { 1 } { \exp_after:wN \__clist_use:wwn #1 , , { } } - { 2 } { \exp_after:wN \__clist_use:wwn #1 , {#2} } - } - { - \exp_after:wN \__clist_use:nwwwwnwn - \exp_after:wN { \exp_after:wN } #1 , - \q_mark , { \__clist_use:nwwwwnwn {#3} } - \q_mark , { \__clist_use:nwwn {#4} } - \q_stop { } - } - } - { \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} } - } -\cs_new:Npn \__clist_use:wwn #1 , #2 , #3 { \exp_not:n { #1 #3 #2 } } -\cs_new:Npn \__clist_use:nwwwwnwn - #1#2 , #3 , #4 , #5 \q_mark , #6#7 \q_stop #8 - { #6 {#3} , {#4} , #5 \q_mark , {#6} #7 \q_stop { #8 #1 #2 } } -\cs_new:Npn \__clist_use:nwwn #1#2 , #3 \q_stop #4 - { \exp_not:n { #4 #1 #2 } } \fp_new:N \l__coffin_sin_fp \fp_new:N \l__coffin_cos_fp \prop_new:N \l__coffin_bounding_prop @@ -798,14 +772,11 @@ } \cs_generate_variant:Nn \prop_map_tokens:Nn { c } \cs_new:Npn \prop_get:Nn #1#2 - { \__prop_get:No #1 { \tl_to_str:n {#2} } } -\cs_new:Npn \__prop_get:Nn #1#2 { - \exp_last_unbraced:Nno \__prop_get_Nn:nwn {#2} #1 - \s__prop #2 \s__prop { } + \exp_last_unbraced:Noo \__prop_get_Nn:nwn { \tl_to_str:n {#2} } #1 + \s__prop \tl_to_str:n {#2} \s__prop { } \__prg_break_point: } -\cs_generate_variant:Nn \__prop_get:Nn { No } \cs_new:Npn \__prop_get_Nn:nwn #1 \s__prop #2 \s__prop #3 { \str_if_eq_x:nnTF {#1} {#2} @@ -928,37 +899,17 @@ #1 #2 { #3 } \__seq_pop_item_def: } -\cs_new:Npn \seq_use:Nnnn #1#2#3#4 +\cs_new_eq:NN \dim_to_pt:n \__dim_strip_pt:n +\cs_new:Npn \dim_to_unit:nn #1#2 { - \seq_if_exist:NTF #1 + \dim_to_pt:n { - \int_case:nnn { \seq_count:N #1 } - { - { 0 } { } - { 1 } { \exp_after:wN \__seq_use:NnNnn #1 \__seq_item:n { } { } } - { 2 } { \exp_after:wN \__seq_use:NnNnn #1 {#2} } - } - { - \exp_after:wN \__seq_use:nwwwwnwn - \exp_after:wN { \exp_after:wN } #1 \__seq_item:n - \q_mark { \__seq_use:nwwwwnwn {#3} } - \q_mark { \__seq_use:nwwn {#4} } - \q_stop { } - } + 1pt * \__dim_to_unit:n { \dim_to_pt:n {#1} pt } + / \__dim_to_unit:n { \dim_to_pt:n {#2} pt } } - { \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} } - } -\cs_new:Npn \__seq_use:NnNnn \__seq_item:n #1 \__seq_item:n #2#3 - { \exp_not:n { #1 #3 #2 } } -\cs_new:Npn \__seq_use:nwwwwnwn - #1 \__seq_item:n #2 \__seq_item:n #3 \__seq_item:n #4#5 - \q_mark #6#7 \q_stop #8 - { - #6 \__seq_item:n {#3} \__seq_item:n {#4} #5 - \q_mark {#6} #7 \q_stop { #8 #1 #2 } } -\cs_new:Npn \__seq_use:nwwn #1 \__seq_item:n #2 #3 \q_stop #4 - { \exp_not:n { #4 #1 #2 } } +\cs_new:Npn \__dim_to_unit:n #1 + { \__int_value:w \__dim_eval:w #1 \__dim_eval_end: } \cs_new:Npn \skip_split_finite_else_action:nnNN #1#2#3#4 { \skip_if_finite:nTF {#1} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty index c06c5498149..2a216e4ff73 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty @@ -48,7 +48,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3clist.dtx 4414 2013-01-08 12:32:12Z bruno $ +\GetIdInfo$Id: l3clist.dtx 4500 2013-05-26 11:18:19Z bruno $ {L3 Comma separated lists} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -411,6 +411,36 @@ \exp_not:N \tl_if_blank:nF {#1} { + \c_one } \exp_not:N \__clist_count:w \c_space_tl } +\cs_new:Npn \clist_use:Nnnn #1#2#3#4 + { + \clist_if_exist:NTF #1 + { + \int_case:nnn { \clist_count:N #1 } + { + { 0 } { } + { 1 } { \exp_after:wN \__clist_use:wwn #1 , , { } } + { 2 } { \exp_after:wN \__clist_use:wwn #1 , {#2} } + } + { + \exp_after:wN \__clist_use:nwwwwnwn + \exp_after:wN { \exp_after:wN } #1 , + \q_mark , { \__clist_use:nwwwwnwn {#3} } + \q_mark , { \__clist_use:nwwn {#4} } + \q_stop { } + } + } + { \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} } + } +\cs_generate_variant:Nn \clist_use:Nnnn { c } +\cs_new:Npn \__clist_use:wwn #1 , #2 , #3 { \exp_not:n { #1 #3 #2 } } +\cs_new:Npn \__clist_use:nwwwwnwn + #1#2 , #3 , #4 , #5 \q_mark , #6#7 \q_stop #8 + { #6 {#3} , {#4} , #5 \q_mark , {#6} #7 \q_stop { #8 #1 #2 } } +\cs_new:Npn \__clist_use:nwwn #1#2 , #3 \q_stop #4 + { \exp_not:n { #4 #1 #2 } } +\cs_new:Npn \clist_use:Nn #1#2 + { \clist_use:Nnnn #1 {#2} {#2} {#2} } +\cs_generate_variant:Nn \clist_use:Nn { c } \cs_new_protected:Npn \clist_show:N #1 { \__msg_show_variable:Nnn #1 { clist } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 9fa07d959ef..d3dd89238cb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -4,8 +4,7 @@ %% %% The original source files were: %% -%% l3doc.dtx (with options: `class,cfg') -%% +%% l3doc.dtx (with options: `class') %% %% EXPERIMENTAL CODE %% @@ -14,7 +13,6 @@ %% %% Do not distribute a modified version of this file. %% -%% %% File: l3doc.dtx Copyright (C) 1990-2012 The LaTeX3 project %% %% It may be distributed and/or modified under the conditions of the @@ -1459,51 +1457,6 @@ \DisableCrossrefs \OnlyDescription } -\tl_new:N \Team -\tl_set:Nn \Team - { - The~\LaTeX3~Project\thanks - { - Frank~Mittelbach,~Denys~Duchier,~Chris~Rowley,~ - Rainer~Sch\"opf,~Johannes~Braams,~Michael~Downes,~ - David~Carlisle,~Alan~Jeffrey,~Morten~H\o{}gholm,~Thomas~Lotze,~ - Javier~Bezos,~Will~Robertson,~Joseph~Wright,~Bruno~Le~Floch - } - } -\NewDocumentCommand{\ExplMakeTitle}{mm} - { - \title - { - The~\pkg{#1}~package \\ #2 - \thanks - { - This~file~describes~v\ExplFileVersion,~ - last~revised~\ExplFileDate. - } - } - \author - { - The~\LaTeX3~Project\thanks{E-mail:~ - \href{mailto:latex-l@listserv.uni-heidelberg.de} - {latex-l@listserv.uni-heidelberg.de}} - } - \date{Released~\ExplFileDate} - \maketitle - } -\DeclareDocumentCommand\ie{}{\emph{i.e.}} -\DeclareDocumentCommand\eg{}{\emph{e.g.}} -\DeclareDocumentCommand\Ie{}{\emph{I.e.}} -\DeclareDocumentCommand\Eg{}{\emph{E.g.}} -\AtBeginDocument - { - \clist_map_inline:nn - { - asin, acos, atan, acot, - asinh, acosh, atanh, acoth, round, floor, ceil - } - { \exp_args:Nc \DeclareMathOperator{#1}{#1} } - } -\NewDocumentCommand { \nan } { } { \text { \texttt { nan } } } %% %% %% End of file `l3doc.cls'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index 2924160ac17..bf00bdedecb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -47,16 +47,16 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3drivers.dtx 4280 2012-11-07 07:13:51Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 4505 2013-06-28 22:06:04Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvidpfmx.def}{\ExplFileDate}{\ExplFileVersion} {L3 Experimental driver: dvipdfmx} \__expl_package_check: \cs_new_protected_nopar:Npn \__driver_graphic_state_save: - { \tex_special:D { pdf:bcontent } } + { \tex_special:D { pdf:content~q } } \cs_new_protected_nopar:Npn \__driver_graphic_state_restore: - { \tex_special:D { pdf:econtent } } + { \tex_special:D { pdf:content~Q } } \cs_new_protected:Npn \__driver_pdf_literal:n #1 { \tex_special:D { pdf:content~ #1 } } \cs_new_protected:Npn \__driver_pdf_literal_direct:n #1 @@ -72,8 +72,12 @@ \__dim_strip_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~ re~W~n } + \__driver_pdf_matrix:n { -1~0~0~-1 } + \__driver_graphic_state_save: + \__driver_pdf_matrix:n { -1~0~0~-1 } \hbox_overlap_right:n { \box_use:N #1 } \__driver_graphic_state_restore: + \__driver_graphic_state_restore: \skip_horizontal:n { \box_wd:N #1 } } \cs_new_protected_nopar:Npn \__driver_box_rotate_begin: diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index fd499957e55..355f52bd4ad 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3drivers.dtx 4280 2012-11-07 07:13:51Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 4505 2013-06-28 22:06:04Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvips.def}{\ExplFileDate}{\ExplFileVersion} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty index efd3425ec59..69dc9b3593a 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3expan.dtx 4458 2013-02-03 15:49:37Z bruno $ +\GetIdInfo$Id: l3expan.dtx 4521 2013-07-09 11:45:31Z joseph $ {L3 Argument expansion} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty index f86225c08d8..16c7c74ede6 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3file.dtx 4446 2013-01-14 00:03:17Z bruno $ +\GetIdInfo$Id: l3file.dtx 4483 2013-05-01 10:57:41Z bruno $ {L3 File and I/O operations} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -199,7 +199,7 @@ { \__ior_open:No #1 \l__file_internal_name_tl } } \prg_new_protected_conditional:Npnn \ior_open:Nn #1#2 { T , F , TF } - { \__file_name_sanitize:nn {#2} { \__ior_open:NnTF #1 } } + { \__file_name_sanitize:nn {#2} { \__ior_open_aux:NnTF #1 } } \cs_generate_variant:Nn \ior_open:NnT { c } \cs_generate_variant:Nn \ior_open:NnF { c } \cs_generate_variant:Nn \ior_open:NnTF { c } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty index 6bbe576f511..9b38f5dde9e 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty @@ -59,7 +59,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3fp.dtx 4449 2013-01-19 23:55:05Z bruno $ +\GetIdInfo$Id: l3fp.dtx 4521 2013-07-09 11:45:31Z joseph $ {L3 Floating points} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty index b104958c41f..fcff17590c0 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3int.dtx 4444 2013-01-13 20:27:20Z bruno $ +\GetIdInfo$Id: l3int.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Integers} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty b/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty index e232f8e1645..ab3bf0dcd66 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3keys.dtx 4461 2013-02-24 18:55:17Z joseph $ +\GetIdInfo$Id: l3keys.dtx 4544 2013-07-12 07:14:52Z joseph $ {L3 Experimental key-value interfaces} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -198,8 +198,11 @@ \cs_if_exist:cTF { \c__keys_props_root_tl \l__keys_property_tl } { \__keys_define_key:n {#2} } { - \__msg_kernel_error:nnxx { kernel } { property-unknown } - { \l__keys_property_tl } { \l_keys_path_tl } + \str_if_eq_x:nnF { \l__keys_property_tl } { .abort: } + { + \__msg_kernel_error:nnxx { kernel } { property-unknown } + { \l__keys_property_tl } { \l_keys_path_tl } + } } } \cs_new_protected:Npn \__keys_property_find:n #1 @@ -207,7 +210,10 @@ \tl_set:Nx \l_keys_path_tl { \l__keys_module_tl / } \tl_if_in:nnTF {#1} { . } { \__keys_property_find:w #1 \q_stop } - { \__msg_kernel_error:nnx { kernel } { key-no-property } {#1} } + { + \__msg_kernel_error:nnx { kernel } { key-no-property } {#1} + \tl_set:Nn \l__keys_property_tl { .abort: } + } } \cs_new_protected:Npn \__keys_property_find:w #1 . #2 \q_stop { @@ -236,7 +242,7 @@ } \cs_new_protected:Npn \__keys_define_key:w #1 : #2 \q_stop { \tl_if_empty:nTF {#2} } -\cs_new:Npn \__keys_bool_set:NN #1#2 +\cs_new_protected:Npn \__keys_bool_set:Nn #1#2 { \bool_if_exist:NF #1 { \bool_new:N #1 } \__keys_choice_make: @@ -251,7 +257,8 @@ } \__keys_default_set:n { true } } -\cs_new:Npn \__keys_bool_set_inverse:NN #1#2 +\cs_generate_variant:Nn \__keys_bool_set:Nn { c } +\cs_new_protected:Npn \__keys_bool_set_inverse:Nn #1#2 { \bool_if_exist:NF #1 { \bool_new:N #1 } \__keys_choice_make: @@ -266,6 +273,7 @@ } \__keys_default_set:n { true } } +\cs_generate_variant:Nn \__keys_bool_set_inverse:Nn { c } \cs_new_protected_nopar:Npn \__keys_choice_make: { \__keys_cmd_set:nn { \l_keys_path_tl } @@ -292,55 +300,12 @@ } } } -\cs_new_protected:Npn \__keys_choices_generate:n #1 - { - \cs_if_exist:cTF - { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } - { - \__keys_choice_make: - \int_zero:N \l_keys_choice_int - \clist_map_function:nN {#1} \__keys_choices_generate_aux:n - } - { - \__msg_kernel_error:nnx { kernel } - { generate-choices-before-code } { \l_keys_path_tl } - } - } -\cs_new_protected:Npn \__keys_choices_generate_aux:n #1 - { - \int_incr:N \l_keys_choice_int - \__keys_cmd_set:nx { \l_keys_path_tl / #1 } - { - \tl_set:Nn \exp_not:N \l_keys_choice_tl {#1} - \int_set:Nn \exp_not:N \l_keys_choice_int - { \int_use:N \l_keys_choice_int } - \exp_not:v - { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } - } - } -\cs_new_protected:Npn \__keys_choice_code_store:n #1 - { - \cs_if_exist:cF - { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } - { - \tl_new:c - { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } - } - \tl_set:cn { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } - {#1} - } -\cs_generate_variant:Nn \__keys_choice_code_store:n { x } \cs_new_protected:Npn \__keys_cmd_set:nn #1#2 { \__keys_cmd_set:n {#1} \cs_set:cpn { \c__keys_code_root_tl #1 } ##1 {#2} } -\cs_new_protected:Npn \__keys_cmd_set:nx #1#2 - { - \__keys_cmd_set:n {#1} - \cs_set:cpx { \c__keys_code_root_tl #1 } ##1 {#2} - } -\cs_generate_variant:Nn \__keys_cmd_set:nn { Vo } +\cs_generate_variant:Nn \__keys_cmd_set:nn { nx , Vn , Vo } \cs_new_protected:Npn \__keys_cmd_set:n #1 { \tl_clear_new:c { \c__keys_vars_root_tl #1 .default } @@ -349,25 +314,17 @@ } \cs_new_protected:Npn \__keys_default_set:n #1 { \tl_set:cn { \c__keys_vars_root_tl \l_keys_path_tl .default } {#1} } -\cs_generate_variant:Nn \__keys_default_set:n { V } \cs_new_protected:Npn \__keys_initialise:n #1 - { - \use:x - { \exp_after:wN \__keys_initialise:wn \l_keys_path_tl \q_stop {#1} } - } -\cs_generate_variant:Nn \__keys_initialise:n { V } -\cs_new:Npn \__keys_initialise:wn #1 / #2 \q_stop #3 - { \keys_set:nn {#1} { #2 = \exp_not:n { {#3} } } } + { \exp_after:wN \__keys_initialise:wn \l_keys_path_tl \q_stop {#1} } +\cs_new_protected:Npn \__keys_initialise:wn #1 / #2 \q_stop #3 + { \keys_set:nn {#1} { #2 = {#3} } } \cs_new_protected:Npn \__keys_meta_make:n #1 { \__keys_cmd_set:Vo \l_keys_path_tl { \exp_after:wN \keys_set:nn \exp_after:wN { \l__keys_module_tl } {#1} } } -\cs_new_protected:Npn \__keys_meta_make:x #1 - { - \__keys_cmd_set:nx { \l_keys_path_tl } - { \exp_not:N \keys_set:nn { \l__keys_module_tl } {#1} } - } +\cs_new_protected:Npn \__keys_meta_make:nn #1#2 + { \__keys_cmd_set:Vn \l_keys_path_tl { \keys_set:nn {#1} {#2} } } \cs_new:Npn \__keys_multichoice_find:n #1 { \clist_map_function:nN {#1} \__keys_choice_find:n } \cs_new_protected_nopar:Npn \__keys_multichoice_make: @@ -402,110 +359,127 @@ { \c__keys_vars_root_tl \l_keys_path_tl .req } { c__keys_value_ #1 _tl } } -\cs_new_protected:Npn \__keys_variable_set:NnNN #1#2#3#4 +\cs_new_protected:Npn \__keys_variable_set:NnnN #1#2#3#4 { \use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 } \__keys_cmd_set:nx { \l_keys_path_tl } - { \exp_not:c { #2 _ #3 set:N #4 } \exp_not:N #1 {##1} } + { \exp_not:c { #2 _ #3 set:N #4 } \exp_not:N #1 \exp_not:n { {##1} } } } -\cs_new_protected:Npn \__keys_variable_set:NnN #1#2#3 - { \__keys_variable_set:NnNN #1 {#2} { } #3 } -\cs_generate_variant:Nn \__keys_variable_set:NnNN { c } -\cs_generate_variant:Nn \__keys_variable_set:NnN { c } +\cs_generate_variant:Nn \__keys_variable_set:NnnN { c } \cs_new_protected:cpn { \c__keys_props_root_tl .bool_set:N } #1 - { \__keys_bool_set:NN #1 { } } + { \__keys_bool_set:Nn #1 { } } +\cs_new_protected:cpn { \c__keys_props_root_tl .bool_set:c } #1 + { \__keys_bool_set:cn {#1} { } } \cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset:N } #1 - { \__keys_bool_set:NN #1 g } + { \__keys_bool_set:Nn #1 { g } } +\cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset:c } #1 + { \__keys_bool_set:cn {#1} { g } } \cs_new_protected:cpn { \c__keys_props_root_tl .bool_set_inverse:N } #1 - { \__keys_bool_set_inverse:NN #1 { } } + { \__keys_bool_set_inverse:Nn #1 { } } +\cs_new_protected:cpn { \c__keys_props_root_tl .bool_set_inverse:c } #1 + { \__keys_bool_set_inverse:cn {#1} { } } \cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset_inverse:N } #1 - { \__keys_bool_set_inverse:NN #1 g } + { \__keys_bool_set_inverse:Nn #1 { g } } +\cs_new_protected:cpn { \c__keys_props_root_tl .bool_gset_inverse:c } #1 + { \__keys_bool_set_inverse:cn {#1} { g } } \cs_new_protected_nopar:cpn { \c__keys_props_root_tl .choice: } { \__keys_choice_make: } \cs_new_protected:cpn { \c__keys_props_root_tl .choices:nn } #1 { \__keys_choices_make:nn #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .choices:Vn } #1 + { \exp_args:NV \__keys_choices_make:nn #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .choices:on } #1 + { \exp_args:No \__keys_choices_make:nn #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .choices:xn } #1 + { \exp_args:Nx \__keys_choices_make:nn #1 } \cs_new_protected:cpn { \c__keys_props_root_tl .code:n } #1 { \__keys_cmd_set:nn { \l_keys_path_tl } {#1} } -\cs_new_protected:cpn { \c__keys_props_root_tl .code:x } #1 - { \__keys_cmd_set:nx { \l_keys_path_tl } {#1} } -\cs_new_protected:cpn { \c__keys_props_root_tl .choice_code:n } #1 - { \__keys_choice_code_store:n {#1} } -\cs_new_protected:cpn { \c__keys_props_root_tl .choice_code:x } #1 - { \__keys_choice_code_store:x {#1} } \cs_new_protected:cpn { \c__keys_props_root_tl .clist_set:N } #1 - { \__keys_variable_set:NnN #1 { clist } n } + { \__keys_variable_set:NnnN #1 { clist } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .clist_set:c } #1 - { \__keys_variable_set:cnN {#1} { clist } n } + { \__keys_variable_set:cnnN {#1} { clist } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .clist_gset:N } #1 - { \__keys_variable_set:NnNN #1 { clist } g n } + { \__keys_variable_set:NnnN #1 { clist } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .clist_gset:c } #1 - { \__keys_variable_set:cnNN {#1} { clist } g n } + { \__keys_variable_set:cnnN {#1} { clist } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .default:n } #1 { \__keys_default_set:n {#1} } \cs_new_protected:cpn { \c__keys_props_root_tl .default:V } #1 - { \__keys_default_set:V #1 } + { \exp_args:NV \__keys_default_set:n #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .default:o } #1 + { \exp_args:No \__keys_default_set:n {#1} } +\cs_new_protected:cpn { \c__keys_props_root_tl .default:x } #1 + { \exp_args:Nx \__keys_default_set:n {#1} } \cs_new_protected:cpn { \c__keys_props_root_tl .dim_set:N } #1 - { \__keys_variable_set:NnN #1 { dim } n } + { \__keys_variable_set:NnnN #1 { dim } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .dim_set:c } #1 - { \__keys_variable_set:cnN {#1} { dim } n } + { \__keys_variable_set:cnnN {#1} { dim } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .dim_gset:N } #1 - { \__keys_variable_set:NnNN #1 { dim } g n } + { \__keys_variable_set:NnnN #1 { dim } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .dim_gset:c } #1 - { \__keys_variable_set:cnNN {#1} { dim } g n } + { \__keys_variable_set:cnnN {#1} { dim } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .fp_set:N } #1 - { \__keys_variable_set:NnN #1 { fp } n } + { \__keys_variable_set:NnnN #1 { fp } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .fp_set:c } #1 - { \__keys_variable_set:cnN {#1} { fp } n } + { \__keys_variable_set:cnnN {#1} { fp } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .fp_gset:N } #1 - { \__keys_variable_set:NnNN #1 { fp } g n } + { \__keys_variable_set:NnnN #1 { fp } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .fp_gset:c } #1 - { \__keys_variable_set:cnNN {#1} { fp } g n } -\cs_new_protected:cpn { \c__keys_props_root_tl .generate_choices:n } #1 - { \__keys_choices_generate:n {#1} } + { \__keys_variable_set:cnnN {#1} { fp } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .initial:n } #1 { \__keys_initialise:n {#1} } \cs_new_protected:cpn { \c__keys_props_root_tl .initial:V } #1 - { \__keys_initialise:V #1 } + { \exp_args:NV \__keys_initialise:n #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .initial:o } #1 + { \exp_args:No \__keys_initialise:n {#1} } +\cs_new_protected:cpn { \c__keys_props_root_tl .initial:x } #1 + { \exp_args:Nx \__keys_initialise:n {#1} } \cs_new_protected:cpn { \c__keys_props_root_tl .int_set:N } #1 - { \__keys_variable_set:NnN #1 { int } n } + { \__keys_variable_set:NnnN #1 { int } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .int_set:c } #1 - { \__keys_variable_set:cnN {#1} { int } n } + { \__keys_variable_set:cnnN {#1} { int } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .int_gset:N } #1 - { \__keys_variable_set:NnNN #1 { int } g n } + { \__keys_variable_set:NnnN #1 { int } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .int_gset:c } #1 - { \__keys_variable_set:cnNN {#1} { int } g n } + { \__keys_variable_set:cnnN {#1} { int } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .meta:n } #1 { \__keys_meta_make:n {#1} } -\cs_new_protected:cpn { \c__keys_props_root_tl .meta:x } #1 - { \__keys_meta_make:x {#1} } +\cs_new_protected:cpn { \c__keys_props_root_tl .meta:nn } #1 + { \__keys_meta_make:nn #1 } \cs_new_protected_nopar:cpn { \c__keys_props_root_tl .multichoice: } { \__keys_multichoice_make: } \cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:nn } #1 { \__keys_multichoices_make:nn #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:Vn } #1 + { \exp_args:NV \__keys_multichoices_make:nn #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:on } #1 + { \exp_args:No \__keys_multichoices_make:nn #1 } +\cs_new_protected:cpn { \c__keys_props_root_tl .multichoices:xn } #1 + { \exp_args:Nx \__keys_multichoices_make:nn #1 } \cs_new_protected:cpn { \c__keys_props_root_tl .skip_set:N } #1 - { \__keys_variable_set:NnN #1 { skip } n } + { \__keys_variable_set:NnnN #1 { skip } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .skip_set:c } #1 - { \__keys_variable_set:cnN {#1} { skip } n } + { \__keys_variable_set:cnnN {#1} { skip } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .skip_gset:N } #1 - { \__keys_variable_set:NnNN #1 { skip } g n } + { \__keys_variable_set:NnnN #1 { skip } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .skip_gset:c } #1 - { \__keys_variable_set:cnNN {#1} { skip } g n } + { \__keys_variable_set:cnnN {#1} { skip } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_set:N } #1 - { \__keys_variable_set:NnN #1 { tl } n } + { \__keys_variable_set:NnnN #1 { tl } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_set:c } #1 - { \__keys_variable_set:cnN {#1} { tl } n } + { \__keys_variable_set:cnnN {#1} { tl } { } n } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_set_x:N } #1 - { \__keys_variable_set:NnN #1 { tl } x } + { \__keys_variable_set:NnnN #1 { tl } { } x } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_set_x:c } #1 - { \__keys_variable_set:cnN {#1} { tl } x } + { \__keys_variable_set:cnnN {#1} { tl } { } x } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset:N } #1 - { \__keys_variable_set:NnNN #1 { tl } g n } + { \__keys_variable_set:NnnN #1 { tl } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset:c } #1 - { \__keys_variable_set:cnNN {#1} { tl } g n } + { \__keys_variable_set:cnnN {#1} { tl } { g } n } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset_x:N } #1 - { \__keys_variable_set:NnNN #1 { tl } g x } + { \__keys_variable_set:NnnN #1 { tl } { g } x } \cs_new_protected:cpn { \c__keys_props_root_tl .tl_gset_x:c } #1 - { \__keys_variable_set:cnNN {#1} { tl } g x } + { \__keys_variable_set:cnnN {#1} { tl } { g } x } \cs_new_protected_nopar:cpn { \c__keys_props_root_tl .value_forbidden: } { \__keys_value_requirement:n { forbidden } } \cs_new_protected_nopar:cpn { \c__keys_props_root_tl .value_required: } @@ -530,7 +504,7 @@ \keyval_parse:NNn \__keys_set_elt:n \__keys_set_elt:nn {#3} \cs_set_eq:NN \__keys_execute_unknown: \__keys_execute_unknown_std: \tl_set:Nn \l__keys_module_tl {#1} - \clist_set_eq:NN #4 \l__keys_unknown_clist + \cs_set_eq:NN #4 \l__keys_unknown_clist } \cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no } \cs_generate_variant:Nn \__keys_set_known:nnnN { o } @@ -593,9 +567,9 @@ { \prg_return_true: } { \prg_return_false: } } -\cs_new_nopar:Npn \__keys_execute: +\cs_new_protected_nopar:Npn \__keys_execute: { \__keys_execute:nn { \l_keys_path_tl } { \__keys_execute_unknown: } } -\cs_new_nopar:Npn \__keys_execute_unknown: +\cs_new_protected_nopar:Npn \__keys_execute_unknown: { \__keys_execute:nn { \l__keys_module_tl / unknown } { @@ -604,7 +578,7 @@ } } \cs_new_eq:NN \__keys_execute_unknown_std: \__keys_execute_unknown: -\cs_new_nopar:Npn \__keys_execute_unknown_alt: +\cs_new_protected_nopar:Npn \__keys_execute_unknown_alt: { \clist_put_right:Nx \l__keys_unknown_clist { @@ -639,7 +613,7 @@ { \prg_return_true: } { \prg_return_false: } } -\cs_new:Npn \keys_show:nn #1#2 +\cs_new_protected:Npn \keys_show:nn #1#2 { \cs_show:c { \c__keys_code_root_tl #1 / \tl_to_str:n {#2} } } \__msg_kernel_new:nnnn { kernel } { boolean-values-only } { Key~'#1'~accepts~boolean~values~only. } @@ -650,20 +624,18 @@ The~key~'#1'~takes~a~limited~number~of~values.\\ The~input~given,~'#2',~is~not~on~the~list~accepted. } -\__msg_kernel_new:nnnn { kernel } { generate-choices-before-code } - { No~code~available~to~generate~choices~for~key~'#1'. } +\__msg_kernel_new:nnnn { kernel } { key-choice-unknown } + { Key~'#1'~accepts~only~a~fixed~set~of~choices. } { - \c_msg_coding_error_text_tl - Before~using~.generate_choices:n~the~code~should~be~defined~ - with~'.choice_code:n'~or~'.choice_code:x'. + The~key~'#1'~only~accepts~predefined~values,~and~'#2'~is~not~one~of~these. } \__msg_kernel_new:nnnn { kernel } { key-no-property } { No~property~given~in~definition~of~key~'#1'. } { \c_msg_coding_error_text_tl - Inside~\keys_define:nn each~key~name - needs~a~property: \\ - ~ ~ #1 .<property> \\ + Inside~\keys_define:nn each~key~name~ + needs~a~property: \\ \\ + \iow_indent:n { #1 .<property> } \\ \\ LaTeX~did~not~find~a~'.'~to~indicate~the~start~of~a~property. } \__msg_kernel_new:nnnn { kernel } { key-unknown } @@ -676,7 +648,7 @@ { The~property~'#1'~requires~a~value. } { \c_msg_coding_error_text_tl - LaTeX~was~asked~to~set~property~'#2'~for~key~'#1'.\\ + LaTeX~was~asked~to~set~property~'#1'~for~key~'#2'.\\ No~value~was~given~for~the~property,~and~one~is~required. } \__msg_kernel_new:nnnn { kernel } { property-unknown } @@ -698,6 +670,57 @@ The~key~'#1'~must~have~a~value.\\ No~value~was~present:~the~key~will~be~ignored. } +\cs_new_protected:Npn \__keys_choice_code_store:n #1 + { + \cs_if_exist:cF + { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } + { + \tl_new:c + { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } + } + \tl_set:cn { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } + {#1} + } +\cs_generate_variant:Nn \__keys_choice_code_store:n { x } +\cs_new_protected:cpn { \c__keys_props_root_tl .choice_code:n } #1 + { \__keys_choice_code_store:n {#1} } +\cs_new_protected:cpn { \c__keys_props_root_tl .choice_code:x } #1 + { \__keys_choice_code_store:x {#1} } +\cs_new_protected:Npn \__keys_choices_generate:n #1 + { + \cs_if_exist:cTF + { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } + { + \__keys_choice_make: + \int_zero:N \l_keys_choice_int + \clist_map_function:nN {#1} \__keys_choices_generate_aux:n + } + { + \__msg_kernel_error:nnx { kernel } + { generate-choices-before-code } { \l_keys_path_tl } + } + } +\cs_new_protected:Npn \__keys_choices_generate_aux:n #1 + { + \int_incr:N \l_keys_choice_int + \__keys_cmd_set:nx { \l_keys_path_tl / #1 } + { + \tl_set:Nn \exp_not:N \l_keys_choice_tl {#1} + \int_set:Nn \exp_not:N \l_keys_choice_int + { \int_use:N \l_keys_choice_int } + \exp_not:v + { \c__keys_vars_root_tl \l_keys_path_tl .choice~code } + } + } +\__msg_kernel_new:nnnn { kernel } { generate-choices-before-code } + { No~code~available~to~generate~choices~for~key~'#1'. } + { + \c_msg_coding_error_text_tl + Before~using~.generate_choices:n~the~code~should~be~defined~ + with~'.choice_code:n'~or~'.choice_code:x'. + } +\cs_new_protected:cpn { \c__keys_props_root_tl .generate_choices:n } #1 + { \__keys_choices_generate:n {#1} } %% %% %% End of file `l3keys.sty'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index 1d31d48342c..377d6c31d84 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3drivers.dtx 4280 2012-11-07 07:13:51Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 4505 2013-06-28 22:06:04Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3pdfmode.def}{\ExplFileDate}{\ExplFileVersion} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty index 957a8300b4c..8bc31c71ee5 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3prg.dtx 4459 2013-02-13 09:21:15Z will $ +\GetIdInfo$Id: l3prg.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Control structures} %% \ProvidesExplPackage diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty index 11ace1c7380..46447aae9a1 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3quark.dtx 4268 2012-11-04 22:19:48Z joseph $ +\GetIdInfo$Id: l3quark.dtx 4521 2013-07-09 11:45:31Z joseph $ {L3 Quarks} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty index b80717c08ec..80ee168e421 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3seq.dtx 4434 2013-01-12 09:33:40Z bruno $ +\GetIdInfo$Id: l3seq.dtx 4500 2013-05-26 11:18:19Z bruno $ {L3 Sequences and stacks} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -391,6 +391,41 @@ } \cs_new:Npn \__seq_count:n #1 { + \c_one } \cs_generate_variant:Nn \seq_count:N { c } +\cs_new:Npn \seq_use:Nnnn #1#2#3#4 + { + \seq_if_exist:NTF #1 + { + \int_case:nnn { \seq_count:N #1 } + { + { 0 } { } + { 1 } { \exp_after:wN \__seq_use:NnNnn #1 \__seq_item:n { } { } } + { 2 } { \exp_after:wN \__seq_use:NnNnn #1 {#2} } + } + { + \exp_after:wN \__seq_use:nwwwwnwn + \exp_after:wN { \exp_after:wN } #1 \__seq_item:n + \q_mark { \__seq_use:nwwwwnwn {#3} } + \q_mark { \__seq_use:nwwn {#4} } + \q_stop { } + } + } + { \__msg_kernel_expandable_error:nnn { kernel } { bad-variable } {#1} } + } +\cs_generate_variant:Nn \seq_use:Nnnn { c } +\cs_new:Npn \__seq_use:NnNnn \__seq_item:n #1 \__seq_item:n #2#3 + { \exp_not:n { #1 #3 #2 } } +\cs_new:Npn \__seq_use:nwwwwnwn + #1 \__seq_item:n #2 \__seq_item:n #3 \__seq_item:n #4#5 + \q_mark #6#7 \q_stop #8 + { + #6 \__seq_item:n {#3} \__seq_item:n {#4} #5 + \q_mark {#6} #7 \q_stop { #8 #1 #2 } + } +\cs_new:Npn \__seq_use:nwwn #1 \__seq_item:n #2 #3 \q_stop #4 + { \exp_not:n { #4 #1 #2 } } +\cs_new:Npn \seq_use:Nn #1#2 + { \seq_use:Nnnn #1 {#2} {#2} {#2} } +\cs_generate_variant:Nn \seq_use:Nn { c } \cs_new_eq:NN \seq_push:Nn \seq_put_left:Nn \cs_new_eq:NN \seq_push:NV \seq_put_left:NV \cs_new_eq:NN \seq_push:Nv \seq_put_left:Nv diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty index 28148389931..4cd85c60ac6 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3tl.dtx 4415 2013-01-08 12:32:51Z bruno $ +\GetIdInfo$Id: l3tl.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Token lists} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty index 5dd39858b49..255da5c2d5e 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3token.dtx 4428 2013-01-10 13:23:29Z bruno $ +\GetIdInfo$Id: l3token.dtx 4482 2013-04-24 21:05:12Z joseph $ {L3 Experimental token manipulation} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index dceeb7d5585..0c0ba1fb2b4 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -47,16 +47,16 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3bootstrap} -\GetIdInfo$Id: l3drivers.dtx 4280 2012-11-07 07:13:51Z joseph $ +\GetIdInfo$Id: l3drivers.dtx 4505 2013-06-28 22:06:04Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3xdvidpfmx.def}{\ExplFileDate}{\ExplFileVersion} {L3 Experimental driver: xdvipdfmx} \__expl_package_check: \cs_new_protected_nopar:Npn \__driver_graphic_state_save: - { \tex_special:D { pdf:bcontent } } + { \tex_special:D { pdf:content~q } } \cs_new_protected_nopar:Npn \__driver_graphic_state_restore: - { \tex_special:D { pdf:econtent } } + { \tex_special:D { pdf:content~Q } } \cs_new_protected:Npn \__driver_pdf_literal:n #1 { \tex_special:D { pdf:content~ #1 } } \cs_new_protected:Npn \__driver_pdf_literal_direct:n #1 @@ -72,8 +72,12 @@ \__dim_strip_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~ re~W~n } + \__driver_pdf_matrix:n { -1~0~0~-1 } + \__driver_graphic_state_save: + \__driver_pdf_matrix:n { -1~0~0~-1 } \hbox_overlap_right:n { \box_use:N #1 } \__driver_graphic_state_restore: + \__driver_graphic_state_restore: \skip_horizontal:n { \box_wd:N #1 } } \cs_new_protected_nopar:Npn \__driver_box_rotate_begin: diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index eff969849a0..dfa1f56700a 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -46,8 +46,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2013/03/12] -\@ifpackagelater{expl3}{2013/03/12} +\RequirePackage{expl3}[2013/07/12] +\@ifpackagelater{expl3}{2013/07/12} {} {% \PackageError{l3keys2e}{Support package l3kernel too old} @@ -59,7 +59,7 @@ }% \endinput } -\GetIdInfo$Id: l3keys2e.dtx 4467 2013-03-12 08:29:05Z joseph $ +\GetIdInfo$Id: l3keys2e.dtx 4544 2013-07-12 07:14:52Z joseph $ {LaTeX2e option processing using LaTeX3 keys} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index fd2d7b22112..705265bc4f3 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -50,8 +50,8 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2013/03/12] -\@ifpackagelater{expl3}{2013/03/12} +\RequirePackage{expl3}[2013/07/12] +\@ifpackagelater{expl3}{2013/07/12} {} {% \PackageError{xparse}{Support package l3kernel too old} @@ -63,7 +63,7 @@ }% \endinput } -\GetIdInfo$Id: xparse.dtx 4467 2013-03-12 08:29:05Z joseph $ +\GetIdInfo$Id: xparse.dtx 4544 2013-07-12 07:14:52Z joseph $ {L3 Experimental document command parser} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 38767bd6e67..c561c724439 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -50,7 +50,7 @@ %% %% ----------------------------------------------------------------------- %% -\RequirePackage{expl3}[2013/03/12] +\RequirePackage{expl3}[2013/07/12] \@ifpackagelater{expl3}{2013/03/12} {} {% @@ -63,7 +63,7 @@ }% \endinput } -\GetIdInfo$Id: xtemplate.dtx 4467 2013-03-12 08:29:05Z joseph $ +\GetIdInfo$Id: xtemplate.dtx 4544 2013-07-12 07:14:52Z joseph $ {L3 Experimental prototype document functions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} |