diff options
author | Karl Berry <karl@freefriends.org> | 2019-08-26 21:05:47 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-08-26 21:05:47 +0000 |
commit | bfd55e1fa306b0e1c0db5fc689fb45b81d5da0c8 (patch) | |
tree | 7abd27cdb5a328a0ba00c48698439588ec5edab8 /Master/texmf-dist/tex | |
parent | 69257bb16c7433813887ca515263e76c85c6c0e9 (diff) |
l3 (26aug19)
git-svn-id: svn://tug.org/texlive/trunk@51962 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
16 files changed, 220 insertions, 162 deletions
diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def index 3614e4f9437..d69ffae6bf7 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-dvipdfmx.def @@ -462,7 +462,7 @@ \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { g__pdf_backend_object_ \tl_to_str:n {#1} _int } } + { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } \cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 { \exp_args:Nx \__pdf_backend_object_write:nnn @@ -627,15 +627,15 @@ \bool_if:nF {#1} { \__kernel_backend_literal:n { dvipdfmx:config~C~0x40 } } } -\cs_new_protected:Npn \__pdf_backend_version_major:n #1 +\cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1 { \cs_gset:Npx \__pdf_backend_version_major: { \int_eval:n {#1} } - \__kernel_backend_literal:x { pdf:majorversion \__pdf_backend_version_major: } + \__kernel_backend_literal:x { pdf:majorversion~ \__pdf_backend_version_major: } } -\cs_new_protected:Npn \__pdf_backend_version_minor:n #1 +\cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1 { \cs_gset:Npx \__pdf_backend_version_minor: { \int_eval:n {#1} } - \__kernel_backend_literal:x { pdf:minorversion \__pdf_backend_version_minor: } + \__kernel_backend_literal:x { pdf:minorversion~ \__pdf_backend_version_minor: } } \cs_new:Npn \__pdf_backend_version_major: { 1 } \cs_new:Npn \__pdf_backend_version_minor: { 5 } diff --git a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def index 2a4fee00222..b89b0625e46 100644 --- a/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3backend/l3backend-xdvipdfmx.def @@ -508,7 +508,7 @@ \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 - { @pdf.obj \int_use:c { g__pdf_backend_object_ \tl_to_str:n {#1} _int } } + { @pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } \cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 { \exp_args:Nx \__pdf_backend_object_write:nnn @@ -673,15 +673,15 @@ \bool_if:nF {#1} { \__kernel_backend_literal:n { dvipdfmx:config~C~0x40 } } } -\cs_new_protected:Npn \__pdf_backend_version_major:n #1 +\cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1 { \cs_gset:Npx \__pdf_backend_version_major: { \int_eval:n {#1} } - \__kernel_backend_literal:x { pdf:majorversion \__pdf_backend_version_major: } + \__kernel_backend_literal:x { pdf:majorversion~ \__pdf_backend_version_major: } } -\cs_new_protected:Npn \__pdf_backend_version_minor:n #1 +\cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1 { \cs_gset:Npx \__pdf_backend_version_minor: { \int_eval:n {#1} } - \__kernel_backend_literal:x { pdf:minorversion \__pdf_backend_version_minor: } + \__kernel_backend_literal:x { pdf:minorversion~ \__pdf_backend_version_minor: } } \cs_new:Npn \__pdf_backend_version_major: { 1 } \cs_new:Npn \__pdf_backend_version_minor: { 5 } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty index 8bd62620334..775b61d6fba 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3benchmark/l3benchmark.sty @@ -20,7 +20,7 @@ %% %% File: l3benchmark.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3benchmark}{2019-07-01}{} +\ProvidesExplPackage{l3benchmark}{2019-08-25}{} {L3 Experimental benchmarking} \sys_if_engine_luatex:TF { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty index cffe3a07e4d..cafae3fb78c 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3cctab/l3cctab.sty @@ -20,7 +20,7 @@ %% %% File: l3cctab.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3cctab}{2019-07-01}{} +\ProvidesExplPackage{l3cctab}{2019-08-25}{} {L3 Experimental category code tables} \int_new:N \g__cctab_allocate_int \int_gset:Nn \g__cctab_allocate_int { -1 } @@ -68,7 +68,7 @@ } \cs_new_protected:Npn \cctab_new:N #1 { - \int_gadd:Nn \g__cctab_allocate_int { 1 } + \int_gadd:Nn \g__cctab_allocate_int { 2 } \int_const:Nn #1 { \g__cctab_allocate_int } \intarray_new:cn { g__cctab_ \int_use:N #1 _cctab } { 256 } \int_step_inline:nn { 256 } @@ -89,7 +89,7 @@ } \cs_new_protected:Npn \cctab_begin:N #1 { - \int_gadd:Nn \g__cctab_stack_int { 1 } + \int_gadd:Nn \g__cctab_stack_int { 2 } \int_compare:nNnT \g__cctab_stack_int > \c_max_register_int { \__kernel_msg_fatal:nn { kernel } { cctab-stack-full } } \cs_if_exist:cF { g__cctab_ \int_use:N \g__cctab_stack_int _cctab } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty index 8450eb9e1ee..2af48f55f15 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty @@ -20,7 +20,7 @@ %% %% File: l3color.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3color}{2019-07-01}{} +\ProvidesExplPackage{l3color}{2019-08-25}{} {L3 Experimental color support} \tl_new:N \l__color_internal_tl \prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty index 5b152e2b9b3..b91028c3d68 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty @@ -28,7 +28,7 @@ %% %% File: l3draw.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3draw}{2019-07-01}{} +\ProvidesExplPackage{l3draw}{2019-08-25}{} {L3 Experimental core drawing support} \RequirePackage { l3color } %% File: l3draw-boxes.dtx @@ -440,23 +440,23 @@ { \__draw_path_arc_auxiii:nn } { \__draw_point_transform_noshift:n - { \draw_point_polar:nnn { #1 #4 90 } {#7} {#8} } + { \draw_point_polar:nnn {#7} {#8} { #1 #4 90 } } } \__draw_point_process:nnn { \__draw_path_arc_auxiv:nnnn } { \draw_point_transform:n - { \draw_point_polar:nnn {#1} {#5} {#6} } + { \draw_point_polar:nnn {#5} {#6} {#1} } } { \draw_point_transform:n - { \draw_point_polar:nnn {#2} {#5} {#6} } + { \draw_point_polar:nnn {#5} {#6} {#2} } } \__draw_point_process:nn { \__draw_path_arc_auxv:nn } { \__draw_point_transform_noshift:n - { \draw_point_polar:nnn { #2 #4 -90 } {#7} {#8} } + { \draw_point_polar:nnn {#7} {#8} { #2 #4 -90 } } } \exp_after:wN \__draw_path_curveto:nnnnnn \l__draw_path_tmp_tl \fp_set:Nn \l__draw_path_arc_delta_fp { abs ( #2 - #3 ) } @@ -854,9 +854,9 @@ \cs_generate_variant:Nn \__draw_point_to_dim_aux:n { f } \cs_new:Npn \__draw_point_to_dim_aux:w ( #1 , ~ #2 ) { #1pt , #2pt } \cs_new:Npn \draw_point_polar:nn #1#2 - { \draw_point_polar:nnn {#1} {#2} {#2} } + { \draw_point_polar:nnn {#1} {#1} {#2} } \cs_new:Npn \draw_point_polar:nnn #1#2#3 - { \__draw_draw_polar:fnn { \fp_eval:n {#1} } {#2} {#3} } + { \__draw_draw_polar:fnn { \fp_eval:n {#3} } {#1} {#2} } \cs_new:Npn \__draw_draw_polar:nnn #1#2#3 { \__draw_point_to_dim:n { cosd(#1) * (#2) , sind(#1) * (#3) } } \cs_generate_variant:Nn \__draw_draw_polar:nnn { f } @@ -864,8 +864,18 @@ { \__draw_point_process:nn { \__draw_point_unit_vector:nn } {#1} } \cs_new:Npn \__draw_point_unit_vector:nn #1#2 { - \__draw_point_to_dim:n - { ( #1 , #2 ) / (sqrt(#1 * #1 + #2 * #2)) } + \exp_args:Nf \__draw_point_unit_vector:nnn + { \fp_eval:n { (sqrt(#1 * #1 + #2 * #2)) } } + {#1} {#2} + } +\cs_new:Npn \__draw_point_unit_vector:nnn #1#2#3 + { + \fp_compare:nNnTF {#1} = \c_zero_fp + { 0pt, 1pt } + { + \__draw_point_to_dim:n + { ( #2 , #3 ) / #1 } + } } \cs_new:Npn \draw_point_intersect_lines:nnnn #1#2#3#4 { @@ -1129,9 +1139,9 @@ } \cs_generate_variant:Nn \__draw_point_vec:nnn { fff } \cs_new:Npn \draw_point_vec_polar:nn #1#2 - { \draw_point_vec_polar:nnn {#1} {#2} {#2} } + { \draw_point_vec_polar:nnn {#1} {#1} {#2} } \cs_new:Npn \draw_point_vec_polar:nnn #1#2#3 - { \__draw_draw_vec_polar:fnn { \fp_eval:n {#1} } {#2} {#3} } + { \__draw_draw_vec_polar:fnn { \fp_eval:n {#3} } {#1} {#2} } \cs_new:Npn \__draw_draw_vec_polar:nnn #1#2#3 { \__draw_point_to_dim:n @@ -1514,8 +1524,9 @@ { \token_if_eq_meaning_p:NN #4 \__draw_softpath_close_op:nn } } { - \__draw_softpath_round_calc:nnnNnn - \__draw_softpath_round_loop:Nnn {#5} {#6} + \__draw_softpath_round_calc:NnnNnn + \__draw_softpath_round_loop:Nnn + {#5} {#6} } { \token_if_eq_meaning:NNTF #4 \__draw_softpath_roundpoint_op:nn @@ -1528,12 +1539,13 @@ \cs_new_protected:Npn \__draw_softpath_round_roundpoint:NnnNnnNnn #1#2#3#4#5#6#7#8#9 { - \__draw_softpath_round_calc:nnnNnn + \__draw_softpath_round_calc:NnnNnn \__draw_softpath_round_loop:Nnn - {#8} {#9} #1 {#2} {#3} + {#8} {#9} + #1 {#2} {#3} #4 {#5} {#6} #7 {#8} {#9} } -\cs_new_protected:Npn \__draw_softpath_round_calc:nnnNnn #1#2#3#4#5#6 +\cs_new_protected:Npn \__draw_softpath_round_calc:NnnNnn #1#2#3#4#5#6 { \tl_set:Nx \l__draw_softpath_curve_end_tl { @@ -1596,7 +1608,7 @@ { \use:x { - \__draw_softpath_round_calc:nnnNnn + \__draw_softpath_round_calc:NnnNnn { \tl_set:Nx \exp_not:N \l__draw_softpath_move_tl { diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty index 1e171d1d2ee..656410d8554 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3graphics/l3graphics.sty @@ -20,7 +20,7 @@ %% %% File: l3graphics.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3graphics}{2019-07-01}{} +\ProvidesExplPackage{l3graphics}{2019-08-25}{} {L3 Experimental graphics inclusion support} \ior_new:N \l__graphics_tmp_ior \tl_new:N \l__graphics_tmp_tl diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty b/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty index f2d48731832..90852e95139 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3pdf/l3pdf.sty @@ -20,7 +20,7 @@ %% %% File: l3pdf.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3pdf}{2019-07-01}{} +\ProvidesExplPackage{l3pdf}{2019-08-25}{} {L3 Experimental core PDF support} \bool_new:N \g__pdf_init_bool \cs_if_exist:NT \documentclass diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty index 554ebefd793..caa70c099ae 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty @@ -20,7 +20,7 @@ %% %% File: l3str-format.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3str-format}{2019-07-01}{} +\ProvidesExplPackage{l3str-format}{2019-08-25}{} {L3 Experimental string formatting} \cs_generate_variant:Nn \use:nn { nf } \cs_generate_variant:Nn \use:nnn { fnf } @@ -286,23 +286,23 @@ {#3} #5 } \cs_new:Npn \fp_format:nn #1 - { \exp_args:Nf \__str_format_fp:nn { \__fp_parse:n {#1} } } + { \exp_args:Nf \__str_format_fp:nn { \fp_to_tl:n {#1} } } \cs_new:Npn \__str_format_fp:nn #1#2 { \tl_to_str:f { - \exp_last_unbraced:Nf \__str_format_fp:NNNnnNw + \exp_last_unbraced:Nf \__str_format_fp:NNNnnNn { \__str_format_parse:n {#2} } - #1 + {#1} } } -\cs_new:Npn \__str_format_fp:NNNnnNw - #1#2#3#4#5#6 \s__fp \__fp_chk:w #7 #8 +\cs_new:Npn \__str_format_fp:NNNnnNn + #1#2#3#4#5#6#7 { \token_if_eq_charcode:NNTF #2 ? { \__str_format_put:nw { #1 > } } { \__str_format_put:nw { #1 #2 } } - \token_if_eq_meaning:NNTF 2 #8 + \tl_if_head_eq_charcode:nNTF {#7} - { \__str_format_put:nw { - } } { \str_case:nnF {#3} @@ -314,123 +314,128 @@ } \__str_format_put:nw { {#4} } \tl_if_empty:nTF {#5} - { \__str_format_put:nw { { 6} } } + { + \token_if_eq_meaning:NNTF #6 ? + { \__str_format_put:nw { { } } } + { \__str_format_put:nw { { 6} } } + } { \__str_format_put:nw { {#5} } } \str_case:nnF {#6} { - { e } { \__str_format_fp:wnnnNNw \__str_format_fp_e:wn } - { f } { \__str_format_fp:wnnnNNw \__str_format_fp_f:wn } - { g } { \__str_format_fp:wnnnNNw \__str_format_fp_g:wn } - { ? } { \__str_format_fp:wnnnNNw \__str_format_fp_g:wn } + { e } { \__str_format_fp:wnnnNNn \__str_format_fp_e:nn } + { f } { \__str_format_fp:wnnnNNn \__str_format_fp_f:nn } + { g } { \__str_format_fp:wnnnNNn \__str_format_fp_g:nn } + { ? } { \__str_format_fp:wnnnNNn \__str_format_fp_g:nn } } { \__kernel_msg_expandable_error:nnnn { str } { invalid-style-format } {#6} { fp } - \__str_format_fp:wnnnNNw \__str_format_fp_g:wn + \__str_format_fp:wnnnNNn \__str_format_fp_g:nn } - \s_stop - \s__fp \__fp_chk:w #7 #8 + \s_stop {#7} } -\cs_new:Npn \__str_format_fp:wnnnNNw - #1 \s_stop #2 #3 #4 #5#6 #7 ; +\cs_new:Npn \__str_format_fp:wnnnNNn + #1 \s_stop #2 #3 #4 #5#6 #7 { \exp_args:Nc \exp_args:Nf { __str_format_align_#6:nnnN } - { #1 #7 ; {#2} } + { #1 {#7} {#2} } {#4} {#3} #5 } -\cs_new:Npn \__str_format_fp_round:wn #1 ; #2 - { \__fp_parse:n { round ( #1; , #2 - \__fp_exponent:w #1; ) } } -\cs_new:Npn \__str_format_fp_e:wn \s__fp \__fp_chk:w #1#2#3 ; #4 +\cs_new:Npn \__str_format_fp_round:nn #1 #2 + { \fp_to_tl:n { abs ( round ( #1 , #2 - logb(#1) - 1 ) ) } } +\cs_new:Npn \__str_format_fp_e:nn #1#2 + { + \exp_args:Nf \__str_format_fp_e_aux:nn + { \__str_format_fp_round:nn {#1} { #2 + 1 } } + {#2} + } +\cs_new:Npn \__str_format_fp_e_aux:nn #1#2 { - \int_case:nnF {#1} + \str_case:nnF {#1} { - { 0 } { \use:nf { 0 . } { \prg_replicate:nn {#4} { 0 } } e 0 } - { 2 } { inf } - { 3 } { nan } + { inf } { inf } + { nan } { nan } } { - \exp_last_unbraced:Nf \__str_format_fp_e_aux:wn - { \__str_format_fp_round:wn \s__fp \__fp_chk:w #1#2#3 ; { #4 + 1 } } - {#4} + \exp_last_unbraced:Nf \__str_format_fp_e_aux:wwn + { \fp_to_scientific:n {#1} } ; + {#2} } } -\cs_new:Npn \__str_format_fp_e_aux:wn - \s__fp \__fp_chk:w #1#2 #3 #4#5#6#7 ; #8 +\cs_new:Npn \__str_format_fp_e_aux:wwn #1 . #2 e #3 ; #4 { - \__str_format_put:fw { \int_eval:n { #3 - 1 } } - \__str_format_put:nw { e } - \int_compare:nNnTF {#8} > \c__fp_prec_int + \__str_format_put:nw { e #3 } + \int_compare:nNnTF {#4} < \c__fp_prec_int { - \__str_format_put:fw { \prg_replicate:nn { #8 - \c__fp_prec_int + 1 } {0} } - \__str_format_put:fw { \use_none:n #4#5#6#7 } + \__str_format_put:fw { \str_range:nnn { #2 } { 1 } { #4 } } + \__str_format_put:nw { #1 . } } { \__str_format_put:fw - { \str_range:nnn { #4#5#6#7 0 } { 2 } { #8 + 1 } } + { \prg_replicate:nn { #4 - \c__fp_prec_int + 1 } { 0 } } + \__str_format_put:nw { #1 . #2 } } - \__str_format_put:fw { \use_i:nnnn #4 . } \use_none:n \s_stop } -\cs_new:Npn \__str_format_fp_f:wn \s__fp \__fp_chk:w #1#2#3 ; #4 +\cs_new:Npn \__str_format_fp_f:nn #1#2 + { + \exp_args:Nf \__str_format_fp_f_aux:nn + { \fp_to_tl:n { abs ( round ( #1 , #2 ) ) } } + {#2} + } +\cs_new:Npn \__str_format_fp_f_aux:nn #1#2 { - \int_case:nnF {#1} + \str_case:nnF {#1} { - {0} { \use:nf { 0 . } { \prg_replicate:nn {#4} { 0 } } } - {2} { inf } - {3} { nan } + { inf } { inf } + { nan } { nan } } { \exp_last_unbraced:Nf \__str_format_fp_f_aux:wwwn - { - \fp_to_decimal:n - { abs ( round ( \s__fp \__fp_chk:w #1#2#3 ; , #4 ) ) } - } - . . ; - {#4} + { \fp_to_decimal:n {#1} } . . ; {#2} } } \cs_new:Npn \__str_format_fp_f_aux:wwwn #1 . #2 . #3 ; #4 { - \use:nf - { #1 . #2 } + \use:nf { #1 . #2 } { \prg_replicate:nn { #4 - \__str_count:n {#2} } {0} } } -\cs_new:Npn \__str_format_fp_g:wn \s__fp \__fp_chk:w #1#2 ; #3 +\cs_new:Npn \__str_format_fp_g:nn #1#2 { - \int_case:nnF {#1} + \tl_if_empty:nTF {#2} { \fp_to_tl:n { abs(#1) } } { - {0} { 0 } - {2} { inf } - {3} { nan } - } - { - \exp_last_unbraced:Nf \__str_format_fp_g_aux:wn - { - \__str_format_fp_round:wn \s__fp \__fp_chk:w #1#2 ; - { \int_max:nn {1} {#3} } - } - { \int_max:nn {1} {#3} } + \exp_args:Nf \__str_format_fp_g_aux:nn + { \__str_format_fp_round:nn {#1} { \int_max:nn {1} {#2} } } + { \int_max:nn {1} {#2} } } } -\cs_new:Npn \__str_format_fp_g_aux:wn #1; #2 +\cs_new:Npn \__str_format_fp_g_aux:nn #1#2 { - \int_compare:nNnTF { \__fp_exponent:w #1; } < { -3 } - { \__str_format_to_scientific:n } + \str_case:nnF {#1} + { + { 0 } { 0 } + { inf } { inf } + { nan } { nan } + } { - \int_compare:nNnTF { \__fp_exponent:w #1; } > {#2} - { \__str_format_to_scientific:n } - { \fp_to_decimal:n } + \fp_compare:nTF { 1e-4 <= #1 < 1e#2 } + { \fp_to_decimal:n {#1} } + { + \exp_last_unbraced:Nf \__str_format_fp_trim:w + { \fp_to_scientific:n {#1} } + } } - { \__fp_set_sign_o:w 0 #1; @ \prg_do_nothing: } } -\cs_new:Npn \__str_format_to_scientific:n +\cs_new:Npn \__str_format_fp_trim:w #1 e { - \exp_after:wN \__str_format_fp_trim:w - \exp:w \exp_end_continue_f:w \fp_to_scientific:n + \__str_format_fp_trim_loop:w #1 + ; \__str_format_fp_trim_loop:w 0; \__str_format_fp_trim_dot:w .; \s_stop e } -\cs_new:Npn \__str_format_fp_trim:w #1 e { \__fp_trim_zeros:w #1 ; e } +\cs_new:Npn \__str_format_fp_trim_loop:w #1 0; #2 { #2 #1 ; #2 } +\cs_new:Npn \__str_format_fp_trim_dot:w #1 .; { \__str_format_fp_trim_end:w #1 ; } +\cs_new:Npn \__str_format_fp_trim_end:w #1 ; #2 \s_stop { #1 } \__kernel_msg_new:nnn { str } { invalid-format } { Invalid~format~'#1'. } \__kernel_msg_new:nnn { str } { invalid-align-format } diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty index 8faf0a47e3e..18b14319662 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/l3sys-shell/l3sys-shell.sty @@ -20,7 +20,7 @@ %% %% File: l3sys-shell.dtx \RequirePackage{expl3} -\ProvidesExplPackage{l3sys-shell}{2019-07-01}{} +\ProvidesExplPackage{l3sys-shell}{2019-08-25}{} {L3 Experimental system shell functions} \cs_new:Npn \__sys_path_to_win:n #1 { @@ -145,6 +145,7 @@ \char_set_catcode_other:N \exp_not:N \~ \char_set_catcode_other:N \exp_not:N \% \char_set_catcode_space:N \exp_not:N \ % + \tex_endlinechar:D -1 \scan_stop: } \exp_not:N \l__sys_tmp_tl \str_set:NV #1 \exp_not:N \l__sys_tmp_tl diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty index 7d5cc5f41ad..29ec2eea2a8 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty @@ -20,7 +20,7 @@ %% %% File: xcoffins.dtx \RequirePackage{xparse} -\ProvidesExplPackage{xcoffins}{2019-07-01}{} +\ProvidesExplPackage{xcoffins}{2019-08-25}{} {L3 Experimental design level coffins} \keys_define:nn { coffin } { diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty index a1d11afafd0..7fd199e0207 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty @@ -32,7 +32,7 @@ }% \endinput } -\ProvidesExplPackage{l3galley}{2019-07-01}{} +\ProvidesExplPackage{l3galley}{2019-08-25}{} {L3 Experimental galley code} \int_new:N \l__galley_tmp_int \seq_new:N \g__galley_tmpa_seq diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty index e0b6277744e..79506e9cda8 100644 --- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty +++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty @@ -20,7 +20,7 @@ %% %% File: xgalley.dtx \RequirePackage{xparse} -\ProvidesExplPackage{xgalley}{2019-07-01}{} +\ProvidesExplPackage{xgalley}{2019-08-25}{} {L3 Experimental galley} \RequirePackage{xparse,xtemplate,l3galley} \clist_new:N \l__galley_tmpa_clist diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 3f68d30e8b9..85d7a37dc7f 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -65,7 +65,7 @@ %% and all files in that bundle must be distributed together. %% %% File: expl3.dtx -\def\ExplFileDate{2019-08-14}% +\def\ExplFileDate{2019-08-25}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -4264,22 +4264,21 @@ \cs_generate_variant:Nn \tl_gput_right:No { c } \cs_generate_variant:Nn \tl_gput_right:Nx { c } \tl_const:Nx \c__tl_rescan_marker_tl { : \token_to_str:N : } -\cs_new_protected:Npn \tl_set_rescan:Nnn - { \__tl_set_rescan:NNnn \tl_set:No } -\cs_new_protected:Npn \tl_gset_rescan:Nnn - { \__tl_set_rescan:NNnn \tl_gset:No } \cs_new_protected:Npn \tl_rescan:nn #1#2 { \tl_set_rescan:Nnn \l__tl_internal_a_tl {#1} {#2} \exp_after:wN \tl_clear:N \exp_after:wN \l__tl_internal_a_tl \l__tl_internal_a_tl } +\cs_new_protected:Npn \tl_set_rescan:Nnn + { \__tl_set_rescan:NNnn \tl_set:No } +\cs_new_protected:Npn \tl_gset_rescan:Nnn + { \__tl_set_rescan:NNnn \tl_gset:No } \cs_new_protected:Npn \__tl_set_rescan:NNnn #1#2#3#4 { \group_begin: \if_false: { \fi: \int_set_eq:NN \tex_tracingnesting:D \c_zero_int - \exp_args:No \tex_everyeof:D { \c__tl_rescan_marker_tl } \int_compare:nNnT \tex_endlinechar:D = { 32 } { \int_set:Nn \tex_endlinechar:D { -1 } } \int_set_eq:NN \tex_newlinechar:D \tex_endlinechar:D @@ -4289,6 +4288,7 @@ } \cs_new_protected:Npn \__tl_set_rescan_multi:nNN #1#2#3 { + \exp_args:No \tex_everyeof:D { \c__tl_rescan_marker_tl } \exp_after:wN \__tl_rescan:NNw \exp_after:wN #2 \exp_after:wN #3 @@ -4325,7 +4325,8 @@ \int_compare:nNnTF { \char_value_catcode:n {#1} / 2 } = 6 { - \exp_args:Nf \__tl_set_rescan_single_aux:nnNN + \exp_args:Nof \__tl_set_rescan_single_aux:nnnNN + \c__tl_rescan_marker_tl { \char_generate:nn {#1} { \char_value_catcode:n {#1} } } } { @@ -4337,20 +4338,28 @@ { \__tl_set_rescan_multi:nNN } } } -\cs_new_protected:Npn \__tl_set_rescan_single_aux:nnNN #1#2#3#4 +\cs_new_protected:Npn \__tl_set_rescan_single_aux:nnnNN #1#2#3#4#5 { - \exp_args:Nno \use:nn - { \cs_set:Npn \__tl_rescan:NNw ##1##2##3 #1 } - \c__tl_rescan_marker_tl + \tex_everyeof:D + { + #1 \use_none:n + #2 #1 { \exp:w \__tl_set_rescan_single_aux:w } + \q_stop + } + \cs_set:Npn \__tl_rescan:NNw ##1##2##3 #2 #1 ##4 ##5 \q_stop { \group_end: - ##1 ##2 { \use_none:n ##3 } + ##1 ##2 { ##4 ##3 } } \exp_after:wN \__tl_rescan:NNw - \exp_after:wN #3 \exp_after:wN #4 - \tex_scantokens:D { #1 #2 #1 } + \exp_after:wN #5 + \tex_scantokens:D { #2 #3 #2 } } +\exp_args:Nno \use:nn + { \cs_new:Npn \__tl_set_rescan_single_aux:w #1 } + \c__tl_rescan_marker_tl #2 + { \use_i:nn \exp_end: #1 } \cs_new_protected:Npn \tl_replace_once:Nnn { \__tl_replace:NnNNNnn \q_mark ? \__tl_replace_wrap:w \tl_set:Nx } \cs_new_protected:Npn \tl_greplace_once:Nnn @@ -4631,8 +4640,8 @@ { \exp_args:No \tl_map_variable:nNn } \cs_new_protected:Npn \__tl_map_variable:Nnn #1#2#3 { + \quark_if_recursion_tail_break:nN {#3} \tl_map_break: \tl_set:Nn #1 {#3} - \quark_if_recursion_tail_break:NN #1 \tl_map_break: \use:n {#2} \__tl_map_variable:Nnn #1 {#2} } @@ -8166,8 +8175,8 @@ } \cs_new_protected:Npn \__clist_map_variable:Nnw #1#2#3, { + \quark_if_recursion_tail_stop:n {#3} \tl_set:Nn #1 {#3} - \quark_if_recursion_tail_stop:N #1 \use:n {#2} \__clist_map_variable:Nnw #1 {#2} } @@ -9062,55 +9071,63 @@ \prop_new:N \l_tmpb_prop \prop_new:N \g_tmpa_prop \prop_new:N \g_tmpb_prop +\prop_new:N \l__prop_internal_prop \cs_new_protected:Npn \prop_set_from_keyval:Nn #1#2 - { \tl_set:Nx #1 { \__prop_from_keyval:n {#2} } } + { + \prop_clear:N \l__prop_internal_prop + \__prop_from_keyval:n {#2} + \prop_set_eq:NN #1 \l__prop_internal_prop + \prop_clear:N \l__prop_internal_prop + } \cs_generate_variant:Nn \prop_set_from_keyval:Nn { c } \cs_new_protected:Npn \prop_gset_from_keyval:Nn #1#2 - { \tl_gset:Nx #1 { \__prop_from_keyval:n {#2} } } + { + \prop_clear:N \l__prop_internal_prop + \__prop_from_keyval:n {#2} + \prop_gset_eq:NN #1 \l__prop_internal_prop + \prop_clear:N \l__prop_internal_prop + } \cs_generate_variant:Nn \prop_gset_from_keyval:Nn { c } \cs_new_protected:Npn \prop_const_from_keyval:Nn #1#2 - { \tl_const:Nx #1 { \__prop_from_keyval:n {#2} } } + { + \prop_clear:N \l__prop_internal_prop + \__prop_from_keyval:n {#2} + \tl_const:Nx #1 { \exp_not:o \l__prop_internal_prop } + \prop_clear:N \l__prop_internal_prop + } \cs_generate_variant:Nn \prop_const_from_keyval:Nn { c } -\cs_new:Npn \__prop_from_keyval:n #1 +\cs_new_protected:Npn \__prop_from_keyval:n #1 { - \s__prop - \__prop_from_keyval_loop:w \q_mark #1 , + \__prop_from_keyval_loop:w \prg_do_nothing: #1 , \q_recursion_tail , \q_recursion_stop } -\cs_new:Npn \__prop_from_keyval_loop:w #1 , +\cs_new_protected:Npn \__prop_from_keyval_loop:w #1 , { - \quark_if_recursion_tail_stop:o { \use_none:n #1 } + \quark_if_recursion_tail_stop:o {#1} \__prop_from_keyval_split:Nw \__prop_from_keyval_key:n - #1 = = \q_stop { \use_none:n #1 } - \__prop_from_keyval_loop:w \q_mark + #1 = = \q_stop {#1} + \__prop_from_keyval_loop:w \prg_do_nothing: } -\cs_new:Npn \__prop_from_keyval_split:Nw #1#2 = - { - \tl_trim_spaces_apply:oN { \use_none:n #2 } #1 - \q_nil - } -\cs_new:Npn \__prop_from_keyval_key:n #1 - { \__prop_from_keyval_key:w #1 } -\cs_new:Npn \__prop_from_keyval_key:w #1 \q_nil #2 \q_stop +\cs_new_protected:Npn \__prop_from_keyval_split:Nw #1#2 = + { \tl_trim_spaces_apply:oN {#2} #1 } +\cs_new_protected:Npn \__prop_from_keyval_key:n #1 + { \__prop_from_keyval_key:w #1 \q_nil } +\cs_new_protected:Npn \__prop_from_keyval_key:w #1 \q_nil #2 \q_stop { \__prop_from_keyval_split:Nw \__prop_from_keyval_value:n - \q_mark #2 \q_stop {#1} + \prg_do_nothing: #2 \q_stop {#1} } -\cs_new:Npn \__prop_from_keyval_value:n #1 - { \__prop_from_keyval_value:w #1 } -\cs_new:Npn \__prop_from_keyval_value:w #1 \q_nil #2 \q_stop #3#4 +\cs_new_protected:Npn \__prop_from_keyval_value:n #1 + { \__prop_from_keyval_value:w #1 \q_nil } +\cs_new_protected:Npn \__prop_from_keyval_value:w #1 \q_nil #2 \q_stop #3#4 { \tl_if_empty:nF { #3 #1 #2 } { \str_if_eq:nnTF {#2} { = } + { \prop_put:Nnn \l__prop_internal_prop {#3} {#1} } { - \exp_not:N \__prop_pair:wn \tl_to_str:n {#3} - \s__prop { \exp_not:n {#1} } - } - { - \__kernel_msg_expandable_error:nnf - { kernel } { prop-keyval } - { \exp_after:wN \exp_stop_f: #4 } + \__kernel_msg_error:nnx { kernel } { prop-keyval } + { \exp_not:o {#4} } } } } @@ -13393,6 +13410,13 @@ } \cs_new:Npn \__fp_neg_sign:N #1 { \__fp_int_eval:w 2 - #1 \__fp_int_eval_end: } +\cs_new:Npn \__fp_kind:w #1 + { + \__fp_if_type_fp:NTwFw + #1 \__fp_use_ii_until_s:nnw + \s__fp { \__fp_use_i_until_s:nw 4 } + \q_stop + } \cs_new:Npn \__fp_sanitize:Nw #1 #2; { \if_case:w @@ -14102,9 +14126,17 @@ { \__fp_small_int:wTF #3; { \__fp_round:Nwn #1#2; } { - \__fp_invalid_operation_tl_o:ff - { \__fp_round_name_from_cs:N #1 } - { \__fp_array_to_clist:n { #2; #3; } } + \if:w 3 \__fp_kind:w #3 ; + \exp_after:wN \use_i:nn + \else: + \exp_after:wN \use_ii:nn + \fi: + { \exp_after:wN \c_nan_fp } + { + \__fp_invalid_operation_tl_o:ff + { \__fp_round_name_from_cs:N #1 } + { \__fp_array_to_clist:n { #2; #3; } } + } } } \cs_new:Npn \__fp_round:Nwn #1 \s__fp \__fp_chk:w #2#3#4; #5 @@ -15606,6 +15638,14 @@ { \__fp_parse_function:NNN \__fp_minmax_o:Nw 0 } \prg_new_eq_conditional:NNn \fp_if_exist:N \cs_if_exist:N { TF , T , F , p } \prg_new_eq_conditional:NNn \fp_if_exist:c \cs_if_exist:c { TF , T , F , p } +\prg_new_conditional:Npnn \fp_if_nan:n #1 { TF , T , F , p } + { + \if:w 3 \exp_last_unbraced:Nf \__fp_kind:w { \__fp_parse:n {#1} } + \prg_return_true: + \else: + \prg_return_false: + \fi: + } \prg_new_conditional:Npnn \fp_compare:n #1 { p , T , F , TF } { \exp_after:wN \__fp_compare_return:w diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 39282cf677f..0d3472387e4 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 -\def\ExplFileDate{2019-08-14}% +\def\ExplFileDate{2019-08-25}% \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 6c57f37fa8c..70baa6b0d20 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 -\def\ExplFileDate{2019-08-14}% +\def\ExplFileDate{2019-08-25}% \let\ExplLoaderFileDate\ExplFileDate \ProvidesPackage{expl3} [% |