From 29c459636115f7de4ae9a8681927b52a1e896805 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 28 Feb 2012 00:40:51 +0000 Subject: l3kernel 3471 (26feb12) git-svn-id: svn://tug.org/texlive/trunk@25525 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 15 +- Master/texmf-dist/tex/latex/l3kernel/l3basics.sty | 6 +- Master/texmf-dist/tex/latex/l3kernel/l3box.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3clist.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3doc.cls | 322 +++++++----- Master/texmf-dist/tex/latex/l3kernel/l3expan.sty | 3 +- Master/texmf-dist/tex/latex/l3kernel/l3file.sty | 568 ++++++++++++++++++--- Master/texmf-dist/tex/latex/l3kernel/l3int.sty | 40 +- Master/texmf-dist/tex/latex/l3kernel/l3io.sty | 533 ------------------- Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty | 4 +- Master/texmf-dist/tex/latex/l3kernel/l3msg.sty | 28 +- Master/texmf-dist/tex/latex/l3kernel/l3prg.sty | 18 +- Master/texmf-dist/tex/latex/l3kernel/l3prop.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3quark.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3skip.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3tl.sty | 16 +- Master/texmf-dist/tex/latex/l3kernel/l3token.sty | 22 +- 18 files changed, 793 insertions(+), 794 deletions(-) delete mode 100644 Master/texmf-dist/tex/latex/l3kernel/l3io.sty (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 31d7c78ee60..28dfab3ab00 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -59,8 +59,8 @@ } \def\ExplFileName{expl3} \def\ExplFileDescription{L3 Experimental code bundle wrapper} -\def\ExplFileDate{2012/02/08} -\def\ExplFileVersion{3343} +\def\ExplFileDate{2012/02/26} +\def\ExplFileVersion{3471} \RequirePackage{etex} \reserveinserts{32} \ProvidesExplPackage @@ -155,19 +155,11 @@ \cs_check_exists:N #1 \cs_set_eq:NN #1 } - \cs_undefine:N \bool_set_eq:cN - \cs_undefine:N \bool_set_eq:Nc - \cs_undefine:N \bool_set_eq:cc - \cs_generate_variant:Nn \bool_set_eq:NN { c , Nc , cc } \cs_set_protected:Npn \bool_gset_eq:NN #1 { \cs_check_exists:N #1 - \cs_set_eq:NN #1 + \cs_gset_eq:NN #1 } - \cs_undefine:N \bool_gset_eq:cN - \cs_undefine:N \bool_gset_eq:Nc - \cs_undefine:N \bool_gset_eq:cc - \cs_generate_variant:Nn \bool_gset_eq:NN { c , Nc , cc } \cs_set_protected:Npn \bool_set:Nn #1#2 { \cs_check_exists:N #1 @@ -184,7 +176,6 @@ l3token, l3prop, l3msg, - l3io, l3file, l3skip, l3keys, diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty index 4ea5a1ce780..2193b30348f 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3basics.dtx 3317 2012-02-06 12:26:40Z bruno $ +\GetIdInfo$Id: l3basics.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental basic definitions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -451,8 +451,8 @@ \msg_kernel_error:nnxx { kernel } { command-already-defined } { \token_to_str:N #1 } { \token_to_meaning:N #1 } } - \iow_log:x { Defining~\token_to_str:N #1~ \msg_line_context: } - } + \iow_log:x { Defining~\token_to_str:N #1~ \msg_line_context: } + } \fi: \cs_set_protected_nopar:Npn \chk_if_free_cs:c { \exp_args:Nc \chk_if_free_cs:N } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty index 9176a912928..1fe36dc7ca3 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3box.dtx 3158 2012-01-09 00:47:42Z bruno $ +\GetIdInfo$Id: l3box.dtx 3432 2012-02-18 12:16:20Z joseph $ {L3 Experimental boxes} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty index bf523e186e1..7fc71a96c04 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty @@ -48,7 +48,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3clist.dtx 3157 2012-01-09 00:42:07Z bruno $ +\GetIdInfo$Id: l3clist.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental comma separated lists} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty index c13164ef700..5c5ea863483 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty @@ -47,7 +47,7 @@ %% ----------------------------------------------------------------------- %% \RequirePackage{l3names} -\GetIdInfo$Id: l3coffins.dtx 3155 2012-01-08 22:53:03Z bruno $ +\GetIdInfo$Id: l3coffins.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental coffin code layer} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 33821fa37f4..e01b5752fd5 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -52,7 +52,7 @@ \let \filedateOld \ExplFileDate \let \fileversionOld \ExplFileVersion \let \filedescriptionOld \ExplFileDescription -\GetIdInfo$Id: l3doc.dtx 3255 2012-01-28 20:31:12Z joseph $ +\GetIdInfo$Id: l3doc.dtx 3464 2012-02-26 15:30:29Z bruno $ {L3 Experimental documentation class} \ProvidesExplClass {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -125,7 +125,22 @@ \ProcessOptions \LoadClass{article} \RequirePackage{doc} -\RequirePackage{array,alphalph,booktabs,color,colortbl,fixltx2e,enumitem,pifont,textcomp,trace,underscore,csquotes,fancyvrb} +\RequirePackage + { + array, + alphalph, + booktabs, + color, + colortbl, + fixltx2e, + enumitem, + pifont, + textcomp, + trace, + underscore, + csquotes, + fancyvrb + } \raggedbottom \fvset{gobble=2} \cs_set_eq:NN \verbatim \Verbatim @@ -302,15 +317,14 @@ \coffin_clear:N \l_doc_syntax_coffin \coffin_clear:N \l_doc_names_coffin - \bool_gset_false:N \l_doc_meta_TF_bool - \bool_gset_false:N \l_doc_meta_pTF_bool - \bool_gset_false:N \l_doc_meta_EXP_bool - \bool_gset_false:N \l_doc_meta_rEXP_bool + \bool_set_false:N \l_doc_meta_TF_bool + \bool_set_false:N \l_doc_meta_pTF_bool + \bool_set_false:N \l_doc_meta_EXP_bool + \bool_set_false:N \l_doc_meta_rEXP_bool \keys_set:nn { l3doc/function } {#1} - \char_set_catcode_active:N \< - \cs_set_eq:NN < \doc_open_meta:n + \char_set_active_eq:NN < \doc_open_meta:w \group_begin: \MakePrivateLetters @@ -324,10 +338,6 @@ } { \vcoffin_set_end: - \hcoffin_set:Nn \l_doc_names_coffin - { - \exp_args:NV \function_typeset:n \l_doc_function_input_tl - } \bool_if:NTF \l_doc_long_name_bool { \coffin_join:NnnNnnnn @@ -387,40 +397,20 @@ } \cs_gset_nopar:Npn \function_typeset:n #1 { - - \cs_set_nopar:Npn \nextnewline{\cs_gset_nopar:Npn\nextnewline{\\}} \tl_gclear:N \g_doc_macro_tl - \prop_clear:N \l_doc_functions_block_prop - + % populate "\l_doc_functions_block_prop" with info on the functions present: \clist_map_function:nN {#1} \doc_parse_functions:n \small\ttfamily \begin{tabular}{ @{} l @{} r @{} } \toprule - \prop_map_function:NN \l_doc_functions_block_prop \doc_show_functions:nn - \\ - - \bool_if:nF { \tl_if_empty_p:N \l_doc_date_added_tl && - \tl_if_empty_p:N \l_doc_date_updated_tl } - { \midrule } - - \tl_if_empty:NF \l_doc_date_added_tl - { - \multicolumn{2}{@{}r@{}} - { \scriptsize New:\,\l_doc_date_added_tl } \\ - } - - \tl_if_empty:NF \l_doc_date_updated_tl - { - \multicolumn{2}{@{}r@{}} - { \scriptsize Updated:\,\l_doc_date_updated_tl } \\ - } + \prop_map_function:NN \l_doc_functions_block_prop \doc_typeset_functions:nn + \doc_typeset_dates: \bottomrule \end{tabular} \normalfont\normalsize } - \prop_new:N \l_doc_functions_block_prop \cs_generate_variant:Nn \prop_put:Nnn {Nxx} \cs_new:Nn \doc_parse_functions:n @@ -429,10 +419,10 @@ { \tl_gset_eq:NN \l_doc_function_name_prefix_tl \@backslashchar % for the weird functions named "\::N" and so on: -\exp_args:Nx \tl_if_head_eq_charcode:nNTF { \cs_to_str:N #1 } {:} +\exp_args:Nx \tl_if_head_eq_charcode:nNTF { \cs_to_str:N #1 } { : } { % again, no variants: -\prop_put:Nxx \l_doc_functions_block_prop { \cs_to_str:N #1 } { } +\prop_put:Nxx \l_doc_functions_block_prop { \cs_to_str:N #1 } { {-1} {} } } { % finally, for regular old csnames: @@ -442,12 +432,19 @@ { \prop_put:Nxx \l_doc_functions_block_prop { \cs_get_function_name:N #1 } -{ \l_doc_tmp_tl , \cs_get_function_signature:N #1 } +{ + \l_doc_tmp_tl , + {\cs_get_arg_count_from_signature:N #1} + {\cs_get_function_signature:N #1} +} } { \prop_put:Nxx \l_doc_functions_block_prop { \cs_get_function_name:N #1 } -{ \cs_get_function_signature:N #1 } +{ + {\cs_get_arg_count_from_signature:N #1} + {\cs_get_function_signature:N #1} +} } } } @@ -455,105 +452,121 @@ { % for now don't bother splitting into variants: \tl_gclear:N \l_doc_function_name_prefix_tl -\prop_put:Nxx \l_doc_functions_block_prop { #1 } { } +\prop_put:Nxx \l_doc_functions_block_prop { #1 } { {-1} {} } } } -\cs_new:Nn \doc_show_functions:nn +\cs_new:Nn \doc_typeset_functions:nn { \clist_gset:Nn \l_doc_variants_clist {#2} \clist_gpop:NN \l_doc_variants_clist \l_doc_tmp_tl - \exp_args:Nx \doc_showmacro:n - { \exp_not:c {#1 \tl_if_empty:NF \l_doc_tmp_tl { : \l_doc_tmp_tl } } } + \exp_args:Nc \doc_typeset_functions_aux:N + { + #1 + \int_compare:nT { \exp_after:wN \use_i:nn \l_doc_tmp_tl > -1 } {:} + \int_compare:nT { \exp_after:wN \use_i:nn \l_doc_tmp_tl > 0 } + { \exp_after:wN \use_ii:nn \l_doc_tmp_tl } + } + \\ } -\cs_new_nopar:Nn \doc_showmacro:n { +\cs_new_nopar:Nn \doc_typeset_functions_aux:N +{ \bool_if:NT \l_doc_meta_pTF_bool { \tl_set:Nx \l_doc_pTF_name_tl { \doc_predicate_from_base:N #1 } - \doc_special_main_index:o { \token_to_str:N \l_doc_pTF_name_tl } - \seq_gput_right:Nx \g_doc_functions_seq { \tl_to_str:N \l_doc_pTF_name_tl } + \doc_special_main_index:o { \tl_to_str:N \l_doc_pTF_name_tl } + \seq_gput_right:Nx \g_doc_functions_seq { \l_doc_function_name_prefix_tl \l_doc_pTF_name_tl } } \bool_if:NTF \l_doc_meta_TF_bool { \doc_special_main_index:o { \token_to_str:N #1 TF } - \seq_gput_right:Nx \g_doc_functions_seq { \tl_to_str:n { #1 TF } } - \seq_gput_right:Nx \g_doc_functions_seq { \tl_to_str:n { #1 T } } - \seq_gput_right:Nx \g_doc_functions_seq { \tl_to_str:n { #1 F } } + \seq_gput_right:Nx \g_doc_functions_seq { \token_to_str:N #1 TF } }{ \doc_special_main_index:o { \token_to_str:N #1 } - \seq_gput_right:Nx \g_doc_functions_seq { \tl_to_str:n { #1 } } + \seq_gput_right:Nx \g_doc_functions_seq { \tl_to_str:n {#1} } } \bool_if:NTF \l_doc_meta_pTF_bool { + \bool_gset_false:N \l_doc_meta_TF_bool - \exp_args:Nc \doc_showmacro_aux_ii:N \l_doc_pTF_name_tl + \exp_args:Nc \doc_typeset_function_block:N { \l_doc_pTF_name_tl } \bool_gset_true:N \l_doc_meta_TF_bool - \exp_args:Nc \doc_showmacro_aux_ii:N { \cs_to_str:N #1 } + + \\ + \doc_typeset_function_block:N #1 + }{ \exp_args:Nx \tl_if_head_eq_charcode:nNTF { \exp_after:wN \use_none:n \token_to_str:N #1 } {:} - { \doc_showmacro_aux_iii:N #1 } - { \doc_showmacro_aux_ii:N #1 } + { \doc_show_macro_unusual:N #1 } + { \doc_typeset_function_block:N #1 } } } -\cs_set_nopar:Nn \doc_showmacro_aux_ii:N { - \nextnewline +\cs_set_nopar:Nn \doc_typeset_function_block:N { \tl_gset:Nx \l_doc_function_name_tl { \cs_get_function_name:N #1 } \tl_gset:Nx \l_doc_function_sig_tl { \cs_get_function_signature:N #1 } \tl_gset:Nx \g_doc_macro_tl { \l_doc_function_name_prefix_tl \l_doc_function_name_tl } - \g_doc_macro_tl - \int_compare:nT { \cs_get_arg_count_from_signature:N #1 >= 0 } - { : \l_doc_function_sig_tl } - + \doc_typeset_function_basename:N #1 \bool_if:NT \l_doc_meta_TF_bool { \doc_typeset_TF: } + \doc_typeset_expandability: + \clist_if_empty:NF \l_doc_variants_clist { \doc_typeset_variants: } + \bool_if:NT \g_doc_full_bool { \doc_label_function: } - & - \bool_if:NT \l_doc_meta_EXP_bool { - \hspace{\tabcolsep} - \hyperlink{expstar} {$\star$} - } - \bool_if:NT \l_doc_meta_rEXP_bool { - \hspace{\tabcolsep} - \hyperlink{rexpstar} {\ding{73}} % hollow star - } - - \clist_if_empty:NF \l_doc_variants_clist - { - \\ - \doc_typeset_aux:n \g_doc_macro_tl : - \int_compare:nTF { \clist_length:N \l_doc_variants_clist == 1 } - { \l_doc_variants_clist } - { - \textrm( - \clist_pop:NN \l_doc_variants_clist \l_doc_tmp_tl - \l_doc_tmp_tl - \clist_map_inline:Nn \l_doc_variants_clist {\textrm|##1} - \textrm) - } - \bool_if:NT \l_doc_meta_TF_bool { \doc_typeset_TF: } - & - \bool_if:NT \l_doc_meta_EXP_bool { - \hspace{\tabcolsep} - \hyperlink{expstar} {$\star$} +} +\cs_set:Nn \doc_typeset_function_basename:N + { + \g_doc_macro_tl + \int_compare:nT { \cs_get_arg_count_from_signature:N #1 > -1 } { : } + \int_compare:nT { \cs_get_arg_count_from_signature:N #1 > 0 } + { \l_doc_function_sig_tl } } - \bool_if:NT \l_doc_meta_rEXP_bool { - \hspace{\tabcolsep} - \hyperlink{rexpstar} {\ding{73}} % hollow star +\cs_set:Nn \doc_typeset_expandability: + { + & + \bool_if:NT \l_doc_meta_EXP_bool { + \hspace{\tabcolsep} + \hyperlink{expstar} {$\star$} + } + \bool_if:NT \l_doc_meta_rEXP_bool { + \hspace{\tabcolsep} + \hyperlink{rexpstar} {\ding{73}} % hollow star + } } +\cs_set:Nn \doc_typeset_variants: + { + \\ + \doc_typeset_aux:n \g_doc_macro_tl : + \int_compare:nTF { \clist_length:N \l_doc_variants_clist == 1 } + { \exp_after:wN \use_ii:nn \l_doc_variants_clist } + { + \textrm( + \clist_pop:NN \l_doc_variants_clist \l_doc_tmp_tl + \exp_after:wN \use_ii:nn \l_doc_tmp_tl + \clist_map_inline:Nn \l_doc_variants_clist {\textrm| \use_ii:nn ##1} + \textrm) + } + \bool_if:NT \l_doc_meta_TF_bool { \doc_typeset_TF: } + & + \bool_if:NT \l_doc_meta_EXP_bool { + \hspace{\tabcolsep} + \hyperlink{expstar} {$\star$} } - - \exp_args:NNf \tl_replace_all:Nnn \g_doc_macro_tl {\token_to_str:N _} {/} - \exp_args:NNf \tl_replace_all:Nnn \g_doc_macro_tl {\@backslashchar} {} - \bool_if:NT \g_doc_full_bool { + \bool_if:NT \l_doc_meta_rEXP_bool { + \hspace{\tabcolsep} + \hyperlink{rexpstar} {\ding{73}} % hollow star + } + } +\cs_set:Nn \doc_label_function: + { + \exp_args:NNf \tl_replace_all:Nnn \g_doc_macro_tl {\token_to_str:N _} {/} + \exp_args:NNf \tl_replace_all:Nnn \g_doc_macro_tl {\@backslashchar} {} \exp_args:Nx \label { doc/function//\g_doc_macro_tl \tl_if_empty:NF \l_doc_function_sig_tl { : \l_doc_function_sig_tl } } } -} -\cs_set_nopar:Nn \doc_showmacro_aux_iii:N { - \nextnewline +\cs_set_nopar:Nn \doc_show_macro_unusual:N { \tl_gset:Nx \g_doc_macro_tl { \token_to_str:N #1} \token_to_str:N #1 & @@ -563,6 +576,24 @@ \exp_args:Nx \label { doc/function//\g_doc_macro_tl } } } +\cs_set:Nn \doc_typeset_dates: + { + \bool_if:nF { \tl_if_empty_p:N \l_doc_date_added_tl && + \tl_if_empty_p:N \l_doc_date_updated_tl } + { \midrule } + + \tl_if_empty:NF \l_doc_date_added_tl + { + \multicolumn{2}{@{}r@{}} + { \scriptsize New:\,\l_doc_date_added_tl } \\ + } + + \tl_if_empty:NF \l_doc_date_updated_tl + { + \multicolumn{2}{@{}r@{}} + { \scriptsize Updated:\,\l_doc_date_updated_tl } \\ + } + } \newenvironment{syntax}{ \small\ttfamily \bool_if:NTF \l_doc_long_name_bool @@ -591,44 +622,62 @@ \coffin_gset_eq:NN \l_doc_syntax_coffin \l_doc_syntax_coffin \ignorespacesafterend } -\tl_map_inline:nn {0123456789} { \cs_gset_eq:cN {char_other_#1} #1 } -\group_begin: - \tl_map_inline:nn {0123456789} { \char_set_catcode_active:N #1 } - \cs_new:Npn \doc_open_meta:n { +\cs_new:Npn \doc_ensuremath_sb:n #1 + { + \ensuremath{\sb{#1}} + } +\cs_set_eq:NN \doc_meta:n \meta +\cs_set:Npn \meta + { \group_begin: - \tl_map_function:nN {0123456789} \doc_assign_num:n + \char_set_active_eq:NN _ \doc_ensuremath_sb:n + \doc_close_meta:n + } +\cs_new:Npn \doc_open_meta:w + { + \group_begin: + \char_set_active_eq:NN _ \doc_ensuremath_sb:n \doc_close_meta:w } - \cs_new:Npn \Arg { +\cs_new:Npn \Arg + { \texttt{ \char`\{ } \group_begin: - \tl_map_function:nN {0123456789} \doc_assign_num:n + \char_set_active_eq:NN _ \doc_ensuremath_sb:n \doc_close_Arg:n } -\group_end: -\cs_new_nopar:Npn \doc_close_meta:w #1> { \meta {#1} \group_end: } +\cs_new_nopar:Npn \doc_close_meta:n #1 { \doc_meta:n {#1} \group_end: } +\cs_new_nopar:Npn \doc_close_meta:w #1> { \doc_meta:n {#1} \group_end: } \cs_new_nopar:Npn \doc_close_Arg:n #1 { - \meta {#1} + \doc_meta:n {#1} \group_end: \texttt{ \char`\} } } -\cs_new_nopar:Npn \doc_assign_num:n #1 { - \cs_set_eq:cc { \string #1 } { char_other_\string #1 } - \char_set_catcode_active:N #1 - \cs_set_nopar:Npn #1 { \unskip \, $ {} \sb { \use:c { char_other_\string #1 } } $ } -} +\keys_define:nn { l3doc/macro } + { + aux .code:n = + { \bool_set_true:N \l_doc_macro_aux_bool } , + internal .code:n = + { \bool_set_true:N \l_doc_macro_internal_bool } , + var .code:n = + { \bool_set_true:N \l_doc_macro_var_bool } , + TF .code:n = + { \bool_set_true:N \l_doc_macro_TF_bool } , + pTF .code:n = + { \bool_set_true:N \l_doc_macro_pTF_bool } , + } \renewcommand \macro [1][] { \int_compare:nNnTF \currentgrouplevel=2 { \int_gzero:N \g_doc_nested_macro_int } { \int_incr:N \g_doc_nested_macro_int } - \bool_set_false:N \l_doc_macro_aux_bool - \bool_set_false:N \l_doc_macro_internal_bool - \bool_set_false:N \l_doc_macro_TF_bool - \bool_set_false:N \l_doc_macro_pTF_bool - \bool_set_false:N \l_doc_macro_var_bool - \bool_set_false:N \l_doc_tested_bool + \bool_gset_false:N \l_doc_macro_aux_bool + \bool_gset_false:N \l_doc_macro_internal_bool + \bool_gset_false:N \l_doc_macro_TF_bool + \bool_gset_false:N \l_doc_macro_pTF_bool + \bool_gset_false:N \l_doc_macro_var_bool + \bool_gset_false:N \l_doc_tested_bool \cs_set_eq:NN \doc_macroname_prefix:n \use:n \cs_set_eq:NN \doc_macroname_suffix: \c_empty_tl @@ -668,24 +717,23 @@ { \clist_map_inline:Nn \l_doc_macro_input_clist { - \exp_args:Nf \doc_macro_single { \doc_predicate_from_base:w ##1 } + \exp_args:Nx \doc_macro_single:n { \doc_predicate_from_base:w ##1 \q_nil } } \bool_set_true:N \l_doc_macro_TF_bool - \clist_map_function:NN \l_doc_macro_input_clist \doc_macro_single + \clist_map_function:NN \l_doc_macro_input_clist \doc_macro_single:n \bool_set_false:N \l_doc_macro_TF_bool } - { \clist_map_function:NN \l_doc_macro_input_clist \doc_macro_single } + { \clist_map_function:NN \l_doc_macro_input_clist \doc_macro_single:n } } -\cs_set_nopar:Npn \doc_macro_opt_aux: { \bool_set_true:N \l_doc_macro_aux_bool } -\cs_set_nopar:Npn \doc_macro_opt_internal: { \bool_set_true:N \l_doc_macro_internal_bool } -\cs_set_nopar:Npn \doc_macro_opt_TF: { \bool_set_true:N \l_doc_macro_TF_bool } -\cs_set_nopar:Npn \doc_macro_opt_pTF: { \bool_set_true:N \l_doc_macro_pTF_bool } -\cs_set_nopar:Npn \doc_macro_opt_var: { \bool_set_true:N \l_doc_macro_var_bool } \cs_set:Nn \doc_predicate_from_base:N { \cs_get_function_name:N #1 _p: \cs_get_function_signature:N #1 } -\cs_set_nopar:Npn \doc_macro_single #1 { +\cs_set:Npn \doc_predicate_from_base:w #1 : #2 \q_nil + { + #1 _p: #2 + } +\cs_set_nopar:Npn \doc_macro_single:n #1 { \int_incr:N \l_doc_macro_int \tl_set:Nx \saved@macroname { \token_to_str:N #1 } \topsep\MacroTopsep @@ -815,34 +863,38 @@ } { \prop_gput:NVn \g_doc_missing_tests_prop \l_doc_macro_input_clist {#1} } } +\cs_set:Nn \doc_macro_wrap:n + { + #1 \bool_if:NT \l_doc_macro_TF_bool {TF} + } \cs_set:Nn \doc_texttt_comma:n {\,,~\texttt{#1}} \cs_set:Npn \endmacro { \int_compare:nT {\g_doc_nested_macro_int<1} { - \par\nobreak{\footnotesize(\emph{ + \par\nobreak\noindent{\footnotesize(\emph{ End~ definition~ for~ \prg_case_int:nnn { \clist_length:N \l_doc_macro_input_clist } { - {1} { \texttt{ \clist_use:N \l_doc_macro_input_clist }. } + {1} { \texttt{ \doc_macro_wrap:n { \clist_use:N \l_doc_macro_input_clist } }. } {2} { \tl_set:Nx \l_clist_first_tl { \clist_item:Nn \l_doc_macro_input_clist {0} } \tl_set:Nx \l_clist_last_tl { \clist_item:Nn \l_doc_macro_input_clist {1} } - \texttt{\l_clist_first_tl}\,~ and~ \texttt{\l_clist_last_tl}\,. + \texttt{\doc_macro_wrap:n\l_clist_first_tl}\,~ and~ \texttt{\doc_macro_wrap:n\l_clist_last_tl}\,. } {3} { \tl_set:Nx \l_clist_first_tl { \clist_item:Nn \l_doc_macro_input_clist {0} } \tl_set:Nx \l_clist_mid_tl { \clist_item:Nn \l_doc_macro_input_clist {1} } \tl_set:Nx \l_clist_last_tl { \clist_item:Nn \l_doc_macro_input_clist {2} } - \texttt{\l_clist_first_tl}\,,~ - \texttt{\l_clist_mid_tl}\,,~ - and~ \texttt{\l_clist_last_tl}\,. + \texttt{\doc_macro_wrap:n\l_clist_first_tl}\,,~ + \texttt{\doc_macro_wrap:n\l_clist_mid_tl}\,,~ + and~ \texttt{\doc_macro_wrap:n\l_clist_last_tl}\,. } } { \tl_set:Nx \l_clist_first_tl { \clist_item:Nn \l_doc_macro_input_clist {0} } - \texttt{\l_clist_first_tl}\,~and~others. + \texttt{\doc_macro_wrap:n\l_clist_first_tl}\,~and~others. } \bool_if:nT { !\l_doc_macro_aux_bool && diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty index f3bf00e9997..d6463b70fac 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3expan.dtx 3196 2012-01-15 09:44:05Z joseph $ +\GetIdInfo$Id: l3expan.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental argument expansion} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -286,6 +286,7 @@ \cs_new_nopar:Npn \exp_last_unbraced:Nno { \::n \::o_unbraced \::: } \cs_new_nopar:Npn \exp_last_unbraced:Noo { \::o \::o_unbraced \::: } \cs_new_nopar:Npn \exp_last_unbraced:Nfo { \::f \::o_unbraced \::: } +\cs_new_nopar:Npn \exp_last_unbraced:NnNo { \::n \::N \::o_unbraced \::: } \cs_new_protected_nopar:Npn \exp_last_unbraced:Nx { \::x_unbraced \::: } \cs_new:Npn \exp_last_two_unbraced:Noo #1#2#3 { \exp_after:wN \exp_last_two_unbraced_aux:noN \exp_after:wN {#3} {#2} #1 } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty index f79666e640a..25eda0dc609 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty @@ -13,7 +13,7 @@ %% %% Do not distribute a modified version of this file. %% -%% File: l3file.dtx Copyright (C) 2009-2012 The LaTeX3 Project +%% File: l3file.dtx Copyright (C) 1990-2012 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 @@ -46,8 +46,8 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3file.dtx 3287 2012-01-31 22:08:14Z joseph $ - {L3 Experimental file operations} +\GetIdInfo$Id: l3file.dtx 3464 2012-02-26 15:30:29Z bruno $ + {L3 Experimental file and I/O operations} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} \package_check_loaded_expl: @@ -59,19 +59,27 @@ \seq_new:N \l_file_search_path_seq \seq_new:N \l_file_internal_saved_path_seq \seq_new:N \l_file_internal_seq -\ior_new:N \g_file_internal_ior -\cs_new_protected:Npn \file_add_path:nN #1 +\cs_new_protected:Npn \file_name_sanitize:nn #1#2 { \group_begin: - \tl_to_str_active_safe:Nx \l_file_internal_name_tl {#1} - \tl_if_in:NnT \l_file_internal_name_tl { ~ } + \seq_map_inline:Nn \l_char_active_seq + { \cs_set_nopar:Npx ##1 { \token_to_str:N ##1 } } + \tl_set:Nx \l_file_internal_name_tl {#1} + \tl_set:Nx \l_file_internal_name_tl + { \tl_to_str:N \l_file_internal_name_tl } + \tl_if_in:NnTF \l_file_internal_name_tl { ~ } { - \msg_kernel_error:nnx { io } { space-in-file-name } + \msg_kernel_error:nnx { file } { space-in-file-name } { \l_file_internal_name_tl } } - \exp_args:NNo \group_end: - \file_add_path_aux:nN \l_file_internal_name_tl + \use:x + { + \group_end: + \exp_not:n {#2} { \l_file_internal_name_tl } + } } +\cs_new_protected:Npn \file_add_path:nN #1 + { \file_name_sanitize:nn {#1} { \file_add_path_aux:nN } } \cs_new_protected:Npn \file_add_path_aux:nN #1#2 { \ior_open_unsafe:Nn \g_file_internal_ior {#1} @@ -84,7 +92,7 @@ } \cs_new_protected:Npn \file_add_path_search:nN #1#2 { - \tl_clear:N #2 + \tl_set:Nn #2 { \q_no_value } \cs_if_exist:NT \input@path { \seq_set_eq:NN \l_file_internal_saved_path_seq \l_file_search_path_seq @@ -105,91 +113,529 @@ { \seq_set_eq:NN \l_file_search_path_seq \l_file_internal_saved_path_seq } \ior_close:N \g_file_internal_ior } -\prg_new_protected_conditional:Nnn \file_if_exist:n { T , F , TF } +\prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF } { \file_add_path:nN {#1} \l_file_internal_name_tl - \tl_if_empty:NTF \l_file_internal_name_tl + \quark_if_no_value:NTF \l_file_internal_name_tl { \prg_return_false: } { \prg_return_true: } } \cs_new_protected:Npn \file_input:n #1 { \file_add_path:nN {#1} \l_file_internal_name_tl - \tl_if_empty:NF \l_file_internal_name_tl + \quark_if_no_value:NTF \l_file_internal_name_tl + { \file_name_sanitize:nn {#1} { \file_input_error:n } } + { \file_input_aux:V \l_file_internal_name_tl } + } +\cs_new_protected:Npn \file_input_aux:n #1 + { + \@addtofilelist {#1} + \seq_gpush:Nn \g_file_stack_seq \g_file_current_name_tl + \tl_gset:Nn \g_file_current_name_tl {#1} + \tex_input:D #1 \c_space_tl + \seq_gpop:NN \g_file_stack_seq \g_file_current_name_tl + } +\cs_generate_variant:Nn \file_input_aux:n { V } +\cs_new_protected:Npn \file_input_error:n #1 + { \msg_kernel_error:nnx { file } { file-not-found } {#1} } +\cs_new_protected:Npn \file_path_include:n #1 + { + \seq_if_in:NnF \l_file_search_path_seq {#1} + { \seq_put_right:Nn \l_file_search_path_seq {#1} } + } +\cs_new_protected:Npn \file_path_remove:n #1 + { \seq_remove_all:Nn \l_file_search_path_seq {#1} } +\cs_new_protected_nopar:Npn \file_list: + { + \seq_remove_duplicates:N \g_file_record_seq + \iow_log:n { *~File~List~* } + \seq_map_inline:Nn \g_file_record_seq { \iow_log:n {##1} } + \iow_log:n { ************* } + } +\AtBeginDocument + { + \seq_set_from_clist:NN \l_file_internal_seq \@filelist + \seq_gconcat:NNN \g_file_record_seq \g_file_record_seq \l_file_internal_seq + } +\cs_new_eq:NN \c_term_ior \c_sixteen +\cs_new_eq:NN \c_log_iow \c_minus_one +\cs_new_eq:NN \c_term_iow \c_sixteen +\tl_const:Nn \c_iow_streams_tl + { + \c_zero + \c_one + \c_two + \c_three + \c_four + \c_five + \c_six + \c_seven + \c_eight + \c_nine + \c_ten + \c_eleven + \c_twelve + \c_thirteen + \c_fourteen + \c_fifteen + } +\cs_new_eq:NN \c_ior_streams_tl \c_iow_streams_tl +\prop_new:N \g_iow_streams_prop +\prop_new:N \g_ior_streams_prop +\prop_put:Nnn \g_iow_streams_prop { 0 } { LaTeX2e~reserved } +\prop_put:Nnn \g_iow_streams_prop { 1 } { LaTeX2e~reserved } +\prop_put:Nnn \g_iow_streams_prop { 2 } { LaTeX2e~reserved } +\prop_put:Nnn \g_ior_streams_prop { 0 } { LaTeX2e~reserved } +\int_new:N \l_iow_stream_int +\cs_new_eq:NN \l_ior_stream_int \l_iow_stream_int +\cs_set_eq:NN \iow_raw_new:N \newwrite +\cs_set_eq:NN \ior_raw_new:N \newread +\cs_generate_variant:Nn \ior_raw_new:N { c } +\cs_generate_variant:Nn \iow_raw_new:N { c } +\cs_new_protected:Npn \ior_new:N #1 { \cs_new_eq:NN #1 \c_term_ior } +\cs_generate_variant:Nn \ior_new:N { c } +\cs_new_protected:Npn \iow_new:N #1 { \cs_new_eq:NN #1 \c_term_iow } +\cs_generate_variant:Nn \iow_new:N { c } +\ior_new:N \g_file_internal_ior +\cs_new_protected:Npn \ior_open:Nn #1#2 + { \file_name_sanitize:nn {#2} { \ior_open_aux:Nn #1 } } +\cs_generate_variant:Nn \ior_open:Nn { c } +\cs_new_protected:Npn \iow_open:Nn #1#2 + { \file_name_sanitize:nn {#2} { \iow_open_unsafe:Nn #1 } } +\cs_generate_variant:Nn \iow_open:Nn { c } +\cs_new_protected:Npn \ior_open_aux:Nn #1#2 + { + \file_add_path:nN {#2} \l_file_name_internal_tl + \quark_if_no_value:NTF \l_file_internal_name_tl + { \file_input_error:n {#2} } + { \ior_open_unsafe:No #1 \l_file_name_internal_tl } + } +\prg_new_protected_conditional:Npnn \ior_open:Nn #1#2 { T , F , TF } + { \file_name_sanitize:nn {#2} { \ior_open_aux:NnTF #1 } } +\cs_new_protected:Npn \ior_open_aux:NnTF #1#2 + { + \file_add_path:nN {#2} \l_file_name_internal_tl + \quark_if_no_value:NTF \l_file_internal_name_tl + { \prg_return_false: } { - \@addtofilelist {#1} - \seq_gpush:NV \g_file_stack_seq \g_file_current_name_tl - \tl_gset:Nn \g_file_current_name_tl {#1} - \exp_after:wN \tex_input:D \l_file_internal_name_tl \c_space_tl - \seq_gpop:NN \g_file_stack_seq \g_file_current_name_tl + \ior_open_unsafe:No #1 \l_file_name_internal_tl + \prg_return_true: } } -\cs_new_protected:Npn \file_split_path_name_ext:nNNN #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 } +\cs_new_protected:Npn \ior_open_unsafe:Nn #1#2 { - \group_begin: - \tl_to_str_active_safe:Nx \l_file_internal_name_tl {#1} - \tl_if_in:NnT \l_file_internal_name_tl { ~ } - { - \msg_kernel_error:nnx { io } { space-in-file-name } - { \l_file_internal_name_tl } - } - \exp_args:NNo \group_end: - \file_split_path_name_ext_aux:nNNN \l_file_internal_name_tl + \ior_close:N #1 + \int_set:Nn \l_ior_stream_int \c_sixteen + \tl_map_function:NN \c_ior_streams_tl \ior_alloc_read:n + \int_compare:nNnTF \l_ior_stream_int = \c_sixteen + { \msg_kernel_fatal:nn { ior } { streams-exhausted } } + { + \ior_stream_alloc:N #1 + \prop_gput:NVn \g_ior_streams_prop \l_ior_stream_int {#2} + \tex_openin:D #1#2 \scan_stop: + } } -\cs_new_protected:Npn \file_split_path_name_ext_aux:nNNN #1#2#3#4 +\cs_generate_variant:Nn \ior_open_unsafe:Nn { No } +\cs_new_protected:Npn \iow_open_unsafe:Nn #1#2 { - \tl_clear:N #2 - \tl_clear:N #3 - \file_split_path:wNNN #1 / \q_nil / \q_stop #2#3#4 + \iow_close:N #1 + \int_set:Nn \l_iow_stream_int \c_sixteen + \tl_map_function:NN \c_iow_streams_tl \iow_alloc_write:n + \int_compare:nNnTF \l_iow_stream_int = \c_sixteen + { \msg_kernel_fatal:nn { iow } { streams-exhausted } } + { + \iow_stream_alloc:N #1 + \prop_gput:NVn \g_iow_streams_prop \l_iow_stream_int {#2} + \tex_immediate:D \tex_openout:D #1#2 \scan_stop: + } } -\cs_new_protected:Npn \file_split_path:wNNN #1 / #2 / #3 \q_stop #4 +\cs_new_protected:Npn \iow_alloc_write:n #1 { - \quark_if_nil:nTF {#2} - { \file_split_name_ext:wNN #1 . \q_nil . \q_stop } + \prop_if_in:NnF \g_iow_streams_prop {#1} { - \tl_put_right:Nn #4 { #1 / } - \file_split_path:wNNN #2 / #3 \q_stop #4 + \int_set:Nn \l_iow_stream_int {#1} + \tl_map_break: } } -\cs_new_protected:Npn \file_split_name_ext:wNN #1 . #2 . #3 \q_stop #4#5 +\cs_new_protected:Npn \ior_alloc_read:n #1 { - \quark_if_nil:nTF {#2} + \prop_if_in:NnF \g_iow_streams_prop {#1} { - \tl_if_empty:NTF #4 + \int_set:Nn \l_ior_stream_int {#1} + \tl_map_break: + } + } +\iow_new:N \g_iow_internal_iow +\ior_new:N \g_ior_internal_ior +\cs_new_protected:Npn \iow_stream_alloc:N #1 + { + \cs_if_exist:cTF { g_iow_ \int_use:N \l_iow_stream_int _iow } + { \cs_gset_eq:Nc #1 { g_iow_ \int_use:N \l_iow_stream_int _iow } } + { + \iow_stream_alloc_aux: + \int_compare:nNnT \l_iow_stream_int = \c_sixteen { - \tl_set:Nn #4 {#1} - \tl_clear:N #5 + \iow_raw_new:N \g_iow_internal_iow + \int_set:Nn \l_iow_stream_int { \g_iow_internal_iow } + \cs_gset_eq:cN + { g_iow_ \int_use:N \l_iow_stream_int _iow } \g_iow_internal_iow } - { \tl_set:Nn #5 {#1} } + \cs_gset_eq:Nc #1 { g_iow_ \int_use:N \l_iow_stream_int _iow } + } + } +\cs_new_protected_nopar:Npn \iow_stream_alloc_aux: + { + \int_incr:N \l_iow_stream_int + \int_compare:nNnT \l_iow_stream_int < \c_sixteen + { + \cs_if_exist:cTF { g_iow_ \int_use:N \l_iow_stream_int _iow } + { + \prop_if_in:NVT \g_iow_streams_prop \l_iow_stream_int + { \iow_stream_alloc_aux: } + } + { \iow_stream_alloc_aux: } } + } +\cs_new_protected:Npn \ior_stream_alloc:N #1 + { + \cs_if_exist:cTF { g_ior_ \int_use:N \l_ior_stream_int _ior } + { \cs_gset_eq:Nc #1 { g_ior_ \int_use:N \l_ior_stream_int _ior } } { - \tl_put_right:Nx #4 + \ior_stream_alloc_aux: + \int_compare:nNnT \l_ior_stream_int = \c_sixteen { - \tl_if_empty:NF #4 { . } - #1 + \ior_raw_new:N \g_ior_internal_ior + \int_set:Nn \l_ior_stream_int { \g_ior_internal_ior } + \cs_gset_eq:cN + { g_ior_ \int_use:N \l_iow_stream_int _ior } \g_ior_internal_ior } - \file_split_name_ext:wNN #2 . #3 \q_stop #4#5 + \cs_gset_eq:Nc #1 { g_ior_ \int_use:N \l_ior_stream_int _ior } } } -\cs_new_protected:Npn \file_path_include:n #1 +\cs_new_protected_nopar:Npn \ior_stream_alloc_aux: { - \seq_if_in:NnF \l_file_search_path_seq {#1} - { \seq_put_right:Nn \l_file_search_path_seq {#1} } + \int_incr:N \l_ior_stream_int + \int_compare:nNnT \l_ior_stream_int < \c_sixteen + { + \cs_if_exist:cTF { g_ior_ \int_use:N \l_ior_stream_int _ior } + { + \prop_if_in:NVT \g_ior_streams_prop \l_ior_stream_int + { \ior_stream_alloc_aux: } + } + { \ior_stream_alloc_aux: } + } } -\cs_new_protected:Npn \file_path_remove:n #1 - { \seq_remove_all:Nn \l_file_search_path_seq {#1} } -\cs_new_protected_nopar:Npn \file_list: +\cs_new_protected:Npn \ior_close:N #1 { - \seq_remove_duplicates:N \g_file_record_seq - \iow_log:n { *~File~List~* } - \seq_map_inline:Nn \g_file_record_seq { \iow_log:n {##1} } - \iow_log:n { ************* } + \cs_if_exist:NT #1 + { + \int_compare:nNnF #1 = \c_minus_one + { + \int_compare:nNnF #1 = \c_sixteen + { \tex_closein:D #1 } + \prop_gdel:NV \g_ior_streams_prop #1 + \cs_gset_eq:NN #1 \c_term_ior + } + } } -\AtBeginDocument +\cs_new_protected:Npn \iow_close:N #1 { - \seq_set_from_clist:NN \l_file_internal_seq \@filelist - \seq_gconcat:NNN \g_file_record_seq \g_file_record_seq \l_file_internal_seq + \cs_if_exist:NT #1 + { + \int_compare:nNnF #1 = \c_minus_one + { + \int_compare:nNnF #1 = \c_sixteen + { \tex_closein:D #1 } + \prop_gdel:NV \g_iow_streams_prop #1 + \cs_gset_eq:NN #1 \c_term_iow + } + } + } +\cs_generate_variant:Nn \ior_close:N { c } +\cs_generate_variant:Nn \iow_close:N { c } +\cs_new_protected_nopar:Npn \ior_list_streams: + { \ior_list_streams_aux:Nn \g_ior_streams_prop { ior } } +\cs_new_protected_nopar:Npn \iow_list_streams: + { \ior_list_streams_aux:Nn \g_iow_streams_prop { iow } } +\cs_new_protected:Npn \ior_list_streams_aux:Nn #1#2 + { + \msg_aux_use:nn { LaTeX / #2 } + { \prop_if_empty:NTF #1 { show-no-stream } { show-open-streams } } + \msg_aux_show:x + { \prop_map_function:NN #1 \msg_aux_show_unbraced:nn } + } +\msg_kernel_new:nnnn { iow } { streams-exhausted } + { Output~streams~exhausted } + { + TeX~can~only~open~up~to~16~output~streams~at~one~time.\\ + All~16 are currently~in~use,~and~something~wanted~to~open + another~one. + } +\msg_kernel_new:nnnn { ior } { streams-exhausted } + { Input~streams~exhausted } + { + TeX~can~only~open~up~to~16~input~streams~at~one~time.\\ + All~16 are currently~in~use,~and~something~wanted~to~open + another~one. + } +\cs_new_eq:NN \iow_shipout_x:Nn \tex_write:D +\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx } +\cs_new_protected:Npn \iow_shipout:Nn #1#2 + { \iow_shipout_x:Nn #1 { \exp_not:n {#2} } } +\cs_generate_variant:Nn \iow_shipout:Nn { Nx } +\cs_new_protected_nopar:Npn \iow_now:Nx { \tex_immediate:D \iow_shipout_x:Nn } +\cs_new_protected:Npn \iow_now:Nn #1#2 + { \iow_now:Nx #1 { \exp_not:n {#2} } } +\cs_set_protected_nopar:Npn \iow_log:x { \iow_now:Nx \c_log_iow } +\cs_new_protected_nopar:Npn \iow_log:n { \iow_now:Nn \c_log_iow } +\cs_set_protected_nopar:Npn \iow_term:x { \iow_now:Nx \c_term_iow } +\cs_new_protected_nopar:Npn \iow_term:n { \iow_now:Nn \c_term_iow } +\cs_new_nopar:Npn \iow_newline: { ^^J } +\cs_new_eq:NN \iow_char:N \cs_to_str:N +\int_new:N \l_iow_line_length_int +\int_set:Nn \l_iow_line_length_int { 78 } +\int_new:N \l_iow_target_length_int +\int_new:N \l_iow_current_line_int +\int_new:N \l_iow_current_word_int +\int_new:N \l_iow_current_indentation_int +\tl_new:N \l_iow_current_line_tl +\tl_new:N \l_iow_current_word_tl +\tl_new:N \l_iow_current_indentation_tl +\tl_new:N \l_iow_wrap_tl +\tl_new:N \l_iow_wrapped_tl +\bool_new:N \l_iow_line_start_bool +\group_begin: + \char_set_catcode_other:N \* + \char_set_lccode:nn {`\*} {`\ } + \tl_to_lowercase:n { \tl_const:Nn \c_catcode_other_space_tl { * } } +\group_end: +\group_begin: + \int_set_eq:NN \tex_escapechar:D \c_minus_one + \tl_const:Nx \c_iow_wrap_marker_tl + { \tl_to_str:n { \^^I \^^O \^^W \^^_ \^^W \^^R \^^A \^^P } } + \cs_set:Npn \iow_wrap_new_marker:n #1 + { + \tl_const:cx { c_iow_wrap_ #1 _marker_tl } + { + \c_catcode_other_space_tl + \c_iow_wrap_marker_tl + \c_catcode_other_space_tl + #1 + \c_catcode_other_space_tl + } + } + \iow_wrap_new_marker:n { end } + \iow_wrap_new_marker:n { newline } + \iow_wrap_new_marker:n { indent } + \iow_wrap_new_marker:n { unindent } +\group_end: +\cs_new_protected:Npn \iow_indent:n #1 { } +\cs_new:Npx \iow_indent_expandable:n #1 + { + \c_iow_wrap_indent_marker_tl + #1 + \c_iow_wrap_unindent_marker_tl + } +\cs_new_protected:Npn \iow_wrap:xnnnN #1#2#3#4#5 + { + \group_begin: + \int_set:Nn \l_iow_target_length_int { \l_iow_line_length_int - ( #3 ) } + \int_zero:N \l_iow_current_indentation_int + \tl_clear:N \l_iow_current_indentation_tl + \int_zero:N \l_iow_current_line_int + \tl_clear:N \l_iow_current_line_tl + \tl_clear:N \l_iow_wrap_tl + \bool_set_true:N \l_iow_line_start_bool + \int_set_eq:NN \tex_escapechar:D \c_minus_one + \cs_set_nopar:Npx \{ { \token_to_str:N \{ } + \cs_set_nopar:Npx \# { \token_to_str:N \# } + \cs_set_nopar:Npx \} { \token_to_str:N \} } + \cs_set_nopar:Npx \% { \token_to_str:N \% } + \cs_set_nopar:Npx \~ { \token_to_str:N \~ } + \int_set:Nn \tex_escapechar:D { 92 } + \cs_set_eq:NN \\ \c_iow_wrap_newline_marker_tl + \cs_set_eq:NN \ \c_catcode_other_space_tl + \cs_set_eq:NN \iow_indent:n \iow_indent_expandable:n + #4 + \protected@edef \l_iow_wrap_tl {#1} + \cs_set:Npn \\ { \iow_newline: #2 } + \use:x + { + \iow_wrap_loop:w + \tl_to_str:N \l_iow_wrap_tl + \tl_to_str:N \c_iow_wrap_end_marker_tl + \c_space_tl \c_space_tl + \exp_not:N \q_stop + } + \exp_args:NNo \group_end: + #5 \l_iow_wrapped_tl + } +\cs_new_protected:Npn \iow_wrap_loop:w #1 ~ % + { + \tl_set:Nn \l_iow_current_word_tl {#1} + \tl_if_eq:NNTF \l_iow_current_word_tl \c_iow_wrap_marker_tl + { \iow_wrap_special:w } + { \iow_wrap_word: } + } +\cs_new_protected_nopar:Npn \iow_wrap_word: + { + \int_set:Nn \l_iow_current_word_int + { \str_length_skip_spaces:N \l_iow_current_word_tl } + \int_add:Nn \l_iow_current_line_int { \l_iow_current_word_int } + \int_compare:nNnTF \l_iow_current_line_int < \l_iow_target_length_int + { \iow_wrap_word_fits: } + { \iow_wrap_word_newline: } + \iow_wrap_loop:w + } +\cs_new_protected_nopar:Npn \iow_wrap_word_fits: + { + \bool_if:NTF \l_iow_line_start_bool + { + \bool_set_false:N \l_iow_line_start_bool + \tl_put_right:Nx \l_iow_current_line_tl + { \l_iow_current_indentation_tl \l_iow_current_word_tl } + \int_add:Nn \l_iow_current_line_int + { \l_iow_current_indentation_int } + } + { + \tl_put_right:Nx \l_iow_current_line_tl + { ~ \l_iow_current_word_tl } + \int_incr:N \l_iow_current_line_int + } + } +\cs_new_protected_nopar:Npn \iow_wrap_word_newline: + { + \tl_put_right:Nx \l_iow_wrapped_tl + { \l_iow_current_line_tl \\ } + \int_set:Nn \l_iow_current_line_int + { + \l_iow_current_word_int + + \l_iow_current_indentation_int + } + \tl_set:Nx \l_iow_current_line_tl + { \l_iow_current_indentation_tl \l_iow_current_word_tl } + } +\cs_new_protected:Npn \iow_wrap_special:w #1 ~ #2 ~ #3 ~ % + { + \use:c { iow_wrap_#1: } + \str_if_eq:xxTF { #2~#3 } { ~ \c_iow_wrap_marker_tl } + { \iow_wrap_special:w } + { \iow_wrap_loop:w #2 ~ #3 ~ } + } +\cs_new_protected_nopar:Npn \iow_wrap_newline: + { + \tl_put_right:Nx \l_iow_wrapped_tl + { \l_iow_current_line_tl \\ } + \int_zero:N \l_iow_current_line_int + \tl_clear:N \l_iow_current_line_tl + \bool_set_true:N \l_iow_line_start_bool + } +\cs_new_protected_nopar:Npx \iow_wrap_indent: + { + \int_add:Nn \l_iow_current_indentation_int \c_four + \tl_put_right:Nx \exp_not:N \l_iow_current_indentation_tl + { \c_space_tl \c_space_tl \c_space_tl \c_space_tl } + } +\cs_new_protected_nopar:Npn \iow_wrap_unindent: + { + \int_sub:Nn \l_iow_current_indentation_int \c_four + \tl_set:Nx \l_iow_current_indentation_tl + { \prg_replicate:nn \l_iow_current_indentation_int { ~ } } + } +\cs_new_protected_nopar:Npn \iow_wrap_end: + { + \tl_put_right:Nx \l_iow_wrapped_tl + { \l_iow_current_line_tl } + \use_none_delimit_by_q_stop:w + } +\cs_new_nopar:Npn \str_length_skip_spaces:N + { \exp_args:No \str_length_skip_spaces:n } +\cs_new:Npn \str_length_skip_spaces:n #1 + { + \int_value:w \int_eval:w + \exp_after:wN \str_length_loop:NNNNNNNNN \tl_to_str:n {#1} + { X8 } { X7 } { X6 } { X5 } { X4 } { X3 } { X2 } { X1 } { X0 } \q_stop + \int_eval_end: + } +\cs_new:Npn \str_length_loop:NNNNNNNNN #1#2#3#4#5#6#7#8#9 + { + \if_catcode:w X #9 + \exp_after:wN \use_none_delimit_by_q_stop:w + \else: + 9 + + \exp_after:wN \str_length_loop:NNNNNNNNN + \fi: + } +\cs_new_eq:NN \if_eof:w \tex_ifeof:D +\prg_new_conditional:Nnn \ior_if_eof:N { p , T , F , TF } + { + \cs_if_exist:NTF #1 + { + \if_int_compare:w #1 = \c_sixteen + \prg_return_true: + \else: + \if_eof:w #1 + \prg_return_true: + \else: + \prg_return_false: + \fi: + \fi: + } + { \prg_return_true: } + } +\cs_new_protected:Npn \ior_to:NN #1#2 + { \tex_read:D #1 to #2 } +\cs_new_protected:Npn \ior_gto:NN #1#2 + { \tex_global:D \tex_read:D #1 to #2 } +\cs_new_protected:Npn \ior_str_to:NN #1#2 + { \etex_readline:D #1 to #2 } +\cs_new_protected:Npn \ior_str_gto:NN #1#2 + { \tex_global:D \etex_readline:D #1 to #2 } +\cs_new_protected_nopar:Npn \ior_map_inline:Nn + { \ior_map_inline_aux:NNn \ior_to:NN } +\cs_new_protected_nopar:Npn \ior_str_map_inline:Nn + { \ior_map_inline_aux:NNn \ior_str_to:NN } +\cs_new_protected_nopar:Npn \ior_map_inline_aux:NNn + { + \exp_args:Nc \ior_map_inline_aux:NNNn + { ior_map_ \int_use:N \g_prg_map_int :n } + } +\cs_new_protected:Npn \ior_map_inline_aux:NNNn #1#2#3#4 + { + \cs_set:Npn #1 ##1 {#4} + \int_gincr:N \g_prg_map_int + \ior_if_eof:NF #3 { \ior_map_inline_loop:NNN #1#2#3 } + \prg_break_point:n { \int_gdecr:N \g_prg_map_int } + } +\cs_new_protected:Npn \ior_map_inline_loop:NNN #1#2#3 + { + #2 #3 \l_ior_internal_tl + \ior_if_eof:NF #3 + { + \exp_args:No #1 \l_ior_internal_tl + \ior_map_inline_loop:NNN #1#2#3 + } + } +\tl_new:N \l_ior_internal_tl +\msg_kernel_new:nnnn { file } { file-not-found } + { Space~in~file~name~'#1'. } + { + Spaces~are~not~permitted~in~files~loaded~by~LaTeX: \\ + Further~errors~may~follow! + } +\msg_kernel_new:nnnn { file } { space-in-file-name } + { Space~in~file~name~'#1'. } + { + Spaces~are~not~permitted~in~files~loaded~by~LaTeX: \\ + Further~errors~may~follow! } +\cs_new_protected:Npn \iow_now_when_avail:Nn #1 + { \cs_if_free:NTF #1 { \use_none:n } { \iow_now:Nn #1 } } +\cs_new_protected:Npn \iow_now_when_avail:Nx #1 + { \cs_if_free:NTF #1 { \use_none:n } { \iow_now:Nx #1 } } %% %% %% End of file `l3file.sty'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty index 2747a0afeeb..f12cda36783 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3int.dtx 3315 2012-02-06 11:17:04Z bruno $ +\GetIdInfo$Id: l3int.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental integers} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -90,29 +90,25 @@ } \cs_new:Npn \int_div_truncate:nn #1#2 { - \int_value:w \int_eval:w - \if_int_compare:w \int_eval:w #1 = \c_zero - 0 - \else: - ( #1 % ) - \if_int_compare:w \int_eval:w #1 < \c_zero - \if_int_compare:w \int_eval:w #2 < \c_zero - - ( #2 + % ) - \else: - + ( #2 - % ) - \fi: - \else: - \if_int_compare:w \int_eval:w #2 < \c_zero - + ( #2 + % ) - \else: - - ( #2 - % ) - \fi: - \fi: % ( ( - 1 ) / 2 ) - \fi: - / ( #2 ) + \int_use:N \int_eval:w + \exp_after:wN \int_div_truncate_aux:NwNw + \int_use:N \int_eval:w #1 \exp_after:wN ; + \int_use:N \int_eval:w #2 ; \int_eval_end: } +\cs_new:Npn \int_div_truncate_aux:NwNw #1#2; #3#4; + { + \if_meaning:w 0 #1 + \c_zero + \else: + ( + #1#2 + \if_meaning:w - #1 + \else: - \fi: + ( \if_meaning:w - #3 - \fi: #3#4 - \c_one ) / \c_two + ) + \fi: + / #3#4 + } \cs_new:Npn \int_div_round:nn #1#2 { \int_eval:n { ( #1 ) / ( #2 ) } } \cs_new:Npn \int_mod:nn #1#2 { diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3io.sty b/Master/texmf-dist/tex/latex/l3kernel/l3io.sty deleted file mode 100644 index 47f29f44e8a..00000000000 --- a/Master/texmf-dist/tex/latex/l3kernel/l3io.sty +++ /dev/null @@ -1,533 +0,0 @@ -%% -%% This is file `l3io.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% l3io.dtx (with options: `package') -%% -%% 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: l3io.dtx Copyright (C) 1990-2012 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 -%% 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 "l3kernel 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/svnroot/experimental/trunk/ -%% -%% 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 LaTeX3 Project. -%% -%% ----------------------------------------------------------------------- -\RequirePackage{l3names} -\GetIdInfo$Id: l3io.dtx 3245 2012-01-28 02:58:37Z bruno $ - {L3 Experimental input-output operations} -\ProvidesExplPackage - {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} -\package_check_loaded_expl: -\cs_new_eq:NN \if_eof:w \tex_ifeof:D -\cs_new_eq:NN \c_term_ior \c_sixteen -\cs_new_eq:NN \c_log_iow \c_minus_one -\cs_new_eq:NN \c_term_iow \c_sixteen -\tl_const:Nn \c_iow_streams_tl - { - \c_zero - \c_one - \c_two - \c_three - \c_four - \c_five - \c_six - \c_seven - \c_eight - \c_nine - \c_ten - \c_eleven - \c_twelve - \c_thirteen - \c_fourteen - \c_fifteen - } -\cs_new_eq:NN \c_ior_streams_tl \c_iow_streams_tl -\prop_new:N \g_iow_streams_prop -\prop_new:N \g_ior_streams_prop -\prop_put:Nnn \g_iow_streams_prop { 0 } { LaTeX2e~reserved } -\prop_put:Nnn \g_iow_streams_prop { 1 } { LaTeX2e~reserved } -\prop_put:Nnn \g_iow_streams_prop { 2 } { LaTeX2e~reserved } -\prop_put:Nnn \g_ior_streams_prop { 0 } { LaTeX2e~reserved } -\tl_new:N \l_ior_internal_tl -\tl_new:N \l_iow_internal_tl -\int_new:N \l_iow_stream_int -\cs_new_eq:NN \l_ior_stream_int \l_iow_stream_int -\cs_set_eq:NN \iow_raw_new:N \newwrite -\cs_set_eq:NN \ior_raw_new:N \newread -\cs_generate_variant:Nn \ior_raw_new:N { c } -\cs_generate_variant:Nn \iow_raw_new:N { c } -\cs_new_protected:Npn \ior_new:N #1 { \cs_new_eq:NN #1 \c_term_ior } -\cs_generate_variant:Nn \ior_new:N { c } -\cs_new_protected:Npn \iow_new:N #1 { \cs_new_eq:NN #1 \c_term_iow } -\cs_generate_variant:Nn \iow_new:N { c } -\cs_new_protected:Npn \ior_open:Nn #1#2 - { - \group_begin: - \tl_to_str_active_safe:Nx \l_ior_internal_tl {#2} - \tl_if_in:NnT \l_ior_internal_tl { ~ } - { - \msg_kernel_error:nnx { io } { space-in-file-name } - { \l_ior_internal_tl } - } - \exp_args:NNNo \group_end: - \ior_open_unsafe:Nn #1 \l_ior_internal_tl - } -\cs_generate_variant:Nn \ior_open:Nn { c } -\cs_new_protected:Npn \iow_open:Nn #1#2 - { - \group_begin: - \tl_to_str_active_safe:Nx \l_iow_internal_tl {#2} - \tl_if_in:NnT \l_iow_internal_tl { ~ } - { - \msg_kernel_error:nnx { io } { space-in-file-name } - { \l_iow_internal_tl } - } - \exp_args:NNNo \group_end: - \iow_open_unsafe:Nn #1 \l_iow_internal_tl - } -\cs_generate_variant:Nn \iow_open:Nn { c } -\cs_new_protected:Npn \ior_open_unsafe:Nn #1#2 - { - \ior_close:N #1 - \int_set:Nn \l_ior_stream_int \c_sixteen - \tl_map_function:NN \c_ior_streams_tl \ior_alloc_read:n - \int_compare:nNnTF \l_ior_stream_int = \c_sixteen - { \msg_kernel_fatal:nn { ior } { streams-exhausted } } - { - \ior_stream_alloc:N #1 - \prop_gput:NVn \g_ior_streams_prop \l_ior_stream_int {#2} - \tex_openin:D #1#2 \scan_stop: - } - } -\cs_new_protected:Npn \iow_open_unsafe:Nn #1#2 - { - \iow_close:N #1 - \int_set:Nn \l_iow_stream_int \c_sixteen - \tl_map_function:NN \c_iow_streams_tl \iow_alloc_write:n - \int_compare:nNnTF \l_iow_stream_int = \c_sixteen - { \msg_kernel_fatal:nn { iow } { streams-exhausted } } - { - \iow_stream_alloc:N #1 - \prop_gput:NVn \g_iow_streams_prop \l_iow_stream_int {#2} - \tex_immediate:D \tex_openout:D #1#2 \scan_stop: - } - } -\cs_new_protected:Npn \iow_alloc_write:n #1 - { - \prop_if_in:NnF \g_iow_streams_prop {#1} - { - \int_set:Nn \l_iow_stream_int {#1} - \tl_map_break: - } - } -\cs_new_protected:Npn \ior_alloc_read:n #1 - { - \prop_if_in:NnF \g_iow_streams_prop {#1} - { - \int_set:Nn \l_ior_stream_int {#1} - \tl_map_break: - } - } -\iow_new:N \g_iow_internal_iow -\ior_new:N \g_ior_internal_ior -\cs_new_protected:Npn \iow_stream_alloc:N #1 - { - \cs_if_exist:cTF { g_iow_ \int_use:N \l_iow_stream_int _iow } - { \cs_gset_eq:Nc #1 { g_iow_ \int_use:N \l_iow_stream_int _iow } } - { - \iow_stream_alloc_aux: - \int_compare:nNnT \l_iow_stream_int = \c_sixteen - { - \iow_raw_new:N \g_iow_internal_iow - \int_set:Nn \l_iow_stream_int { \g_iow_internal_iow } - \cs_gset_eq:cN - { g_iow_ \int_use:N \l_iow_stream_int _iow } \g_iow_internal_iow - } - \cs_gset_eq:Nc #1 { g_iow_ \int_use:N \l_iow_stream_int _iow } - } - } -\cs_new_protected_nopar:Npn \iow_stream_alloc_aux: - { - \int_incr:N \l_iow_stream_int - \int_compare:nNnT \l_iow_stream_int < \c_sixteen - { - \cs_if_exist:cTF { g_iow_ \int_use:N \l_iow_stream_int _iow } - { - \prop_if_in:NVT \g_iow_streams_prop \l_iow_stream_int - { \iow_stream_alloc_aux: } - } - { \iow_stream_alloc_aux: } - } - } -\cs_new_protected:Npn \ior_stream_alloc:N #1 - { - \cs_if_exist:cTF { g_ior_ \int_use:N \l_ior_stream_int _ior } - { \cs_gset_eq:Nc #1 { g_ior_ \int_use:N \l_ior_stream_int _ior } } - { - \ior_stream_alloc_aux: - \int_compare:nNnT \l_ior_stream_int = \c_sixteen - { - \ior_raw_new:N \g_ior_internal_ior - \int_set:Nn \l_ior_stream_int { \g_ior_internal_ior } - \cs_gset_eq:cN - { g_ior_ \int_use:N \l_iow_stream_int _ior } \g_ior_internal_ior - } - \cs_gset_eq:Nc #1 { g_ior_ \int_use:N \l_ior_stream_int _ior } - } - } -\cs_new_protected_nopar:Npn \ior_stream_alloc_aux: - { - \int_incr:N \l_ior_stream_int - \int_compare:nNnT \l_ior_stream_int < \c_sixteen - { - \cs_if_exist:cTF { g_ior_ \int_use:N \l_ior_stream_int _ior } - { - \prop_if_in:NVT \g_ior_streams_prop \l_ior_stream_int - { \ior_stream_alloc_aux: } - } - { \ior_stream_alloc_aux: } - } - } -\cs_new_protected:Npn \ior_close:N #1 - { - \cs_if_exist:NT #1 - { - \int_compare:nNnF #1 = \c_minus_one - { - \int_compare:nNnF #1 = \c_sixteen - { \tex_closein:D #1 } - \prop_gdel:NV \g_ior_streams_prop #1 - \cs_gset_eq:NN #1 \c_term_ior - } - } - } -\cs_new_protected:Npn \iow_close:N #1 - { - \cs_if_exist:NT #1 - { - \int_compare:nNnF #1 = \c_minus_one - { - \int_compare:nNnF #1 = \c_sixteen - { \tex_closein:D #1 } - \prop_gdel:NV \g_iow_streams_prop #1 - \cs_gset_eq:NN #1 \c_term_iow - } - } - } -\cs_generate_variant:Nn \ior_close:N { c } -\cs_generate_variant:Nn \iow_close:N { c } -\cs_new_protected_nopar:Npn \ior_list_streams: - { \ior_list_streams_aux:Nn \g_ior_streams_prop { ior } } -\cs_new_protected_nopar:Npn \iow_list_streams: - { \ior_list_streams_aux:Nn \g_iow_streams_prop { iow } } -\cs_new_protected:Npn \ior_list_streams_aux:Nn #1#2 - { - \msg_aux_use:nn { LaTeX / #2 } - { \prop_if_empty:NTF #1 { show-no-stream } { show-open-streams } } - \msg_aux_show:x - { \prop_map_function:NN #1 \msg_aux_show_unbraced:nn } - } -\msg_kernel_new:nnnn { iow } { streams-exhausted } - { Output~streams~exhausted } - { - TeX~can~only~open~up~to~16~output~streams~at~one~time.\\ - All~16 are currently~in~use,~and~something~wanted~to~open - another~one. - } -\msg_kernel_new:nnnn { ior } { streams-exhausted } - { Input~streams~exhausted } - { - TeX~can~only~open~up~to~16~input~streams~at~one~time.\\ - All~16 are currently~in~use,~and~something~wanted~to~open - another~one. - } -\cs_new_eq:NN \iow_shipout_x:Nn \tex_write:D -\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx } -\cs_new_protected:Npn \iow_shipout:Nn #1#2 - { \iow_shipout_x:Nn #1 { \exp_not:n {#2} } } -\cs_generate_variant:Nn \iow_shipout:Nn { Nx } -\cs_new_protected_nopar:Npn \iow_now:Nx { \tex_immediate:D \iow_shipout_x:Nn } -\cs_new_protected:Npn \iow_now:Nn #1#2 - { \iow_now:Nx #1 { \exp_not:n {#2} } } -\cs_set_protected_nopar:Npn \iow_log:x { \iow_now:Nx \c_log_iow } -\cs_new_protected_nopar:Npn \iow_log:n { \iow_now:Nn \c_log_iow } -\cs_set_protected_nopar:Npn \iow_term:x { \iow_now:Nx \c_term_iow } -\cs_new_protected_nopar:Npn \iow_term:n { \iow_now:Nn \c_term_iow } -\cs_new_protected:Npn \iow_now_when_avail:Nn #1 - { \cs_if_free:NTF #1 { \use_none:n } { \iow_now:Nn #1 } } -\cs_new_protected:Npn \iow_now_when_avail:Nx #1 - { \cs_if_free:NTF #1 { \use_none:n } { \iow_now:Nx #1 } } -\cs_new_nopar:Npn \iow_newline: { ^^J } -\cs_new_eq:NN \iow_char:N \cs_to_str:N -\int_new:N \l_iow_line_length_int -\int_set:Nn \l_iow_line_length_int { 78 } -\int_new:N \l_iow_target_length_int -\int_new:N \l_iow_current_line_int -\int_new:N \l_iow_current_word_int -\int_new:N \l_iow_current_indentation_int -\tl_new:N \l_iow_current_line_tl -\tl_new:N \l_iow_current_word_tl -\tl_new:N \l_iow_current_indentation_tl -\tl_new:N \l_iow_wrap_tl -\tl_new:N \l_iow_wrapped_tl -\bool_new:N \l_iow_line_start_bool -\group_begin: - \char_set_catcode_other:N \* - \char_set_lccode:nn {`\*} {`\ } - \tl_to_lowercase:n { \tl_const:Nn \c_catcode_other_space_tl { * } } -\group_end: -\group_begin: - \int_set_eq:NN \tex_escapechar:D \c_minus_one - \tl_const:Nx \c_iow_wrap_marker_tl - { \tl_to_str:n { \^^I \^^O \^^W \^^_ \^^W \^^R \^^A \^^P } } - \cs_set:Npn \iow_wrap_new_marker:n #1 - { - \tl_const:cx { c_iow_wrap_ #1 _marker_tl } - { - \c_catcode_other_space_tl - \c_iow_wrap_marker_tl - \c_catcode_other_space_tl - #1 - \c_catcode_other_space_tl - } - } - \iow_wrap_new_marker:n { end } - \iow_wrap_new_marker:n { newline } - \iow_wrap_new_marker:n { indent } - \iow_wrap_new_marker:n { unindent } -\group_end: -\cs_new_protected:Npn \iow_indent:n #1 { } -\cs_new:Npx \iow_indent_expandable:n #1 - { - \c_iow_wrap_indent_marker_tl - #1 - \c_iow_wrap_unindent_marker_tl - } -\cs_new_protected:Npn \iow_wrap:xnnnN #1#2#3#4#5 - { - \group_begin: - \int_set:Nn \l_iow_target_length_int { \l_iow_line_length_int - ( #3 ) } - \int_zero:N \l_iow_current_indentation_int - \tl_clear:N \l_iow_current_indentation_tl - \int_zero:N \l_iow_current_line_int - \tl_clear:N \l_iow_current_line_tl - \tl_clear:N \l_iow_wrap_tl - \bool_set_true:N \l_iow_line_start_bool - \int_set_eq:NN \tex_escapechar:D \c_minus_one - \cs_set_nopar:Npx \{ { \token_to_str:N \{ } - \cs_set_nopar:Npx \# { \token_to_str:N \# } - \cs_set_nopar:Npx \} { \token_to_str:N \} } - \cs_set_nopar:Npx \% { \token_to_str:N \% } - \cs_set_nopar:Npx \~ { \token_to_str:N \~ } - \int_set:Nn \tex_escapechar:D { 92 } - \cs_set_eq:NN \\ \c_iow_wrap_newline_marker_tl - \cs_set_eq:NN \ \c_catcode_other_space_tl - \cs_set_eq:NN \iow_indent:n \iow_indent_expandable:n - #4 - \protected@edef \l_iow_wrap_tl {#1} - \cs_set:Npn \\ { \iow_newline: #2 } - \use:x - { - \iow_wrap_loop:w - \tl_to_str:N \l_iow_wrap_tl - \tl_to_str:N \c_iow_wrap_end_marker_tl - \c_space_tl \c_space_tl - \exp_not:N \q_stop - } - \exp_args:NNo \group_end: - #5 \l_iow_wrapped_tl - } -\cs_new_protected:Npn \iow_wrap_loop:w #1 ~ % - { - \tl_set:Nn \l_iow_current_word_tl {#1} - \tl_if_eq:NNTF \l_iow_current_word_tl \c_iow_wrap_marker_tl - { \iow_wrap_special:w } - { \iow_wrap_word: } - } -\cs_new_protected_nopar:Npn \iow_wrap_word: - { - \int_set:Nn \l_iow_current_word_int - { \str_length_skip_spaces:N \l_iow_current_word_tl } - \int_add:Nn \l_iow_current_line_int { \l_iow_current_word_int } - \int_compare:nNnTF \l_iow_current_line_int < \l_iow_target_length_int - { \iow_wrap_word_fits: } - { \iow_wrap_word_newline: } - \iow_wrap_loop:w - } -\cs_new_protected_nopar:Npn \iow_wrap_word_fits: - { - \bool_if:NTF \l_iow_line_start_bool - { - \bool_set_false:N \l_iow_line_start_bool - \tl_put_right:Nx \l_iow_current_line_tl - { \l_iow_current_indentation_tl \l_iow_current_word_tl } - \int_add:Nn \l_iow_current_line_int - { \l_iow_current_indentation_int } - } - { - \tl_put_right:Nx \l_iow_current_line_tl - { ~ \l_iow_current_word_tl } - \int_incr:N \l_iow_current_line_int - } - } -\cs_new_protected_nopar:Npn \iow_wrap_word_newline: - { - \tl_put_right:Nx \l_iow_wrapped_tl - { \l_iow_current_line_tl \\ } - \int_set:Nn \l_iow_current_line_int - { - \l_iow_current_word_int - + \l_iow_current_indentation_int - } - \tl_set:Nx \l_iow_current_line_tl - { \l_iow_current_indentation_tl \l_iow_current_word_tl } - } -\cs_new_protected:Npn \iow_wrap_special:w #1 ~ #2 ~ #3 ~ % - { - \use:c { iow_wrap_#1: } - \str_if_eq:xxTF { #2~#3 } { ~ \c_iow_wrap_marker_tl } - { \iow_wrap_special:w } - { \iow_wrap_loop:w #2 ~ #3 ~ } - } -\cs_new_protected_nopar:Npn \iow_wrap_newline: - { - \tl_put_right:Nx \l_iow_wrapped_tl - { \l_iow_current_line_tl \\ } - \int_zero:N \l_iow_current_line_int - \tl_clear:N \l_iow_current_line_tl - \bool_set_true:N \l_iow_line_start_bool - } -\cs_new_protected_nopar:Npx \iow_wrap_indent: - { - \int_add:Nn \l_iow_current_indentation_int \c_four - \tl_put_right:Nx \exp_not:N \l_iow_current_indentation_tl - { \c_space_tl \c_space_tl \c_space_tl \c_space_tl } - } -\cs_new_protected_nopar:Npn \iow_wrap_unindent: - { - \int_sub:Nn \l_iow_current_indentation_int \c_four - \tl_set:Nx \l_iow_current_indentation_tl - { \prg_replicate:nn \l_iow_current_indentation_int { ~ } } - } -\cs_new_protected_nopar:Npn \iow_wrap_end: - { - \tl_put_right:Nx \l_iow_wrapped_tl - { \l_iow_current_line_tl } - \use_none_delimit_by_q_stop:w - } -\cs_new_nopar:Npn \str_length_skip_spaces:N - { \exp_args:No \str_length_skip_spaces:n } -\cs_new:Npn \str_length_skip_spaces:n #1 - { - \int_value:w \int_eval:w - \exp_after:wN \str_length_loop:NNNNNNNNN \tl_to_str:n {#1} - {X8}{X7}{X6}{X5}{X4}{X3}{X2}{X1}{X0} \q_stop - \int_eval_end: - } -\cs_new:Npn \str_length_loop:NNNNNNNNN #1#2#3#4#5#6#7#8#9 - { - \if_catcode:w X #9 - \exp_after:wN \use_none_delimit_by_q_stop:w - \else: - 9 + - \exp_after:wN \str_length_loop:NNNNNNNNN - \fi: - } -\prg_new_conditional:Nnn \ior_if_eof:N { p , T , F , TF } - { - \cs_if_exist:NTF #1 - { - \if_int_compare:w #1 = \c_sixteen - \prg_return_true: - \else: - \if_eof:w #1 - \prg_return_true: - \else: - \prg_return_false: - \fi: - \fi: - } - { \prg_return_true: } - } -\cs_new_protected:Npn \ior_to:NN #1#2 - { \tex_read:D #1 to #2 } -\cs_new_protected:Npn \ior_gto:NN #1#2 - { \tex_global:D \tex_read:D #1 to #2 } -\cs_new_protected:Npn \ior_str_to:NN #1#2 - { \etex_readline:D #1 to #2 } -\cs_new_protected:Npn \ior_str_gto:NN #1#2 - { \tex_global:D \etex_readline:D #1 to #2 } -\cs_new_protected_nopar:Npn \ior_map_inline:nn - { \ior_map_inline_aux:Nnn \ior_to:NN } -\cs_new_protected_nopar:Npn \ior_str_map_inline:nn - { \ior_map_inline_aux:Nnn \ior_str_to:NN } -\cs_new_protected_nopar:Npn \ior_map_inline_aux:Nnn - { - \exp_args:Ncc \ior_map_inline_aux:NNNnn - { g_ior_map_ \int_use:N \g_prg_map_int _ior } - { ior_map_ \int_use:N \g_prg_map_int :n } - } -\cs_new_protected:Npn \ior_map_inline_aux:NNNnn #1#2#3#4#5 - { - \cs_if_exist:NF #1 { \ior_new:N #1 } - \cs_set:Npn #2 ##1 {#5} - \ior_open:Nn #1 {#4} - \int_gincr:N \g_prg_map_int - \ior_if_eof:NF #1 { \ior_map_inline_loop:NNN #1#2#3 } - \prg_break_point:n - { - \int_gdecr:N \g_prg_map_int - \ior_close:N #1 - } - } -\cs_new_protected:Npn \ior_map_inline_loop:NNN #1#2#3 - { - #3 #1 \l_ior_internal_tl - \ior_if_eof:NF #1 - { - \exp_args:No #2 \l_ior_internal_tl - \ior_map_inline_loop:NNN #1#2#3 - } - } -\msg_kernel_new:nnnn { io } { space-in-file-name } - { Space~in~file~name~'#1'. } - { - Spaces~are~not~permitted~in~files~loaded~by~LaTeX: \\ - Further~errors~may~follow! - } -%% -%% -%% End of file `l3io.sty'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty b/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty index 9643cba784c..7655ba4ae08 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3luatex.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3luatex.dtx 3158 2012-01-09 00:47:42Z bruno $ +\GetIdInfo$Id: l3luatex.dtx 3355 2012-02-09 07:18:22Z joseph $ {L3 Experimental LuaTeX-specific functions} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -94,7 +94,7 @@ \tex_global:D \tex_chardef:D #1 \g_cctab_allocate_int \luatex_initcatcodetable:D #1 } - { \msg_kernel_fatal:nnx { alloc } { out-of-registers } { cctab } } + { \msg_kernel_fatal:nnx { kernel } { out-of-registers } { cctab } } } \luatex_if_engine:F { diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty index 1531c7a39b1..af40a84ac92 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3msg.dtx 3316 2012-02-06 12:24:43Z bruno $ +\GetIdInfo$Id: l3msg.dtx 3470 2012-02-26 19:10:24Z bruno $ {L3 Experimental messages} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -54,13 +54,28 @@ \tl_new:N \l_msg_internal_tl \tl_const:Nn \c_msg_text_prefix_tl { msg~text~>~ } \tl_const:Nn \c_msg_more_text_prefix_tl { msg~extra~text~>~ } -\cs_new_protected:Npn \msg_new:nnnn #1#2 +\cs_new_protected:Npn \chk_if_free_msg:nn #1#2 { - \cs_if_exist:cT { \c_msg_text_prefix_tl #1 / #2 } + \cs_if_free:cF { \c_msg_text_prefix_tl #1 / #2 } { \msg_kernel_error:nnxx { msg } { message-already-defined } {#1} {#2} } + } +\tex_ifodd:D \l@expl@log@functions@bool + \cs_gset_protected:Npn \chk_if_free_msg:nn #1#2 + { + \cs_if_free:cF { \c_msg_text_prefix_tl #1 / #2 } + { + \msg_kernel_error:nnxx { msg } { message-already-defined } + {#1} {#2} + } + \iow_log:x { Defining~message~#1/#2~ \msg_line_context: } + } +\fi: +\cs_new_protected:Npn \msg_new:nnnn #1#2 + { + \chk_if_free_msg:nn {#1} {#2} \msg_gset:nnnn {#1} {#2} } \cs_new_protected:Npn \msg_new:nnn #1#2#3 @@ -534,6 +549,13 @@ LaTeX~has~been~asked~to~use~a~command~#1,~but~this~has~not~ been~defined~yet. } +\msg_kernel_new:nnnn { kernel } { out-of-registers } + { No~room~for~a~new~#1. } + { + TeX~only~supports~\int_use:N \c_max_register_int \ + of~each~type.~All~the~#1~registers~have~been~used.~ + This~run~will~be~aborted~now. + } \msg_kernel_new:nnnn { kernel } { variable-not-defined } { Variable~#1~undefined. } { diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty index 8c3e0e70b3f..4fc7acdcdbb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3prg.dtx 3338 2012-02-08 08:21:42Z joseph $ +\GetIdInfo$Id: l3prg.dtx 3464 2012-02-26 15:30:29Z bruno $ {L3 Experimental control structures} %% \ProvidesExplPackage @@ -94,6 +94,22 @@ \cs_generate_variant:Nn \bool_if:NT { c } \cs_generate_variant:Nn \bool_if:NF { c } \cs_generate_variant:Nn \bool_if:NTF { c } +\cs_new_protected:Npn \bool_show:N #1 + { + \cs_if_exist:NTF #1 + { \bool_show:n {#1} } + { + \msg_kernel_error:nnx { kernel } { variable-not-defined } + { \token_to_str:N #1 } + } + } +\cs_new_protected:Npn \bool_show:n #1 + { + \bool_if:nTF {#1} + { \msg_aux_show:x { > true } } + { \msg_aux_show:x { > false } } + } +\cs_generate_variant:Nn \bool_show:N { c } \bool_new:N \l_tmpa_bool \bool_new:N \g_tmpa_bool \prg_new_conditional:Npnn \bool_if:n #1 { T , F , TF } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty index c58cff46737..169d5ffe5d6 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3prop.dtx 3158 2012-01-09 00:47:42Z bruno $ +\GetIdInfo$Id: l3prop.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental property lists} %% \ProvidesExplPackage diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty index 344873f2405..e22e215617a 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3quark.dtx 3148 2012-01-08 15:42:18Z bruno $ +\GetIdInfo$Id: l3quark.dtx 3384 2012-02-12 13:13:11Z will $ {L3 Experimental quarks} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty index 8fdb538a031..5ba6dec68d7 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty @@ -47,7 +47,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3skip.dtx 3313 2012-02-06 11:15:21Z bruno $ +\GetIdInfo$Id: l3skip.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental dimensions and skips} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty index 95b2d84cd8a..59e810e8aa5 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3tl.dtx 3316 2012-02-06 12:24:43Z bruno $ +\GetIdInfo$Id: l3tl.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental token lists} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -486,7 +486,9 @@ \cs_new:Npn \tl_tail:n #1 { \etex_unexpanded:D \tl_tail_aux:w #1 \q_mark { } \q_mark \q_stop } \cs_new:Npn \tl_tail_aux:w #1 #2 \q_mark #3 \q_stop { {#2} } +\cs_new_nopar:Npn \tl_head:N { \exp_args:No \tl_head:n } \cs_generate_variant:Nn \tl_head:n { V , v , f } +\cs_new_nopar:Npn \tl_tail:N { \exp_args:No \tl_tail:n } \cs_generate_variant:Nn \tl_tail:n { V , v , f } \cs_new:Npn \str_head:n #1 { @@ -602,18 +604,6 @@ { \exp_after:wN \c_zero \exp_after:wN \prg_return_false: } \exp_after:wN \use_none:n \exp_after:wN { \if_false: } \fi: } -\cs_new_protected:Npn \tl_to_str_active_safe:Nx #1#2 - { - \group_begin: - \seq_map_inline:Nn \l_char_active_seq - { \cs_set_nopar:Npx ##1 { \token_to_str:N ##1 } } - \use:x - { - \group_end: - \tl_set:Nn \exp_not:N #1 {#2} - } - \tl_set:Nx #1 { \tl_to_str:N #1 } - } \cs_new_protected:Npn \tl_show:N #1 { \cs_show:N #1 } \cs_generate_variant:Nn \tl_show:N { c } \cs_new_eq:NN \tl_show:n \etex_showtokens:D diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty index 3bab1bd32dd..04531db0274 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty @@ -46,7 +46,7 @@ %% %% ----------------------------------------------------------------------- \RequirePackage{l3names} -\GetIdInfo$Id: l3token.dtx 3316 2012-02-06 12:24:43Z bruno $ +\GetIdInfo$Id: l3token.dtx 3460 2012-02-26 12:16:41Z will $ {L3 Experimental token manipulation} \ProvidesExplPackage {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -181,7 +181,7 @@ \seq_set_from_clist:Nn \l_char_active_seq } } - { { " , $ , & , ^ , _ , ~ } } + { { " , $ , & , ^ , _ , ~ } } %$ \seq_new:N \l_char_special_seq \seq_set_from_clist:Nn \l_char_special_seq { \ , \" , \# , \$ , \% , \& , \\ , \^ , \_ , \{ , \} , \~ } @@ -367,6 +367,24 @@ % } } \cs_new:Npn \token_if_int_register_aux:w #1 COUXY #2 \q_stop { #1 ~ } + \prg_new_conditional:Npnn \token_if_muskip_register:N #1 { p , T , F , TF } + { + \if_meaning:w \tex_muskip:D #1 + \prg_return_false: + \else: + \if_meaning:w \tex_muskipdef:D #1 + \prg_return_false: + \else: + \str_if_eq_return:xx + { + \exp_after:wN \token_if_muskip_register_aux:w + \token_to_meaning:N #1 MUSKIP \q_stop + } + { \token_to_str:N \ } + \fi: + \fi: + } + \cs_new:Npn \token_if_muskip_register_aux:w #1 MUSKIP #2 \q_stop { #1 ~ } \prg_new_conditional:Npnn \token_if_skip_register:N #1 { p , T , F , TF } { \if_meaning:w \tex_skip:D #1 -- cgit v1.2.3