diff options
author | Karl Berry <karl@freefriends.org> | 2017-11-14 21:07:53 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-11-14 21:07:53 +0000 |
commit | 8c82df0007c957004cc2268b49ccf3ceca914f58 (patch) | |
tree | ae29044a1727ceb31a488437f43cde1a31e6e007 /Master/texmf-dist/tex/latex | |
parent | 4bd2a337b834181c967e774caddf57b3f747e127 (diff) |
l3 (14nov17)
git-svn-id: svn://tug.org/texlive/trunk@45802 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
15 files changed, 387 insertions, 125 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 4e9108fafe9..a4bfbf009c9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -62,7 +62,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx Copyright (C) 1990-2017 The LaTeX3 Project -\def\ExplFileDate{2017/09/18}% +\def\ExplFileDate{2017/11/14}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -1247,6 +1247,36 @@ \tex_let:D \tex_input:D \@@input \tex_let:D \tex_italiccorrection:D \@@italiccorr \tex_let:D \tex_underline:D \@@underline + \etex_ifdefined:D \@@shipout + \tex_let:D \tex_shipout:D \@@shipout + \tex_fi:D + \tex_begingroup:D + \tex_edef:D \l_tmpa_tl { \tex_string:D \shipout } + \tex_edef:D \l_tmpb_tl { \tex_meaning:D \shipout } + \tex_ifx:D \l_tmpa_tl \l_tmpb_tl + \tex_else:D + \tex_expandafter:D \@tfor \tex_expandafter:D \@tempa \tex_string:D := + \CROP@shipout + \dup@shipout + \GPTorg@shipout + \LL@shipout + \mem@oldshipout + \opem@shipout + \pgfpages@originalshipout + \pr@shipout + \Shipout + \verso@orig@shipout + \do + { + \tex_edef:D \l_tmpb_tl + { \tex_expandafter:D \tex_meaning:D \@tempa } + \tex_ifx:D \l_tmpa_tl \l_tmpb_tl + \tex_global:D \tex_expandafter:D \tex_let:D + \tex_expandafter:D \tex_shipout:D \@tempa + \tex_fi:D + } + \tex_fi:D + \tex_endgroup:D \tex_let:D \pdftex_tracingfonts:D \tex_undefined:D \etex_ifdefined:D \pdftracingfonts \tex_let:D \pdftex_tracingfonts:D \pdftracingfonts @@ -2800,6 +2830,15 @@ \prg_new_eq_conditional:NNn \tl_if_exist:N \cs_if_exist:N { TF , T , F , p } \prg_new_eq_conditional:NNn \tl_if_exist:c \cs_if_exist:c { TF , T , F , p } \tl_const:Nn \c_empty_tl { } +\group_begin: +\tex_lccode:D `A = `- +\tex_lccode:D `N = `N +\tex_lccode:D `V = `V +\tex_lowercase:D + { + \group_end: + \tl_const:Nn \c_novalue_tl { ANoValue- } + } \tl_const:Nn \c_space_tl { ~ } \__debug_patch:nnNNpn { \__debug_chk_var_exist:N #1 } { } \cs_new_protected:Npn \tl_set:Nn #1#2 @@ -3164,6 +3203,23 @@ \cs_generate_variant:Nn \tl_if_in:nnT { V , o , no } \cs_generate_variant:Nn \tl_if_in:nnF { V , o , no } \cs_generate_variant:Nn \tl_if_in:nnTF { V , o , no } +\use:x + { + \prg_new_conditional:Npnn \exp_not:N \tl_if_novalue:n ##1 + { T , F , TF } + { + \exp_not:N \str_if_eq:onTF + { + \exp_not:N \__tl_if_novalue:w ? ##1 { } + \c_novalue_tl + } + { ? { } \c_novalue_tl } + { \exp_not:N \prg_return_true: } + { \exp_not:N \prg_return_false: } + } + \cs_new:Npn \exp_not:N \__tl_if_novalue:w ##1 \c_novalue_tl + {##1} + } \cs_new:Npn \tl_if_single_p:N { \exp_args:No \tl_if_single_p:n } \cs_new:Npn \tl_if_single:NT { \exp_args:No \tl_if_single:nT } \cs_new:Npn \tl_if_single:NF { \exp_args:No \tl_if_single:nF } @@ -3303,6 +3359,7 @@ { \exp_not:o { \use_none:nn #2 } } \cs_new:Npn \tl_trim_spaces:n #1 { \__tl_trim_spaces:nn { \q_mark #1 } \exp_not:o } +\cs_generate_variant:Nn \tl_trim_spaces:n { o } \cs_new_protected:Npn \tl_trim_spaces:N #1 { \tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } } \cs_new_protected:Npn \tl_gtrim_spaces:N #1 @@ -3633,6 +3690,10 @@ \cs_new_eq:NN \str_gset_eq:NN \tl_gset_eq:NN \cs_generate_variant:Nn \str_set_eq:NN { c , Nc , cc } \cs_generate_variant:Nn \str_gset_eq:NN { c , Nc , cc } +\cs_new_eq:NN \str_concat:NNN \tl_concat:NNN +\cs_new_eq:NN \str_gconcat:NNN \tl_gconcat:NNN +\cs_generate_variant:Nn \str_concat:NNN { ccc } +\cs_generate_variant:Nn \str_gconcat:NNN { ccc } \group_begin: \cs_set_protected:Npn \__str_tmp:n #1 { @@ -3654,6 +3715,58 @@ { gput_right } { } \group_end: +\cs_new_protected:Npn \str_replace_once:Nnn + { \__str_replace:NNNnn \prg_do_nothing: \tl_set:Nx } +\cs_new_protected:Npn \str_greplace_once:Nnn + { \__str_replace:NNNnn \prg_do_nothing: \tl_gset:Nx } +\cs_new_protected:Npn \str_replace_all:Nnn + { \__str_replace:NNNnn \__str_replace_next:w \tl_set:Nx } +\cs_new_protected:Npn \str_greplace_all:Nnn + { \__str_replace:NNNnn \__str_replace_next:w \tl_gset:Nx } +\cs_generate_variant:Nn \str_replace_once:Nnn { c } +\cs_generate_variant:Nn \str_greplace_once:Nnn { c } +\cs_generate_variant:Nn \str_replace_all:Nnn { c } +\cs_generate_variant:Nn \str_greplace_all:Nnn { c } +\cs_new_protected:Npn \__str_replace:NNNnn #1#2#3#4#5 + { + \tl_if_empty:nTF {#4} + { + \__msg_kernel_error:nnx { kernel } { empty-search-pattern } {#5} + } + { + \use:x + { + \exp_not:n { \__str_replace_aux:NNNnnn #1 #2 #3 } + { \tl_to_str:N #3 } + { \tl_to_str:n {#4} } { \tl_to_str:n {#5} } + } + } + } +\cs_new_protected:Npn \__str_replace_aux:NNNnnn #1#2#3#4#5#6 + { + \cs_set:Npn \__str_replace_next:w ##1 #5 { ##1 #6 #1 } + #2 #3 + { + \__str_replace_next:w + #4 + \use_none_delimit_by_q_stop:w + #5 + \q_stop + } + } +\cs_new_eq:NN \__str_replace_next:w ? +\cs_new_protected:Npn \str_remove_once:Nn #1#2 + { \str_replace_once:Nnn #1 {#2} { } } +\cs_new_protected:Npn \str_gremove_once:Nn #1#2 + { \str_greplace_once:Nnn #1 {#2} { } } +\cs_generate_variant:Nn \str_remove_once:Nn { c } +\cs_generate_variant:Nn \str_gremove_once:Nn { c } +\cs_new_protected:Npn \str_remove_all:Nn #1#2 + { \str_replace_all:Nnn #1 {#2} { } } +\cs_new_protected:Npn \str_gremove_all:Nn #1#2 + { \str_greplace_all:Nnn #1 {#2} { } } +\cs_generate_variant:Nn \str_remove_all:Nn { c } +\cs_generate_variant:Nn \str_gremove_all:Nn { c } \prg_new_eq_conditional:NNn \str_if_exist:N \tl_if_exist:N { p , T , F , TF } \prg_new_eq_conditional:NNn \str_if_exist:c \tl_if_exist:c { p , T , F , TF } \prg_new_eq_conditional:NNn \str_if_empty:N \tl_if_empty:N { p , T , F , TF } @@ -3717,6 +3830,21 @@ \cs_generate_variant:Nn \str_if_eq:NNF { c , Nc , cc } \cs_generate_variant:Nn \str_if_eq:NNTF { c , Nc , cc } \cs_generate_variant:Nn \str_if_eq_p:NN { c , Nc , cc } +\prg_new_protected_conditional:Npnn \str_if_in:Nn #1#2 { T , F , TF } + { + \use:x + { \tl_if_in:nnTF { \tl_to_str:N #1 } { \tl_to_str:n {#2} } } + { \prg_return_true: } { \prg_return_false: } + } +\cs_generate_variant:Nn \str_if_in:NnT { c } +\cs_generate_variant:Nn \str_if_in:NnF { c } +\cs_generate_variant:Nn \str_if_in:NnTF { c } +\prg_new_protected_conditional:Npnn \str_if_in:nn #1#2 { T , F , TF } + { + \use:x + { \tl_if_in:nnTF { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } } + { \prg_return_true: } { \prg_return_false: } + } \cs_new:Npn \str_case:nn #1#2 { \exp:w @@ -3778,6 +3906,54 @@ { \__str_case_x:nw {#1} } } \cs_new_eq:NN \__str_case_end:nw \__prg_case_end:nw +\cs_new:Npn \str_map_function:nN #1#2 + { + \exp_after:wN \__str_map_function:Nn \exp_after:wN #2 + \etex_detokenize:n {#1} + \q_recursion_tail + \__prg_break_point:Nn \str_map_break: { } + } +\cs_new:Npn \str_map_function:NN + { \exp_args:No \str_map_function:nN } +\cs_new:Npn \__str_map_function:Nn #1#2 + { + \__quark_if_recursion_tail_break:nN {#2} \str_map_break: + #1 {#2} \__str_map_function:Nn #1 + } +\cs_generate_variant:Nn \str_map_function:NN { c } +\cs_new_protected:Npn \str_map_inline:nn #1#2 + { + \int_gincr:N \g__prg_map_int + \cs_gset_protected:cpn + { __prg_map_ \int_use:N \g__prg_map_int :w } ##1 {#2} + \exp_args:Nc \__str_map_function:Nn + { __prg_map_ \int_use:N \g__prg_map_int :w } + #1 \q_recursion_tail + \__prg_break_point:Nn \str_map_break: { \int_gdecr:N \g__prg_map_int } + } +\cs_new_protected:Npn \str_map_inline:Nn + { \exp_args:No \str_map_inline:nn } +\cs_generate_variant:Nn \str_map_inline:Nn { c } +\cs_new_protected:Npn \str_map_variable:nNn #1#2#3 + { + \__str_map_variable:Nnn #2 {#3} #1 + \q_recursion_tail + \__prg_break_point:Nn \str_map_break: { } + } +\cs_new_protected:Npn \str_map_variable:NNn + { \exp_args:No \str_map_variable:nNn } +\cs_new_protected:Npn \__str_map_variable:Nnn #1#2#3 + { + \str_set:Nn #1 {#3} + \__quark_if_recursion_tail_break:NN #1 \str_map_break: + \use:n {#2} + \__str_map_variable:Nnn #1 {#2} + } +\cs_generate_variant:Nn \str_map_variable:NNn { c } +\cs_new:Npn \str_map_break: + { \__prg_map_break:Nn \str_map_break: { } } +\cs_new:Npn \str_map_break:n + { \__prg_map_break:Nn \str_map_break: } \cs_new:Npn \__str_to_other:n #1 { \exp_after:wN \__str_to_other_loop:w @@ -3785,7 +3961,7 @@ } \group_begin: \tex_lccode:D `\* = `\ % -\tex_lccode:D `\A = `\A +\tex_lccode:D `\A = `\A % \tex_lowercase:D { \group_end: @@ -3808,7 +3984,7 @@ } \group_begin: \tex_lccode:D `\* = `\ % -\tex_lccode:D `\A = `\A +\tex_lccode:D `\A = `\A % \tex_lowercase:D { \group_end: @@ -10691,12 +10867,7 @@ } } \cs_new:Npn \__keys_remove_spaces:n #1 - { - \exp_after:wN \__keys_remove_spaces:w \tl_to_str:n {#1} - \use_none:nn ? ~ - } -\cs_new:Npn \__keys_remove_spaces:w #1 ~ - { #1 \__keys_remove_spaces:w } + { \tl_trim_spaces:o { \tl_to_str:n {#1} } } \prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF } { \cs_if_exist:cTF @@ -21659,7 +21830,8 @@ } \cs_new_protected:Npn \color_ensure_current: { - \__driver_color_ensure_current: + \__driver_color_pickup:N \l__color_current_tl + \__driver_color_select:V \l__color_current_tl \group_insert_after:N \__driver_color_reset: } \tl_new:N \l__color_current_tl diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index a84caf1da12..7c8e09b787a 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-2017 The LaTeX3 Project -\def\ExplFileDate{2017/09/18}% +\def\ExplFileDate{2017/11/14}% \let\ExplLoaderFileDate\ExplFileDate \begingroup \def\tempa{LaTeX2e}% diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua index ca496b495c9..c9b04b10d65 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua @@ -57,7 +57,7 @@ l3kernel.charcat = charcat local function filemdfivesum(name) local file = kpse_find(name, "tex", true) if file then - local f = open(file, "r") + local f = open(file, "rb") if f then local data = f:read("*a") escapehex(md5_sum(data)) diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 86cc90262ad..ca4498c864a 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-2017 The LaTeX3 Project -\def\ExplFileDate{2017/09/18}% +\def\ExplFileDate{2017/11/14}% \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 9040af56ff9..3b94767ca26 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -20,7 +20,7 @@ %% %% File: l3doc.dtx Copyright (C) 1990-2017 The LaTeX3 project \RequirePackage{expl3,xparse,calc} -\ProvidesExplClass{l3doc}{2017/09/18}{} +\ProvidesExplClass{l3doc}{2017/11/14}{} {L3 Experimental documentation class} \clist_new:N \g_docinput_clist \seq_new:N \g_doc_functions_seq @@ -678,7 +678,7 @@ { \l__codedoc_index_key_tl } { \l__codedoc_index_macro_tl } { \l__codedoc_index_module_tl } - { } + { usage } \l__codedoc_index_internal_bool } } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index 5bfce1cc6ed..ab0a0fbc664 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -22,20 +22,45 @@ \ProvidesExplFile {l3dvidpfmx.def}{2017/03/18}{} {L3 Experimental driver: dvipdfmx} +\cs_new_protected:Npn \__driver_color_pickup:N #1 { } \AtBeginDocument { \@ifpackageloaded { color } { - \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set:Nx \l__color_current_tl { \current@color } } + \cs_set_protected:Npn \__driver_color_pickup:N #1 + { + \exp_args:NV \tl_if_head_is_space:nTF \current@color + { + \tl_set:Nx #1 + { + spot ~ + \exp_after:wN \use:n \current@color \c_space_tl 1 + } + } + { \exp_after:wN \__driver_color_pickup_aux:w \current@color \q_stop #1 } + } + \cs_new_protected:Npn \__driver_color_pickup_aux:w #1 ~ #2 \q_stop #3 + { \tl_set:Nn #3 { #1 ~ #2 } } } - { \cs_new_protected:Npn \__driver_color_pickup: { } } + { } } -\cs_new_protected:Npn \__driver_color_ensure_current: +\cs_new_protected:Npn \__driver_color_select:n #1 { - \__driver_color_pickup: - \tex_special:D { color~push~\l__color_current_tl } + \tex_special:D + { + color~push~ + \cs_if_exist_use:cF + { __driver_color_convert_ \__driver_convert_model:w #1 \q_stop :n } + { \use:n } + {#1} + } } +\cs_generate_variant:Nn \__driver_color_select:n { V } +\cs_new:Npn \__driver_convert_model:w #1 ~ #2 \q_stop {#1} +\cs_new:Npn \__driver_color_convert_spot:n #1 + { \__driver_color_convert_spot:w #1 \q_stop } +\cs_new:Npn \__driver_color_convert_spot:w #1 ~ #2 ~ #3 \q_stop + { \c_space_tl #2 } \cs_new_protected:Npn \__driver_color_reset: { \tex_special:D { color~pop } } \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index eed9fcf2658..046edf1d5a7 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -22,20 +22,45 @@ \ProvidesExplFile {l3dvips.def}{2017/03/18}{} {L3 Experimental driver: dvips} +\cs_new_protected:Npn \__driver_color_pickup:N #1 { } \AtBeginDocument { \@ifpackageloaded { color } { - \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set:Nx \l__color_current_tl { \current@color } } + \cs_set_protected:Npn \__driver_color_pickup:N #1 + { + \exp_args:NV \tl_if_head_is_space:nTF \current@color + { + \tl_set:Nx #1 + { + spot ~ + \exp_after:wN \use:n \current@color \c_space_tl 1 + } + } + { \exp_after:wN \__driver_color_pickup_aux:w \current@color \q_stop #1 } + } + \cs_new_protected:Npn \__driver_color_pickup_aux:w #1 ~ #2 \q_stop #3 + { \tl_set:Nn #3 { #1 ~ #2 } } } - { \cs_new_protected:Npn \__driver_color_pickup: { } } + { } } -\cs_new_protected:Npn \__driver_color_ensure_current: +\cs_new_protected:Npn \__driver_color_select:n #1 { - \__driver_color_pickup: - \tex_special:D { color~push~\l__color_current_tl } + \tex_special:D + { + color~push~ + \cs_if_exist_use:cF + { __driver_color_convert_ \__driver_convert_model:w #1 \q_stop :n } + { \use:n } + {#1} + } } +\cs_generate_variant:Nn \__driver_color_select:n { V } +\cs_new:Npn \__driver_convert_model:w #1 ~ #2 \q_stop {#1} +\cs_new:Npn \__driver_color_convert_spot:n #1 + { \__driver_color_convert_spot:w #1 \q_stop } +\cs_new:Npn \__driver_color_convert_spot:w #1 ~ #2 ~ #3 \q_stop + { \c_space_tl #2 } \cs_new_protected:Npn \__driver_color_reset: { \tex_special:D { color~pop } } \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index df5c3f262fb..c3a180544da 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -22,20 +22,45 @@ \ProvidesExplFile {l3dvisvgm.def}{2017/03/18}{} {L3 Experimental driver: dvisvgm} +\cs_new_protected:Npn \__driver_color_pickup:N #1 { } \AtBeginDocument { \@ifpackageloaded { color } { - \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set:Nx \l__color_current_tl { \current@color } } + \cs_set_protected:Npn \__driver_color_pickup:N #1 + { + \exp_args:NV \tl_if_head_is_space:nTF \current@color + { + \tl_set:Nx #1 + { + spot ~ + \exp_after:wN \use:n \current@color \c_space_tl 1 + } + } + { \exp_after:wN \__driver_color_pickup_aux:w \current@color \q_stop #1 } + } + \cs_new_protected:Npn \__driver_color_pickup_aux:w #1 ~ #2 \q_stop #3 + { \tl_set:Nn #3 { #1 ~ #2 } } } - { \cs_new_protected:Npn \__driver_color_pickup: { } } + { } } -\cs_new_protected:Npn \__driver_color_ensure_current: +\cs_new_protected:Npn \__driver_color_select:n #1 { - \__driver_color_pickup: - \tex_special:D { color~push~\l__color_current_tl } + \tex_special:D + { + color~push~ + \cs_if_exist_use:cF + { __driver_color_convert_ \__driver_convert_model:w #1 \q_stop :n } + { \use:n } + {#1} + } } +\cs_generate_variant:Nn \__driver_color_select:n { V } +\cs_new:Npn \__driver_convert_model:w #1 ~ #2 \q_stop {#1} +\cs_new:Npn \__driver_color_convert_spot:n #1 + { \__driver_color_convert_spot:w #1 \q_stop } +\cs_new:Npn \__driver_color_convert_spot:w #1 ~ #2 ~ #3 \q_stop + { \c_space_tl #2 } \cs_new_protected:Npn \__driver_color_reset: { \tex_special:D { color~pop } } \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index 8590bc67530..981badea00d 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -22,59 +22,68 @@ \ProvidesExplFile {l3pdfmode.def}{2017/03/18}{} {L3 Experimental driver: PDF mode} +\cs_new_protected:Npn \__driver_color_pickup:N #1 { } \AtBeginDocument { \@ifpackageloaded { color } { - \cs_new_protected:Npn \__driver_color_pickup: + \cs_set_protected:Npn \__driver_color_pickup:N #1 { \exp_last_unbraced:Nx \__driver_color_pickup_aux:w - { \current@color } ~ 0 ~ 0 ~ 0 \q_stop + { \current@color } ~ 0 ~ 0 ~ 0 \q_stop #1 } - \cs_new:Npn \__driver_color_pickup_aux:w #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \q_stop + \cs_new_protected:Npn \__driver_color_pickup_aux:w + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \q_stop #7 { - \tl_set:Nx \l__color_current_tl + \str_if_eq:nnTF {#2} { g } + { \tl_set:Nn #7 { gray ~ #1 } } { - \str_if_eq:nnTF {#2} { g } - { gray ~ #1 } + \str_if_eq:nnTF {#4} { rg } + { \tl_set:Nn #7 { rgb ~ #1 ~ #2 ~ #3 } } { - \str_if_eq:nnTF {#4} { rg } - { rgb ~ #1 ~ #2 ~ #3 } - { - \str_if_eq:nnTF {#5} { k } - { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } - { gray ~ #1 } - } + \str_if_eq:nnTF {#5} { k } + { \tl_set:Nn #7 { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } } + { + \str_if_eq:nnTF {#2} { cs } + { + \tl_set:Nx #7 { spot ~ \use_none:n #1 ~ #5 } + } + { + \tl_set:Nn #7 { gray ~ 0 } + } + } } } } } - { \cs_new_protected:Npn \__driver_color_pickup: { } } + { } } \int_new:N \l__driver_color_stack_int -\cs_new_protected:Npx \__driver_color_ensure_current: +\cs_new_protected:Npx \__driver_color_select:n #1 { - \exp_not:N \__driver_color_pickup: \cs_if_exist:NTF \luatex_pdfextension:D { \luatex_pdfextension:D colorstack } { \pdftex_pdfcolorstack:D } \exp_not:N \l__driver_color_stack_int push { - \exp_not:N \exp_after:wN \exp_not:N \__driver_color_convert:w - \exp_not:N \l__color_current_tl - \c_space_tl 0 ~ 0 ~ 0 + #1 \exp_not:N \q_stop } } -\cs_new:Npn \__driver_color_convert:w #1 ~ - { \use:c { __driver_color_convert_ #1 :w } } -\cs_new:Npn \__driver_color_convert_gray:w #1 ~ #2 \q_stop +\cs_generate_variant:Nn \__driver_color_select:n { V } +\cs_new:Npn \__driver_color_convert:w #1 ~ #2 \q_stop + { \use:c { __driver_color_convert_ #1 :w } #2 \q_stop } +\cs_new:Npn \__driver_color_convert_gray:w #1 \q_stop { #1 ~ g ~ #1 ~ G } -\cs_new:Npn \__driver_color_convert_cmyk:w #1 ~ #2 ~ #3 ~ #4 ~#5 \q_stop - { #1 ~ #2 ~ #3 ~ #4 ~ k ~ #1 ~ #2 ~ #3 ~ #4 ~ K } -\cs_new:Npn \__driver_color_convert_rgb:w #1 ~ #2 ~ #3 ~ #4 \q_stop - { #1 ~ #2 ~ #3 ~ rg ~ #1 ~ #2 ~ #3 ~ RG } +\cs_new:Npn \__driver_color_convert_cmyk:w #1 \q_stop + { #1 ~ k ~ #1 ~ K } +\cs_new:Npn \__driver_color_convert_rgb:w #1 \q_stop + { #1 ~ rg ~ #1 ~ RG } +\cs_new:Npn \__driver_color_convert_spot:w #1 ~ #2 \q_stop + { + /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ sc ~ #2 ~ SC + } \cs_new_protected:Npx \__driver_color_reset: { \cs_if_exist:NTF \luatex_pdfextension:D diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index 31bd085b8b1..228038f2c43 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -22,20 +22,45 @@ \ProvidesExplFile {l3xdvidpfmx.def}{2017/03/18}{} {L3 Experimental driver: xdvipdfmx} +\cs_new_protected:Npn \__driver_color_pickup:N #1 { } \AtBeginDocument { \@ifpackageloaded { color } { - \cs_new_protected:Npn \__driver_color_pickup: - { \tl_set:Nx \l__color_current_tl { \current@color } } + \cs_set_protected:Npn \__driver_color_pickup:N #1 + { + \exp_args:NV \tl_if_head_is_space:nTF \current@color + { + \tl_set:Nx #1 + { + spot ~ + \exp_after:wN \use:n \current@color \c_space_tl 1 + } + } + { \exp_after:wN \__driver_color_pickup_aux:w \current@color \q_stop #1 } + } + \cs_new_protected:Npn \__driver_color_pickup_aux:w #1 ~ #2 \q_stop #3 + { \tl_set:Nn #3 { #1 ~ #2 } } } - { \cs_new_protected:Npn \__driver_color_pickup: { } } + { } } -\cs_new_protected:Npn \__driver_color_ensure_current: +\cs_new_protected:Npn \__driver_color_select:n #1 { - \__driver_color_pickup: - \tex_special:D { color~push~\l__color_current_tl } + \tex_special:D + { + color~push~ + \cs_if_exist_use:cF + { __driver_color_convert_ \__driver_convert_model:w #1 \q_stop :n } + { \use:n } + {#1} + } } +\cs_generate_variant:Nn \__driver_color_select:n { V } +\cs_new:Npn \__driver_convert_model:w #1 ~ #2 \q_stop {#1} +\cs_new:Npn \__driver_color_convert_spot:n #1 + { \__driver_color_convert_spot:w #1 \q_stop } +\cs_new:Npn \__driver_color_convert_spot:w #1 ~ #2 ~ #3 \q_stop + { \c_space_tl #2 } \cs_new_protected:Npn \__driver_color_reset: { \tex_special:D { color~pop } } \cs_new_protected:Npn \__driver_literal:n #1 diff --git a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty index a994028c128..bbac837377c 100644 --- a/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty +++ b/Master/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty @@ -19,8 +19,8 @@ %% and all files in that bundle must be distributed together. %% %% File: l3keys2e.dtx (C) Copyright 2009,2011-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/09/18] -\@ifpackagelater{expl3}{2017/09/18} +\RequirePackage{expl3}[2017/11/14] +\@ifpackagelater{expl3}{2017/11/14} {} {% \PackageError{l3keys2e}{Support package l3kernel too old} @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3keys2e}{2017/09/18}{} +\ProvidesExplPackage{l3keys2e}{2017/11/14}{} {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 542e0ab69ef..00dd9d47c91 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfp/xfp.sty @@ -19,8 +19,8 @@ %% and all files in that bundle must be distributed together. %% %% File: xfp.dtx (C) Copyright 2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/09/18] -\@ifpackagelater{expl3}{2017/09/18} +\RequirePackage{expl3}[2017/11/14] +\@ifpackagelater{expl3}{2017/11/14} {} {% \PackageError{xfp}{Support package l3kernel too old} @@ -33,7 +33,7 @@ \endinput } \RequirePackage{xparse} -\ProvidesExplPackage{xfp}{2017/09/18}{} +\ProvidesExplPackage{xfp}{2017/11/14}{} {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 a14dec2c0e4..0f74a741190 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xfrac/xfrac.sty @@ -20,8 +20,8 @@ %% %% File: xfrac.dtx Copyright (C) 2004, 2008-2010 Morten Hoegholm %% (C) 2011,2012,2014-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/09/18] -\@ifpackagelater{expl3}{2017/09/18} +\RequirePackage{expl3}[2017/11/14] +\@ifpackagelater{expl3}{2017/11/14} {} {% \PackageError{xfrac}{Support package l3kernel too old} @@ -34,7 +34,7 @@ \endinput } \RequirePackage{amstext,graphicx,l3keys2e,textcomp,xparse,xtemplate} -\ProvidesExplPackage{xfrac}{2017/09/18}{} +\ProvidesExplPackage{xfrac}{2017/11/14}{} {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 812f8863e59..b6b5fed0410 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xparse/xparse.sty @@ -23,8 +23,8 @@ %% (C) Copyright 2004-2008 Frank Mittelbach, %% The LaTeX3 Project %% (C) Copyright 2009-2017 The LaTeX3 Project -\RequirePackage{expl3}[2017/09/18] -\@ifpackagelater{expl3}{2017/09/18} +\RequirePackage{expl3}[2017/11/14] +\@ifpackagelater{expl3}{2017/11/14} {} {% \PackageError{xparse}{Support package l3kernel too old} @@ -36,10 +36,8 @@ }% \endinput } -\ProvidesExplPackage{xparse}{2017/09/18}{} +\ProvidesExplPackage{xparse}{2017/11/14}{} {L3 Experimental document command parser} -\tl_const:Nx \c__xparse_no_value_tl - { \char_generate:nn { `\- } { 11 } NoValue- } \tl_new:N \l__xparse_arg_spec_tl \tl_new:N \l__xparse_args_tl \tl_new:N \l__xparse_args_i_tl @@ -290,7 +288,7 @@ { \exp_not:N \exp_not:n { - \__xparse_if_no_value:nTF {#2} + \tl_if_novalue:nTF {#2} { \exp_not:o {#3} } { \exp_not:n { ## #1 } } } @@ -309,7 +307,7 @@ \cs_new_protected:Npn \__xparse_args_process_loop:nn #1#2 { \tl_set:Nn \ProcessedArgument {#1} - \__xparse_if_no_value:nF {#1} + \tl_if_novalue:nF {#1} { \tl_map_function:nN {#2} \__xparse_args_process_aux:n } \tl_put_right:No \l__xparse_args_ii_tl { \exp_after:wN { \ProcessedArgument } } @@ -349,7 +347,7 @@ } \cs_new:Npn \__xparse_end_expandable_defaults:nnw #1#2 { - \__xparse_if_no_value:nTF {#2} + \tl_if_novalue:nTF {#2} { \exp_args:No \__xparse_end_expandable_defaults:nw {#1} } { \__xparse_end_expandable_defaults:nw {#2} } } @@ -425,7 +423,7 @@ \cs_new_protected:Npn \__xparse_normalize_type_s:w { \__xparse_normalize_type_t:w * } } -\exp_args:No \__xparse_tmp:w { \c__xparse_no_value_tl } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } \cs_new_protected:cpn { __xparse_normalize_type_>:w } #1#2 { \quark_if_recursion_tail_stop_do:nn {#2} { \__xparse_bad_arg_spec:wn } @@ -733,7 +731,7 @@ \cs_new_protected:Npn \__xparse_add_type_v:w { \__xparse_flush_m_args: - \exp_args:No \__xparse_add_default:n \c__xparse_no_value_tl + \exp_args:No \__xparse_add_default:n \c_novalue_tl \__xparse_add_grabber_mandatory:N v \__xparse_prepare_signature:N } @@ -782,7 +780,7 @@ } \cs_new_protected:Npn \__xparse_add_default:n #1 { - \__xparse_if_no_value:nTF {#1} + \tl_if_novalue:nTF {#1} { \__xparse_add_default: } { \int_incr:N \l__xparse_current_arg_int @@ -793,7 +791,7 @@ \cs_new_protected:Npn \__xparse_add_default: { \int_incr:N \l__xparse_current_arg_int - \tl_put_right:Nn \l__xparse_defaults_tl { \c__xparse_no_value_tl } + \tl_put_right:Nn \l__xparse_defaults_tl { \c_novalue_tl } } \cs_new_protected:Npn \__xparse_add_default_E:nn #1#2 { @@ -854,7 +852,7 @@ { \exp_not:o \l__xparse_tmpb_tl } { \prg_replicate:nn { \tl_count:n {#1} } - { { \c__xparse_no_value_tl } } + { { \c_novalue_tl } } } } \__xparse_prepare_signature:N @@ -952,7 +950,7 @@ \__xparse_grab_D_aux:NNnN #1#2 {#3} #4 \use:c { peek_meaning_remove #5 :NTF } #1 { \__xparse_grab_D_call:Nw #1 } - { \__xparse_add_arg:o \c__xparse_no_value_tl } + { \__xparse_add_arg:o \c_novalue_tl } } \cs_new_protected:Npn \__xparse_grab_D_aux:NNnN #1#2#3#4 { @@ -1061,7 +1059,7 @@ \tl_map_inline:nn {#1} { \prop_get:NnNF \l__xparse_tmp_prop {####1} \l__xparse_tmpb_tl - { \tl_set_eq:NN \l__xparse_tmpb_tl \c__xparse_no_value_tl } + { \tl_set_eq:NN \l__xparse_tmpb_tl \c_novalue_tl } \tl_put_right:Nx \l__xparse_args_tl { { \exp_not:V \l__xparse_tmpb_tl } } } @@ -1100,7 +1098,7 @@ { \__xparse_add_arg:n {##1} } \use:c { peek_meaning #3 :NTF } \c_group_begin_token { \l__xparse_fn_tl } - { \__xparse_add_arg:o \c__xparse_no_value_tl } + { \__xparse_add_arg:o \c_novalue_tl } } \cs_new_protected:Npn \__xparse_grab_l:w #1 \__xparse_run_code: { \__xparse_grab_l_aux:nN {#1} \cs_set_protected_nopar:Npn } @@ -1199,7 +1197,7 @@ \__msg_kernel_error:nnxx { xparse } { missing-required } { \exp_after:wN \token_to_str:N \l__xparse_fn_tl } { \token_to_str:N #1 } - \__xparse_add_arg:o \c__xparse_no_value_tl + \__xparse_add_arg:o \c_novalue_tl } } \cs_new_protected:Npn \__xparse_grab_t:w @@ -1356,14 +1354,14 @@ { \exp_after:wN \token_to_str:N \l__xparse_fn_tl } { \tl_to_str:N \l__xparse_v_arg_tl } { \tl_to_str:n {#1} } - \__xparse_add_arg:o \c__xparse_no_value_tl + \__xparse_add_arg:o \c_novalue_tl } { \__msg_kernel_error:nnxxx { xparse } { verbatim-tokenized } { \exp_after:wN \token_to_str:N \l__xparse_fn_tl } { \tl_to_str:N \l__xparse_v_arg_tl } { \tl_to_str:n {#1} } - \__xparse_add_arg:o \c__xparse_no_value_tl + \__xparse_add_arg:o \c_novalue_tl } } \cs_new_protected:Npn \__xparse_grab_v_aux_put:N #1 @@ -1403,7 +1401,7 @@ { ##4 {#1} \q__xparse ##5 ##6 {##7} } } } -\exp_args:No \__xparse_tmp:w { \c__xparse_no_value_tl } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } \cs_new:Npn \__xparse_expandable_grab_D:NNNwNNnnn #1#2#3#4 \q__xparse #5#6#7#8#9 { \exp_args:Nof \__xparse_expandable_grab_D:nnNNNwNN @@ -1455,7 +1453,7 @@ { ##3 {#1} \q__xparse ##4 ##5 {##6} } } } -\exp_args:No \__xparse_tmp:w { \c__xparse_no_value_tl } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } \cs_new:Npn \__xparse_expandable_grab_D_alt:NNwn #1#2#3 \q__xparse #4 { \tl_if_blank:oTF { \use_none:n #4 } @@ -1487,7 +1485,7 @@ \quark_if_nil:NTF #4 { \__xparse_expandable_grab_E_end:nnw {#1} {#3} } { - \__xparse_if_no_value:nTF {#8} + \tl_if_novalue:nTF {#8} { \str_if_eq:onTF { #4 { } #1 #5 } {#5} } { \use_ii:nn } { \__xparse_expandable_grab_E_find:w { #2 #4 #5 #6 } {#3} ~ } @@ -1535,7 +1533,7 @@ } } } -\exp_args:No \__xparse_tmp:w { \c__xparse_no_value_tl } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } \cs_new:Npn \__xparse_expandable_grab_R_alt:w #1 \q__xparse #2#3 { #2 { \__xparse_expandable_grab_R_alt_aux:NNnwNn #1 \q__xparse #2#3 } } \cs_set_protected:Npn \__xparse_tmp:w #1 @@ -1561,7 +1559,7 @@ } } } -\exp_args:No \__xparse_tmp:w { \c__xparse_no_value_tl } +\exp_args:No \__xparse_tmp:w { \c_novalue_tl } \cs_new:Npn \__xparse_expandable_grab_t:w #1 \q__xparse #2#3 { #2 { \__xparse_expandable_grab_t_aux:NNwn #1 \q__xparse #2 #3 } } \cs_new:Npn \__xparse_expandable_grab_t_aux:NNwn #1#2#3 \q__xparse #4#5#6 @@ -1644,7 +1642,7 @@ \tl_put_right:Nx \ProcessedArgument { \prg_replicate:nn { #2 + 1 - (#1) } - { { \exp_not:V \c__xparse_no_value_tl } } + { { \exp_not:V \c_novalue_tl } } } } } @@ -1718,23 +1716,6 @@ { \tl_show:N \ArgumentSpecification } { \__xparse_get_arg_spec_error:n {#1} } } -\use:x - { - \prg_new_conditional:Npnn \exp_not:N \__xparse_if_no_value:n ##1 - { T , F , TF } - { - \exp_not:N \str_if_eq:onTF - { - \exp_not:N \__xparse_if_value_aux:w ? ##1 { } - \c__xparse_no_value_tl - } - { ? { } \c__xparse_no_value_tl } - { \exp_not:N \prg_return_true: } - { \exp_not:N \prg_return_false: } - } - \cs_new:Npn \exp_not:N \__xparse_if_value_aux:w ##1 \c__xparse_no_value_tl - {##1} - } \cs_new_protected:Npn \__xparse_check_definable:nNT #1 { \exp_args:Nx \__xparse_check_definable_aux:nN { \tl_trim_spaces:n {#1} } } \group_begin: @@ -2131,12 +2112,12 @@ \cs_new_eq:NN \IfBooleanTF \bool_if:NTF \cs_new_eq:NN \IfBooleanT \bool_if:NT \cs_new_eq:NN \IfBooleanF \bool_if:NF -\cs_new_eq:NN \IfNoValueF \__xparse_if_no_value:nF -\cs_new_eq:NN \IfNoValueT \__xparse_if_no_value:nT -\cs_new_eq:NN \IfNoValueTF \__xparse_if_no_value:nTF -\cs_new:Npn \IfValueF { \__xparse_if_no_value:nT } -\cs_new:Npn \IfValueT { \__xparse_if_no_value:nF } -\cs_new:Npn \IfValueTF #1#2#3 { \__xparse_if_no_value:nTF {#1} {#3} {#2} } +\cs_new_eq:NN \IfNoValueF \tl_if_novalue:nF +\cs_new_eq:NN \IfNoValueT \tl_if_novalue:nT +\cs_new_eq:NN \IfNoValueTF \tl_if_novalue:nTF +\cs_new:Npn \IfValueF { \tl_if_novalue:nT } +\cs_new:Npn \IfValueT { \tl_if_novalue:nF } +\cs_new:Npn \IfValueTF #1#2#3 { \tl_if_novalue:nTF {#1} {#3} {#2} } \tl_new:N \ProcessedArgument \cs_new_eq:NN \ReverseBoolean \__xparse_bool_reverse:N \cs_new_eq:NN \SplitArgument \__xparse_split_argument:nnn diff --git a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty index 897feae9d8a..5da4faae5da 100644 --- a/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty +++ b/Master/texmf-dist/tex/latex/l3packages/xtemplate/xtemplate.sty @@ -23,8 +23,8 @@ %% (C) Copyright 2004-2010 Frank Mittelbach, %% The LaTeX3 Project %% (C) Copyright 2011-2016 The LaTeX3 Project -\RequirePackage{expl3}[2017/09/18] -\@ifpackagelater{expl3}{2017/09/18} +\RequirePackage{expl3}[2017/11/14] +\@ifpackagelater{expl3}{2017/11/14} {} {% \PackageError{xtemplate}{Support package l3kernel too old} @@ -36,7 +36,7 @@ }% \endinput } -\ProvidesExplPackage{xtemplate}{2017/09/18}{} +\ProvidesExplPackage{xtemplate}{2017/11/14}{} {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~>~ } |