From a495fe970496337011c0698a03476ce888a26105 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 24 Sep 2018 20:23:18 +0000 Subject: l3 (24sep18) git-svn-id: svn://tug.org/texlive/trunk@48749 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/l3kernel/expl3-code.tex | 192 ++++++++++++------- .../tex/latex/l3kernel/expl3-generic.tex | 2 +- Master/texmf-dist/tex/latex/l3kernel/expl3.sty | 2 +- Master/texmf-dist/tex/latex/l3kernel/l3doc.cls | 37 ++-- .../texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def | 57 +++++- Master/texmf-dist/tex/latex/l3kernel/l3dvips.def | 71 ++++++- Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def | 10 +- Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def | 75 +++++++- .../texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def | 57 +++++- .../tex/latex/l3packages/l3keys2e/l3keys2e.sty | 2 +- Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty | 2 +- .../tex/latex/l3packages/xfrac/xfrac.sty | 2 +- .../tex/latex/l3packages/xparse/xparse.sty | 206 +++++++++++++-------- .../tex/latex/l3packages/xtemplate/xtemplate.sty | 2 +- 14 files changed, 546 insertions(+), 171 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index ee3ce0a28f8..cf7dd09bf49 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -63,7 +63,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-08-23}% +\def\ExplFileDate{2018-09-24}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -961,6 +961,10 @@ \__kernel_primitive:NN \automatichyphenpenalty \tex_automatichyphenpenalty:D \__kernel_primitive:NN \begincsname \tex_begincsname:D + \__kernel_primitive:NN \bodydir \tex_bodydir:D + \__kernel_primitive:NN \bodydirection \tex_bodydirection:D + \__kernel_primitive:NN \boxdir \tex_boxdir:D + \__kernel_primitive:NN \boxdirection \tex_boxdirection:D \__kernel_primitive:NN \breakafterdirmode \tex_breakafterdirmode:D \__kernel_primitive:NN \catcodetable \tex_catcodetable:D \__kernel_primitive:NN \clearmarks \tex_clearmarks:D @@ -969,12 +973,14 @@ \tex_crampedscriptscriptstyle:D \__kernel_primitive:NN \crampedscriptstyle \tex_crampedscriptstyle:D \__kernel_primitive:NN \crampedtextstyle \tex_crampedtextstyle:D + \__kernel_primitive:NN \csstring \tex_csstring:D \__kernel_primitive:NN \directlua \tex_directlua:D \__kernel_primitive:NN \dviextension \tex_dviextension:D \__kernel_primitive:NN \dvifeedback \tex_dvifeedback:D \__kernel_primitive:NN \dvivariable \tex_dvivariable:D \__kernel_primitive:NN \etoksapp \tex_etoksapp:D \__kernel_primitive:NN \etokspre \tex_etokspre:D + \__kernel_primitive:NN \exceptionpenalty \tex_exceptionpenalty:D \__kernel_primitive:NN \explicithyphenpenalty \tex_explicithyphenpenalty:D \__kernel_primitive:NN \expanded \tex_expanded:D \__kernel_primitive:NN \explicitdiscretionary \tex_explicitdiscretionary:D @@ -987,16 +993,34 @@ \__kernel_primitive:NN \hyphenationmin \tex_hyphenationmin:D \__kernel_primitive:NN \hyphenpenaltymode \tex_hyphenpenaltymode:D \__kernel_primitive:NN \gleaders \tex_gleaders:D + \__kernel_primitive:NN \ifcondition \tex_ifcondition:D + \__kernel_primitive:NN \immediateassigned \tex_immediateassigned:D + \__kernel_primitive:NN \immediateassignment \tex_immediateassignment:D \__kernel_primitive:NN \initcatcodetable \tex_initcatcodetable:D \__kernel_primitive:NN \lastnamedcs \tex_lastnamedcs:D \__kernel_primitive:NN \latelua \tex_latelua:D + \__kernel_primitive:NN \lateluafunction \tex_lateluafunction:D + \__kernel_primitive:NN \leftghost \tex_leftghost:D \__kernel_primitive:NN \letcharcode \tex_letcharcode:D + \__kernel_primitive:NN \linedir \tex_linedir:D + \__kernel_primitive:NN \linedirection \tex_linedirection:D + \__kernel_primitive:NN \localbrokenpenalty \tex_localbrokenpenalty:D + \__kernel_primitive:NN \localinterlinepenalty \tex_localinterlinepenalty:D + \__kernel_primitive:NN \luabytecode \tex_luabytecode:D + \__kernel_primitive:NN \luabytecodecall \tex_luabytecodecall:D + \__kernel_primitive:NN \luacopyinputnodes \tex_luacopyinputnodes:D + \__kernel_primitive:NN \luadef \tex_luadef:D + \__kernel_primitive:NN \localleftbox \tex_localleftbox:D + \__kernel_primitive:NN \localrightbox \tex_localrightbox:D \__kernel_primitive:NN \luaescapestring \tex_luaescapestring:D \__kernel_primitive:NN \luafunction \tex_luafunction:D + \__kernel_primitive:NN \luafunctioncall \tex_luafunctioncall:D \__kernel_primitive:NN \luatexbanner \tex_luatexbanner:D \__kernel_primitive:NN \luatexrevision \tex_luatexrevision:D \__kernel_primitive:NN \luatexversion \tex_luatexversion:D \__kernel_primitive:NN \mathdelimitersmode \tex_mathdelimitersmode:D + \__kernel_primitive:NN \mathdir \tex_mathdir:D + \__kernel_primitive:NN \mathdirection \tex_mathdirection:D \__kernel_primitive:NN \mathdisplayskipmode \tex_mathdisplayskipmode:D \__kernel_primitive:NN \matheqnogapstep \tex_matheqnogapstep:D \__kernel_primitive:NN \mathnolimitsmode \tex_mathnolimitsmode:D @@ -1005,6 +1029,7 @@ \__kernel_primitive:NN \mathrulesfam \tex_mathrulesfam:D \__kernel_primitive:NN \mathscriptsmode \tex_mathscriptsmode:D \__kernel_primitive:NN \mathscriptboxmode \tex_mathscriptboxmode:D + \__kernel_primitive:NN \mathscriptcharmode \tex_mathscriptcharmode:D \__kernel_primitive:NN \mathstyle \tex_mathstyle:D \__kernel_primitive:NN \mathsurroundmode \tex_mathsurroundmode:D \__kernel_primitive:NN \mathsurroundskip \tex_mathsurroundskip:D @@ -1015,9 +1040,13 @@ \__kernel_primitive:NN \novrule \tex_novrule:D \__kernel_primitive:NN \outputbox \tex_outputbox:D \__kernel_primitive:NN \pagebottomoffset \tex_pagebottomoffset:D + \__kernel_primitive:NN \pagedir \tex_pagedir:D + \__kernel_primitive:NN \pagedirection \tex_pagedirection:D \__kernel_primitive:NN \pageleftoffset \tex_pageleftoffset:D \__kernel_primitive:NN \pagerightoffset \tex_pagerightoffset:D \__kernel_primitive:NN \pagetopoffset \tex_pagetopoffset:D + \__kernel_primitive:NN \pardir \tex_pardir:D + \__kernel_primitive:NN \pardirection \tex_pardirection:D \__kernel_primitive:NN \pdfextension \tex_pdfextension:D \__kernel_primitive:NN \pdffeedback \tex_pdffeedback:D \__kernel_primitive:NN \pdfvariable \tex_pdfvariable:D @@ -1028,6 +1057,7 @@ \__kernel_primitive:NN \preexhyphenchar \tex_preexhyphenchar:D \__kernel_primitive:NN \prehyphenchar \tex_prehyphenchar:D \__kernel_primitive:NN \prerelpenalty \tex_prerelpenalty:D + \__kernel_primitive:NN \rightghost \tex_rightghost:D \__kernel_primitive:NN \savecatcodetable \tex_savecatcodetable:D \__kernel_primitive:NN \scantextokens \tex_scantextokens:D \__kernel_primitive:NN \setfontid \tex_setfontid:D @@ -1038,23 +1068,12 @@ \__kernel_primitive:NN \suppressoutererror \tex_suppressoutererror:D \__kernel_primitive:NN \suppressprimitiveerror \tex_suppressprimitiveerror:D + \__kernel_primitive:NN \textdir \tex_textdir:D + \__kernel_primitive:NN \textdirection \tex_textdirection:D \__kernel_primitive:NN \toksapp \tex_toksapp:D \__kernel_primitive:NN \tokspre \tex_tokspre:D \__kernel_primitive:NN \tpack \tex_tpack:D \__kernel_primitive:NN \vpack \tex_vpack:D - \__kernel_primitive:NN \bodydir \tex_bodydir:D - \__kernel_primitive:NN \boxdir \tex_boxdir:D - \__kernel_primitive:NN \leftghost \tex_leftghost:D - \__kernel_primitive:NN \linedir \tex_linedir:D - \__kernel_primitive:NN \localbrokenpenalty \tex_localbrokenpenalty:D - \__kernel_primitive:NN \localinterlinepenalty \tex_localinterlinepenalty:D - \__kernel_primitive:NN \localleftbox \tex_localleftbox:D - \__kernel_primitive:NN \localrightbox \tex_localrightbox:D - \__kernel_primitive:NN \mathdir \tex_mathdir:D - \__kernel_primitive:NN \pagedir \tex_pagedir:D - \__kernel_primitive:NN \pardir \tex_pardir:D - \__kernel_primitive:NN \rightghost \tex_rightghost:D - \__kernel_primitive:NN \textdir \tex_textdir:D \__kernel_primitive:NN \adjustspacing \tex_adjustspacing:D \__kernel_primitive:NN \copyfont \tex_copyfont:D \__kernel_primitive:NN \draftmode \tex_draftmode:D @@ -10130,6 +10149,7 @@ \cs_generate_variant:Nn \__kernel_msg_expandable_error:nnnn { nnff } \cs_generate_variant:Nn \__kernel_msg_expandable_error:nnn { nnf } %% File: l3file.dtx Copyright (C) 1990-2018 The LaTeX3 Project +\tl_new:N \l__ior_internal_tl \int_const:Nn \c_term_ior { 16 } \seq_new:N \g__ior_streams_seq \tl_new:N \l__ior_stream_tl @@ -10268,7 +10288,6 @@ \__ior_map_inline_loop:NNN #1#2#3 } } -\tl_new:N \l__ior_internal_tl \int_const:Nn \c_log_iow { -1 } \int_const:Nn \c_term_iow { @@ -10665,6 +10684,7 @@ { \tl_if_empty:NF #1 { \exp_after:wN \__iow_wrap_trim:w #1 \q_stop } } \exp_last_unbraced:NNNNo \cs_new:Npn \__iow_wrap_trim:w #1 \c_catcode_other_space_tl \q_stop {#1} +\tl_new:N \l__file_internal_tl \ior_new:N \g__file_internal_ior \str_new:N \g_file_curr_dir_str \str_new:N \g_file_curr_ext_str @@ -10694,7 +10714,6 @@ { \exp_after:wN \__file_tmp:w \@currnamestack } \group_end: \seq_new:N \g__file_record_seq -\tl_new:N \l__file_tmp_tl \str_new:N \l__file_base_name_str \str_new:N \l__file_full_name_str \str_new:N \l__file_dir_str @@ -10707,14 +10726,14 @@ \group_begin: \seq_map_inline:Nn \l_char_active_seq { - \tl_set:Nx \l__file_tmp_tl { \iow_char:N ##1 } - \char_set_active_eq:NN ##1 \l__file_tmp_tl + \tl_set:Nx \l__file_internal_tl { \iow_char:N ##1 } + \char_set_active_eq:NN ##1 \l__file_internal_tl } - \tl_set:Nx \l__file_tmp_tl {#1} - \tl_set:Nx \l__file_tmp_tl - { \tl_to_str:N \l__file_tmp_tl } + \tl_set:Nx \l__file_internal_tl {#1} + \tl_set:Nx \l__file_internal_tl + { \tl_to_str:N \l__file_internal_tl } \exp_args:NNNV \group_end: - \str_set:Nn #2 \l__file_tmp_tl + \str_set:Nn #2 \l__file_internal_tl } \cs_new_protected:Npn \__file_name_quote:nN #1#2 { @@ -10815,8 +10834,8 @@ \cs_new_eq:NN \__kernel_file_input_push:n \__file_input_push:n \cs_new_protected:Npn \__file_input_pop: { - \seq_gpop:NN \g__file_stack_seq \l__file_tmp_tl - \exp_after:wN \__file_input_pop:nnn \l__file_tmp_tl + \seq_gpop:NN \g__file_stack_seq \l__file_internal_tl + \exp_after:wN \__file_input_pop:nnn \l__file_internal_tl } \cs_new_eq:NN \__kernel_file_input_pop: \__file_input_pop: \cs_new_protected:Npn \__file_input_pop:nnn #1#2#3 @@ -12371,42 +12390,45 @@ \cs:w \c__keys_code_root_tl \l_keys_path_tl \exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl } } - { \__keys_execute_unknown: } - } -\cs_new_protected:Npn \__keys_execute_unknown: - { - \bool_if:NTF \l__keys_only_known_bool - { \__keys_store_unused: } { - \cs_if_exist:cTF - { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl } + \bool_if:NTF \l__keys_only_known_bool + { \__keys_store_unused: } { - \clist_map_inline:cn + \cs_if_exist:cTF { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl } - { - \cs_if_exist:cT - { \c__keys_code_root_tl ##1 / \l_keys_key_tl } - { - \cs:w \c__keys_code_root_tl ##1 / \l_keys_key_tl - \exp_after:wN \cs_end: \exp_after:wN - { \l_keys_value_tl } - \clist_map_break: - } - } + { \__keys_execute_inherit: } + { \__keys_execute_unknown: } } + } + } +\cs_new_protected:Npn \__keys_execute_inherit: + { + \clist_map_inline:cn + { \c__keys_inherit_root_tl \__keys_parent:o \l_keys_path_tl } + { + \cs_if_exist:cT + { \c__keys_code_root_tl ##1 / \l_keys_key_tl } { - \cs_if_exist:cTF - { \c__keys_code_root_tl \l__keys_module_tl / unknown } - { - \cs:w \c__keys_code_root_tl \l__keys_module_tl / unknown - \exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl } - } - { - \__kernel_msg_error:nnxx { kernel } { key-unknown } - { \l_keys_path_tl } { \l__keys_module_tl } - } + \cs:w \c__keys_code_root_tl ##1 / \l_keys_key_tl + \exp_after:wN \cs_end: \exp_after:wN + { \l_keys_value_tl } + \clist_map_break:n { \use_none:n } } - } + } + \__keys_execute_unknown: + } +\cs_new_protected:Npn \__keys_execute_unknown: + { + \cs_if_exist:cTF + { \c__keys_code_root_tl \l__keys_module_tl / unknown } + { + \cs:w \c__keys_code_root_tl \l__keys_module_tl / unknown + \exp_after:wN \cs_end: \exp_after:wN { \l_keys_value_tl } + } + { + \__kernel_msg_error:nnxx { kernel } { key-unknown } + { \l_keys_path_tl } { \l__keys_module_tl } + } } \cs_new:Npn \__keys_execute:nn #1#2 { @@ -24737,18 +24759,11 @@ \group_end: } %% File: l3candidates.dtx Copyright (C) 2012-2018 The LaTeX3 Project -\cs_new_protected:Npx \mode_leave_vertical: +\cs_new_protected:Npn \mode_leave_vertical: { - \cs_if_exist:NTF \tex_quitvmode:D - { \tex_quitvmode:D } - { - \exp_not:n - { - \if_mode_vertical: - \exp_after:wN \tex_indent:D - \fi: - } - } + \if_mode_vertical: + \exp_after:wN \tex_indent:D + \fi: } \cs_new_protected:Npn \box_clip:N #1 { \hbox_set:Nn #1 { \driver_box_use_clip:N #1 } } @@ -27014,6 +27029,53 @@ { \__peek_token_generic:NNT \__peek_execute_branches_N_type: \scan_stop: } \cs_new_protected:Npn \peek_N_type:F { \__peek_token_generic:NNF \__peek_execute_branches_N_type: \scan_stop: } +\tl_new:N \l__peek_collect_tl +\cs_new_protected:Npn \peek_catcode_collect_inline:Nn + { \__peek_collect:NNn \__peek_execute_branches_catcode: } +\cs_new_protected:Npn \peek_charcode_collect_inline:Nn + { \__peek_collect:NNn \__peek_execute_branches_charcode: } +\cs_new_protected:Npn \peek_meaning_collect_inline:Nn + { \__peek_collect:NNn \__peek_execute_branches_meaning: } +\cs_new_protected:Npn \__peek_collect:NNn #1#2#3 + { + \group_align_safe_begin: + \cs_set_eq:NN \l__peek_search_token #2 + \tl_set:Nn \l__peek_search_tl {#2} + \tl_clear:N \l__peek_collect_tl + \cs_set:Npn \__peek_false:w + { \exp_args:No \__peek_false_aux:n \l__peek_collect_tl } + \cs_set:Npn \__peek_false_aux:n ##1 + { + \group_align_safe_end: + #3 + } + \cs_set_eq:NN \__peek_true:w \__peek_collect_true:w + \cs_set:Npn \__peek_true_aux:w { \peek_after:Nw #1 } + \__peek_true_aux:w + } +\cs_new_protected:Npn \__peek_collect_true:w + { + \if_case:w + \if_catcode:w \exp_not:N \l_peek_token { 1 \exp_stop_f: \fi: + \if_catcode:w \exp_not:N \l_peek_token } 2 \exp_stop_f: \fi: + \if_meaning:w \l_peek_token \c_space_token 3 \exp_stop_f: \fi: + 0 \exp_stop_f: + \exp_after:wN \__peek_collect:N + \or: \__peek_collect_remove:nw { \c_group_begin_token } + \or: \__peek_collect_remove:nw { \c_group_end_token } + \or: \__peek_collect_remove:nw { ~ } + \fi: + } +\cs_new_protected:Npn \__peek_collect:N #1 + { + \tl_put_right:Nn \l__peek_collect_tl {#1} + \__peek_true_aux:w + } +\cs_new_protected:Npn \__peek_collect_remove:nw #1 + { + \tl_put_right:Nn \l__peek_collect_tl {#1} + \exp_after:wN \__peek_true_remove:w + } %% File: l3deprecation.dtx (C) Copyright 2017-2018 The LaTeX3 Project \cs_new_protected:Npn \__kernel_deprecation_error:Nnn #1#2#3 { diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 373507a4c79..f2b84f74d19 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-08-23}% +\def\ExplFileDate{2018-09-24}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 6c3b94acfda..5252ad1cbe0 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2018 The LaTeX3 Project -\def\ExplFileDate{2018-08-23}% +\def\ExplFileDate{2018-09-24}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 3247d6f568c..f796c9937a9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -57,6 +57,8 @@ \bool_new:N \g__codedoc_checkfunc_bool \bool_new:N \g__codedoc_checktest_bool \bool_new:N \g__codedoc_kernel_bool +\bool_new:N \g__codedoc_cs_break_bool +\bool_gset_true:N \g__codedoc_cs_break_bool \tl_new:N \l__codedoc_tmpa_tl \tl_new:N \l__codedoc_tmpb_tl \int_new:N \l__codedoc_tmpa_int @@ -416,6 +418,10 @@ { \bool_gset_false:N \g__codedoc_lmodern_bool } \DeclareOption { lm-default } { \bool_gset_true:N \g__codedoc_lmodern_bool } +\DeclareOption { cs-break-off } + { \bool_gset_false:N \g__codedoc_cs_break_bool } +\DeclareOption { cs-break-nohyphen } + { \PassOptionsToPackage{nohyphen}{underscore} } \DeclareOption* { \PassOptionsToClass { \CurrentOption } { article } } \ExecuteOptions { full, kernel, nocheck, nochecktest, lm-default } \PassOptionsToClass { a4paper } { article } @@ -446,9 +452,9 @@ pifont, textcomp, trace, - underscore, csquotes, fancyvrb, + underscore, verbatim } \raggedbottom @@ -686,18 +692,23 @@ \tl_replace_all:Nno \l__codedoc_cmd_tl { _ } \l__codedoc_tmpb_tl } \mode_if_math:T { \mbox } - { - \verbatim@font - \__codedoc_if_almost_str:VT \l__codedoc_cmd_tl - { - \tl_set:Nx \l__codedoc_cmd_tl { \tl_to_str:N \l__codedoc_cmd_tl } - \tl_replace_all:Non \l__codedoc_cmd_tl - { \token_to_str:N _ } { \_ } - } - \tl_replace_all:Nnn \l__codedoc_cmd_tl { ~ } { \@xobeysp } - \l__codedoc_cmd_tl - \@ - } + { + \verbatim@font + \__codedoc_if_almost_str:VT \l__codedoc_cmd_tl + { + \tl_set:Nx \l__codedoc_cmd_tl { \tl_to_str:N \l__codedoc_cmd_tl } + \bool_if:NT \g__codedoc_cs_break_bool + { + \regex_replace_all:nnN + {([^\\])_([^\_])} + {\1\c{BreakableUnderscore}\2} + \l__codedoc_cmd_tl + } + } + \tl_replace_all:Nnn \l__codedoc_cmd_tl { ~ } { \@xobeysp } + \l__codedoc_cmd_tl + \@ + } \bool_if:NF \l__codedoc_cmd_noindex_bool { \quark_if_no_value:NF \l__codedoc_cmd_index_tl diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index e4dc5a16b41..cf97021907a 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvidpfmx.def}{2018-08-23}{} + {l3dvidpfmx.def}{2018-09-24}{} {L3 Experimental driver: dvipdfmx} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 @@ -68,7 +68,7 @@ { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} } } \cs_new_protected:Npn \driver_color_spot:nn #1#2 - { \__driver_color_select:n { \c_space_tl #1 } } + { \__driver_color_select:n { #1 } } \cs_new_protected:Npn \__driver_color_select:n #1 { \__driver_literal:n { color~push~ #1 } @@ -208,6 +208,59 @@ } } } +\int_new:N \g__driver_pdf_object_int +\prop_new:N \g__driver_pdf_object_prop +\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 + { + \int_gincr:N \g__driver_pdf_object_int + \int_const:cn + { g__driver_pdf_object_ \tl_to_str:n {#1} _int } + { \g__driver_pdf_object_int } + \prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2} + } +\cs_new:Npn \driver_pdf_object_ref:n #1 + { @l3obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } } +\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 + { + \exp_args:Nx \__driver_pdf_object_write:nnn + { \prop_item:Nn \g__driver_pdf_object_prop {#1} } {#1} {#2} + } +\cs_new_protected:Npn \__driver_pdf_object_write:nnn #1#2#3 + { \use:c { __driver_pdf_object_write_ #1 :nn } {#2} {#3} } +\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2 + { + \__driver_literal:x + { + pdf:obj ~ \driver_pdf_object_ref:n {#1} ~ + [ ~ \exp_not:n {#2} ~ ] + } + } +\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2 + { + \__driver_literal:x + { + pdf:obj ~ \driver_pdf_object_ref:n {#1} ~ + << ~ \exp_not:n {#2} ~ >> + } + } +\cs_new_protected:Npn \__driver_pdf_object_write_fstream:nn #1#2 + { \__driver_pdf_object_write_stream:nnnn { f } {#1} #2 } +\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2 + { \__driver_pdf_object_write_stream:nnnn { } {#1} #2 } +\cs_new_protected:Npn \__driver_pdf_object_write_stream:nnnn #1#2#3#4 + { + \__driver_literal:x + { + pdf: #1 stream ~ \driver_pdf_object_ref:n {#2} ~ + ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >> + + } + } +\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 + { \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } } +\cs_new_protected:Npn \driver_pdf_objects_enable: { } +\cs_new_protected:Npn \driver_pdf_objects_disable: + { \__driver_literal:n { dvipdfmx:config~C~0x40 } } \cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_pdf:n \cs_generate_variant:Nn \__driver_draw_literal:n { x } \cs_new_protected:Npn \driver_draw_begin: diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index 920c8628651..6c8e6f89389 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvips.def}{2018-08-23}{} + {l3dvips.def}{2018-09-24}{} {L3 Experimental driver: dvips} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 @@ -68,7 +68,7 @@ { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} } } \cs_new_protected:Npn \driver_color_spot:nn #1#2 - { \__driver_color_select:n { \c_space_tl #1 } } + { \__driver_color_select:n { #1 } } \cs_new_protected:Npn \__driver_color_select:n #1 { \__driver_literal:n { color~push~ #1 } @@ -394,6 +394,73 @@ \__driver_draw_literal:n { [begin] } \__driver_draw_literal:n { @beginspecial } } +\int_new:N \g__driver_pdf_object_int +\prop_new:N \g__driver_pdf_object_prop +\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 + { + \int_gincr:N \g__driver_pdf_object_int + \int_const:cn + { g__driver_pdf_object_ \tl_to_str:n {#1} _int } + { \g__driver_pdf_object_int } + \prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2} + } +\cs_new:Npn \driver_pdf_object_ref:n #1 + { { l3obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } } } +\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 + { + \__driver_literal_postscript:x + { + mark ~ /_objdef ~ \driver_pdf_object_ref:n {#1} ~ + /type + \str_case_e:nn + { \prop_item:Nn \g__driver_pdf_object_prop {#1} } + { + { array } { /array } + { dict } { /dict } + { fstream } { /stream } + { stream } { /stream } + } + /OBJ ~ pdfmark + } + \use:c + { __driver_pdf_object_write_ \prop_item:Nn \g__driver_pdf_object_prop {#1} :nn } + {#1} {#2} + } +\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2 + { + \__driver_literal_postscript:x + { + mark ~ \driver_pdf_object_ref:n {#1} ~ + [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL ~ pdfmark + } + } +\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2 + { + \__driver_literal_postscript:x + { + mark ~ \driver_pdf_object_ref:n {#1} ~ + << ~ \exp_not:n {#2} ~ >> ~ /PUT ~ pdfmark + } + } +\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2 + { + \exp_args:Nx + \__driver_pdf_object_write_stream:nnn + { \driver_pdf_object_ref:n {#1} } + #2 + } +\cs_new_protected:Npn \__driver_pdf_object_write_stream:nnn #1#2#3 + { + \__driver_literal_postscript:n + { + [nobreak] ~ + mark ~ #1 ~ ( #3 ) ~ /PUT ~ pdfmark ~ + mark ~ #1 ~ << #2 >> ~ /PUT ~ pdfmark + } + } +\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { } +\cs_new_protected:Npn \driver_pdf_objects_enable: { } +\cs_new_protected:Npn \driver_pdf_objects_disable: { } %% %% %% End of file `l3dvips.def'. diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index 32d4f658f60..467baf479fb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3dvisvgm.def}{2018-08-23}{} + {l3dvisvgm.def}{2018-09-24}{} {L3 Experimental driver: dvisvgm} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 @@ -68,7 +68,7 @@ { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} } } \cs_new_protected:Npn \driver_color_spot:nn #1#2 - { \__driver_color_select:n { \c_space_tl #1 } } + { \__driver_color_select:n { #1 } } \cs_new_protected:Npn \__driver_color_select:n #1 { \__driver_literal:n { color~push~ #1 } @@ -186,6 +186,12 @@ \cs_new_eq:NN \__driver_image_include_jpg:n \__driver_image_include_png:n \cs_new:Npn \__driver_image_include_bitmap_quote:w #1 " #2 " #3 \q_stop { #1#2 } +\cs_new_protected:Npn \driver_pdf_object_new:n #1 { } +\cs_new:Npn \driver_pdf_object_ref:n #1 { } +\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { } +\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { } +\cs_new_protected:Npn \driver_pdf_objects_enable: { } +\cs_new_protected:Npn \driver_pdf_objects_disable: { } \cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_svg:n \cs_generate_variant:Nn \__driver_draw_literal:n { x } \cs_new_protected:Npn \driver_draw_begin: diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index be271f63788..0435270fb92 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3pdfmode.def}{2018-08-23}{} + {l3pdfmode.def}{2018-09-24}{} {L3 Experimental driver: PDF mode} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 @@ -264,6 +264,79 @@ } \cs_new_eq:NN \__driver_image_include_pdf:n \__driver_image_include_jpg:n \cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n +\prop_new:N \g__driver_pdf_object_prop +\group_begin: + \cs_set_protected:Npn \__driver_tmp:w #1#2 + { + \cs_new_protected:Npx \driver_pdf_object_new:nn ##1##2 + { + #1 reserveobjnum ~ + \int_const:cn + { g__driver_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int } + {#2} + \prop_gput:Nnn \exp_not:N \g__driver_pdf_object_prop {##1} {##2} + } + } + \cs_if_exist:NTF \tex_pdfextension:D + { + \__driver_tmp:w + { \tex_pdfextension:D obj ~ } + { \tex_pdffeedback:D lastobj \scan_stop: } + } + { \__driver_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } } +\group_end: +\cs_new:Npn \driver_pdf_object_ref:n #1 + { \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R } +\group_begin: + \cs_set_protected:Npn \__driver_tmp:w #1 + { + \cs_new_protected:Npn \driver_pdf_object_write:nn ##1##2 + { + \tex_immediate:D #1 useobjnum ~ + \int_use:c + { g__driver_pdf_object_ \tl_to_str:n {##1} _int } + \str_case_e:nn + { \prop_item:Nn \g__driver_pdf_object_prop {##1} } + { + { array } { { [ ~ \exp_not:n {##2} ~ ] } } + { dict } { { << ~ \exp_not:n {##2} ~ >> } } + { fstream } + { + stream ~ attr ~ { \__driver_exp_not_i:nn ##2 } ~ + file ~ { \__driver_exp_not_ii:nn ##2 } + } + { stream } + { + stream ~ attr ~ { \__driver_exp_not_i:nn ##2 } ~ + { \__driver_exp_not_ii:nn ##2 } + } + } + } + } + \cs_if_exist:NTF \tex_pdfextension:D + { \__driver_tmp:w { \tex_pdfextension:D obj ~ } } + { \__driver_tmp:w { \tex_pdfobj:D } } +\group_end: +\cs_new:Npn \__driver_exp_not_i:nn #1#2 { \exp_not:n {#1} } +\cs_new:Npn \__driver_exp_not_ii:nn #1#2 { \exp_not:n {#2} } +\cs_new_protected:Npx \driver_pdf_compresslevel:n #1 + { + \cs_if_exist:NTF \tex_pdfcompresslevel:D + { \tex_pdfcompresslevel:D } + { \tex_pdfvariable:D compresslevel } + \exp_not:N \int_value:w \exp_not:N \int_eval:n {#1} \scan_stop: + } +\cs_new_protected:Npn \driver_pdf_objects_enable: + { \__driver_pdf_objectlevel:n { 2 } } +\cs_new_protected:Npn \driver_pdf_objects_disable: + { \__driver_pdf_objectlevel:n { 0 } } +\cs_new_protected:Npx \__driver_pdf_objectlevel:n #1 + { + \cs_if_exist:NTF \tex_pdfobjcompresslevel:D + { \tex_pdfobjcompresslevel:D } + { \tex_pdfvariable:D objcompresslevel } + #1 \scan_stop: + } \cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_pdf:n \cs_generate_variant:Nn \__driver_draw_literal:n { x } \cs_new_protected:Npn \driver_draw_begin: diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index afaabad8519..d1e6c9c80d0 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -20,7 +20,7 @@ %% %% File: l3drivers.dtx Copyright(C) 2011-2018 The LaTeX3 Project \ProvidesExplFile - {l3xdvidpfmx.def}{2018-08-23}{} + {l3xdvidpfmx.def}{2018-09-24}{} {L3 Experimental driver: xdvipdfmx} \cs_new_eq:NN \__driver_literal:e \tex_special:D \cs_new_protected:Npn \__driver_literal:n #1 @@ -68,7 +68,7 @@ { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} } } \cs_new_protected:Npn \driver_color_spot:nn #1#2 - { \__driver_color_select:n { \c_space_tl #1 } } + { \__driver_color_select:n { #1 } } \cs_new_protected:Npn \__driver_color_select:n #1 { \__driver_literal:n { color~push~ #1 } @@ -193,6 +193,59 @@ } } } +\int_new:N \g__driver_pdf_object_int +\prop_new:N \g__driver_pdf_object_prop +\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 + { + \int_gincr:N \g__driver_pdf_object_int + \int_const:cn + { g__driver_pdf_object_ \tl_to_str:n {#1} _int } + { \g__driver_pdf_object_int } + \prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2} + } +\cs_new:Npn \driver_pdf_object_ref:n #1 + { @l3obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } } +\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 + { + \exp_args:Nx \__driver_pdf_object_write:nnn + { \prop_item:Nn \g__driver_pdf_object_prop {#1} } {#1} {#2} + } +\cs_new_protected:Npn \__driver_pdf_object_write:nnn #1#2#3 + { \use:c { __driver_pdf_object_write_ #1 :nn } {#2} {#3} } +\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2 + { + \__driver_literal:x + { + pdf:obj ~ \driver_pdf_object_ref:n {#1} ~ + [ ~ \exp_not:n {#2} ~ ] + } + } +\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2 + { + \__driver_literal:x + { + pdf:obj ~ \driver_pdf_object_ref:n {#1} ~ + << ~ \exp_not:n {#2} ~ >> + } + } +\cs_new_protected:Npn \__driver_pdf_object_write_fstream:nn #1#2 + { \__driver_pdf_object_write_stream:nnnn { f } {#1} #2 } +\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2 + { \__driver_pdf_object_write_stream:nnnn { } {#1} #2 } +\cs_new_protected:Npn \__driver_pdf_object_write_stream:nnnn #1#2#3#4 + { + \__driver_literal:x + { + pdf: #1 stream ~ \driver_pdf_object_ref:n {#2} ~ + ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >> + + } + } +\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 + { \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } } +\cs_new_protected:Npn \driver_pdf_objects_enable: { } +\cs_new_protected:Npn \driver_pdf_objects_disable: + { \__driver_literal:n { dvipdfmx:config~C~0x40 } } \cs_new_protected:Npn \__driver_image_getbb_jpg:n #1 { \int_zero:N \l_image_page_int diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index aea02783a52..00afbb1d7aa 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3keys2e}{2018-08-23}{} +\ProvidesExplPackage{l3keys2e}{2018-09-24}{} {LaTeX2e option processing using LaTeX3 keys} \cs_generate_variant:Nn \clist_put_right:Nn { Nv } \cs_generate_variant:Nn \keys_if_exist:nnT { nx } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty index cc364a280c1..3c2cf74d5ca 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty @@ -33,7 +33,7 @@ \endinput } \RequirePackage{xparse} -\ProvidesExplPackage{xfp}{2018-08-23}{} +\ProvidesExplPackage{xfp}{2018-09-24}{} {L3 Floating point unit} \NewExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} } \NewExpandableDocumentCommand \inteval { m } { \int_eval:n {#1} } diff --git a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty index 3a5e7940987..12cac2d08a9 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -34,7 +34,7 @@ \endinput } \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} -\ProvidesExplPackage{xfrac}{2018-08-23}{} +\ProvidesExplPackage{xfrac}{2018-09-24}{} {L3 Experimental split-level fractions} \keys_define:nn { xfrac } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty index 82ae71afa2c..4c7ef80fcfb 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xparse}{2018-08-23}{} +\ProvidesExplPackage{xparse}{2018-09-24}{} {L3 Experimental document command parser} \tl_new:N \l__xparse_arg_spec_tl \tl_new:N \l__xparse_args_tl @@ -58,9 +58,9 @@ \tl_new:N \l__xparse_fn_code_tl \tl_new:N \l__xparse_function_tl \bool_new:N \l__xparse_grab_expandably_bool +\bool_new:N \l__xparse_obey_spaces_bool \tl_new:N \l__xparse_last_delimiters_tl \bool_new:N \l__xparse_long_bool -\bool_new:N \l__xparse_ignore_spaces_bool \int_new:N \l__xparse_m_args_int \int_new:N \l__xparse_mandatory_args_int \bool_new:N \l__xparse_prefixed_bool @@ -68,6 +68,7 @@ \tl_new:N \l__xparse_process_one_tl \bool_new:N \l__xparse_process_some_bool \tl_new:N \l__xparse_signature_tl +\bool_new:N \l__xparse_some_obey_spaces_bool \bool_new:N \l__xparse_some_long_bool \bool_new:N \l__xparse_some_short_bool \prop_new:N \l__xparse_tmp_prop @@ -362,10 +363,11 @@ \tl_clear:N \l__xparse_last_delimiters_tl \tl_clear:N \l__xparse_arg_spec_tl \bool_set_true:N \l__xparse_grab_expandably_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \bool_set_false:N \l__xparse_long_bool + \bool_set_false:N \l__xparse_some_obey_spaces_bool \bool_set_false:N \l__xparse_some_long_bool \bool_set_false:N \l__xparse_some_short_bool - \bool_set_false:N \l__xparse_ignore_spaces_bool \__xparse_normalize_arg_spec_loop:n #1 \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop \int_compare:nNnT \l__xparse_current_arg_int > 9 @@ -443,7 +445,12 @@ \cs_new_protected:cpn { __xparse_normalize_type_+:w } #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } - \tl_put_right:Nn \l__xparse_arg_spec_tl { + } + \bool_if:NT \l__xparse_long_bool + { + \__kernel_msg_error:nnxx { xparse } { two-markers } + { \iow_char:N \\ \l__xparse_function_tl } { + } + \__xparse_bad_def:wn + } \bool_set_true:N \l__xparse_long_bool \int_decr:N \l__xparse_current_arg_int \__xparse_normalize_arg_spec_loop:n {#1} @@ -451,7 +458,14 @@ \cs_new_protected:cpn { __xparse_normalize_type_!:w } #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } - \tl_put_right:Nn \l__xparse_arg_spec_tl { ! } + \bool_if:NT \l__xparse_obey_spaces_bool + { + \__kernel_msg_error:nnxx { xparse } { two-markers } + { \iow_char:N \\ \l__xparse_function_tl } { ! } + \__xparse_bad_def:wn + } + \bool_set_true:N \l__xparse_obey_spaces_bool + \bool_set_true:N \l__xparse_some_obey_spaces_bool \int_decr:N \l__xparse_current_arg_int \__xparse_normalize_arg_spec_loop:n {#1} } @@ -499,26 +513,27 @@ { \quark_if_recursion_tail_stop_do:Nn #1 { \__xparse_bad_arg_spec:wn } \__xparse_single_char_check:n {#1} - \tl_put_right:Nn \l__xparse_arg_spec_tl { t #1 } + \tl_put_right:Nx \l__xparse_arg_spec_tl + { + \bool_if:NT \l__xparse_obey_spaces_bool { ! } + t \exp_not:n {#1} + } \tl_put_right:Nn \l__xparse_last_delimiters_tl {#1} \bool_set_false:N \l__xparse_grab_expandably_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \bool_set_false:N \l__xparse_long_bool \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_l:w { \__xparse_normalize_check_lu:N l - \__xparse_add_arg_spec:n { l } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { l } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_m:w { \__xparse_delimiter_check:nnn { } { m } { \iow_char:N \{ } - \__xparse_add_arg_spec:n { m } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { m } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_R:w #1#2#3 @@ -527,27 +542,21 @@ \__xparse_single_char_check:n {#1} \__xparse_single_char_check:n {#2} \__xparse_delimiter_check:nnn {#1} { R/r } { \tl_to_str:n {#1} } - \__xparse_add_arg_spec:n { R #1 #2 {#3} } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl \bool_set_false:N \l__xparse_grab_expandably_bool + \__xparse_add_arg_spec_mandatory:n { R #1 #2 {#3} } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_u:w #1 { \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn } \__xparse_normalize_check_lu:N u - \__xparse_add_arg_spec:n { u {#1} } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { u {#1} } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_normalize_type_v:w { \__xparse_normalize_check_gv:N v - \__xparse_add_arg_spec:n { v } - \int_incr:N \l__xparse_mandatory_args_int - \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec_mandatory:n { v } \__xparse_normalize_arg_spec_loop:n } \cs_new_protected:Npn \__xparse_single_char_check:n #1 @@ -628,14 +637,32 @@ \bool_if:NTF \l__xparse_long_bool { \bool_set_true:N \l__xparse_some_long_bool } { \bool_set_true:N \l__xparse_some_short_bool } + \tl_put_right:Nx \l__xparse_arg_spec_tl + { + \bool_if:NT \l__xparse_long_bool { + } + \bool_if:NT \l__xparse_obey_spaces_bool { ! } + \exp_not:n {#1} + } \bool_set_false:N \l__xparse_long_bool - \tl_put_right:Nn \l__xparse_arg_spec_tl {#1} + \bool_set_false:N \l__xparse_obey_spaces_bool + } +\cs_new_protected:Npn \__xparse_add_arg_spec_mandatory:n #1 + { + \bool_if:NT \l__xparse_some_obey_spaces_bool + { + \__kernel_msg_error:nnxx { xparse } { non-trailing-obey-spaces } + { \iow_char:N \\ \l__xparse_function_tl } { \tl_to_str:n {#1} } + \__xparse_bad_def:wn + } + \int_incr:N \l__xparse_mandatory_args_int + \tl_clear:N \l__xparse_last_delimiters_tl + \__xparse_add_arg_spec:n {#1} } \cs_new_protected:Npn \__xparse_prepare_signature:n #1 { \int_zero:N \l__xparse_current_arg_int \bool_set_false:N \l__xparse_long_bool - \bool_set_false:N \l__xparse_ignore_spaces_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \int_zero:N \l__xparse_m_args_int \bool_set_false:N \l__xparse_defaults_bool \tl_clear:N \l__xparse_defaults_tl @@ -671,7 +698,7 @@ \cs_new_protected:cpn { __xparse_add_type_!:w } { \__xparse_flush_m_args: - \bool_set_true:N \l__xparse_ignore_spaces_bool + \bool_set_true:N \l__xparse_obey_spaces_bool \bool_set_true:N \l__xparse_prefixed_bool \__xparse_prepare_signature_bypass:N } @@ -766,15 +793,7 @@ } \cs_new_protected:Npn \__xparse_add_grabber_mandatory:N #1 { - \tl_put_right:Nx \l__xparse_signature_tl - { - \exp_not:c - { __xparse_grab_ #1 \bool_if:NT \l__xparse_long_bool { _long } :w } - } - \bool_set_false:N \l__xparse_long_bool - \tl_put_right:Nx \l__xparse_process_all_tl - { { \exp_not:o \l__xparse_process_one_tl } } - \tl_clear:N \l__xparse_process_one_tl + \__xparse_add_grabber_optional:N #1 \int_decr:N \l__xparse_mandatory_args_int } \cs_new_protected:Npn \__xparse_add_grabber_optional:N #1 @@ -785,15 +804,12 @@ { __xparse_grab_ #1 \bool_if:NT \l__xparse_long_bool { _long } - \bool_lazy_and:nnT - { \l__xparse_ignore_spaces_bool } - { \int_compare_p:nNn \l__xparse_mandatory_args_int = 0 } - { _ignore_spaces } + \bool_if:NT \l__xparse_obey_spaces_bool { _obey_spaces } :w } } \bool_set_false:N \l__xparse_long_bool - \bool_set_false:N \l__xparse_ignore_spaces_bool + \bool_set_false:N \l__xparse_obey_spaces_bool \tl_put_right:Nx \l__xparse_process_all_tl { { \exp_not:o \l__xparse_process_one_tl } } \tl_clear:N \l__xparse_process_one_tl @@ -953,22 +969,28 @@ } \cs_new_protected:Npn \__xparse_grab_D:w #1#2#3 \__xparse_run_code: { - \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected_nopar:Npn - { _ignore_spaces } + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__xparse_peek_nonspace_remove:NTF } \cs_new_protected:Npn \__xparse_grab_D_long:w #1#2#3 \__xparse_run_code: { - \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected:Npn - { _ignore_spaces } + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn + \__xparse_peek_nonspace_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_obey_spaces:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \peek_meaning_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_D_ignore_spaces:w #1#2#3 \__xparse_run_code: - { \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected_nopar:Npn { } } -\cs_new_protected:Npn \__xparse_grab_D_long_ignore_spaces:w #1#2#3 \__xparse_run_code: - { \__xparse_grab_D_aux:NNnNn #1 #2 {#3} \cs_set_protected:Npn { } } -\cs_new_protected:Npn \__xparse_grab_D_aux:NNnNn #1#2#3#4#5 +\cs_new_protected:Npn \__xparse_grab_D_long_obey_spaces:w #1#2#3 \__xparse_run_code: + { + \__xparse_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn + \peek_meaning_remove:NTF + } +\cs_new_protected:Npn \__xparse_grab_D_aux:NNnNN #1#2#3#4#5 { \__xparse_grab_D_aux:NNnN #1#2 {#3} #4 - \use:c { peek_meaning_remove #5 :NTF } #1 + #5 #1 { \__xparse_grab_D_call:Nw #1 } { \__xparse_add_arg:o \c_novalue_tl } } @@ -1043,34 +1065,34 @@ } \cs_new_protected:Npn \__xparse_grab_E:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected_nopar:Npn - { _ignore_spaces } + \__xparse_peek_nonspace_remove:NTF } \cs_new_protected:Npn \__xparse_grab_E_long:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected:Npn - { _ignore_spaces } + \__xparse_peek_nonspace_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_E_ignore_spaces:w #1#2 \__xparse_run_code: +\cs_new_protected:Npn \__xparse_grab_E_obey_spaces:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected_nopar:Npn - { } + \peek_meaning_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_E_long_ignore_spaces:w #1#2 \__xparse_run_code: +\cs_new_protected:Npn \__xparse_grab_E_long_obey_spaces:w #1#2 \__xparse_run_code: { - \__xparse_grab_E:nnNn {#1} {#2} + \__xparse_grab_E:nnNN {#1} {#2} \cs_set_protected:Npn - { } + \peek_meaning_remove:NTF } -\cs_new_protected:Npn \__xparse_grab_E:nnNn #1#2#3#4 +\cs_new_protected:Npn \__xparse_grab_E:nnNN #1#2#3#4 { \exp_after:wN #3 \l__xparse_fn_tl ##1##2##3 { \prop_put:Nnn \l__xparse_tmp_prop {##1} {##3} - \__xparse_grab_E_loop:nnN {#4} { } ##2 \q_recursion_stop + \__xparse_grab_E_loop:NnN #4 { } ##2 \q_recursion_stop } \prop_clear:N \l__xparse_tmp_prop \tl_set:Nn \l__xparse_signature_tl {#2} @@ -1085,38 +1107,45 @@ } \l__xparse_signature_tl \__xparse_run_code: } - \__xparse_grab_E_loop:nnN {#4} { } #1 \q_recursion_tail \q_recursion_stop + \__xparse_grab_E_loop:NnN #4 { } #1 \q_recursion_tail \q_recursion_stop } -\cs_new_protected:Npn \__xparse_grab_E_loop:nnN #1#2#3#4 \q_recursion_stop +\cs_new_protected:Npn \__xparse_grab_E_loop:NnN #1#2#3#4 \q_recursion_stop { \cs_if_eq:NNTF #3 \q_recursion_tail { \__xparse_grab_E_finalise: } { - \use:c { peek_meaning_remove #1 :NTF } #3 + #1 #3 { \l__xparse_fn_tl #3 {#2#4} } - { \__xparse_grab_E_loop:nnN {#1} {#2#3} #4 \q_recursion_stop } + { \__xparse_grab_E_loop:NnN #1 {#2#3} #4 \q_recursion_stop } } } \cs_new_protected:Npn \__xparse_grab_E_finalise: { } \cs_new_protected:Npn \__xparse_grab_G:w #1 \__xparse_run_code: { - \__xparse_grab_G_aux:nNn {#1} \cs_set_protected_nopar:Npn - { _ignore_spaces } + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn + \__xparse_peek_nonspace:NTF } \cs_new_protected:Npn \__xparse_grab_G_long:w #1 \__xparse_run_code: { - \__xparse_grab_G_aux:nNn {#1} \cs_set_protected:Npn { _ignore_spaces } + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected:Npn + \__xparse_peek_nonspace:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_obey_spaces:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected_nopar:Npn + \peek_meaning:NTF } -\cs_new_protected:Npn \__xparse_grab_G_ignore_spaces:w #1 \__xparse_run_code: - { \__xparse_grab_G_aux:nNn {#1} \cs_set_protected_nopar:Npn { } } -\cs_new_protected:Npn \__xparse_grab_G_long_ignore_spaces:w #1 \__xparse_run_code: - { \__xparse_grab_G_aux:nNn {#1} \cs_set_protected:Npn { } } -\cs_new_protected:Npn \__xparse_grab_G_aux:nNn #1#2#3 +\cs_new_protected:Npn \__xparse_grab_G_long_obey_spaces:w #1 \__xparse_run_code: + { + \__xparse_grab_G_aux:nNN {#1} \cs_set_protected:Npn + \peek_meaning:NTF + } +\cs_new_protected:Npn \__xparse_grab_G_aux:nNN #1#2#3 { \tl_set:Nn \l__xparse_signature_tl {#1} \exp_after:wN #2 \l__xparse_fn_tl ##1 { \__xparse_add_arg:n {##1} } - \use:c { peek_meaning #3 :NTF } \c_group_begin_token + #3 \c_group_begin_token { \l__xparse_fn_tl } { \__xparse_add_arg:o \c_novalue_tl } } @@ -1211,7 +1240,7 @@ \cs_new_protected:Npn \__xparse_grab_R_aux:NNnN #1#2#3#4 { \__xparse_grab_D_aux:NNnN #1 #2 {#3} #4 - \peek_meaning_remove_ignore_spaces:NTF #1 + \__xparse_peek_nonspace_remove:NTF #1 { \__xparse_grab_D_call:Nw #1 } { \__kernel_msg_error:nnxx { xparse } { missing-required } @@ -1221,11 +1250,9 @@ } } \cs_new_protected:Npn \__xparse_grab_t:w - { \__xparse_grab_t_aux:NNw \peek_meaning_remove_ignore_spaces:NTF } -\cs_new_eq:NN \__xparse_grab_t_long:w \__xparse_grab_t:w -\cs_new_protected:Npn \__xparse_grab_t_ignore_spaces:w + { \__xparse_grab_t_aux:NNw \__xparse_peek_nonspace_remove:NTF } +\cs_new_protected:Npn \__xparse_grab_t_obey_spaces:w { \__xparse_grab_t_aux:NNw \peek_meaning_remove:NTF } -\cs_new_eq:NN \__xparse_grab_t_long_ignore_spaces:w \__xparse_grab_t_ignore_spaces:w \cs_new_protected:Npn \__xparse_grab_t_aux:NNw #1#2#3 \__xparse_run_code: { \tl_set:Nn \l__xparse_signature_tl {#3} @@ -1810,6 +1837,16 @@ } } \cs_new:Npn \__xparse_cmd_if_xparse_aux:w #1 ~ #2 \q_stop {#1} +\cs_new_protected:Npn \__xparse_peek_nonspace:NTF + { \__xparse_peek_nonspace_aux:nNNTF { } \peek_meaning:NTF } +\cs_new_protected:Npn \__xparse_peek_nonspace_remove:NTF + { \__xparse_peek_nonspace_aux:nNNTF { } \peek_meaning_remove:NTF } +\cs_new_protected:Npn \__xparse_peek_nonspace_aux:nNNTF #1#2#3#4#5 + { + \peek_meaning_remove:NTF \c_space_token + { \__xparse_peek_nonspace_aux:nNNTF { #1 ~ } #2 #3 {#4} {#5} } + { #2 #3 { #4 } { #5 #1 } } + } \__kernel_msg_new:nnnn { xparse } { bad-arg-spec } { Bad~argument~specification~'#2'~for~command~'#1'. } { @@ -1898,6 +1935,13 @@ The~current~command~'#1'~expects~an~argument~starting~with~'#2'.~ LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed. } +\__kernel_msg_new:nnnn { xparse } { non-trailing-obey-spaces } + { Prefix~'!'~used~before~mandatory~argument~'#2'~of~command~'#1'. } + { + The~prefix~'!'~can~only~apply~to~trailing~optional~arguments. + \\ \\ + LaTeX~will~ignore~this~entire~definition. + } \__kernel_msg_new:nnnn { xparse } { non-xparse-command } { Command~'#1'~not~defined~using~xparse. } { @@ -1959,6 +2003,12 @@ This~cannot~be~implemented. \\ \\ LaTeX~will~ignore~this~entire~definition. } +\__kernel_msg_new:nnnn { xparse } { two-markers } + { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~command~'#1'. } + { + The~argument~specification~provided~has~two~markers~'#2'~applying~ + to~the~same~argument;~these~are~redundant. + } \__kernel_msg_new:nnnn { xparse } { unknown-argument-type } { Unknown~argument~type~'#2'~for~the~command~'#1'. } { diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 912ddd9a897..b233a8b362f 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xtemplate}{2018-08-23}{} +\ProvidesExplPackage{xtemplate}{2018-09-24}{} {L3 Experimental prototype document functions} \tl_const:Nn \c__xtemplate_code_root_tl { template~code~>~ } \tl_const:Nn \c__xtemplate_defaults_root_tl { template~defaults~>~ } -- cgit v1.2.3