diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel')
33 files changed, 1255 insertions, 862 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex index 6518b52bdbe..72b29f13e11 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex @@ -13,6 +13,7 @@ %% l3str.dtx (with options: `package') %% l3seq.dtx (with options: `package') %% l3int.dtx (with options: `package') +%% l3flag.dtx (with options: `package') %% l3quark.dtx (with options: `package') %% l3prg.dtx (with options: `package') %% l3clist.dtx (with options: `package') @@ -40,6 +41,7 @@ %% l3coffins.dtx (with options: `package') %% l3color.dtx (with options: `package') %% l3sys.dtx (with options: `package') +%% l3deprecation.dtx (with options: `package') %% l3candidates.dtx (with options: `package') %% l3luatex.dtx (with options: `package,tex') %% @@ -58,8 +60,8 @@ %% File: expl3.dtx Copyright (C) 1990-2017 The LaTeX3 Project \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2017/02/10}% -\def\ExplFileVersion{6878}% +\def\ExplFileDate{2017/03/07}% +\def\ExplFileVersion{6984}% \begingroup \def\next{\endgroup}% \expandafter\ifx\csname PackageError\endcsname\relax @@ -362,8 +364,8 @@ \tex_endlinechar:D = 32 \scan_stop: \bool_set_true:N \l__kernel_expl_bool } -%% File: l3names.dtx Copyright (C) 1990-2016 The LaTeX3 project -\GetIdInfo$Id: l3names.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3names.dtx Copyright (C) 1990-2017 The LaTeX3 project +\GetIdInfo$Id: l3names.dtx 6962 2017-02-19 22:58:35Z joseph $ {L3 Namespace for primitives} \let \tex_global:D \global \let \tex_let:D \let @@ -978,11 +980,12 @@ \__kernel_primitive:NN \luatexversion \luatex_luatexversion:D \__kernel_primitive:NN \mathdisplayskipmode \luatex_mathdisplayskipmode:D \__kernel_primitive:NN \matheqnogapstep \luatex_matheqnogapstep:D - \__kernel_primitive:NN \mathoption \luatex_mathoption:D \__kernel_primitive:NN \mathnolimitsmode \luatex_mathnolimitsmode:D + \__kernel_primitive:NN \mathoption \luatex_mathoption:D \__kernel_primitive:NN \mathrulesfam \luatex_mathrulesfam:D \__kernel_primitive:NN \mathscriptsmode \luatex_mathscriptsmode:D \__kernel_primitive:NN \mathstyle \luatex_mathstyle:D + \__kernel_primitive:NN \mathsurroundmode \luatex_mathsurroundmode:D \__kernel_primitive:NN \mathsurroundskip \luatex_mathsurroundskip:D \__kernel_primitive:NN \nohrule \luatex_nohrule:D \__kernel_primitive:NN \nokerns \luatex_nokerns:D @@ -990,13 +993,16 @@ \__kernel_primitive:NN \nospaces \luatex_nospaces:D \__kernel_primitive:NN \novrule \luatex_novrule:D \__kernel_primitive:NN \outputbox \luatex_outputbox:D + \__kernel_primitive:NN \pagebottomoffset \luatex_pagebottomoffset:D \__kernel_primitive:NN \pageleftoffset \luatex_pageleftoffset:D + \__kernel_primitive:NN \pagerightoffset \luatex_pagerightoffset:D \__kernel_primitive:NN \pagetopoffset \luatex_pagetopoffset:D \__kernel_primitive:NN \pdfextension \luatex_pdfextension:D \__kernel_primitive:NN \pdffeedback \luatex_pdffeedback:D \__kernel_primitive:NN \pdfvariable \luatex_pdfvariable:D \__kernel_primitive:NN \postexhyphenchar \luatex_postexhyphenchar:D \__kernel_primitive:NN \posthyphenchar \luatex_posthyphenchar:D + \__kernel_primitive:NN \predisplaygapfactor \luatex_predisplaygapfactor:D \__kernel_primitive:NN \preexhyphenchar \luatex_preexhyphenchar:D \__kernel_primitive:NN \prehyphenchar \luatex_prehyphenchar:D \__kernel_primitive:NN \savecatcodetable \luatex_savecatcodetable:D @@ -1014,15 +1020,13 @@ \__kernel_primitive:NN \bodydir \luatex_bodydir:D \__kernel_primitive:NN \boxdir \luatex_boxdir:D \__kernel_primitive:NN \leftghost \luatex_leftghost:D + \__kernel_primitive:NN \linedir \luatex_linedir:D \__kernel_primitive:NN \localbrokenpenalty \luatex_localbrokenpenalty:D \__kernel_primitive:NN \localinterlinepenalty \luatex_localinterlinepenalty:D \__kernel_primitive:NN \localleftbox \luatex_localleftbox:D \__kernel_primitive:NN \localrightbox \luatex_localrightbox:D \__kernel_primitive:NN \mathdir \luatex_mathdir:D - \__kernel_primitive:NN \linedir \luatex_linedir:D - \__kernel_primitive:NN \pagebottomoffset \luatex_pagebottomoffset:D \__kernel_primitive:NN \pagedir \luatex_pagedir:D - \__kernel_primitive:NN \pagerightoffset \luatex_pagerightoffset:D \__kernel_primitive:NN \pardir \luatex_pardir:D \__kernel_primitive:NN \rightghost \luatex_rightghost:D \__kernel_primitive:NN \textdir \luatex_textdir:D @@ -1363,8 +1367,8 @@ \tex_let:D \tex_middle:D \normalmiddle \tex_let:D \tex_right:D \normalright \tex_fi:D -%% File: l3basics.dtx Copyright (C) 1990-2016 The LaTeX3 project -\GetIdInfo$Id: l3basics.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3basics.dtx Copyright (C) 1990-2017 The LaTeX3 project +\GetIdInfo$Id: l3basics.dtx 6929 2017-02-14 15:53:00Z bruno $ {L3 Basic definitions} \tex_let:D \if_true: \tex_iftrue:D \tex_let:D \if_false: \tex_iffalse:D @@ -2082,16 +2086,30 @@ \cs_new:Npn \cs_if_eq:ccT { \exp_args:Ncc \cs_if_eq:NNT } \cs_new:Npn \cs_if_eq:ccF { \exp_args:Ncc \cs_if_eq:NNF } \cs_new_protected:Npn \__kernel_register_show:N #1 + { \exp_args:No \__kernel_register_show_aux:nN { \tex_the:D #1 } #1 } +\cs_new_protected:Npn \__kernel_register_show_aux:nN #1#2 { - \__msg_show_variable:NNNnn #1 \cs_if_exist:NTF ? { } - { > ~ \token_to_str:N #1 = \tex_the:D #1 } + \__msg_show_variable:NNNnn #2 \cs_if_exist:NTF ? { } + { > ~ \token_to_str:N #2 = #1 } } \cs_new_protected:Npn \__kernel_register_show:c { \exp_args:Nc \__kernel_register_show:N } +\cs_new_protected:Npn \__kernel_register_log:N + { \__msg_log_next: \__kernel_register_show:N } +\cs_new_protected:Npn \__kernel_register_log:c + { \exp_args:Nc \__kernel_register_log:N } \cs_new_protected:Npn \cs_show:N #1 - { \__msg_show_wrap:n { > ~ \token_to_str:N #1 = \cs_meaning:N #1 } } + { + \group_begin: + \int_set:Nn \tex_escapechar:D { `\\ } + \exp_args:NNx + \group_end: + \__msg_show_wrap:n { > ~ \token_to_str:N #1 = \cs_meaning:N #1 } + } \cs_new_protected:Npn \cs_show:c { \group_begin: \exp_args:NNc \group_end: \cs_show:N } +\cs_new_protected:Npn \cs_log:N { \__msg_log_next: \cs_show:N } +\cs_new_protected:Npn \cs_log:c { \__msg_log_next: \cs_show:c } \cs_new_nopar:Npn \prg_do_nothing: { } \cs_new_eq:NN \__prg_break_point:Nn \use_ii:nn \cs_new:Npn \__prg_map_break:Nn #1#2#3 \__prg_break_point:Nn #4#5 @@ -2106,7 +2124,7 @@ \cs_new:Npn \__prg_break: #1 \__prg_break_point: { } \cs_new:Npn \__prg_break:n #1#2 \__prg_break_point: {#1} %% File: l3expan.dtx Copyright (C) 1990-2016 The LaTeX3 project -\GetIdInfo$Id: l3expan.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3expan.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Argument expansion} \cs_new:Npn \__exp_arg_next:nnn #1#2#3 { #2 \::: { #3 {#1} } } \cs_new:Npn \__exp_arg_next:Nnn #1#2#3 { #2 \::: { #3 #1 } } @@ -2554,8 +2572,8 @@ \exp_after:wN \exp_not:N \cs:w :: #1 \cs_end: \__cs_generate_internal_variant_loop:n } -%% File: l3tl.dtx Copyright (C) 1990-2016 The LaTeX3 Project -\GetIdInfo$Id: l3tl.dtx 6842 2017-02-06 21:51:22Z joseph $ +%% File: l3tl.dtx Copyright (C) 1990-2017 The LaTeX3 Project +\GetIdInfo$Id: l3tl.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Token lists} \cs_new_protected:Npn \tl_new:N #1 { @@ -2746,7 +2764,7 @@ \group_begin: \exp_args:No \etex_everyeof:D { \c__tl_rescan_marker_tl \exp_not:N } \int_compare:nNnT \tex_endlinechar:D = { 32 } - { \tex_endlinechar:D - \c_one } + { \int_set:Nn \tex_endlinechar:D { -1 } } \tex_newlinechar:D \tex_endlinechar:D #3 \scan_stop: \exp_args:No \__tl_set_rescan:n { \tl_to_str:n {#4} } @@ -2775,7 +2793,7 @@ \tex_catcode:D `\^^@ = 12 \scan_stop: \cs_new_protected:Npn \__tl_set_rescan:n #1 { - \int_compare:nNnTF \tex_newlinechar:D < \c_zero + \int_compare:nNnTF \tex_newlinechar:D < 0 { \use_ii:nn } { \char_set_lccode:nn { 0 } { \tex_newlinechar:D } @@ -2790,7 +2808,7 @@ \cs_new_protected:Npn \__tl_set_rescan_single:nn #1 { \int_compare:nNnTF - { \char_value_catcode:n { `#1 } / \c_three } = \c_four + { \char_value_catcode:n { `#1 } / 3 } = 4 { \__tl_set_rescan_single_aux:nn {#1} } { \int_compare:nNnTF { `#1 } < { `\~ } @@ -2803,7 +2821,7 @@ } \cs_new_protected:Npn \__tl_set_rescan_single_aux:nn #1#2 { - \tex_endlinechar:D - \c_one + \int_set:Nn \tex_endlinechar:D { -1 } \use:x { \exp_not:N \use:n @@ -2823,7 +2841,7 @@ \char_value_catcode:n { \exp_last_unbraced:Nf ` \str_head:n {#2} ~ } } - = \c_ten { ~ } + = { 10 } { ~ } \exp_after:wN \__tl_rescan:w \exp_after:wN \prg_do_nothing: \etex_scantokens:D { #2 #1 } @@ -3117,7 +3135,7 @@ \int_eval:n { 0 \tl_map_function:NN #1 \__tl_count:n } } -\cs_new:Npn \__tl_count:n #1 { + \c_one } +\cs_new:Npn \__tl_count:n #1 { + 1 } \cs_generate_variant:Nn \tl_count:n { V , o } \cs_generate_variant:Nn \tl_count:N { c } \cs_new:Npn \tl_reverse_items:n #1 @@ -3410,14 +3428,14 @@ } \cs_new:Npn \__tl_item_aux:nn #1#2 { - \int_compare:nNnTF {#1} < \c_zero - { \int_eval:n { \tl_count:n {#2} + \c_one + #1 } } + \int_compare:nNnTF {#1} < 0 + { \int_eval:n { \tl_count:n {#2} + 1 + #1 } } {#1} } \cs_new:Npn \__tl_item:nn #1#2 { \__quark_if_recursion_tail_break:nN {#2} \__prg_break: - \int_compare:nNnTF {#1} = \c_one + \int_compare:nNnTF {#1} = 1 { \__prg_break:n { \exp_not:n {#2} } } { \exp_args:Nf \__tl_item:nn { \int_eval:n { #1 - 1 } } } } @@ -3431,16 +3449,35 @@ \cs_generate_variant:Nn \tl_show:N { c } \cs_new_protected:Npn \tl_show:n #1 { \__msg_show_wrap:n { > ~ \tl_to_str:n {#1} } } +\cs_new_protected:Npn \tl_log:N + { \__msg_log_next: \tl_show:N } +\cs_generate_variant:Nn \tl_log:N { c } +\cs_new_protected:Npn \tl_log:n + { \__msg_log_next: \tl_show:n } \tl_new:N \g_tmpa_tl \tl_new:N \g_tmpb_tl \tl_new:N \l_tmpa_tl \tl_new:N \l_tmpb_tl \cs_new_protected:Npn \tl_to_lowercase:n #1 - { \tex_lowercase:D {#1} } + { + \__msg_kernel_warning:nnxxx { kernel } { deprecated-command } + { 2017-12-31 } + { \token_to_str:N \tl_to_lowercase:n } + { } + \cs_gset_eq:NN \tl_to_lowercase:n \tex_lowercase:D + \tex_lowercase:D {#1} + } \cs_new_protected:Npn \tl_to_uppercase:n #1 - { \tex_uppercase:D {#1} } -%% File: l3str.dtx Copyright (C) 2011-2016 The LaTeX3 Project -\GetIdInfo$Id: l3str.dtx 6809 2017-01-01 06:33:13Z bruno $ + { + \__msg_kernel_warning:nnxxx { kernel } { deprecated-command } + { 2017-12-31 } + { \token_to_str:N \tl_to_uppercase:n } + { } + \cs_gset_eq:NN \tl_to_uppercase:n \tex_uppercase:D + \tex_uppercase:D {#1} + } +%% File: l3str.dtx Copyright (C) 2011-2017 The LaTeX3 Project +\GetIdInfo$Id: l3str.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Strings} \group_begin: \cs_set_protected:Npn \__str_tmp:n #1 @@ -3514,7 +3551,7 @@ } \cs_new:Npn \__str_if_eq_x_return:nn #1 #2 { - \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = \c_zero + \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: @@ -3524,7 +3561,7 @@ { \if_int_compare:w \__str_if_eq_x:nn { \exp_not:n {#1} } { \exp_not:n {#2} } - = \c_zero + = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \cs_generate_variant:Nn \str_if_eq_p:nn { V , o } @@ -3537,13 +3574,13 @@ \cs_generate_variant:Nn \str_if_eq:nnTF { nV , no , VV } \prg_new_conditional:Npnn \str_if_eq_x:nn #1#2 { p , T , F , TF } { - \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = \c_zero + \if_int_compare:w \__str_if_eq_x:nn {#1} {#2} = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \prg_new_conditional:Npnn \str_if_eq:NN #1#2 { p , TF , T , F } { \if_int_compare:w \__str_if_eq_x:nn { \tl_to_str:N #1 } { \tl_to_str:N #2 } - = \c_zero \prg_return_true: \else: \prg_return_false: \fi: + = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: \fi: } \cs_generate_variant:Nn \str_if_eq:NNT { c , Nc , cc } \cs_generate_variant:Nn \str_if_eq:NNF { c , Nc , cc } @@ -3633,6 +3670,28 @@ \cs_new:Npn \__str_to_other_end:w \fi: #1 \q_mark #2 * A #3 \q_stop { \fi: #2 } } +\cs_new:Npn \__str_to_other_fast:n #1 + { + \exp_after:wN \__str_to_other_fast_loop:w \tl_to_str:n {#1} ~ + A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ \q_stop + } +\group_begin: +\tex_lccode:D `\* = `\ % +\tex_lccode:D `\A = `\A +\tex_lowercase:D + { + \group_end: + \cs_new:Npn \__str_to_other_fast_loop:w + #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 ~ #7 ~ #8 ~ #9 ~ + { + \if_meaning:w A #9 + \__str_to_other_fast_end:w + \fi: + #1 * #2 * #3 * #4 * #5 * #6 * #7 * #8 * #9 + \__str_to_other_fast_loop:w * + } + \cs_new:Npn \__str_to_other_fast_end:w #1 * A #2 \q_stop {#1} + } \cs_new:Npn \str_item:Nn { \exp_args:No \str_item:nn } \cs_generate_variant:Nn \str_item:Nn { c } \cs_new:Npn \str_item:nn #1#2 @@ -3654,7 +3713,7 @@ } \cs_new:Npn \__str_item:w #1; #2; { - \int_compare:nNnTF {#1} < \c_zero + \int_compare:nNnTF {#1} < 0 { \int_compare:nNnTF {#1} < {-#2} { \use_none_delimit_by_q_stop:w } @@ -3675,7 +3734,7 @@ } \cs_new:Npn \__str_skip_exp_end:w #1; { - \if_int_compare:w #1 > \c_eight + \if_int_compare:w #1 > 8 \exp_stop_f: \exp_after:wN \__str_skip_loop:wNNNNNNNN \else: \exp_after:wN \__str_skip_end:w @@ -3684,7 +3743,7 @@ #1 ; } \cs_new:Npn \__str_skip_loop:wNNNNNNNN #1; #2#3#4#5#6#7#8#9 - { \exp_after:wN \__str_skip_exp_end:w \__int_value:w \__int_eval:w #1 - \c_eight ; } + { \exp_after:wN \__str_skip_exp_end:w \__int_value:w \__int_eval:w #1 - 8 ; } \cs_new:Npn \__str_skip_end:w #1 ; { \exp_after:wN \__str_skip_end:NNNNNNNN @@ -3707,7 +3766,7 @@ { \exp_after:wN \__str_range:w \__int_value:w \__str_count:n {#1} \exp_after:wN ; - \__int_value:w \__int_eval:w #2 - \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #2 - 1 \exp_after:wN ; \__int_value:w \__int_eval:w #3 ; #1 \q_stop } @@ -3727,11 +3786,11 @@ { \int_eval:n { - \if_int_compare:w #1 < \c_zero + \if_int_compare:w #1 < 0 \exp_stop_f: \if_int_compare:w #1 < -#2 \exp_stop_f: - \c_zero + 0 \else: - #1 + #2 + \c_one + #1 + #2 + 1 \fi: \else: \if_int_compare:w #1 < #2 \exp_stop_f: @@ -3746,7 +3805,7 @@ { \__str_collect_loop:wn #1 ; { } } \cs_new:Npn \__str_collect_loop:wn #1 ; { - \if_int_compare:w #1 > \c_seven + \if_int_compare:w #1 > 7 \exp_stop_f: \exp_after:wN \__str_collect_loop:wnNNNNNNN \else: \exp_after:wN \__str_collect_end:wn @@ -3756,13 +3815,13 @@ \cs_new:Npn \__str_collect_loop:wnNNNNNNN #1; #2 #3#4#5#6#7#8#9 { \exp_after:wN \__str_collect_loop:wn - \__int_value:w \__int_eval:w #1 - \c_seven ; + \__int_value:w \__int_eval:w #1 - 7 ; { #2 #3#4#5#6#7#8#9 } } \cs_new:Npn \__str_collect_end:wn #1 ; { \exp_after:wN \__str_collect_end:nnnnnnnnw - \if_case:w \if_int_compare:w #1 > \c_zero #1 \else: 0 \fi: \exp_stop_f: + \if_case:w \if_int_compare:w #1 > 0 \exp_stop_f: #1 \else: 0 \fi: \exp_stop_f: \or: \or: \or: \or: \or: \or: \fi: } \cs_new:Npn \__str_collect_end:nnnnnnnnw #1#2#3#4#5#6#7#8 #9 \q_stop @@ -3785,7 +3844,7 @@ \if_meaning:w X #9 \use_i_delimit_by_q_stop:nw \fi: - \c_nine + \__str_count_spaces_loop:w + 9 + \__str_count_spaces_loop:w } \cs_new:Npn \str_count:N { \exp_args:No \str_count:n } \cs_generate_variant:Nn \str_count:N { c } @@ -3812,9 +3871,9 @@ \int_eval:n { #1 - { X \c_eight } { X \c_seven } { X \c_six } - { X \c_five } { X \c_four } { X \c_three } - { X \c_two } { X \c_one } { X \c_zero } + { X 8 } { X 7 } { X 6 } + { X 5 } { X 4 } { X 3 } + { X 2 } { X 1 } { X 0 } \q_stop } } @@ -3823,7 +3882,7 @@ \if_meaning:w X #9 \exp_after:wN \use_none_delimit_by_q_stop:w \fi: - \c_nine + \__str_count_loop:NNNNNNNNN + 9 + \__str_count_loop:NNNNNNNNN } \cs_new:Npn \str_head:N { \exp_args:No \str_head:n } \cs_generate_variant:Nn \str_head:N { c } @@ -3983,7 +4042,7 @@ \__unicode_parse_auxi:w #1#2 \q_stop \else: \if_int_compare:w \__str_if_eq_x:nn - { \exp_not:n {#2} } { ~Conditional~Mappings~ } = \c_zero + { \exp_not:n {#2} } { ~Conditional~Mappings~ } = 0 \exp_stop_f: \cs_set_protected:Npn \__unicode_parse:w ##1 \q_stop { } \fi: \fi: @@ -4006,7 +4065,7 @@ { \tl_if_blank:nF {#7} { - \if_int_compare:w \__str_if_eq_x:nn { #5 ~ } {#7} = \c_zero + \if_int_compare:w \__str_if_eq_x:nn { #5 ~ } {#7} = 0 \exp_stop_f: \else: \tl_const:cx { c__unicode_title_ \utex_char:D "#1 _tl } @@ -4017,7 +4076,7 @@ \__unicode_map_inline:n { UnicodeData.txt } \cs_set_protected:Npn \__unicode_parse_auxi:w #1 ;~ #2 ;~ #3 ; #4 \q_stop { - \if_int_compare:w \__str_if_eq_x:nn {#2} { C } = \c_zero + \if_int_compare:w \__str_if_eq_x:nn {#2} { C } = 0 \exp_stop_f: \if_int_compare:w \tex_lccode:D "#1 = "#3 \scan_stop: \else: \tl_const:cx @@ -4025,7 +4084,7 @@ { \utex_char:D "#3 ~ } \fi: \else: - \if_int_compare:w \__str_if_eq_x:nn {#2} { F } = \c_zero + \if_int_compare:w \__str_if_eq_x:nn {#2} { F } = 0 \exp_stop_f: \__unicode_parse_auxii:w #1 ~ #3 ~ \q_stop \fi: \fi: @@ -4037,7 +4096,7 @@ { \use:n { \__unicode_parse_auxii:w #1 ~ lower ~ #2 ~ } ~ \q_stop \use:n { \__unicode_parse_auxii:w #1 ~ upper ~ #4 ~ } ~ \q_stop - \if_int_compare:w \__str_if_eq_x:nn {#3} {#4} = \c_zero + \if_int_compare:w \__str_if_eq_x:nn {#3} {#4} = 0 \exp_stop_f: \else: \use:n { \__unicode_parse_auxii:w #1 ~ title ~ #3 ~ } ~ \q_stop \fi: @@ -4066,7 +4125,7 @@ } \group_end: %% File: l3seq.dtx Copyright (C) 1990-2017 The LaTeX3 Project -\GetIdInfo$Id: l3seq.dtx 6842 2017-02-06 21:51:22Z joseph $ +\GetIdInfo$Id: l3seq.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Sequences and stacks} \cs_new:Npn \__seq_item:n { @@ -4431,14 +4490,14 @@ } \cs_new:Npn \__seq_item:nN #1#2 { - \int_compare:nNnTF {#1} < \c_zero - { \int_eval:n { \seq_count:N #2 + \c_one + #1 } } + \int_compare:nNnTF {#1} < 0 + { \int_eval:n { \seq_count:N #2 + 1 + #1 } } {#1} } \cs_new:Npn \__seq_item:nnn #1#2#3 { \use_none:n #2 - \int_compare:nNnTF {#1} = \c_one + \int_compare:nNnTF {#1} = 1 { \__prg_break:n { \exp_not:n {#3} } } { \exp_args:Nf \__seq_item:nnn { \int_eval:n { #1 - 1 } } } } @@ -4512,7 +4571,7 @@ \seq_map_function:NN #1 \__seq_count:n } } -\cs_new:Npn \__seq_count:n #1 { + \c_one } +\cs_new:Npn \__seq_count:n #1 { + 1 } \cs_generate_variant:Nn \seq_count:N { c } \cs_new:Npn \seq_use:Nnnn #1#2#3#4 { @@ -4590,12 +4649,15 @@ { \seq_map_function:NN #1 \__msg_show_item:n } } \cs_generate_variant:Nn \seq_show:N { c } +\cs_new_protected:Npn \seq_log:N + { \__msg_log_next: \seq_show:N } +\cs_generate_variant:Nn \seq_log:N { c } \seq_new:N \l_tmpa_seq \seq_new:N \l_tmpb_seq \seq_new:N \g_tmpa_seq \seq_new:N \g_tmpb_seq -%% File: l3int.dtx Copyright (C) 1990-2016 The LaTeX3 Project -\GetIdInfo$Id: l3int.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3int.dtx Copyright (C) 1990-2017 The LaTeX3 Project +\GetIdInfo$Id: l3int.dtx 6949 2017-02-18 16:04:10Z joseph $ {L3 Integers} \cs_new_eq:NN \__int_value:w \tex_number:D \cs_new_eq:NN \__int_eval:w \etex_numexpr:D @@ -4647,12 +4709,12 @@ \cs_new:Npn \__int_div_truncate:NwNw #1#2; #3#4; { \if_meaning:w 0 #1 - \c_zero + 0 \else: ( #1#2 \if_meaning:w - #1 + \else: - \fi: - ( \if_meaning:w - #3 - \fi: #3#4 - \c_one ) / \c_two + ( \if_meaning:w - #3 - \fi: #3#4 - 1 ) / 2 ) \fi: / #3#4 @@ -5082,13 +5144,13 @@ { \exp_args:Nf \__int_to_Base:nn { \int_eval:n {#1} } } \cs_new:Npn \__int_to_base:nn #1#2 { - \int_compare:nNnTF {#1} < \c_zero + \int_compare:nNnTF {#1} < 0 { \exp_args:No \__int_to_base:nnN { \use_none:n #1 } {#2} - } { \__int_to_base:nnN {#1} {#2} \c_empty_tl } } \cs_new:Npn \__int_to_Base:nn #1#2 { - \int_compare:nNnTF {#1} < \c_zero + \int_compare:nNnTF {#1} < 0 { \exp_args:No \__int_to_Base:nnN { \use_none:n #1 } {#2} - } { \__int_to_Base:nnN {#1} {#2} \c_empty_tl } } @@ -5135,7 +5197,7 @@ \cs_new:Npn \__int_to_letter:n #1 { \exp_after:wN \exp_after:wN - \if_case:w \__int_eval:w #1 - \c_ten \__int_eval_end: + \if_case:w \__int_eval:w #1 - 10 \__int_eval_end: a \or: b \or: c @@ -5168,7 +5230,7 @@ \cs_new:Npn \__int_to_Letter:n #1 { \exp_after:wN \exp_after:wN - \if_case:w \__int_eval:w #1 - \c_ten \__int_eval_end: + \if_case:w \__int_eval:w #1 - 10 \__int_eval_end: A \or: B \or: C @@ -5292,11 +5354,11 @@ { `#1 - \int_compare:nNnTF { `#1 } < { 91 } { 55 } { 87 } } } \cs_new:Npn \int_from_bin:n #1 - { \int_from_base:nn {#1} \c_two } + { \int_from_base:nn {#1} { 2 } } \cs_new:Npn \int_from_hex:n #1 - { \int_from_base:nn {#1} \c_sixteen } + { \int_from_base:nn {#1} { 16 } } \cs_new:Npn \int_from_oct:n #1 - { \int_from_base:nn {#1} \c_eight } + { \int_from_base:nn {#1} { 8 } } \int_const:cn { c__int_from_roman_i_int } { 1 } \int_const:cn { c__int_from_roman_v_int } { 5 } \int_const:cn { c__int_from_roman_x_int } { 10 } @@ -5316,7 +5378,7 @@ \int_eval:n { ( - \c_zero + 0 \exp_after:wN \__int_from_roman:NN \tl_to_str:n {#1} \q_recursion_tail \q_recursion_tail \q_recursion_stop ) @@ -5346,19 +5408,15 @@ } } \cs_new:Npn \__int_from_roman_error:w #1 \q_recursion_stop #2 - { #2 * \c_zero - \c_one } -\cs_new_protected:Npn \int_show:N #1 - { - \use:x - { - \exp_not:n - { \__msg_show_variable:NNNnn #1 \cs_if_exist:NTF ? { } } - { > ~ \token_to_str:N #1 = \tex_the:D #1 } - } - } + { #2 * 0 - 1 } +\cs_new_eq:NN \int_show:N \__kernel_register_show:N \cs_generate_variant:Nn \int_show:N { c } \cs_new_protected:Npn \int_show:n { \__msg_show_wrap:Nn \int_eval:n } +\cs_new_eq:NN \int_log:N \__kernel_register_log:N +\cs_generate_variant:Nn \int_log:N { c } +\cs_new_protected:Npn \int_log:n + { \__msg_log_next: \int_show:n } \int_const:Nn \c_one { 1 } \int_const:Nn \c_two { 2 } \int_const:Nn \c_three { 3 } @@ -5375,7 +5433,6 @@ \int_const:Nn \c_fourteen { 14 } \int_const:Nn \c_fifteen { 15 } \int_const:Nn \c_sixteen { 16 } -\cs_new_eq:NN \c_minus_one \m@ne \int_const:Nn \c_thirty_two { 32 } \int_const:Nn \c_two_hundred_fifty_five { 255 } \int_const:Nn \c_two_hundred_fifty_six { 256 } @@ -5397,8 +5454,96 @@ \int_new:N \l_tmpb_int \int_new:N \g_tmpa_int \int_new:N \g_tmpb_int +\cs_new_eq:NN \c_minus_one \m@ne +%% File: l3flag.dtx Copyright (C) 2011-2012,2014-2017 The LaTeX3 Project +\GetIdInfo$Id: l3flag.dtx 6969 2017-02-20 18:32:23Z bruno $ + {L3 Flags} +\cs_new_protected:Npn \flag_new:n #1 + { + \cs_new:cpn { flag~#1 } ##1 ; + { \exp_after:wN \use_none:n \cs:w flag~#1~##1 \cs_end: } + } +\cs_new_protected:Npn \flag_clear:n { \__flag_clear:wn 0 ; } +\cs_new_protected:Npn \__flag_clear:wn #1 ; #2 + { + \if_cs_exist:w flag~#2~#1 \cs_end: + \cs_set_eq:cN { flag~#2~#1 } \tex_undefined:D + \exp_after:wN \__flag_clear:wn + \__int_value:w \__int_eval:w 1 + #1 + \else: + \use_i:nnn + \fi: + ; {#2} + } +\cs_new_protected:Npn \flag_clear_new:n #1 + { \flag_if_exist:nTF {#1} { \flag_clear:n } { \flag_new:n } {#1} } +\cs_new_protected:Npn \flag_show:n #1 + { + \exp_args:Nc \__msg_show_variable:NNNnn { flag~#1 } \cs_if_exist:NTF ? { } + { > ~ flag ~ #1 ~ height = \flag_height:n {#1} } + } +\cs_new_protected:Npn \flag_log:n + { \__msg_log_next: \flag_show:n } +\prg_new_conditional:Npnn \flag_if_exist:n #1 { p , T , F , TF } + { + \cs_if_exist:cTF { flag~#1 } + { \prg_return_true: } { \prg_return_false: } + } +\prg_new_conditional:Npnn \flag_if_raised:n #1 { p , T , F , TF } + { + \if_cs_exist:w flag~#1~0 \cs_end: + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\cs_new:Npn \flag_height:n { \__flag_height_loop:wn 0; } +\cs_new:Npn \__flag_height_loop:wn #1 ; #2 + { + \if_cs_exist:w flag~#2~#1 \cs_end: + \exp_after:wN \__flag_height_loop:wn \__int_value:w \__int_eval:w 1 + + \else: + \exp_after:wN \__flag_height_end:wn + \fi: + #1 ; {#2} + } +\cs_new:Npn \__flag_height_end:wn #1 ; #2 {#1} +\cs_new:Npn \flag_raise:n #1 + { + \cs:w flag~#1 \exp_after:wN \cs_end: + \__int_value:w \flag_height:n {#1} ; + } +\tex_ifodd:D \l@expl@check@declarations@bool + \cs_set_protected:Npn \flag_clear:n #1 + { + \exp_args:Nc \__chk_if_exist_var:N { flag~#1 } + \__flag_clear:wn 0 ; {#1} + } + \cs_set:Npn \__flag_chk_exist:n #1 + { + \flag_if_exist:nF {#1} + { + \__msg_kernel_expandable_error:nnn + { kernel } { bad-variable } { flag~#1~ } + } + } + \cs_set:Npn \flag_height:n #1 + { + \__flag_chk_exist:n {#1} + \__flag_height_loop:wn 0; {#1} + } + \prg_set_conditional:Npnn \flag_if_raised:n #1 { p , T , F , TF } + { + \__flag_chk_exist:n {#1} + \if_cs_exist:w flag~#1~0 \cs_end: + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\fi: %% File: l3quark.dtx Copyright (C) 1990-2016 The LaTeX3 Project -\GetIdInfo$Id: l3quark.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3quark.dtx 6947 2017-02-17 21:27:18Z bruno $ {L3 Quarks} \cs_new_protected:Npn \quark_new:N #1 { \tl_const:Nn #1 {#1} } \quark_new:N \q_nil @@ -5452,7 +5597,7 @@ {#2} { } } -\prg_new_conditional:Nnn \quark_if_nil:N { p, T , F , TF } +\prg_new_conditional:Npnn \quark_if_nil:N #1 { p, T , F , TF } { \if_meaning:w \q_nil #1 \prg_return_true: @@ -5460,7 +5605,7 @@ \prg_return_false: \fi: } -\prg_new_conditional:Nnn \quark_if_no_value:N { p, T , F , TF } +\prg_new_conditional:Npnn \quark_if_no_value:N #1 { p, T , F , TF } { \if_meaning:w \q_no_value #1 \prg_return_true: @@ -5472,13 +5617,13 @@ \cs_generate_variant:Nn \quark_if_no_value:NT { c } \cs_generate_variant:Nn \quark_if_no_value:NF { c } \cs_generate_variant:Nn \quark_if_no_value:NTF { c } -\prg_new_conditional:Nnn \quark_if_nil:n { p, T , F , TF } +\prg_new_conditional:Npnn \quark_if_nil:n #1 { p, T , F , TF } { \__tl_if_empty_return:o { \__quark_if_nil:w {} #1 {} ? ! \q_nil ? ? ! } } \cs_new:Npn \__quark_if_nil:w #1 \q_nil #2 ? #3 ? ! { #1 #2 } -\prg_new_conditional:Nnn \quark_if_no_value:n { p, T , F , TF } +\prg_new_conditional:Npnn \quark_if_no_value:n #1 { p, T , F , TF } { \__tl_if_empty_return:o { \__quark_if_no_value:w {} #1 {} ? ! \q_no_value ? ? ! } @@ -5507,7 +5652,7 @@ \cs_new:Npn \__use_none_delimit_by_s__stop:w #1 \s__stop { } \__scan_new:N \s__seq %% File: l3prg.dtx Copyright (C) 2005-2017 The LaTeX3 Project -\GetIdInfo$Id: l3prg.dtx 6811 2017-01-01 08:50:54Z joseph $ +\GetIdInfo$Id: l3prg.dtx 6906 2017-02-12 20:07:58Z bruno $ {L3 Control structures} \cs_new_eq:NN \if_bool:N \tex_ifodd:D \cs_new_eq:NN \if_predicate:w \tex_ifodd:D @@ -5603,6 +5748,11 @@ \cs_new:Npn \__bool_to_str:n #1 { \bool_if:nTF {#1} { true } { false } } \cs_generate_variant:Nn \bool_show:N { c } +\cs_new_protected:Npn \bool_log:N + { \__msg_log_next: \bool_show:N } +\cs_new_protected:Npn \bool_log:n + { \__msg_log_next: \bool_show:n } +\cs_generate_variant:Nn \bool_log:N { c } \bool_new:N \l_tmpa_bool \bool_new:N \l_tmpb_bool \bool_new:N \g_tmpa_bool @@ -5802,7 +5952,7 @@ %% File: l3clist.dtx Copyright (C) 2004-2011 Frank Mittelbach, %% The LaTeX3 project %% (C) 2012-2017 The LaTeX3 Project -\GetIdInfo$Id: l3clist.dtx 6842 2017-02-06 21:51:22Z joseph $ +\GetIdInfo$Id: l3clist.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Comma separated lists} \cs_new_eq:NN \c_empty_clist \c_empty_tl \tl_new:N \l__clist_internal_clist @@ -6222,11 +6372,11 @@ #1 \exp_not:n { , \q_recursion_tail , \q_recursion_stop } } } -\cs_new:Npn \__clist_count:n #1 { + \c_one } +\cs_new:Npn \__clist_count:n #1 { + 1 } \cs_new:Npx \__clist_count:w #1 , { \exp_not:n { \exp_args:Nf \quark_if_recursion_tail_stop:n } {#1} - \exp_not:N \tl_if_blank:nF {#1} { + \c_one } + \exp_not:N \tl_if_blank:nF {#1} { + 1 } \exp_not:N \__clist_count:w \c_space_tl } \cs_new:Npn \clist_use:Nnnn #1#2#3#4 @@ -6272,11 +6422,11 @@ } \cs_new:Npn \__clist_item:nnnN #1#2#3#4 { - \int_compare:nNnTF {#2} < \c_zero + \int_compare:nNnTF {#2} < 0 { \int_compare:nNnTF {#2} < { - #1 } { \use_none_delimit_by_q_stop:w } - { \exp_args:Nf #4 { \int_eval:n { #2 + \c_one + #1 } } } + { \exp_args:Nf #4 { \int_eval:n { #2 + 1 + #1 } } } } { \int_compare:nNnTF {#2} > {#1} @@ -6288,7 +6438,7 @@ \cs_generate_variant:Nn \__clist_item:nnnN { ffo, ff } \cs_new:Npn \__clist_item_N_loop:nw #1 #2, { - \int_compare:nNnTF {#1} = \c_zero + \int_compare:nNnTF {#1} = 0 { \use_i_delimit_by_q_stop:nw { \exp_not:n {#2} } } { \exp_args:Nf \__clist_item_N_loop:nw { \int_eval:n { #1 - 1 } } } } @@ -6308,7 +6458,7 @@ \exp_args:No \tl_if_blank:nTF {#2} { \__clist_item_n_loop:nw {#1} \prg_do_nothing: } { - \int_compare:nNnTF {#1} = \c_zero + \int_compare:nNnTF {#1} = 0 { \exp_args:No \__clist_item_n_end:n {#2} } { \exp_args:Nf \__clist_item_n_loop:nw @@ -6337,12 +6487,17 @@ { \clist_map_function:nN {#1} \__msg_show_item:n } } \cs_generate_variant:Nn \clist_show:N { c } +\cs_new_protected:Npn \clist_log:N + { \__msg_log_next: \clist_show:N } +\cs_new_protected:Npn \clist_log:n + { \__msg_log_next: \clist_show:n } +\cs_generate_variant:Nn \clist_log:N { c } \clist_new:N \l_tmpa_clist \clist_new:N \l_tmpb_clist \clist_new:N \g_tmpa_clist \clist_new:N \g_tmpb_clist %% File: l3token.dtx Copyright (C) 2005-2016 The LaTeX3 Project -\GetIdInfo$Id: l3token.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3token.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Experimental token manipulation} \cs_new_protected:Npn \char_set_catcode:nn #1#2 { @@ -6354,69 +6509,69 @@ \cs_new_protected:Npn \char_show_value_catcode:n #1 { \__msg_show_wrap:n { > ~ \char_value_catcode:n {#1} } } \cs_new_protected:Npn \char_set_catcode_escape:N #1 - { \char_set_catcode:nn { `#1 } \c_zero } + { \char_set_catcode:nn { `#1 } { 0 } } \cs_new_protected:Npn \char_set_catcode_group_begin:N #1 - { \char_set_catcode:nn { `#1 } \c_one } + { \char_set_catcode:nn { `#1 } { 1 } } \cs_new_protected:Npn \char_set_catcode_group_end:N #1 - { \char_set_catcode:nn { `#1 } \c_two } + { \char_set_catcode:nn { `#1 } { 2 } } \cs_new_protected:Npn \char_set_catcode_math_toggle:N #1 - { \char_set_catcode:nn { `#1 } \c_three } + { \char_set_catcode:nn { `#1 } { 3 } } \cs_new_protected:Npn \char_set_catcode_alignment:N #1 - { \char_set_catcode:nn { `#1 } \c_four } + { \char_set_catcode:nn { `#1 } { 4 } } \cs_new_protected:Npn \char_set_catcode_end_line:N #1 - { \char_set_catcode:nn { `#1 } \c_five } + { \char_set_catcode:nn { `#1 } { 5 } } \cs_new_protected:Npn \char_set_catcode_parameter:N #1 - { \char_set_catcode:nn { `#1 } \c_six } + { \char_set_catcode:nn { `#1 } { 6 } } \cs_new_protected:Npn \char_set_catcode_math_superscript:N #1 - { \char_set_catcode:nn { `#1 } \c_seven } + { \char_set_catcode:nn { `#1 } { 7 } } \cs_new_protected:Npn \char_set_catcode_math_subscript:N #1 - { \char_set_catcode:nn { `#1 } \c_eight } + { \char_set_catcode:nn { `#1 } { 8 } } \cs_new_protected:Npn \char_set_catcode_ignore:N #1 - { \char_set_catcode:nn { `#1 } \c_nine } + { \char_set_catcode:nn { `#1 } { 9 } } \cs_new_protected:Npn \char_set_catcode_space:N #1 - { \char_set_catcode:nn { `#1 } \c_ten } + { \char_set_catcode:nn { `#1 } { 10 } } \cs_new_protected:Npn \char_set_catcode_letter:N #1 - { \char_set_catcode:nn { `#1 } \c_eleven } + { \char_set_catcode:nn { `#1 } { 11 } } \cs_new_protected:Npn \char_set_catcode_other:N #1 - { \char_set_catcode:nn { `#1 } \c_twelve } + { \char_set_catcode:nn { `#1 } { 12 } } \cs_new_protected:Npn \char_set_catcode_active:N #1 - { \char_set_catcode:nn { `#1 } \c_thirteen } + { \char_set_catcode:nn { `#1 } { 13 } } \cs_new_protected:Npn \char_set_catcode_comment:N #1 - { \char_set_catcode:nn { `#1 } \c_fourteen } + { \char_set_catcode:nn { `#1 } { 14 } } \cs_new_protected:Npn \char_set_catcode_invalid:N #1 - { \char_set_catcode:nn { `#1 } \c_fifteen } + { \char_set_catcode:nn { `#1 } { 15 } } \cs_new_protected:Npn \char_set_catcode_escape:n #1 - { \char_set_catcode:nn {#1} \c_zero } + { \char_set_catcode:nn {#1} { 0 } } \cs_new_protected:Npn \char_set_catcode_group_begin:n #1 - { \char_set_catcode:nn {#1} \c_one } + { \char_set_catcode:nn {#1} { 1 } } \cs_new_protected:Npn \char_set_catcode_group_end:n #1 - { \char_set_catcode:nn {#1} \c_two } + { \char_set_catcode:nn {#1} { 2 } } \cs_new_protected:Npn \char_set_catcode_math_toggle:n #1 - { \char_set_catcode:nn {#1} \c_three } + { \char_set_catcode:nn {#1} { 3 } } \cs_new_protected:Npn \char_set_catcode_alignment:n #1 - { \char_set_catcode:nn {#1} \c_four } + { \char_set_catcode:nn {#1} { 4 } } \cs_new_protected:Npn \char_set_catcode_end_line:n #1 - { \char_set_catcode:nn {#1} \c_five } + { \char_set_catcode:nn {#1} { 5 } } \cs_new_protected:Npn \char_set_catcode_parameter:n #1 - { \char_set_catcode:nn {#1} \c_six } + { \char_set_catcode:nn {#1} { 6 } } \cs_new_protected:Npn \char_set_catcode_math_superscript:n #1 - { \char_set_catcode:nn {#1} \c_seven } + { \char_set_catcode:nn {#1} { 7 } } \cs_new_protected:Npn \char_set_catcode_math_subscript:n #1 - { \char_set_catcode:nn {#1} \c_eight } + { \char_set_catcode:nn {#1} { 8 } } \cs_new_protected:Npn \char_set_catcode_ignore:n #1 - { \char_set_catcode:nn {#1} \c_nine } + { \char_set_catcode:nn {#1} { 9 } } \cs_new_protected:Npn \char_set_catcode_space:n #1 - { \char_set_catcode:nn {#1} \c_ten } + { \char_set_catcode:nn {#1} { 10 } } \cs_new_protected:Npn \char_set_catcode_letter:n #1 - { \char_set_catcode:nn {#1} \c_eleven } + { \char_set_catcode:nn {#1} { 11 } } \cs_new_protected:Npn \char_set_catcode_other:n #1 - { \char_set_catcode:nn {#1} \c_twelve } + { \char_set_catcode:nn {#1} { 12 } } \cs_new_protected:Npn \char_set_catcode_active:n #1 - { \char_set_catcode:nn {#1} \c_thirteen } + { \char_set_catcode:nn {#1} { 13 } } \cs_new_protected:Npn \char_set_catcode_comment:n #1 - { \char_set_catcode:nn {#1} \c_fourteen } + { \char_set_catcode:nn {#1} { 14 } } \cs_new_protected:Npn \char_set_catcode_invalid:n #1 - { \char_set_catcode:nn {#1} \c_fifteen } + { \char_set_catcode:nn {#1} { 15 } } \cs_new_protected:Npn \char_set_mathcode:nn #1#2 { \tex_mathcode:D \__int_eval:w #1 \__int_eval_end: @@ -6494,26 +6649,26 @@ } \cs_new:Npn \__char_generate_aux:w #1 ; #2 ; { - \if_int_compare:w #2 = \c_thirteen + \if_int_compare:w #2 = 13 \exp_stop_f: \__msg_kernel_expandable_error:nn { kernel } { char-active } \else: - \if_int_compare:w #2 = \c_ten - \if_int_compare:w #1 = \c_zero + \if_int_compare:w #2 = 10 \exp_stop_f: + \if_int_compare:w #1 = 0 \exp_stop_f: \__msg_kernel_expandable_error:nn { kernel } { char-null-space } \else: \__msg_kernel_expandable_error:nn { kernel } { char-space } \fi: \else: \if_int_odd:w 0 - \if_int_compare:w #2 < \c_one 1 \fi: - \if_int_compare:w #2 = \c_five 1 \fi: - \if_int_compare:w #2 = \c_nine 1 \fi: - \if_int_compare:w #2 > \c_thirteen 1 \fi: \exp_stop_f: + \if_int_compare:w #2 < 1 \exp_stop_f: 1 \fi: + \if_int_compare:w #2 = 5 \exp_stop_f: 1 \fi: + \if_int_compare:w #2 = 9 \exp_stop_f: 1 \fi: + \if_int_compare:w #2 > 13 \exp_stop_f: 1 \fi: \exp_stop_f: \__msg_kernel_expandable_error:nn { kernel } { char-invalid-catcode } \else: \if_int_odd:w 0 - \if_int_compare:w #1 < \c_zero 1 \fi: + \if_int_compare:w #1 < 0 \exp_stop_f: 1 \fi: \if_int_compare:w #1 > \c__char_max_int 1 \fi: \exp_stop_f: \__msg_kernel_expandable_error:nn { kernel } { char-out-of-range } @@ -6724,7 +6879,7 @@ ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \exp_not:N \q_stop } { - \if_int_compare:w \__str_if_eq_x:nn { #2 } { cro } = \c_zero + \if_int_compare:w \__str_if_eq_x:nn { #2 } { cro } = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: @@ -7077,8 +7232,8 @@ } { \scan_stop: } } -%% File: l3prop.dtx Copyright (C) 1990-2016 The LaTeX3 Project -\GetIdInfo$Id: l3prop.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3prop.dtx Copyright (C) 1990-2017 The LaTeX3 Project +\GetIdInfo$Id: l3prop.dtx 6906 2017-02-12 20:07:58Z bruno $ {L3 Property lists} \__scan_new:N \s__prop \cs_new:Npn \__prop_pair:wn #1 \s__prop #2 @@ -7349,10 +7504,14 @@ { \prop_map_function:NN #1 \__msg_show_item:nn } } \cs_generate_variant:Nn \prop_show:N { c } +\cs_new_protected:Npn \prop_log:N + { \__msg_log_next: \prop_show:N } +\cs_generate_variant:Nn \prop_log:N { c } %% File: l3msg.dtx Copyright (C) 2009-2016 The LaTeX3 Project -\GetIdInfo$Id: l3msg.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3msg.dtx 6966 2017-02-20 03:39:43Z bruno $ {L3 Messages} \tl_new:N \l__msg_internal_tl +\bool_new:N \l__msg_line_context_bool \tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ } \tl_const:Nn \c__msg_more_text_prefix_tl { msg~extra~text~>~ } \prg_new_conditional:Npnn \msg_if_exist:nn #1#2 { p , T , F , TF } @@ -7489,7 +7648,7 @@ } \__iow_with:Nnn \tex_newlinechar:D { `\^^J } { - \__iow_with:Nnn \tex_errorcontextlines:D { - \c_one } + \__iow_with:Nnn \tex_errorcontextlines:D { -1 } { \group_begin: \cs_set_protected:Npn & @@ -7520,11 +7679,31 @@ \iow_wrap:nnnN { * ~ #1} { * ~ } { } \iow_term:n \iow_term:n { ************************************************* } } -\cs_new:Npn \msg_fatal_text:n #1 { Fatal~#1~error } -\cs_new:Npn \msg_critical_text:n #1 { Critical~#1~error } -\cs_new:Npn \msg_error_text:n #1 { #1~error } -\cs_new:Npn \msg_warning_text:n #1 { #1~warning } -\cs_new:Npn \msg_info_text:n #1 { #1~info } +\cs_new:Npn \msg_fatal_text:n #1 + { + Fatal~#1~error + \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: } + } +\cs_new:Npn \msg_critical_text:n #1 + { + Critical~#1~error + \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: } + } +\cs_new:Npn \msg_error_text:n #1 + { + #1~error + \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: } + } +\cs_new:Npn \msg_warning_text:n #1 + { + #1~warning + \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: } + } +\cs_new:Npn \msg_info_text:n #1 + { + #1~info + \bool_if:NT \l__msg_line_context_bool { ~ \msg_line_context: } + } \cs_new:Npn \msg_see_documentation_text:n #1 { \\ \\ See~the~ @@ -7754,13 +7933,13 @@ \prop_put:cnn { l__msg_redirect_ #2 _prop } {#3} {#2} \__msg_kernel_warning:nnxxxx { kernel } { message-redirect-loop } - { \seq_item:Nn \l__msg_class_loop_seq { \c_one } } - { \seq_item:Nn \l__msg_class_loop_seq { \c_two } } + { \seq_item:Nn \l__msg_class_loop_seq { 1 } } + { \seq_item:Nn \l__msg_class_loop_seq { 2 } } {#3} { \seq_map_function:NN \l__msg_class_loop_seq \__msg_redirect_loop_list:n - { \seq_item:Nn \l__msg_class_loop_seq { \c_one } } + { \seq_item:Nn \l__msg_class_loop_seq { 1 } } } } { \__msg_redirect_loop_chk:onn \l__msg_class_tl {#2} {#3} } @@ -7891,6 +8070,11 @@ LaTeX~has~been~asked~to~use~a~control~sequence~'#1':\\ this~has~not~been~defined~yet. } +\__msg_kernel_new:nnn { kernel } { deprecated-command } + { + The~deprecated~command~'#2'~has~been~or~will~be~removed~on~#1. + \tl_if_empty:nF {#3} { ~Use~instead~'#3'. } + } \__msg_kernel_new:nnnn { kernel } { empty-search-pattern } { Empty~search~pattern. } { @@ -8111,7 +8295,13 @@ } } \cs_new_protected:Npn \__msg_show_wrap:Nn #1#2 - { \exp_args:Nx \__msg_show_wrap:n { > ~ \tl_to_str:n {#2} = #1 {#2} } } + { + \exp_args:Nx \__msg_show_wrap:n + { + > ~ \exp_not:n { \tl_to_str:n {#2} } = + \exp_not:N \tl_to_str:n { #1 {#2} } + } + } \cs_new_protected:Npn \__msg_show_wrap:n #1 { \iow_wrap:nnnN { #1 . } { } { } \__msg_show_wrap_aux:n } \cs_new_protected:Npn \__msg_show_wrap_aux:n #1 @@ -8127,7 +8317,7 @@ { \__iow_with:Nnn \tex_newlinechar:D { 10 } { - \__iow_with:Nnn \tex_errorcontextlines:D { - \c_one } + \__iow_with:Nnn \tex_errorcontextlines:D { -1 } { \etex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN { \exp_after:wN \l__msg_internal_tl } @@ -8150,8 +8340,8 @@ \\ > \ \ \tl_to_str:n {#1} \ \ => \ \ \tl_to_str:n {#2} } -%% File: l3file.dtx Copyright (C) 1990-2016 The LaTeX3 Project -\GetIdInfo$Id: l3file.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3file.dtx Copyright (C) 1990-2017 The LaTeX3 Project +\GetIdInfo$Id: l3file.dtx 6964 2017-02-20 02:59:41Z bruno $ {L3 File and I/O operations} \tl_new:N \g_file_current_name_tl \cs_if_exist:NT \@currname @@ -8181,9 +8371,9 @@ 0 \tl_map_function:NN \l__file_internal_name_tl \__file_name_sanitize_aux:n } - \c_two + { 2 } } - = \c_zero + = 0 { \tl_remove_all:Nn \l__file_internal_name_tl { " } \tl_if_in:NnT \l__file_internal_name_tl { ~ } @@ -8204,10 +8394,7 @@ } } \cs_new:Npn \__file_name_sanitize_aux:n #1 - { - \token_if_eq_charcode:NNT #1 " - { + \c_one } - } + { \token_if_eq_charcode:NNT #1 " { + 1 } } \cs_new_protected:Npn \file_add_path:nN #1 { \__file_name_sanitize:nn {#1} { \__file_add_path:nN } } \cs_new_protected:Npn \__file_add_path:nN #1#2 @@ -8317,19 +8504,19 @@ \clist_map_inline:Nn \@filelist { \seq_gput_right:No \g__file_record_seq { \tl_to_str:n {#1} } } } -\cs_new_eq:NN \c_term_ior \c_sixteen +\int_const:Nn \c_term_ior { 16 } \seq_new:N \g__ior_streams_seq \tl_new:N \l__ior_stream_tl \prop_new:N \g__ior_streams_prop \int_step_inline:nnnn - { \c_zero } - { \c_one } + { 0 } + { 1 } { \cs_if_exist:NTF \normalend { \tex_count:D 38 \scan_stop: } { \tex_count:D 16 \scan_stop: - \cs_if_exist:NT \loccount { - \c_one } + \cs_if_exist:NT \loccount { - 1 } } } { @@ -8384,7 +8571,7 @@ } \cs_new_protected:Npn \ior_close:N #1 { - \int_compare:nT { - \c_one < #1 < \c_sixteen } + \int_compare:nT { -1 < #1 < \c_term_ior } { \tex_closein:D #1 \prop_gremove:NV \g__ior_streams_prop #1 @@ -8404,19 +8591,19 @@ { \prop_map_function:NN #1 \__msg_show_item_unbraced:nn } } \cs_new_eq:NN \if_eof:w \tex_ifeof:D -\prg_new_conditional:Nnn \ior_if_eof:N { p , T , F , TF } +\prg_new_conditional:Npnn \ior_if_eof:N #1 { p , T , F , TF } { \cs_if_exist:NTF #1 { - \if_int_compare:w #1 = \c_sixteen - \prg_return_true: - \else: - \if_eof:w #1 - \prg_return_true: - \else: - \prg_return_false: - \fi: - \fi: + \int_compare:nTF { -1 < #1 < \c_term_ior } + { + \if_eof:w #1 + \prg_return_true: + \else: + \prg_return_false: + \fi: + } + { \prg_return_true: } } { \prg_return_true: } } @@ -8426,26 +8613,35 @@ { \use:x { - \int_set:Nn \tex_endlinechar:D { - \c_one } + \int_set:Nn \tex_endlinechar:D { -1 } \exp_not:n { \etex_readline:D #1 to #2 } \int_set:Nn \tex_endlinechar:D { \int_use:N \tex_endlinechar:D } } } \ior_new:N \g__file_internal_ior -\cs_new_eq:NN \c_log_iow \c_minus_one -\int_const:Nn \c_term_iow { 128 } +\int_const:Nn \c_log_iow { -1 } +\int_const:Nn \c_term_iow + { + \cs_if_exist:NTF \luatex_directlua:D + { + \int_compare:nNnTF \luatex_luatexversion:D > { 80 } + { 128 } + { 16 } + } + { 16 } + } \seq_new:N \g__iow_streams_seq \tl_new:N \l__iow_stream_tl \prop_new:N \g__iow_streams_prop \int_step_inline:nnnn - { \c_zero } - { \c_one } + { 0 } + { 1 } { \cs_if_exist:NTF \normalend { \tex_count:D 39 \scan_stop: } { \tex_count:D 17 \scan_stop: - \cs_if_exist:NT \loccount { - \c_one } + \cs_if_exist:NT \loccount { - 1 } } } { @@ -8478,7 +8674,7 @@ } \cs_new_protected:Npn \iow_close:N #1 { - \int_compare:nT { - \c_one < #1 < \c_sixteen } + \int_compare:nT { - \c_log_iow < #1 < \c_term_iow } { \tex_immediate:D \tex_closeout:D #1 \prop_gremove:NV \g__iow_streams_prop #1 @@ -8521,21 +8717,31 @@ \cs_new_protected:Npn \iow_term:n { \iow_now:Nn \c_term_iow } \cs_new:Npn \iow_newline: { ^^J } \cs_new_eq:NN \iow_char:N \cs_to_str:N +\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } \int_new:N \l_iow_line_count_int \int_set:Nn \l_iow_line_count_int { 78 } -\int_new:N \l__iow_target_count_int -\int_new:N \l__iow_current_line_int -\int_new:N \l__iow_current_word_int -\int_new:N \l__iow_current_indentation_int -\tl_new:N \l__iow_current_line_tl -\tl_new:N \l__iow_current_word_tl -\tl_new:N \l__iow_current_indentation_tl -\tl_new:N \l__iow_wrap_tl \tl_new:N \l__iow_newline_tl -\bool_new:N \l__iow_line_start_bool -\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } } +\int_new:N \l__iow_line_target_int +\tl_new:N \l__iow_one_indent_tl +\int_new:N \l__iow_one_indent_int +\cs_new:Npn \__iow_unindent:w { } +\cs_new_protected:Npn \__iow_set_indent:n #1 + { + \tl_set:Nx \l__iow_one_indent_tl + { \exp_args:No \__str_to_other_fast:n { \tl_to_str:n {#1} } } + \int_set:Nn \l__iow_one_indent_int { \str_count:N \l__iow_one_indent_tl } + \exp_last_unbraced:NNo + \cs_set:Npn \__iow_unindent:w \l__iow_one_indent_tl { } + } +\exp_args:Nx \__iow_set_indent:n { \prg_replicate:nn { 4 } { ~ } } +\tl_new:N \l__iow_indent_tl +\int_new:N \l__iow_indent_int +\tl_new:N \l__iow_line_tl +\tl_new:N \l__iow_line_part_tl +\bool_new:N \l__iow_line_break_bool +\tl_new:N \l__iow_wrap_tl \group_begin: - \int_set:Nn \tex_escapechar:D { - \c_one } + \int_set:Nn \tex_escapechar:D { -1 } \tl_const:Nx \c__iow_wrap_marker_tl { \tl_to_str:n { \^^I \^^O \^^W \^^_ \^^W \^^R \^^A \^^P } } \group_end: @@ -8544,13 +8750,17 @@ { \tl_const:cx { c__iow_wrap_ #1 _marker_tl } { - \c_catcode_other_space_tl \c__iow_wrap_marker_tl - \c_catcode_other_space_tl #1 \c_catcode_other_space_tl } } +\cs_new_protected:Npn \iow_indent:n #1 + { + \__msg_kernel_error:nnnnn { kernel } { iow-indent } + { \iow_wrap:nnnN } { \iow_indent:n } {#1} + #1 + } \cs_new:Npx \__iow_indent:n #1 { \c__iow_wrap_indent_marker_tl @@ -8559,14 +8769,14 @@ } \cs_new:Npn \__iow_indent_error:n #1 { - \__msg_kernel_expandable_error:nn { kernel } { indent-outside-wrapping-code } + \__msg_kernel_expandable_error:nnnnn { kernel } { iow-indent } + { \iow_wrap:nnnN } { \iow_indent:n } {#1} #1 } -\cs_new_protected:Npn \iow_indent:n { \__iow_indent_error:n } \cs_new_protected:Npn \iow_wrap:nnnN #1#2#3#4 { \group_begin: - \int_set:Nn \tex_escapechar:D { - \c_one } + \int_set:Nn \tex_escapechar:D { -1 } \cs_set:Npx \{ { \token_to_str:N \{ } \cs_set:Npx \# { \token_to_str:N \# } \cs_set:Npx \} { \token_to_str:N \} } @@ -8581,115 +8791,210 @@ \cs_set_eq:NN \iow_indent:n \__iow_indent_error:n \tl_set:Nx \l__iow_newline_tl { \iow_newline: #2 } \tl_set:Nx \l__iow_newline_tl { \tl_to_str:N \l__iow_newline_tl } - \int_set_eq:NN \l__iow_target_count_int \l_iow_line_count_int - \tl_clear:N \l__iow_current_indentation_tl - \int_zero:N \l__iow_current_line_int - \tl_set:Nn \l__iow_current_line_tl { \use_none:n } - \bool_set_true:N \l__iow_line_start_bool - \use:x - { - \exp_not:n { \tl_clear:N \l__iow_wrap_tl } - \__iow_wrap_loop:w - \tl_to_str:N \c__iow_wrap_newline_marker_tl - \tl_to_str:N \l__iow_wrap_tl - \tl_to_str:N \c__iow_wrap_end_marker_tl - \c_space_tl \c_space_tl - \exp_not:N \q_stop - } - \exp_args:NNo \group_end: - #4 \l__iow_wrap_tl + \int_set:Nn \l__iow_line_target_int + { \l_iow_line_count_int - \str_count:N \l__iow_newline_tl + 1 } + \__iow_wrap_do: + \exp_args:NNf \group_end: + #4 { \tl_to_str:N \l__iow_wrap_tl } } \cs_new_eq:NN \__iow_wrap_set:Nx \protected@edef -\cs_new_protected:Npn \__iow_wrap_set_target: +\cs_new_protected:Npn \__iow_wrap_do: { - \cs_set_protected:Npn \__iow_wrap_set_target: + \tl_set:Nx \l__iow_wrap_tl { - \cs_set_protected:Npn \__iow_wrap_set_target: { } - \tl_replace_all:Nnn \l__iow_newline_tl { ~ } { \c_space_tl } - \int_set:Nn \l__iow_target_count_int - { \l_iow_line_count_int - \tl_count:N \l__iow_newline_tl + \c_one } + \exp_args:No \__str_to_other_fast:n \l__iow_wrap_tl + \c__iow_wrap_end_marker_tl + } + \exp_after:wN \__iow_wrap_start:w \l__iow_wrap_tl + } +\cs_new_protected:Npn \__iow_wrap_start:w + { + \bool_set_false:N \l__iow_line_break_bool + \tl_clear:N \l__iow_line_tl + \tl_clear:N \l__iow_line_part_tl + \tl_set:Nn \l__iow_wrap_tl { ~ \use_none:n } + \int_zero:N \l__iow_indent_int + \tl_clear:N \l__iow_indent_tl + \__iow_wrap_chunk:nw { \l_iow_line_count_int } + } +\cs_set_protected:Npn \__iow_tmp:w #1#2 + { + \cs_new_protected:Npn \__iow_wrap_chunk:nw ##1##2 #2 + { + \tl_if_empty:nTF {##2} + { + \tl_clear:N \l__iow_line_part_tl + \__iow_wrap_next:nw {##1} + } + { + \tl_if_empty:NTF \l__iow_line_tl + { + \__iow_wrap_line:nw + { \l__iow_indent_tl } + ##1 - \l__iow_indent_int ; + } + { \__iow_wrap_line:nw { } ##1 ; } + ##2 #1 + \__iow_wrap_end_chunk:w 7 6 5 4 3 2 1 0 \q_stop + } } + \cs_new_protected:Npn \__iow_wrap_next:nw ##1##2 #1 + { \use:c { __iow_wrap_##2:n } {##1} } } -\cs_new_protected:Npn \__iow_wrap_loop:w #1 ~ % +\exp_args:NVV \__iow_tmp:w \c_catcode_other_space_tl \c__iow_wrap_marker_tl +\cs_new_protected:Npn \__iow_wrap_line:nw #1 { - \tl_set:Nn \l__iow_current_word_tl {#1} - \tl_if_eq:NNTF \l__iow_current_word_tl \c__iow_wrap_marker_tl - { \__iow_wrap_special:w } - { \__iow_wrap_word: } + \tex_edef:D \l__iow_line_part_tl { \if_false: } \fi: + #1 + \exp_after:wN \__iow_wrap_line_loop:w + \__int_value:w \__int_eval:w } -\cs_new_protected:Npn \__iow_wrap_word: +\cs_new:Npn \__iow_wrap_line_loop:w #1 ; #2#3#4#5#6#7#8#9 { - \int_set:Nn \l__iow_current_word_int - { \exp_args:No \str_count_ignore_spaces:n \l__iow_current_word_tl } - \int_add:Nn \l__iow_current_line_int { \l__iow_current_word_int } - \int_compare:nNnTF \l__iow_current_line_int < \l__iow_target_count_int - { \__iow_wrap_word_fits: } - { \__iow_wrap_word_newline: } - \__iow_wrap_loop:w + \if_int_compare:w #1 < 8 \exp_stop_f: + \__iow_wrap_line_aux:Nw #1 + \fi: + #2 #3 #4 #5 #6 #7 #8 #9 + \exp_after:wN \__iow_wrap_line_loop:w + \__int_value:w \__int_eval:w #1 - 8 ; } -\cs_new_protected:Npn \__iow_wrap_word_fits: +\cs_new:Npn \__iow_wrap_line_aux:Nw #1#2#3 \exp_after:wN #4 ; { - \bool_if:NTF \l__iow_line_start_bool + #2 + \exp_after:wN \__iow_wrap_line_end:NnnnnnnnN + \exp_after:wN #1 + \exp:w \exp_end_continue_f:w + \exp_after:wN \exp_after:wN + \if_case:w #1 \exp_stop_f: + \prg_do_nothing: + \or: \use_none:n + \or: \use_none:nn + \or: \use_none:nnn + \or: \use_none:nnnn + \or: \use_none:nnnnn + \or: \use_none:nnnnnn + \or: \use_none:nnnnnnn + \fi: + { } { } { } { } { } { } { } #3 + } +\cs_new:Npn \__iow_wrap_line_end:NnnnnnnnN #1#2#3#4#5#6#7#8#9 + { + #2 #3 #4 #5 #6 #7 #8 + \use_none:nnnnn \__int_eval:w 8 - ; #9 + \token_if_eq_charcode:NNTF \c_space_token #9 + { \__iow_wrap_line_end:nw { } } + { \if_false: { \fi: } \__iow_wrap_break:w #9 } + } +\cs_new:Npn \__iow_wrap_line_end:nw #1 + { + \if_false: { \fi: } + \__iow_wrap_store_do:n {#1} + \__iow_wrap_next_line:w + } +\cs_new:Npn \__iow_wrap_end_chunk:w + #1 \__int_eval:w #2 - #3 ; #4#5 \q_stop + { + \if_false: { \fi: } + \exp_args:Nf \__iow_wrap_next:nw { \int_eval:n { #2 - #4 } } + } +\cs_set_protected:Npn \__iow_tmp:w #1 + { + \cs_new:Npn \__iow_wrap_break:w { - \bool_set_false:N \l__iow_line_start_bool - \tl_put_right:Nx \l__iow_current_line_tl - { \l__iow_current_indentation_tl \l__iow_current_word_tl } - \int_add:Nn \l__iow_current_line_int - { \l__iow_current_indentation_int } + \tex_edef:D \l__iow_line_part_tl + { \if_false: } \fi: + \exp_after:wN \__iow_wrap_break_first:w + \l__iow_line_part_tl + #1 + { ? \__iow_wrap_break_end:w } + \q_mark } + \cs_new:Npn \__iow_wrap_break_first:w ##1 #1 ##2 { - \tl_put_right:Nx \l__iow_current_line_tl - { ~ \l__iow_current_word_tl } - \int_incr:N \l__iow_current_line_int + \use_none:nn ##2 \__iow_wrap_break_none:w + \__iow_wrap_break_loop:w ##1 #1 ##2 } + \cs_new:Npn \__iow_wrap_break_none:w ##1##2 #1 ##3 \q_mark ##4 #1 + { + \tl_if_empty:NTF \l__iow_line_tl + { ##2 ##4 \__iow_wrap_line_end:nw { } } + { \__iow_wrap_line_end:nw { \__iow_wrap_trim:N } ##2 ##4 #1 } + } + \cs_new:Npn \__iow_wrap_break_loop:w ##1 #1 ##2 #1 ##3 + { + \use_none:n ##3 + ##1 #1 + \__iow_wrap_break_loop:w ##2 #1 ##3 + } + \cs_new:Npn \__iow_wrap_break_end:w ##1 #1 ##2 ##3 #1 ##4 \q_mark + { ##1 \__iow_wrap_line_end:nw { } ##3 } } -\cs_new_protected:Npn \__iow_wrap_word_newline: +\exp_args:NV \__iow_tmp:w \c_catcode_other_space_tl +\cs_new_protected:Npn \__iow_wrap_next_line:w #1#2 \q_stop { - \__iow_wrap_set_target: - \tl_put_right:Nx \l__iow_wrap_tl - { \l__iow_current_line_tl \l__iow_newline_tl } - \int_set:Nn \l__iow_current_line_int + \tl_clear:N \l__iow_line_tl + \token_if_eq_meaning:NNTF #1 \__iow_wrap_end_chunk:w { - \l__iow_current_word_int - + \l__iow_current_indentation_int + \tl_clear:N \l__iow_line_part_tl + \bool_set_true:N \l__iow_line_break_bool + \__iow_wrap_next:nw { \l__iow_line_target_int } + } + { + \__iow_wrap_line:nw + { \l__iow_indent_tl } + \l__iow_line_target_int - \l__iow_indent_int ; + #1 #2 \q_stop } - \tl_set:Nx \l__iow_current_line_tl - { \l__iow_current_indentation_tl \l__iow_current_word_tl } } -\cs_new_protected:Npn \__iow_wrap_special:w #1 ~ #2 ~ #3 ~ % +\cs_new_protected:Npn \__iow_wrap_indent:n #1 { - \use:c { __iow_wrap_#1: } - \str_if_eq_x:nnTF { #2~#3 } { ~ \c__iow_wrap_marker_tl } - { \__iow_wrap_special:w } - { \__iow_wrap_loop:w #2 ~ #3 ~ } + \tl_put_right:Nx \l__iow_line_tl { \l__iow_line_part_tl } + \bool_set_false:N \l__iow_line_break_bool + \int_add:Nn \l__iow_indent_int { \l__iow_one_indent_int } + \tl_put_right:No \l__iow_indent_tl { \l__iow_one_indent_tl } + \__iow_wrap_chunk:nw {#1} } -\cs_new_protected:Npn \__iow_wrap_newline: +\cs_new_protected:Npn \__iow_wrap_unindent:n #1 { - \__iow_wrap_set_target: - \tl_put_right:Nx \l__iow_wrap_tl - { \l__iow_current_line_tl \l__iow_newline_tl } - \int_zero:N \l__iow_current_line_int - \tl_clear:N \l__iow_current_line_tl - \bool_set_true:N \l__iow_line_start_bool + \tl_put_right:Nx \l__iow_line_tl { \l__iow_line_part_tl } + \bool_set_false:N \l__iow_line_break_bool + \int_sub:Nn \l__iow_indent_int { \l__iow_one_indent_int } + \tl_set:Nx \l__iow_indent_tl + { \exp_after:wN \__iow_unindent:w \l__iow_indent_tl } + \__iow_wrap_chunk:nw {#1} } -\cs_new_protected:Npx \__iow_wrap_indent: +\cs_new_protected:Npn \__iow_wrap_newline:n #1 { - \int_add:Nn \l__iow_current_indentation_int \c_four - \tl_put_right:Nx \exp_not:N \l__iow_current_indentation_tl - { \c_space_tl \c_space_tl \c_space_tl \c_space_tl } + \bool_if:NF \l__iow_line_break_bool + { \__iow_wrap_store_do:n { \__iow_wrap_trim:N } } + \bool_set_false:N \l__iow_line_break_bool + \__iow_wrap_chunk:nw { \l__iow_line_target_int } } -\cs_new_protected:Npn \__iow_wrap_unindent: +\cs_new_protected:Npn \__iow_wrap_end:n #1 { - \int_sub:Nn \l__iow_current_indentation_int \c_four - \tl_set:Nx \l__iow_current_indentation_tl - { \prg_replicate:nn \l__iow_current_indentation_int { ~ } } + \bool_if:NF \l__iow_line_break_bool + { \__iow_wrap_store_do:n { \__iow_wrap_trim:N } } + \bool_set_false:N \l__iow_line_break_bool } -\cs_new_protected:Npn \__iow_wrap_end: +\cs_new_protected:Npn \__iow_wrap_store_do:n #1 { - \tl_put_right:Nx \l__iow_wrap_tl - { \l__iow_current_line_tl } - \use_none_delimit_by_q_stop:w + \tl_set:Nx \l__iow_line_tl + { \l__iow_line_tl \l__iow_line_part_tl } + \tl_set:Nx \l__iow_wrap_tl + { + \l__iow_wrap_tl + \l__iow_newline_tl + #1 \l__iow_line_tl + } + \tl_clear:N \l__iow_line_tl + } +\cs_set_protected:Npn \__iow_tmp:w #1 + { + \cs_new:Npn \__iow_wrap_trim:N ##1 + { \tl_if_empty:NF ##1 { \exp_after:wN \__iow_wrap_trim:w ##1 \q_stop } } + \cs_new:Npn \__iow_wrap_trim:w ##1 #1 \q_stop {##1} } +\exp_args:NV \__iow_tmp:w \c_catcode_other_space_tl \__msg_kernel_new:nnnn { kernel } { file-not-found } { File~'#1'~not~found. } { @@ -8715,12 +9020,25 @@ { File~names~must~contain~balanced~numbers~of~quotes~("). } -\__msg_kernel_new:nnn { kernel } { indent-outside-wrapping-code } - { Only~\iow_wrap:nnnN~(arg~1)~allows~\iow_indent:n } -\cs_new_eq:NN \ior_get_str:NN \ior_str_get:NN +\__msg_kernel_new:nnnn { kernel } { iow-indent } + { Only~#1 (arg~1)~allows~#2 } + { + The~command~#2 can~only~be~used~in~messages~ + which~will~be~wrapped~using~#1.~ + It~was~called~with~argument~'#3'. + } +\cs_new_protected:Npn \ior_get_str:NN + { + \__msg_kernel_warning:nnxxx { kernel } { deprecated-command } + { 2017-12-31 } + { \token_to_str:N \ior_get_str:NN } + { \token_to_str:N \ior_str_get:NN } + \cs_gset_eq:NN \ior_get_str:NN \ior_str_get:NN + \ior_str_get:NN + } %% File: l3skip.dtx Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project -%% (C) 2012-2016 The LaTeX3 Project -\GetIdInfo$Id: l3skip.dtx 6809 2017-01-01 06:33:13Z bruno $ +%% (C) 2012-2017 The LaTeX3 Project +\GetIdInfo$Id: l3skip.dtx 6968 2017-02-20 16:08:44Z bruno $ {L3 Dimensions and skips} \cs_new_eq:NN \if_dim:w \tex_ifdim:D \cs_new_eq:NN \__dim_eval:w \etex_dimexpr:D @@ -8948,7 +9266,7 @@ ##1 . ##2 \tl_to_str:n { pt } } { - \int_compare:nNnTF {#2} > \c_zero + \int_compare:nNnTF {#2} > { 0 } { #1 . #2 } { #1 } } @@ -8968,6 +9286,10 @@ \cs_generate_variant:Nn \dim_show:N { c } \cs_new_protected:Npn \dim_show:n { \__msg_show_wrap:Nn \dim_eval:n } +\cs_new_eq:NN \dim_log:N \__kernel_register_log:N +\cs_new_eq:NN \dim_log:c \__kernel_register_log:c +\cs_new_protected:Npn \dim_log:n + { \__msg_log_next: \dim_show:n } \dim_const:Nn \c_zero_dim { 0 pt } \dim_const:Nn \c_max_dim { 16383.99999 pt } \dim_new:N \l_tmpa_dim @@ -9025,7 +9347,7 @@ { \if_int_compare:w \__str_if_eq_x:nn { \skip_eval:n { #1 } } { \skip_eval:n { #2 } } - = \c_zero + = 0 \exp_stop_f: \prg_return_true: \else: \prg_return_false: @@ -9058,6 +9380,10 @@ \cs_generate_variant:Nn \skip_show:N { c } \cs_new_protected:Npn \skip_show:n { \__msg_show_wrap:Nn \skip_eval:n } +\cs_new_eq:NN \skip_log:N \__kernel_register_log:N +\cs_new_eq:NN \skip_log:c \__kernel_register_log:c +\cs_new_protected:Npn \skip_log:n + { \__msg_log_next: \skip_show:n } \skip_const:Nn \c_zero_skip { \c_zero_dim } \skip_const:Nn \c_max_skip { \c_max_dim } \skip_new:N \l_tmpa_skip @@ -9120,6 +9446,10 @@ \cs_generate_variant:Nn \muskip_show:N { c } \cs_new_protected:Npn \muskip_show:n { \__msg_show_wrap:Nn \muskip_eval:n } +\cs_new_eq:NN \muskip_log:N \__kernel_register_log:N +\cs_new_eq:NN \muskip_log:c \__kernel_register_log:c +\cs_new_protected:Npn \muskip_log:n + { \__msg_log_next: \muskip_show:n } \muskip_const:Nn \c_zero_muskip { 0 mu } \muskip_const:Nn \c_max_muskip { 16383.99999 mu } \muskip_new:N \l_tmpa_muskip @@ -9127,7 +9457,7 @@ \muskip_new:N \g_tmpa_muskip \muskip_new:N \g_tmpb_muskip %% File: l3keys.dtx Copyright (C) 2006-2017 The LaTeX3 Project -\GetIdInfo$Id: l3keys.dtx 6811 2017-01-01 08:50:54Z joseph $ +\GetIdInfo$Id: l3keys.dtx 6906 2017-02-12 20:07:58Z bruno $ {L3 Key-value interfaces} \tl_new:N \l__keyval_key_tl \tl_new:N \l__keyval_value_tl @@ -9979,6 +10309,8 @@ } } } +\cs_new_protected:Npn \keys_log:nn + { \__msg_log_next: \keys_show:nn } \__msg_kernel_new:nnnn { kernel } { boolean-values-only } { Key~'#1'~accepts~boolean~values~only. } { The~key~'#1'~only~accepts~the~values~'true'~and~'false'. } @@ -10048,10 +10380,10 @@ { has~the~properties: } { is~undefined. } } -%% File: l3fp.dtx Copyright (C) 2011-2016 The LaTeX3 Project -\GetIdInfo$Id: l3fp.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3fp.dtx Copyright (C) 2011-2017 The LaTeX3 Project +\GetIdInfo$Id: l3fp.dtx 6923 2017-02-14 03:07:25Z bruno $ {L3 Floating points} -%% File: l3fp-aux.dtx Copyright(C) 2011-2014,2016 The LaTeX3 Project +%% File: l3fp-aux.dtx Copyright(C) 2011-2014,2016-2017 The LaTeX3 Project \cs_new:Npn \__fp_use_none_stop_f:n #1 { \exp_stop_f: } \cs_new:Npn \__fp_use_s:n #1 { #1; } \cs_new:Npn \__fp_use_s:nn #1#2 { #1#2; } @@ -10080,7 +10412,12 @@ \tl_const:Nn \c_inf_fp { \s__fp \__fp_chk:w 2 0 \s__fp_exact ; } \tl_const:Nn \c_minus_inf_fp { \s__fp \__fp_chk:w 2 2 \s__fp_exact ; } \tl_const:Nn \c_nan_fp { \s__fp \__fp_chk:w 3 1 \s__fp_exact ; } +\int_const:Nn \c__fp_prec_int { 16 } +\int_const:Nn \c__fp_half_prec_int { 8 } +\int_const:Nn \c__fp_block_int { 4 } +\int_const:Nn \c__fp_myriad_int { 10000 } \int_const:Nn \c__fp_max_exponent_int { 10000 } +\int_const:Nn \c__fp_max_exp_exponent_int { 5 } \cs_new:Npn \__fp_zero_fp:N #1 { \s__fp \__fp_chk:w 0 #1 \s__fp_underflow ; } \cs_new:Npn \__fp_inf_fp:N #1 @@ -10107,13 +10444,13 @@ \fi: } \cs_new:Npn \__fp_neg_sign:N #1 - { \__int_eval:w \c_two - #1 \__int_eval_end: } + { \__int_eval:w 2 - #1 \__int_eval_end: } \cs_new:Npn \__fp_sanitize:Nw #1 #2; { \if_case:w - \if_int_compare:w #2 > \c__fp_max_exponent_int \c_one \else: - \if_int_compare:w #2 < - \c__fp_max_exponent_int \c_two \else: - \if_meaning:w 1 #1 \c_three \else: \c_zero \fi: \fi: \fi: + \if_int_compare:w #2 > \c__fp_max_exponent_int 1 ~ \else: + \if_int_compare:w #2 < - \c__fp_max_exponent_int 2 ~ \else: + \if_meaning:w 1 #1 3 ~ \else: 0 ~ \fi: \fi: \fi: \or: \exp_after:wN \__fp_overflow:w \or: \exp_after:wN \__fp_underflow:w \or: \exp_after:wN \__fp_sanitize_zero:w @@ -10205,7 +10542,7 @@ { \cs:w __fp_decimate_ - \if_int_compare:w \__int_eval:w #1 > \c_sixteen + \if_int_compare:w \__int_eval:w #1 > \c__fp_prec_int tiny \else: \__int_to_roman:w \__int_eval:w #1 @@ -10269,8 +10606,8 @@ } \cs_new:Npn \__fp_int_normal:nnnnn #1 #2#3#4#5 { - \if_int_compare:w #1 > \c_zero - \__fp_decimate:nNnnnn { \c_sixteen - #1 } + \if_int_compare:w #1 > 0 \exp_stop_f: + \__fp_decimate:nNnnnn { \c__fp_prec_int - #1 } \__fp_int_test:Nw {#2} {#3} {#4} {#5} \else: @@ -10303,8 +10640,8 @@ \cs_new:Npn \__fp_small_int_true:wTF #1; #2#3 { #2 {#1} } \cs_new:Npn \__fp_small_int_normal:NnwTF #1#2#3; { - \if_int_compare:w #2 > \c_zero - \__fp_decimate:nNnnnn { \c_sixteen - #2 } + \if_int_compare:w #2 > 0 \exp_stop_f: + \__fp_decimate:nNnnnn { \c__fp_prec_int - #2 } \__fp_small_int_test:NnnwNnw #3 #1 {#2} \else: @@ -10317,7 +10654,7 @@ \if_meaning:w 0 #1 \exp_after:wN \__fp_small_int_true:wTF \__int_value:w \if_meaning:w 2 #5 - \fi: - \if_int_compare:w #6 > \c_eight + \if_int_compare:w #6 > \c__fp_half_prec_int 1 0000 0000 \else: #3 @@ -10328,13 +10665,13 @@ } \cs_new:Npn \__fp_array_count:n #1 { - \__int_value:w \__int_eval:w \c_zero + \__int_value:w \__int_eval:w 0 \__fp_array_count_loop:Nw #1 { ? \__prg_break: } ; \__prg_break_point: \__int_eval_end: } \cs_new:Npn \__fp_array_count_loop:Nw #1#2; - { \use_none:n #1 + \c_one \__fp_array_count_loop:Nw } + { \use_none:n #1 + 1 \__fp_array_count_loop:Nw } \cs_new:Npn \__fp_expand:n #1 { \__fp_expand_loop:nwnN { } @@ -10357,22 +10694,10 @@ conversion~functions. } %% File: l3fp-traps.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project -\cs_new_protected:Npn \fp_flag_off:n #1 - { \cs_set_eq:cN { l__fp_ #1 _flag_token } \tex_undefined:D } -\cs_new:Npn \fp_flag_on:n #1 - { \exp_args:Nc \use_none:n { l__fp_ #1 _flag_token } } -\prg_new_conditional:Npnn \fp_if_flag_on:n #1 { p , T , F , TF } - { - \if_cs_exist:w l__fp_ #1 _flag_token \cs_end: - \prg_return_true: - \else: - \prg_return_false: - \fi: - } -\cs_new_eq:NN \l__fp_invalid_operation_flag_token \tex_undefined:D -\cs_new_eq:NN \l__fp_division_by_zero_flag_token \tex_undefined:D -\cs_new_eq:NN \l__fp_overflow_flag_token \tex_undefined:D -\cs_new_eq:NN \l__fp_underflow_flag_token \tex_undefined:D +\flag_new:n { fp_invalid_operation } +\flag_new:n { fp_division_by_zero } +\flag_new:n { fp_overflow } +\flag_new:n { fp_underflow } \cs_new_protected:Npn \fp_trap:nn #1#2 { \cs_if_exist_use:cF { __fp_trap_#1_set_#2: } @@ -10403,7 +10728,7 @@ { #1 \__fp_error:nnfn { invalid } {##2} { \fp_to_tl:n { ##3; } } { } - \fp_flag_on:n { invalid_operation } + \flag_raise:n { fp_invalid_operation } ##1 } \exp_args:Nno \use:n @@ -10412,7 +10737,7 @@ #1 \__fp_error:nffn { invalid-ii } { \fp_to_tl:n { ##2; } } { \fp_to_tl:n { ##3; } } {##1} - \fp_flag_on:n { invalid_operation } + \flag_raise:n { fp_invalid_operation } \exp_after:wN \c_nan_fp } \exp_args:Nno \use:n @@ -10420,7 +10745,7 @@ { #1 \__fp_error:nffn { invalid } {##1} {##2} { } - \fp_flag_on:n { invalid_operation } + \flag_raise:n { fp_invalid_operation } \exp_after:wN \c_nan_fp } } @@ -10437,7 +10762,7 @@ { #1 \__fp_error:nnfn { zero-div } {##2} { \fp_to_tl:n { ##3; } } { } - \fp_flag_on:n { division_by_zero } + \flag_raise:n { fp_division_by_zero } \exp_after:wN ##1 } \exp_args:Nno \use:n @@ -10446,7 +10771,7 @@ #1 \__fp_error:nffn { zero-div-ii } { \fp_to_tl:n { ##3; } } { \fp_to_tl:n { ##4; } } {##2} - \fp_flag_on:n { division_by_zero } + \flag_raise:n { fp_division_by_zero } \exp_after:wN ##1 } } @@ -10477,7 +10802,7 @@ { \fp_to_tl:n { \s__fp \__fp_chk:w ##1##2##3; } } { \token_if_eq_meaning:NNF 0 ##2 { - } #4 } {#2} - \fp_flag_on:n {#2} + \flag_raise:n { fp_#2 } #3 ##2 } } @@ -10537,30 +10862,31 @@ \__msg_kernel_new:nnn { kernel } { fp-invalid-ii } { Invalid~operation~ (#1) #3 (#2) } %% File: l3fp-round.dtx Copyright(C) 2011-2012,2014-2016 The LaTeX3 Project +\int_const:Nn \c__fp_five_int { 5 } \cs_new:Npn \__fp_round_return_one: - { \exp_after:wN \c_one \exp:w } + { \exp_after:wN 1 \exp_after:wN \exp_stop_f: \exp:w } \cs_new:Npn \__fp_round_to_ninf:NNN #1 #2 #3 { \if_meaning:w 2 #1 - \if_int_compare:w #3 > \c_zero + \if_int_compare:w #3 > 0 \exp_stop_f: \__fp_round_return_one: \fi: \fi: - \c_zero + 0 \exp_stop_f: } -\cs_new:Npn \__fp_round_to_zero:NNN #1 #2 #3 { \c_zero } +\cs_new:Npn \__fp_round_to_zero:NNN #1 #2 #3 { 0 \exp_stop_f: } \cs_new:Npn \__fp_round_to_pinf:NNN #1 #2 #3 { \if_meaning:w 0 #1 - \if_int_compare:w #3 > \c_zero + \if_int_compare:w #3 > 0 \exp_stop_f: \__fp_round_return_one: \fi: \fi: - \c_zero + 0 \exp_stop_f: } \cs_new:Npn \__fp_round_to_nearest:NNN #1 #2 #3 { - \if_int_compare:w #3 > \c_five + \if_int_compare:w #3 > \c__fp_five_int \__fp_round_return_one: \else: \if_meaning:w 5 #3 @@ -10569,11 +10895,11 @@ \fi: \fi: \fi: - \c_zero + 0 \exp_stop_f: } \cs_new:Npn \__fp_round_to_nearest_ninf:NNN #1 #2 #3 { - \if_int_compare:w #3 > \c_five + \if_int_compare:w #3 > \c__fp_five_int \__fp_round_return_one: \else: \if_meaning:w 5 #3 @@ -10582,18 +10908,18 @@ \fi: \fi: \fi: - \c_zero + 0 \exp_stop_f: } \cs_new:Npn \__fp_round_to_nearest_zero:NNN #1 #2 #3 { - \if_int_compare:w #3 > \c_five + \if_int_compare:w #3 > \c__fp_five_int \__fp_round_return_one: \fi: - \c_zero + 0 \exp_stop_f: } \cs_new:Npn \__fp_round_to_nearest_pinf:NNN #1 #2 #3 { - \if_int_compare:w #3 > \c_five + \if_int_compare:w #3 > \c__fp_five_int \__fp_round_return_one: \else: \if_meaning:w 5 #3 @@ -10602,7 +10928,7 @@ \fi: \fi: \fi: - \c_zero + 0 \exp_stop_f: } \cs_new_eq:NN \__fp_round:NNN \__fp_round_to_nearest:NNN \cs_new:Npn \__fp_round_s:NNNw #1 #2 #3 #4; @@ -10614,7 +10940,7 @@ \if_int_odd:w 0 \if_meaning:w 0 #3 1 \fi: \if_meaning:w 5 #3 1 \fi: \exp_stop_f: - \if_int_compare:w \__int_eval:w #4 > \c_zero + \if_int_compare:w \__int_eval:w #4 > 0 \exp_stop_f: 1 + \fi: \fi: @@ -10623,11 +10949,11 @@ } \cs_new:Npn \__fp_round_digit:Nw #1 #2; { - \if_int_odd:w \if_meaning:w 0 #1 \c_one \else: - \if_meaning:w 5 #1 \c_one \else: - \c_zero \fi: \fi: - \if_int_compare:w \__int_eval:w #2 > \c_zero - \__int_eval:w \c_one + + \if_int_odd:w \if_meaning:w 0 #1 1 \else: + \if_meaning:w 5 #1 1 \else: + 0 \fi: \fi: \exp_stop_f: + \if_int_compare:w \__int_eval:w #2 > 0 \exp_stop_f: + \__int_eval:w 1 + \fi: \fi: #1 @@ -10635,20 +10961,20 @@ \cs_new_eq:NN \__fp_round_to_ninf_neg:NNN \__fp_round_to_pinf:NNN \cs_new:Npn \__fp_round_to_zero_neg:NNN #1 #2 #3 { - \if_int_compare:w #3 > \c_zero + \if_int_compare:w #3 > 0 \exp_stop_f: \__fp_round_return_one: \fi: - \c_zero + 0 \exp_stop_f: } \cs_new_eq:NN \__fp_round_to_pinf_neg:NNN \__fp_round_to_ninf:NNN \cs_new_eq:NN \__fp_round_to_nearest_neg:NNN \__fp_round_to_nearest:NNN \cs_new_eq:NN \__fp_round_to_nearest_ninf_neg:NNN \__fp_round_to_nearest_pinf:NNN \cs_new:Npn \__fp_round_to_nearest_zero_neg:NNN #1 #2 #3 { - \if_int_compare:w #3 > \c_four + \if_int_compare:w #3 < \c__fp_five_int \else: \__fp_round_return_one: \fi: - \c_zero + 0 \exp_stop_f: } \cs_new_eq:NN \__fp_round_to_nearest_pinf_neg:NNN \__fp_round_to_nearest_ninf:NNN \cs_new_eq:NN \__fp_round_neg:NNN \__fp_round_to_nearest_neg:NNN @@ -10732,19 +11058,19 @@ } \cs_new:Npn \__fp_round_normal:NwNNnw #1#2 \s__fp \__fp_chk:w 1#3#4#5; { - \__fp_decimate:nNnnnn { \c_sixteen - #4 - #2 } + \__fp_decimate:nNnnnn { \c__fp_prec_int - #4 - #2 } \__fp_round_normal:NnnwNNnn #5 #1 #3 {#4} {#2} } \cs_new:Npn \__fp_round_normal:NnnwNNnn #1#2#3#4; #5#6 { \exp_after:wN \__fp_round_normal:NNwNnn \__int_value:w \__int_eval:w - \if_int_compare:w #2 > \c_zero + \if_int_compare:w #2 > 0 \exp_stop_f: 1 \__int_value:w #2 \exp_after:wN \__fp_round_pack:Nw \__int_value:w \__int_eval:w 1#3 + \else: - \if_int_compare:w #3 > \c_zero + \if_int_compare:w #3 > 0 \exp_stop_f: 1 \__int_value:w #3 + \fi: \fi: @@ -10756,7 +11082,7 @@ 0000 0000 0000 0000 ; #6 } \cs_new:Npn \__fp_round_pack:Nw #1 - { \if_meaning:w 2 #1 + \c_one \fi: \__int_eval_end: } + { \if_meaning:w 2 #1 + 1 \fi: \__int_eval_end: } \cs_new:Npn \__fp_round_normal:NNwNnn #1 #2 { \if_meaning:w 0 #2 @@ -10781,7 +11107,7 @@ \else: \exp_after:wN \__fp_round_special_aux:Nw \exp_after:wN #4 - \__int_value:w \__int_eval:w \c_one + \__int_value:w \__int_eval:w 1 \if_meaning:w 1 #1 -#6 \else: +#5 \fi: \fi: ; @@ -10826,7 +11152,7 @@ { \cs_new:cpn { __fp_parse_digits_ #1 :N } ##1 { - \if_int_compare:w \c_nine < 1 \token_to_str:N ##1 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N ##1 \exp_stop_f: \token_to_str:N ##1 \exp_after:wN #2 \exp:w \else: \__fp_parse_return_semicolon:w #3 ##1 @@ -10856,7 +11182,7 @@ \exp_after:wN \__fp_parse_one_register:NN \fi: \else: - \if_int_compare:w \c_nine < 1 \token_to_str:N #2 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #2 \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_parse_one_digit:NN \else: @@ -10965,14 +11291,14 @@ \exp_after:wN #1 \exp:w \exp_end_continue_f:w \exp_after:wN \__fp_sanitize:wN - \__int_value:w \__int_eval:w \c_zero \__fp_parse_trim_zeros:N + \__int_value:w \__int_eval:w 0 \__fp_parse_trim_zeros:N } \cs_new:Npn \__fp_parse_one_other:NN #1 #2 { \if_int_compare:w \__int_eval:w - ( `#2 \if_int_compare:w `#2 > `Z - \c_thirty_two \fi: ) / 26 - = \c_three + ( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26 + = 3 \exp_stop_f: \exp_after:wN \__fp_parse_word:Nw \exp_after:wN #1 \exp_after:wN #2 @@ -11006,13 +11332,12 @@ \exp_end_continue_f:w \if_int_compare:w \if_catcode:w \scan_stop: \exp_not:N #1 - \c_zero + 0 \else: \__int_eval:w - ( `#1 \if_int_compare:w `#1 > `Z - \c_thirty_two \fi: ) - / 26 + ( `#1 \if_int_compare:w `#1 > `Z - 32 \fi: ) / 26 \fi: - = \c_three + = 3 \exp_stop_f: \exp_after:wN #1 \exp:w \exp_after:wN \__fp_parse_letters:N \exp:w @@ -11063,7 +11388,7 @@ { \fi: \fi: - \if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #1 \exp_stop_f: \exp_after:wN \__fp_parse_large:N \else: \exp_after:wN \__fp_parse_zero: @@ -11073,7 +11398,7 @@ \cs_new:Npn \__fp_parse_strim_zeros:N #1 { \if:w 0 \exp_not:N #1 - - \c_one + - 1 \exp_after:wN \__fp_parse_strim_zeros:N \exp:w \else: \__fp_parse_strim_end:w #1 @@ -11083,7 +11408,7 @@ \cs_new:Npn \__fp_parse_strim_end:w #1 \fi: \__fp_parse_expand:w { \fi: - \if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #1 \exp_stop_f: \exp_after:wN \__fp_parse_small:N \else: \exp_after:wN \__fp_parse_zero: @@ -11108,9 +11433,9 @@ { #1 #2 \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww - \exp_after:wN \c_zero + \exp_after:wN 0 \__int_value:w \__int_eval:w 1 - \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f: \token_to_str:N #4 \exp_after:wN \__fp_parse_small_trailing:wwNN \__int_value:w 1 @@ -11124,7 +11449,7 @@ \cs_new:Npn \__fp_parse_small_trailing:wwNN 1 #1 ; #2; #3 #4 { #1 #2 - \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f: \token_to_str:N #4 \exp_after:wN \__fp_parse_small_round:NN \exp_after:wN #4 @@ -11136,7 +11461,7 @@ } \cs_new:Npn \__fp_parse_pack_trailing:NNNNNNww #1 #2 #3#4#5#6 #7; #8 ; { - \if_meaning:w 2 #2 + \c_one \fi: + \if_meaning:w 2 #2 + 1 \fi: ; #8 + #1 ; {#3#4#5#6} {#7}; } \cs_new:Npn \__fp_parse_pack_leading:NNNNNww #1 #2#3#4#5 #6; #7; @@ -11146,7 +11471,7 @@ ; 0 {#2#3#4#5} {#6} } \cs_new:Npn \__fp_parse_pack_carry:w \fi: ; 0 #1 - { \fi: + \c_one ; 0 {1000} } + { \fi: + 1 ; 0 {1000} } \cs_new:Npn \__fp_parse_large:N #1 { \exp_after:wN \__fp_parse_large_leading:wwNN @@ -11156,10 +11481,10 @@ } \cs_new:Npn \__fp_parse_large_leading:wwNN 1 #1 ; #2; #3 #4 { - + \c_eight - #3 + + \c__fp_half_prec_int - #3 \exp_after:wN \__fp_parse_pack_leading:NNNNNww \__int_value:w \__int_eval:w 1 #1 - \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f: \exp_after:wN \__fp_parse_large_trailing:wwNN \__int_value:w 1 \token_to_str:N #4 \exp_after:wN \__fp_parse_digits_vi:N @@ -11177,7 +11502,7 @@ \else: #2 \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww - \exp_after:wN \c_zero + \exp_after:wN 0 \__int_value:w 1 0000 0000 \__fp_parse_exponent:Nw #4 \fi: @@ -11186,16 +11511,16 @@ } \cs_new:Npn \__fp_parse_large_trailing:wwNN 1 #1 ; #2; #3 #4 { - \if_int_compare:w \c_nine < 1 \token_to_str:N #4 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #4 \exp_stop_f: \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww - \exp_after:wN \c_eight + \exp_after:wN \c__fp_half_prec_int \__int_value:w \__int_eval:w 1 #1 \token_to_str:N #4 \exp_after:wN \__fp_parse_large_round:NN \exp_after:wN #4 \exp:w \else: \exp_after:wN \__fp_parse_pack_trailing:NNNNNNww - \__int_value:w \__int_eval:w \c_seven - #3 \exp_stop_f: + \__int_value:w \__int_eval:w 7 - #3 \exp_stop_f: \__int_value:w \__int_eval:w 1 #1 \if:w . \exp_not:N #4 \exp_after:wN \__fp_parse_small_trailing:wwNN @@ -11214,8 +11539,8 @@ } \cs_new:Npn \__fp_parse_round_loop:N #1 { - \if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f: - + \c_one + \if_int_compare:w 9 < 1 \token_to_str:N #1 \exp_stop_f: + + 1 \if:w 0 \token_to_str:N #1 \exp_after:wN \__fp_parse_round_loop:N \exp:w @@ -11224,18 +11549,18 @@ \exp:w \fi: \else: - \__fp_parse_return_semicolon:w \c_zero #1 + \__fp_parse_return_semicolon:w 0 #1 \fi: \__fp_parse_expand:w } \cs_new:Npn \__fp_parse_round_up:N #1 { - \if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f: - + \c_one + \if_int_compare:w 9 < 1 \token_to_str:N #1 \exp_stop_f: + + 1 \exp_after:wN \__fp_parse_round_up:N \exp:w \else: - \__fp_parse_return_semicolon:w \c_one #1 + \__fp_parse_return_semicolon:w 1 #1 \fi: \__fp_parse_expand:w } @@ -11246,7 +11571,7 @@ } \cs_new:Npn \__fp_parse_small_round:NN #1#2 { - \if_int_compare:w \c_nine < 1 \token_to_str:N #2 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #2 \exp_stop_f: + \exp_after:wN \__fp_round_s:NNNw \exp_after:wN 0 @@ -11254,7 +11579,7 @@ \exp_after:wN #2 \__int_value:w \__int_eval:w \exp_after:wN \__fp_parse_round_after:wN - \__int_value:w \__int_eval:w \c_zero * \__int_eval:w \c_zero + \__int_value:w \__int_eval:w 0 * \__int_eval:w 0 \exp_after:wN \__fp_parse_round_loop:N \exp:w \else: @@ -11264,7 +11589,7 @@ } \cs_new:Npn \__fp_parse_large_round:NN #1#2 { - \if_int_compare:w \c_nine < 1 \token_to_str:N #2 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #2 \exp_stop_f: + \exp_after:wN \__fp_round_s:NNNw \exp_after:wN 0 @@ -11272,7 +11597,7 @@ \exp_after:wN #2 \__int_value:w \__int_eval:w \exp_after:wN \__fp_parse_large_round_aux:wNN - \__int_value:w \__int_eval:w \c_one + \__int_value:w \__int_eval:w 1 \exp_after:wN \__fp_parse_round_loop:N \else: %^^A could be dot, or e, or other \exp_after:wN \__fp_parse_large_round_test:NN @@ -11297,12 +11622,12 @@ \exp_after:wN \__fp_parse_round_after:wN \__int_value:w \__int_eval:w #1 \if:w . \exp_not:N #3 - + \c_zero * \__int_eval:w \c_zero + + 0 * \__int_eval:w 0 \exp_after:wN \__fp_parse_round_loop:N \exp:w \exp_after:wN \__fp_parse_expand:w \else: \exp_after:wN ; - \exp_after:wN \c_zero + \exp_after:wN 0 \exp_after:wN #3 \fi: } @@ -11324,7 +11649,7 @@ \cs_new:Npn \__fp_parse_exponent_aux:N #1 { \if_int_compare:w \if_catcode:w \scan_stop: \exp_not:N #1 - \c_zero \else: `#1 \fi: > `9 \exp_stop_f: + 0 \else: `#1 \fi: > `9 \exp_stop_f: 0 \exp_after:wN ; \exp_after:wN e \else: \exp_after:wN \__fp_parse_exponent_sign:N @@ -11343,7 +11668,7 @@ } \cs_new:Npn \__fp_parse_exponent_body:N #1 { - \if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #1 \exp_stop_f: \token_to_str:N #1 \exp_after:wN \__fp_parse_exponent_digits:N \exp:w @@ -11359,7 +11684,7 @@ } \cs_new:Npn \__fp_parse_exponent_digits:N #1 { - \if_int_compare:w \c_nine < 1 \token_to_str:N #1 \exp_stop_f: + \if_int_compare:w 9 < 1 \token_to_str:N #1 \exp_stop_f: \token_to_str:N #1 \exp_after:wN \__fp_parse_exponent_digits:N \exp:w @@ -11373,7 +11698,8 @@ \if_catcode:w \scan_stop: \exp_not:N #1 \if_meaning:w \scan_stop: #1 \if_int_compare:w - \__str_if_eq_x:nn { \s__fp } { \exp_not:N #1 } = \c_zero + \__str_if_eq_x:nn { \s__fp } { \exp_not:N #1 } + = 0 \exp_stop_f: 0 \__msg_kernel_expandable_error:nnn { kernel } { fp-after-e } { floating~point~ } @@ -11387,7 +11713,7 @@ \else: \if_int_compare:w \__str_if_eq_x:nn { \__int_value:w #1 } { \tex_the:D #1 } - = \c_zero + = 0 \exp_stop_f: \__int_value:w #1 \else: 0 @@ -11434,7 +11760,7 @@ \exp_after:wN #1 \exp:w \exp_end_continue_f:w \exp_after:wN \__fp_sanitize:wN - \__int_value:w \__int_eval:w \c_zero \__fp_parse_strim_zeros:N + \__int_value:w \__int_eval:w 0 \__fp_parse_strim_zeros:N } \group_begin: \char_set_catcode_letter:N ( @@ -11644,7 +11970,7 @@ \if_catcode:w \scan_stop: \exp_not:N #2 \if_int_compare:w \__str_if_eq_x:nn { \s__fp_mark } { \exp_not:N #2 } - = \c_zero + = 0 \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_parse_infix_mark:NNN \else: @@ -11654,9 +11980,8 @@ \else: \if_int_compare:w \__int_eval:w - ( `#2 \if_int_compare:w `#2 > `Z - \c_thirty_two \fi: ) - / 26 - = \c_three + ( `#2 \if_int_compare:w `#2 > `Z - 32 \fi: ) / 26 + = 3 \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_parse_infix_juxtapose:N \else: @@ -11878,29 +12203,20 @@ } \group_end: \cs_new:cpn { __fp_parse_infix_<:N } #1 - { - \__fp_parse_compare:NNNNNNN #1 \c_one - \c_zero \c_zero \c_zero \c_zero < - } + { \__fp_parse_compare:NNNNNNN #1 1 0 0 0 0 < } \cs_new:cpn { __fp_parse_infix_=:N } #1 - { - \__fp_parse_compare:NNNNNNN #1 \c_one - \c_zero \c_zero \c_zero \c_zero = - } + { \__fp_parse_compare:NNNNNNN #1 1 0 0 0 0 = } \cs_new:cpn { __fp_parse_infix_>:N } #1 - { - \__fp_parse_compare:NNNNNNN #1 \c_one - \c_zero \c_zero \c_zero \c_zero > - } + { \__fp_parse_compare:NNNNNNN #1 1 0 0 0 0 > } \cs_new:cpn { __fp_parse_infix_!:N } #1 { \exp_after:wN \__fp_parse_compare:NNNNNNN \exp_after:wN #1 - \exp_after:wN \c_zero - \exp_after:wN \c_one - \exp_after:wN \c_one - \exp_after:wN \c_one - \exp_after:wN \c_one + \exp_after:wN 0 + \exp_after:wN 1 + \exp_after:wN 1 + \exp_after:wN 1 + \exp_after:wN 1 } \cs_new:Npn \__fp_parse_excl_error: { @@ -11922,7 +12238,7 @@ { \if_case:w \if_catcode:w \scan_stop: \exp_not:N #7 - \c_four + 4 \exp_stop_f: \else: \__int_eval:w `#7 - `< \__int_eval_end: \fi: @@ -11962,12 +12278,13 @@ { \if_int_odd:w \if_meaning:w \c_zero_fp #3 - \c_zero + 0 \else: \if_case:w \__fp_compare_back:ww #8 #2 \exp_stop_f: #5 \or: #6 \or: #7 \else: #4 \fi: \fi: + \exp_stop_f: \exp_after:wN \__fp_parse_apply_compare_aux:NNwN \exp_after:wN \c_one_fp \else: @@ -12007,7 +12324,7 @@ { \__fp_new_function:Ncfnn #1 { __fp_user_ \cs_to_str:N #1 } - { \int_eval:n { \tl_count:n {#2} / \c_two } } + { \int_eval:n { \tl_count:n {#2} / 2 } } {#2} } \cs_new_protected:Npn \__fp_new_function:NNnnn #1#2#3#4#5 @@ -12127,7 +12444,7 @@ \if_int_compare:w #4 < #1 - \fi: 1 \fi: \else: - \if_int_compare:w #1#4 = \c_zero + \if_int_compare:w #1#4 = 0 \exp_stop_f: 0 \else: 1 @@ -12135,7 +12452,7 @@ \fi: \exp_stop_f: } -\cs_new:Npn \__fp_compare_nan:w #1 \exp_stop_f: { \c_two } +\cs_new:Npn \__fp_compare_nan:w #1 \fi: \exp_stop_f: { 2 \exp_stop_f: } \cs_new:Npn \__fp_compare_npos:nwnw #1#2; #3#4; { \if_int_compare:w #1 = #3 \exp_stop_f: @@ -12294,7 +12611,7 @@ \__fp_compare_back:ww \s__fp \__fp_chk:w #4#5; \s__fp \__fp_chk:w #2#3; - = #1 \c_one + = #1 1 \exp_stop_f: \__fp_minmax_auxii:ww \else: \__fp_minmax_auxi:ww @@ -12359,12 +12676,12 @@ \cs_new:Npn \__fp_ternary_loop_break:w #1 \fi: #2 \__fp_ternary_break_point:n #3 { - \c_zero = \c_zero \fi: + 0 = 0 \exp_stop_f: \fi: \exp_after:wN \__fp_ternary_auxii:NwwN } \cs_new:Npn \__fp_ternary_loop:Nw \s__fp \__fp_chk:w #1#2; { - \if_int_compare:w #1 > \c_zero + \if_int_compare:w #1 > 0 \exp_stop_f: \exp_after:wN \__fp_ternary_map_break: \fi: \__fp_ternary_loop:Nw @@ -12388,7 +12705,7 @@ } %% File: l3fp-basics.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project \cs_new:Npn \__fp_basics_pack_low:NNNNNw #1 #2#3#4#5 #6; - { + #1 - \c_one ; {#2#3#4#5} {#6} ; } + { + #1 - 1 ; {#2#3#4#5} {#6} ; } \cs_new:Npn \__fp_basics_pack_high:NNNNNw #1 #2#3#4#5 #6; { \if_meaning:w 2 #1 @@ -12397,11 +12714,11 @@ ; {#2#3#4#5} {#6} } \cs_new:Npn \__fp_basics_pack_high_carry:w \fi: ; #1 - { \fi: + \c_one ; {1000} } + { \fi: + 1 ; {1000} } \cs_new:Npn \__fp_basics_pack_weird_low:NNNNw #1 #2#3#4 #5; { \if_meaning:w 2 #1 - + \c_one + + 1 \fi: \__int_eval_end: #2#3#4; {#5} ; @@ -12418,14 +12735,15 @@ { \if_case:w \if_meaning:w #2 #4 - #2 \exp_stop_f: + #2 \else: \if_int_compare:w #2 > #4 \exp_stop_f: - \c_three + 3 \else: - \c_four + 4 \fi: \fi: + \exp_stop_f: \exp_after:wN \__fp_add_zeros_o:Nww \__int_value:w \or: \exp_after:wN \__fp_add_normal_o:Nww \__int_value:w \or: \exp_after:wN \__fp_add_inf_o:Nww \__int_value:w @@ -12517,7 +12835,7 @@ \cs_new:Npn \__fp_add_significand_pack:NNNNNNN #1 #2#3#4#5#6#7 { \if_meaning:w 2 #1 - + \c_one + + 1 \fi: ; #2 #3 #4 #5 #6 #7 ; } @@ -12542,7 +12860,7 @@ \cs_new:Npn \__fp_add_significand_carry_o:wwwNN #1; #2; #3#4; #5#6 { - + \c_one + + 1 \exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw \__int_value:w \__int_eval:w 1 1 #1 \exp_after:wN \__fp_basics_pack_weird_low:NNNNw @@ -12568,7 +12886,7 @@ \cs_new:Npn \__fp_sub_npos_ii_o:Nnwnw #1 #2; #3; { \exp_after:wN \__fp_sub_npos_i_o:Nnwnw - \__int_value:w \__int_eval:w \c_two - #1 \__int_eval_end: + \__int_value:w \__fp_neg_sign:N #1 #3; #2; } \cs_new:Npn \__fp_sub_npos_i_o:Nnwnw #1 #2#3; #4#5; @@ -12581,7 +12899,7 @@ \exp_after:wN \__fp_sub_back_near_o:nnnnnnnnN \else: \exp_after:wN \__fp_decimate:nNnnnn \exp_after:wN - { \__int_value:w \__int_eval:w #2 - #4 - \c_one \exp_after:wN } + { \__int_value:w \__int_eval:w #2 - #4 - 1 \exp_after:wN } \exp_after:wN \__fp_sub_back_far_o:NnnwnnnnN \fi: #5 @@ -12591,7 +12909,7 @@ \cs_new:Npn \__fp_sub_back_near_o:nnnnnnnnN #1#2#3#4 #5#6#7#8 #9 { \exp_after:wN \__fp_sub_back_near_after:wNNNNw - \__int_value:w \__int_eval:w 10#5#6 - #1#2 - \c_eleven + \__int_value:w \__int_eval:w 10#5#6 - #1#2 - 11 \exp_after:wN \__fp_sub_back_near_pack:NNNNNNw \__int_value:w \__int_eval:w 11#7#8 - #3#4 \exp_after:wN ; } @@ -12612,7 +12930,7 @@ \cs_new:Npn \__fp_sub_back_shift_ii:ww #1 0 ; #2#3 ; { \if_meaning:w @ #1 @ - - \c_seven + - 7 - \exp_after:wN \use_i:nnn \exp_after:wN \__fp_sub_back_shift_iii:NNNNNNNNw \__int_value:w #2#3 0 ~ 123456789; @@ -12633,13 +12951,14 @@ \if_case:w \if_int_compare:w 1 #2 = #5#6 \use_i:nnnn #7 \exp_stop_f: \if_int_compare:w #3 = \use_none:n #7#8 0 \exp_stop_f: - \c_zero + 0 \else: - \if_int_compare:w #3 > \use_none:n #7#8 0 - \fi: \c_one + \if_int_compare:w #3 > \use_none:n #7#8 0 - \fi: 1 \fi: \else: - \if_int_compare:w 1 #2 > #5#6 \use_i:nnnn #7 - \fi: \c_one + \if_int_compare:w 1 #2 > #5#6 \use_i:nnnn #7 - \fi: 1 \fi: + \exp_stop_f: \exp_after:wN \__fp_sub_back_quite_far_o:wwNN \or: \exp_after:wN \__fp_sub_back_very_far_o:wwwwNN \else: \exp_after:wN \__fp_sub_back_not_far_o:wwwwNN @@ -12660,13 +12979,13 @@ \exp_after:wN \use_ii:nn \fi: { ; {1000} {0000} {0000} {0000} ; } - { - \c_one ; {9999} {9999} {9999} {9999} ; } + { - 1 ; {9999} {9999} {9999} {9999} ; } } \cs_new:Npn \__fp_sub_back_not_far_o:wwwwNN #1 ~ #2; #3 ~ #4; #5#6 { - - \c_one + - 1 \exp_after:wN \__fp_sub_back_near_after:wNNNNw - \__int_value:w \__int_eval:w 1#30 - #1 - \c_eleven + \__int_value:w \__int_eval:w 1#30 - #1 - 11 \exp_after:wN \__fp_sub_back_near_pack:NNNNNNw \__int_value:w \__int_eval:w 11 0000 0000 + #40 - #2 - \exp_after:wN \__fp_round_neg:NNN @@ -12684,7 +13003,7 @@ \cs_new:Npn \__fp_sub_back_very_far_ii_o:nnNwwNN #1#2 ; #3 ; #4 ~ #5; #6#7 { \exp_after:wN \__fp_basics_pack_high:NNNNNw - \__int_value:w \__int_eval:w 1#4 - #1 - \c_one + \__int_value:w \__int_eval:w 1#4 - #1 - 1 \exp_after:wN \__fp_basics_pack_low:NNNNNw \__int_value:w \__int_eval:w 2#5 - #2 - \exp_after:wN \__fp_round_neg:NNN @@ -12699,7 +13018,7 @@ { \__fp_mul_cases_o:NnNnww * - { - \c_two + } + { - 2 + } \__fp_mul_npos_o:Nww { } } @@ -12707,24 +13026,24 @@ #1#2#3#4 \s__fp \__fp_chk:w #5#6#7; \s__fp \__fp_chk:w #8#9 { \if_case:w \__int_eval:w - \if_int_compare:w #5 #8 = \c_eleven - \c_one + \if_int_compare:w #5 #8 = 11 ~ + 1 \else: \if_meaning:w 3 #8 - \c_three + 3 \else: \if_meaning:w 3 #5 - \c_two + 2 \else: - \if_int_compare:w #5 #8 = \c_ten - \c_nine #2 - \c_two + \if_int_compare:w #5 #8 = 10 ~ + 9 #2 - 2 \else: - (#5 #2 #8) / \c_two * \c_two + \c_seven + (#5 #2 #8) / 2 * 2 + 7 \fi: \fi: \fi: \fi: - \if_meaning:w #6 #9 - \c_one \fi: + \if_meaning:w #6 #9 - 1 \fi: \__int_eval_end: \__fp_case_use:nw { #3 0 } \or: \__fp_case_use:nw { #3 2 } @@ -12795,7 +13114,7 @@ } \cs_new:Npn \__fp_mul_significand_small_f:NNwwwN #1 #2#3; #4#5; #6; + #7 { - - \c_one + - 1 \exp_after:wN \__fp_basics_pack_high:NNNNNw \__int_value:w \__int_eval:w 1#3#4 \exp_after:wN \__fp_basics_pack_low:NNNNNw @@ -12828,7 +13147,7 @@ \__int_value:w \__int_eval:w #3 - #6 \exp_after:wN \__fp_div_significand_i_o:wnnw - \__int_value:w \__int_eval:w #7 \use_i:nnnn #8 + \c_one ; + \__int_value:w \__int_eval:w #7 \use_i:nnnn #8 + 1 ; #4 {#7}{#8}#9 ; #1 @@ -12899,13 +13218,13 @@ { 0 \exp_after:wN \__fp_div_significand_iv:wwnnnnnnn - \__int_value:w \__int_eval:w (\c_two * #2 #3) / #6 #7 ; % <- P + \__int_value:w \__int_eval:w ( 2 * #2 #3) / #6 #7 ; % <- P #2 ; {#3} {#4} {#5} {#6} {#7} } \cs_new:Npn \__fp_div_significand_iv:wwnnnnnnn #1; #2;#3#4#5 #6#7#8#9 { - + \c_five * #1 + + 5 * #1 \exp_after:wN \__fp_div_significand_vi:Nw \__int_value:w \__int_eval:w -20 + 2*#2#3 - #1*#6#7 + \exp_after:wN \__fp_div_significand_v:NN @@ -12917,9 +13236,9 @@ \cs_new:Npn \__fp_div_significand_vi:Nw #1#2; { \if_meaning:w 0 #1 - \if_int_compare:w \__int_eval:w #2 > \c_zero + \c_one \fi: + \if_int_compare:w \__int_eval:w #2 > 0 + 1 \fi: \else: - \if_meaning:w - #1 - \else: + \fi: \c_one + \if_meaning:w - #1 - \else: + \fi: 1 \fi: ; } @@ -12946,7 +13265,7 @@ \cs_new:Npn \__fp_div_significand_large_o:wwwNNNNwN #1; #2; #3; #4#5#6#7#8; #9 { - + \c_one + + 1 \exp_after:wN \__fp_basics_pack_weird_high:NNNNNNNNw \__int_value:w \__int_eval:w 1 #1 #2 \exp_after:wN \__fp_basics_pack_weird_low:NNNNw @@ -12975,12 +13294,12 @@ \if_int_odd:w #1 \exp_stop_f: \exp_after:wN \__fp_sqrt_npos_auxi_o:wwnnN \fi: - #1 / \c_two + #1 / 2 \__fp_sqrt_Newton_o:wwn 56234133; 0; {#2#3} {#4#5} 0 } -\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / \c_two #2; 0; #3#4#5 +\cs_new:Npn \__fp_sqrt_npos_auxi_o:wwnnN #1 / 2 #2; 0; #3#4#5 { - ( #1 + \c_one ) / \c_two + ( #1 + 1 ) / 2 \__fp_pack_eight:wNNNNNNNN \__fp_sqrt_npos_auxii_o:wNNNNNNNN ; @@ -12996,7 +13315,7 @@ \exp_after:wN \__fp_use_none_until_s:w \fi: \exp_after:wN \__fp_sqrt_Newton_o:wwn - \__int_value:w \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / \c_two ; + \__int_value:w \__int_eval:w (#1 + #3 * 1 0000 0000 / #1) / 2 ; #1; {#3} } \cs_new:Npn \__fp_sqrt_auxi_o:NNNNwnnN 1 #1#2#3#4#5; @@ -13043,15 +13362,15 @@ \cs_new:Npn \__fp_sqrt_auxiii_o:wnnnnnnnn #1; #2#3#4#5#6#7#8#9 { - \if_int_compare:w #1 > \c_one + \if_int_compare:w #1 > 1 \exp_stop_f: \exp_after:wN \__fp_sqrt_auxiv_o:NNNNNw \__int_value:w \__int_eval:w (#1#2 %) \else: - \if_int_compare:w #1#2 > \c_one + \if_int_compare:w #1#2 > 1 \exp_stop_f: \exp_after:wN \__fp_sqrt_auxv_o:NNNNNw \__int_value:w \__int_eval:w (#1#2#3 %) \else: - \if_int_compare:w #1#2#3 > \c_one + \if_int_compare:w #1#2#3 > 1 \exp_stop_f: \exp_after:wN \__fp_sqrt_auxvi_o:NNNNNw \__int_value:w \__int_eval:w (#1#2#3#4 %) \else: @@ -13069,7 +13388,7 @@ { \__fp_sqrt_auxviii_o:nnnnnnn {0000000#1} {#2#3#4#5#6} } \cs_new:Npn \__fp_sqrt_auxvii_o:NNNNNw 1#1#2#3#4#5#6; { - \if_int_compare:w #1#2 = \c_zero + \if_int_compare:w #1#2 = 0 \exp_stop_f: \exp_after:wN \__fp_sqrt_auxx_o:Nnnnnnnn \fi: \__fp_sqrt_auxviii_o:nnnnnnn {00000000} {000#1#2#3#4#5} @@ -13100,15 +13419,15 @@ \__fp_sqrt_auxii_o:NnnnnnnnN \__fp_sqrt_auxxii_o:nnnnnnnnw #2 {#1} - {#3} { #4 + \c_one } #5 + {#3} { #4 + 1 } #5 } \cs_new:Npn \__fp_sqrt_auxxii_o:nnnnnnnnw 0; #1#2#3#4#5#6#7#8 #9; { - \if_int_compare:w #1#2 > \c_zero - \if_int_compare:w #1#2 = \c_one - \if_int_compare:w #3#4 = \c_zero - \if_int_compare:w #5#6 = \c_zero - \if_int_compare:w #7#8 = \c_zero + \if_int_compare:w #1#2 > 0 \exp_stop_f: + \if_int_compare:w #1#2 = 1 \exp_stop_f: + \if_int_compare:w #3#4 = 0 \exp_stop_f: + \if_int_compare:w #5#6 = 0 \exp_stop_f: + \if_int_compare:w #7#8 = 0 \exp_stop_f: \__fp_sqrt_auxxiii_o:w \fi: \fi: @@ -13134,7 +13453,7 @@ \exp_after:wN \__fp_basics_pack_low:NNNNNw \__int_value:w \__int_eval:w 1 0000 0000 + #4#5 - \if_int_compare:w #6 > #1 \exp_stop_f: + \c_one \fi: + \if_int_compare:w #6 > #1 \exp_stop_f: + 1 \fi: + \exp_after:wN \__fp_round:NNN \exp_after:wN 0 \exp_after:wN 0 @@ -13161,7 +13480,7 @@ \cs_new:Npn \__fp_fixed_add_one:wN #1#2; #3 { \exp_after:wN #3 \exp_after:wN - { \__int_value:w \__int_eval:w \c_ten_thousand + #1 } #2 ; + { \__int_value:w \__int_eval:w \c__fp_myriad_int + #1 } #2 ; } \cs_new:Npn \__fp_fixed_div_myriad:wn #1#2#3#4#5#6; { @@ -13192,14 +13511,14 @@ \exp_after:wN \__fp_pack:NNNNNw \__int_value:w \__int_eval:w \c__fp_trailing_shift_int + #4*#9 + #5*#8 + #6*#7 - + ( #5*#9 + #6*#8 + #6*#9 / \c_ten_thousand ) - / \c_ten_thousand ; ; + + ( #5*#9 + #6*#8 + #6*#9 / \c__fp_myriad_int ) + / \c__fp_myriad_int ; ; } \cs_new:Npn \__fp_fixed_div_int:wwN #1#2#3#4#5#6 ; #7 ; #8 { \exp_after:wN \__fp_fixed_div_int_after:Nw \exp_after:wN #8 - \__int_value:w \__int_eval:w - \c_one + \__int_value:w \__int_eval:w - 1 \__fp_fixed_div_int:wnN #1; {#7} \__fp_fixed_div_int_auxi:wnn #2; {#7} \__fp_fixed_div_int_auxi:wnn @@ -13211,7 +13530,7 @@ \cs_new:Npn \__fp_fixed_div_int:wnN #1; #2 #3 { \exp_after:wN #3 - \__int_value:w \__int_eval:w #1 / #2 - \c_one ; + \__int_value:w \__int_eval:w #1 / #2 - 1 ; {#2} {#1} } @@ -13223,7 +13542,7 @@ \exp_after:wN \__fp_fixed_div_int:wnN \__int_value:w \__int_eval:w #3 - #1*#2 \__int_eval_end: } -\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + \c_two ; } +\cs_new:Npn \__fp_fixed_div_int_auxii:wnn #1; #2 #3 { + #1 + 2 ; } \cs_new:Npn \__fp_fixed_div_int_pack:Nw #1 #2; { + #1; {#2} } \cs_new:Npn \__fp_fixed_div_int_after:Nw #1 #2; { #1 {#2} } \cs_new:Npn \__fp_fixed_add:wwn { \__fp_fixed_add:Nnnnnwnn + } @@ -13270,7 +13589,7 @@ } \cs_new:Npn \__fp_fixed_mul:nnnnnnnw #1#2 #3#4 #5#6 #7#8 ; { - #1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c_ten_thousand + #1*#4 + #2*#3 + #5*#8 + #6*#7 ) / \c__fp_myriad_int + #1*#3 + #5*#7 ; ; } \cs_new:Npn \__fp_fixed_mul_add:wwwn #1; #2; #3#4#5#6#7#8; @@ -13330,14 +13649,14 @@ \cs_new:Npn \__fp_fixed_mul_add:nnnnwnnwN #1#2 #3#4#5; #6#7#8; #9 { #9 (#4* #1 *#7) - #9 (#5*#6+#4* #2 *#7+#3*#8) / \c_ten_thousand + #9 (#5*#6+#4* #2 *#7+#3*#8) / \c__fp_myriad_int } \cs_new:Npn \__fp_ep_to_fixed:wwn #1,#2 { \exp_after:wN \__fp_ep_to_fixed_auxi:www \__int_value:w \__int_eval:w 1 0000 0000 + #2 \exp_after:wN ; \exp:w \exp_end_continue_f:w - \prg_replicate:nn { \c_four - \int_max:nn {#1} { -32 } } { 0 } ; + \prg_replicate:nn { 4 - \int_max:nn {#1} { -32 } } { 0 } ; } \cs_new:Npn \__fp_ep_to_fixed_auxi:www 1#1; #2; #3#4#5#6#7; { @@ -13353,7 +13672,7 @@ \cs_new:Npn \__fp_ep_to_ep:wwN #1,#2#3#4#5#6#7; #8 { \exp_after:wN #8 - \__int_value:w \__int_eval:w #1 + \c_four + \__int_value:w \__int_eval:w #1 + 4 \exp_after:wN \use_i:nn \exp_after:wN \__fp_ep_to_ep_loop:N \__int_value:w \__int_eval:w 1 0000 0000 + #2 \__int_eval_end: @@ -13362,7 +13681,7 @@ \cs_new:Npn \__fp_ep_to_ep_loop:N #1 { \if_meaning:w 0 #1 - - \c_one + - 1 \else: \__fp_ep_to_ep_end:www #1 \fi: @@ -13373,7 +13692,7 @@ { \fi: \if_meaning:w ; #1 - - \c_two * \c__fp_max_exponent_int + - 2 * \c__fp_max_exponent_int \__fp_ep_to_ep_zero:ww \fi: \__fp_pack_twice_four:wNNNNNNNN @@ -13426,9 +13745,9 @@ \cs_new:Npn \__fp_ep_div_esti:wwwwn #1,#2#3; #4, { \exp_after:wN \__fp_ep_div_estii:wwnnwwn - \__int_value:w \__int_eval:w 10 0000 0000 / ( #2 + \c_one ) + \__int_value:w \__int_eval:w 10 0000 0000 / ( #2 + 1 ) \exp_after:wN ; - \__int_value:w \__int_eval:w #4 - #1 + \c_one , + \__int_value:w \__int_eval:w #4 - #1 + 1 , {#2} #3; } \cs_new:Npn \__fp_ep_div_estii:wwnnwwn #1; #2,#3#4#5; #6; #7 @@ -13477,8 +13796,8 @@ \exp_after:wN \__fp_ep_isqrt_auxii:wwnnnwn \__int_value:w \__int_eval:w \int_if_odd:nTF {#1} - { (\c_one - #1) / \c_two , 535 , { 0 } { } } - { \c_one - #1 / \c_two , 168 , { } { 0 } } + { (1 - #1) / 2 , 535 , { 0 } { } } + { 1 - #1 / 2 , 168 , { } { 0 } } } \cs_new:Npn \__fp_ep_isqrt_auxii:wwnnnwn #1, #2, #3#4 #5#6; #7 { @@ -13492,13 +13811,13 @@ \fi: \exp_after:wN \__fp_ep_isqrt_esti:wwwnnwn \__int_value:w \__int_eval:w - (#1 + 1 0050 0000 #4 / (#1 * #3)) / \c_two , + (#1 + 1 0050 0000 #4 / (#1 * #3)) / 2 , #1, #3, {#4} } \cs_new:Npn \__fp_ep_isqrt_estii:wwwnnwn #1, #2, #3, #4#5 { \exp_after:wN \__fp_ep_isqrt_estiii:NNNNNwwwn - \__int_value:w \__int_eval:w 1000 0000 + #2 * #2 #5 * \c_five + \__int_value:w \__int_eval:w 1000 0000 + #2 * #2 #5 * 5 \exp_after:wN , \__int_value:w \__int_eval:w 10000 + #2 ; } \cs_new:Npn \__fp_ep_isqrt_estiii:NNNNNwwwn 1#1#2#3#4#5#6, 1#7#8; #9; @@ -13538,7 +13857,7 @@ \cs_new:Npn \__fp_fixed_to_float:Nw #1#2; { \__fp_fixed_to_float:wN #2; #1 } \cs_new:Npn \__fp_fixed_to_float:wN #1#2#3#4#5#6; #7 { - + \__int_eval:w \c_four % for the 8-digit-at-the-start thing. + + \__int_eval:w \c__fp_block_int % for the 8-digit-at-the-start thing. \exp_after:wN \exp_after:wN \exp_after:wN \__fp_fixed_to_loop:N \exp_after:wN \use_none:n @@ -13553,7 +13872,7 @@ \cs_new:Npn \__fp_fixed_to_loop:N #1 { \if_meaning:w 0 #1 - - \c_one + - 1 \exp_after:wN \__fp_fixed_to_loop:N \else: \exp_after:wN \__fp_fixed_to_loop_end:w @@ -13574,12 +13893,12 @@ } \cs_new:Npn \__fp_fixed_to_float_zero:w ; 0000 0000 0000 0000 ; { - - \c_two * \c__fp_max_exponent_int ; + - 2 * \c__fp_max_exponent_int ; {0000} {0000} {0000} {0000} ; } \cs_new:Npn \__fp_fixed_to_float_pack:ww #1 ; #2#3 ; ; { - \if_int_compare:w #2 > \c_four + \if_int_compare:w #2 > 4 \exp_stop_f: \exp_after:wN \__fp_fixed_to_float_round_up:wnnnnw \fi: ; #1 ; @@ -13589,9 +13908,9 @@ \exp_after:wN \__fp_basics_pack_high:NNNNNw \__int_value:w \__int_eval:w 1 #1#2 \exp_after:wN \__fp_basics_pack_low:NNNNNw - \__int_value:w \__int_eval:w 1 #3#4 + \c_one ; + \__int_value:w \__int_eval:w 1 #3#4 + 1 ; } -%% File: l3fp-expo.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project +%% File: l3fp-expo.dtx Copyright (C) 2011-2014,2016,2017 The LaTeX3 Project \tl_const:Nn \c__fp_ln_i_fixed_tl { {0000}{0000}{0000}{0000}{0000}{0000} } \tl_const:Nn \c__fp_ln_ii_fixed_tl { {6931}{4718}{0559}{9453}{0941}{7232} } \tl_const:Nn \c__fp_ln_iii_fixed_tl {{10986}{1228}{8668}{1096}{9139}{5245} } @@ -13619,7 +13938,7 @@ { %^^A todo: ln(1) should be "exact zero", not "underflow" \exp_after:wN \__fp_sanitize:Nw \__int_value:w % for the overall sign - \if_int_compare:w #1 < \c_one + \if_int_compare:w #1 < 1 \exp_stop_f: 2 \else: 0 @@ -13635,8 +13954,8 @@ \__int_value:w \if_case:w #1 \exp_stop_f: \or: - \if_int_compare:w #2 < \c_four - \__int_eval:w \c_ten - #2 + \if_int_compare:w #2 < 4 \exp_stop_f: + \__int_eval:w 10 - #2 \else: 6 \fi: @@ -13666,7 +13985,7 @@ { #1#2; {#3#4#5#6} {#7} } \cs_new:Npn \__fp_ln_x_iii_var:NNNNNw #1 #2#3#4#5 #6; { - #1#2#3#4#5 + \c_one ; + #1#2#3#4#5 + 1 ; {#1#2#3#4#5} {#6} } \cs_new:Npn \__fp_ln_x_iv:wnnnnnnnn #1; #2#3#4#5 #6#7#8#9 @@ -13761,7 +14080,7 @@ { \__fp_ln_Taylor_loop:www 21 ; {0000}{0000}{0000}{0000}{0000}{0000} ; } \cs_new:Npn \__fp_ln_Taylor_loop:www #1; #2; #3; { - \if_int_compare:w #1 = \c_one + \if_int_compare:w #1 = 1 \exp_stop_f: \__fp_ln_Taylor_break:w \fi: \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl ; #1; @@ -13769,7 +14088,7 @@ \__fp_fixed_mul:wwn #3; { \exp_after:wN \__fp_ln_Taylor_loop:www - \__int_value:w \__int_eval:w #1 - \c_two ; + \__int_value:w \__int_eval:w #1 - 2 ; } #3; } @@ -13791,11 +14110,11 @@ \cs_new:Npn \__fp_ln_exponent:wn #1; #2 { \if_case:w #2 \exp_stop_f: - \c_zero \__fp_case_return:nw { \__fp_fixed_to_float:Nw 2 } + 0 \__fp_case_return:nw { \__fp_fixed_to_float:Nw 2 } \or: \exp_after:wN \__fp_ln_exponent_one:ww \__int_value:w \else: - \if_int_compare:w #2 > \c_zero + \if_int_compare:w #2 > 0 \exp_stop_f: \exp_after:wN \__fp_ln_exponent_small:NNww \exp_after:wN 0 \exp_after:wN \__fp_fixed_sub:wwn \__int_value:w @@ -13809,13 +14128,13 @@ } \cs_new:Npn \__fp_ln_exponent_one:ww 1; #1; { - \c_zero + 0 \exp_after:wN \__fp_fixed_sub:wwn \c__fp_ln_x_fixed_tl ; #1; \__fp_fixed_to_float:wN 0 } \cs_new:Npn \__fp_ln_exponent_small:NNww #1#2#3; #4#5#6#7#8#9; { - \c_four + 4 \exp_after:wN \__fp_fixed_mul:wwn \c__fp_ln_x_fixed_tl ; {#3}{0000}{0000}{0000}{0000}{0000} ; @@ -13856,29 +14175,29 @@ \exp_after:wN \__fp_sanitize:Nw \exp_after:wN 0 \__int_value:w #1 \__int_eval:w - \if_int_compare:w #4 < - \c_eight - \c_one + \if_int_compare:w #4 < - \c__fp_half_prec_int + 1 \exp_after:wN \__fp_add_big_i_o:wNww - \__int_value:w \__int_eval:w \c_one - #4 ; + \__int_value:w \__int_eval:w 1 - #4 ; 0 {1000}{0000}{0000}{0000} ; #5; \exp:w \else: - \if_int_compare:w #4 > \c_five % cf \c__fp_max_exponent_int + \if_int_compare:w #4 > \c__fp_max_exp_exponent_int \exp_after:wN \__fp_exp_overflow: \exp:w \else: - \if_int_compare:w #4 < \c_zero + \if_int_compare:w #4 < 0 \exp_stop_f: \exp_after:wN \use_i:nn \else: \exp_after:wN \use_ii:nn \fi: { - \c_zero + 0 \__fp_decimate:nNnnnn { - #4 } \__fp_exp_Taylor:Nnnwn } { - \__fp_decimate:nNnnnn { \c_sixteen - #4 } + \__fp_decimate:nNnnnn { \c__fp_prec_int - #4 } \__fp_exp_pos_large:NnnNwn } #5 @@ -13887,10 +14206,10 @@ \exp:w \fi: \fi: - \exp_after:wN \c_zero + \exp_after:wN \exp_end: } \cs_new:Npn \__fp_exp_overflow: - { + \c_two * \c__fp_max_exponent_int ; {1000} {0000} {0000} {0000} ; } + { + 2 * \c__fp_max_exponent_int ; {1000} {0000} {0000} {0000} ; } \cs_new:Npn \__fp_exp_Taylor:Nnnwn #1#2#3 #4; #5 #6 { #6 @@ -13904,7 +14223,7 @@ { \__fp_exp_Taylor_loop:www 10 ; #1 ; #1 ; \s__stop } \cs_new:Npn \__fp_exp_Taylor_loop:www #1; #2; #3; { - \if_int_compare:w #1 = \c_one + \if_int_compare:w #1 = 1 \exp_stop_f: \exp_after:wN \__fp_exp_Taylor_break:Nww \fi: \__fp_fixed_div_int:wwN #3 ; #1 ; @@ -14064,14 +14383,17 @@ \if_meaning:w #1 #4 \__fp_case_return_o:Nw \c_zero_fp \fi: - \if_meaning:w 0 #1 + \if_meaning:w 2 #1 + \__fp_case_return_o:Nw \c_inf_fp + \fi: + \if_meaning:w 2 #3 + \__fp_case_return_o:Nw \c_inf_fp + \else: \__fp_case_use:nw { \__fp_division_by_zero_o:NNww \c_inf_fp ^ \s__fp \__fp_chk:w #1 #2 ; } - \else: - \__fp_case_return_o:Nw \c_inf_fp \fi: \s__fp \__fp_chk:w #3#4 } @@ -14079,7 +14401,7 @@ \s__fp \__fp_chk:w 1 #1#2#3; \s__fp \__fp_chk:w #4#5 { \if_int_compare:w \__str_if_eq_x:nn { #2 #3 } - { 1 {1000} {0000} {0000} {0000} } = \c_zero + { 1 {1000} {0000} {0000} {0000} } = 0 \exp_stop_f: \if_int_compare:w #4 #1 = 32 \exp_stop_f: \exp_after:wN \__fp_case_return_ii_o:ww \fi: @@ -14091,7 +14413,7 @@ \exp_after:wN #5 \or: \if_meaning:w 2 #5 \exp_after:wN \reverse_if:N \fi: - \if_int_compare:w #2 > \c_zero + \if_int_compare:w #2 > 0 \exp_stop_f: \exp_after:wN \__fp_case_return_o:Nww \exp_after:wN \c_inf_fp \else: @@ -14109,7 +14431,7 @@ \exp_after:wN \__fp_sanitize:Nw \exp_after:wN 0 \__int_value:w - \if:w #1 \if_int_compare:w #3 > \c_zero 0 \else: 2 \fi: + \if:w #1 \if_int_compare:w #3 > 0 \exp_stop_f: 0 \else: 2 \fi: \exp_after:wN \__fp_pow_npos_aux:NNnww \exp_after:wN + \exp_after:wN \__fp_fixed_to_float:wN @@ -14132,7 +14454,7 @@ } \cs_new:Npn \__fp_pow_exponent:wnN #1; #2 { - \if_int_compare:w #2 > \c_zero + \if_int_compare:w #2 > 0 \exp_stop_f: \exp_after:wN \__fp_pow_exponent:Nwnnnnnw % n\ln(10) - (-\ln(x)) \exp_after:wN + \else: @@ -14164,7 +14486,7 @@ } \cs_new:Npn \__fp_pow_B:wwN #1#2#3#4#5#6; #7; { - \if_int_compare:w #7 < \c_zero + \if_int_compare:w #7 < 0 \exp_stop_f: \exp_after:wN \__fp_pow_C_neg:w \__int_value:w - \else: \if_int_compare:w #7 < 22 \exp_stop_f: @@ -14179,7 +14501,7 @@ } \cs_new:Npn \__fp_pow_C_overflow:w #1; #2; #3 { - + \c_two * \c__fp_max_exponent_int + + 2 * \c__fp_max_exponent_int \exp_after:wN \__fp_fixed_continue:wn \c__fp_one_fixed_tl ; } \cs_new:Npn \__fp_pow_C_neg:w #1 ; 1 @@ -14200,7 +14522,7 @@ \else: \exp_after:wN \__fp_pow_C_overflow:w \__int_value:w \fi: - \__int_eval:w #1 - \c_one \exp_after:wN ; + \__int_eval:w #1 - 1 \exp_after:wN ; \fi: } \cs_new:Npn \__fp_pow_C_pack:w @@ -14210,7 +14532,7 @@ \if_case:w \__fp_pow_neg_case:w #4 ; \exp_after:wN \__fp_pow_neg_aux:wNN \or: - \if_int_compare:w \__int_eval:w #1 / \c_two = \c_one + \if_int_compare:w \__int_eval:w #1 / 2 = 1 \exp_stop_f: \__fp_invalid_operation_o:Nww ^ #3; #4; \exp:w \exp_end_continue_f:w \exp_after:wN \exp_after:wN @@ -14226,50 +14548,38 @@ \exp_after:wN \s__fp \exp_after:wN \__fp_chk:w \exp_after:wN #2 - \__int_value:w \__int_eval:w \c_two - #3 \__int_eval_end: + \__int_value:w \__int_eval:w 2 - #3 \__int_eval_end: } \cs_new:Npn \__fp_pow_neg_case:w \s__fp \__fp_chk:w #1#2#3; { \if_case:w #1 \exp_stop_f: - -\c_one + -1 \or: \__fp_pow_neg_case_aux:nnnnn #3 - \else: \c_one + \or: -1 + \else: 1 \fi: + \exp_stop_f: } \cs_new:Npn \__fp_pow_neg_case_aux:nnnnn #1#2#3#4#5 + { \__fp_pow_neg_case_aux:w #1 ; #2 #3 ; #4 #5 ; } +\cs_new:Npn \__fp_pow_neg_case_aux:w #1 ; #2 ; #3 ; { - \if_int_compare:w #1 > \c_eight - \if_int_compare:w #1 > \c_sixteen - -\c_one - \else: - \exp_after:wN \exp_after:wN - \exp_after:wN \__fp_pow_neg_case_aux:NNNNNNNNw - \prg_replicate:nn { \c_sixteen - #1 } { 0 } #4#5 ; - \fi: + \if_int_compare:w #1 > \c__fp_prec_int + -1 \else: - \if_int_compare:w #1 > \c_zero - \if_int_compare:w #4#5 = \c_zero - \exp_after:wN \exp_after:wN - \exp_after:wN \__fp_pow_neg_case_aux:NNNNNNNNw - \prg_replicate:nn { \c_eight - #1 } { 0 } #2#3 ; + \if_int_odd:w #3 \exp_stop_f: + \if_int_compare:w #1 = \c__fp_prec_int + 0 \else: - \c_one + 1 \fi: \else: - \c_one - \fi: - \fi: - } -\cs_new:Npn \__fp_pow_neg_case_aux:NNNNNNNNw #1#2#3#4#5#6#7#8#9; - { - \if_int_compare:w 0 #9 = \c_zero - \if_int_odd:w #8 \exp_stop_f: - \c_zero - \else: - -\c_one + \exp_after:wN \__fp_pow_neg_case_aux:w + \__int_value:w \__int_eval:w #1 + 1 \exp_after:wN ; + \__int_value:w \__int_eval:w (#2 + 1) / 2 - 1 \exp_after:wN ; + \__int_value:w \__int_eval:w + \if_int_odd:w #2 \exp_stop_f: 5000 0000 + \fi: #3 / 2 ; \fi: - \else: - \c_one \fi: } %% File: l3fp-trig.dtx Copyright (C) 2011-2014,2016 The LaTeX3 Project @@ -14280,7 +14590,7 @@ \or: \__fp_case_use:nw { \__fp_trig:NNNNNwn #1 \__fp_sin_series_o:NNwwww - \__fp_ep_to_float:wwN #3 \c_zero + \__fp_ep_to_float:wwN #3 0 } \or: \__fp_case_use:nw { \__fp_invalid_operation_o:fw { #1 { sin } { sind } } } @@ -14295,7 +14605,7 @@ \or: \__fp_case_use:nw { \__fp_trig:NNNNNwn #1 \__fp_sin_series_o:NNwwww - \__fp_ep_to_float:wwN 0 \c_two + \__fp_ep_to_float:wwN 0 2 } \or: \__fp_case_use:nw { \__fp_invalid_operation_o:fw { #1 { cos } { cosd } } } @@ -14310,7 +14620,7 @@ \or: \__fp_case_use:nw { \__fp_trig:NNNNNwn #1 \__fp_sin_series_o:NNwwww - \__fp_ep_inv_to_float:wwN #3 \c_zero + \__fp_ep_inv_to_float:wwN #3 0 } \or: \__fp_case_use:nw { \__fp_invalid_operation_o:fw { #1 { csc } { cscd } } } @@ -14325,7 +14635,7 @@ \or: \__fp_case_use:nw { \__fp_trig:NNNNNwn #1 \__fp_sin_series_o:NNwwww - \__fp_ep_inv_to_float:wwN 0 \c_two + \__fp_ep_inv_to_float:wwN 0 2 } \or: \__fp_case_use:nw { \__fp_invalid_operation_o:fw { #1 { sec } { secd } } } @@ -14340,7 +14650,7 @@ \or: \__fp_case_use:nw { \__fp_trig:NNNNNwn #1 - \__fp_tan_series_o:NNwwww 0 #3 \c_one + \__fp_tan_series_o:NNwwww 0 #3 1 } \or: \__fp_case_use:nw { \__fp_invalid_operation_o:fw { #1 { tan } { tand } } } @@ -14355,7 +14665,7 @@ \or: \__fp_case_use:nw { \__fp_trig:NNNNNwn #1 - \__fp_tan_series_o:NNwwww 2 #3 \c_three + \__fp_tan_series_o:NNwwww 2 #3 3 } \or: \__fp_case_use:nw { \__fp_invalid_operation_o:fw { #1 { cot } { cotd } } } @@ -14378,7 +14688,7 @@ \exp_after:wN #4 \__int_value:w \__int_eval:w #5 \exp_after:wN \exp_after:wN \exp_after:wN \exp_after:wN - \if_int_compare:w #7 > #1 \c_zero \c_one + \if_int_compare:w #7 > #1 0 1 \exp_stop_f: #1 \__fp_trig_large:ww \__fp_trigd_large:ww \else: #1 \__fp_trig_small:ww \__fp_trigd_small:ww @@ -14409,16 +14719,16 @@ { \exp_after:wN \__fp_trigd_large_auxii:wNw \__int_value:w \__int_eval:w #1 + #2 - - (#1 + #2 - \c_four) / \c_nine * \c_nine \__int_eval_end: + - (#1 + #2 - 4) / 9 * 9 \__int_eval_end: #3; #4; #5{#6#7#8#9}; } \cs_new:Npn \__fp_trigd_large_auxii:wNw #1; #2#3; { - + (#1#2 - \c_four) / \c_nine * \c_two + + (#1#2 - 4) / 9 * 2 \exp_after:wN \__fp_trigd_large_auxiii:www \__int_value:w \__int_eval:w #1#2 - - (#1#2 - \c_four) / \c_nine * \c_nine \__int_eval_end: #3 ; + - (#1#2 - 4) / 9 * 9 \__int_eval_end: #3 ; } \cs_new:Npn \__fp_trigd_large_auxiii:www #1; #2; #3! { @@ -14426,7 +14736,7 @@ \exp_after:wN \__fp_use_i_until_s:nw \exp_after:wN \__fp_fixed_continue:wn \else: - + \c_one + + 1 \fi: \__fp_fixed_sub:wwn {9000}{0000}{0000}{0000}{0000}{0000}; {#1}#2{0000}{0000}; @@ -14607,11 +14917,11 @@ \cs_new:Npn \__fp_trig_large_auxi:wwwwww #1, #2, #3, #4! { \prg_replicate:nn {#1} { \__fp_trig_large_auxii:ww } - \prg_replicate:nn { #2 - #1 * \c_eight } + \prg_replicate:nn { #2 - #1 * 8 } { \__fp_trig_large_auxiii:wNNNNNNNN } - \prg_replicate:nn { #3 - #2 * \c_eight } + \prg_replicate:nn { #3 - #2 * 8 } { \__fp_trig_large_auxiv:wN } - \prg_replicate:nn { \c_eight } { \__fp_pack_twice_four:wNNNNNNNN } + \prg_replicate:nn { 8 } { \__fp_pack_twice_four:wNNNNNNNN } \__fp_trig_large_auxv:www ; } @@ -14624,7 +14934,7 @@ \exp_after:wN \__fp_use_i_until_s:nw \exp_after:wN \__fp_trig_large_auxvii:w \__int_value:w \__int_eval:w \c__fp_leading_shift_int - \prg_replicate:nn { \c_thirteen } + \prg_replicate:nn { 13 } { \__fp_trig_large_auxvi:wnnnnnnnn } + \c__fp_trailing_shift_int - \c__fp_middle_shift_int \__fp_use_i_until_s:nw @@ -14661,7 +14971,7 @@ \exp_after:wN \__fp_use_i_until_s:nw \exp_after:wN \__fp_trig_large_auxxi:w \__int_value:w \__int_eval:w \c__fp_leading_shift_int - \prg_replicate:nn { \c_thirteen } + \prg_replicate:nn { 13 } { \__fp_trig_large_auxx:wNNNNN } + \c__fp_trailing_shift_int - \c__fp_middle_shift_int ; @@ -14670,13 +14980,13 @@ { \exp_after:wN \__fp_trig_large_pack:NNNNNw \__int_value:w \__int_eval:w \c__fp_middle_shift_int - #2 \c_eight * #3#4#5#6 + #2 8 * #3#4#5#6 #1; #2 } \cs_new:Npn \__fp_trig_large_auxxi:w #1; { \exp_after:wN \__fp_ep_mul_raw:wwwwN - \__int_value:w \__int_eval:w \c_zero \__fp_ep_to_ep_loop:N #1 ; ; ! + \__int_value:w \__int_eval:w 0 \__fp_ep_to_ep_loop:N #1 ; ; ! 0,{7853}{9816}{3397}{4483}{0961}{5661}; \__fp_trig_small:ww } @@ -14687,7 +14997,7 @@ \exp_after:wN \__fp_sin_series_aux_o:NNnwww \exp_after:wN #1 \__int_value:w - \if_int_odd:w \__int_eval:w (#3 + \c_two) / \c_four \__int_eval_end: + \if_int_odd:w \__int_eval:w (#3 + 2) / 4 \__int_eval_end: #2 \else: \if_meaning:w #2 0 2 \else: 0 \fi: @@ -14697,7 +15007,7 @@ } \cs_new:Npn \__fp_sin_series_aux_o:NNnwww #1#2#3 #4; #5,#6; { - \if_int_odd:w \__int_eval:w #3 / \c_two \__int_eval_end: + \if_int_odd:w \__int_eval:w #3 / 2 \__int_eval_end: \exp_after:wN \use_i:nn \else: \exp_after:wN \use_ii:nn @@ -14740,7 +15050,7 @@ { \exp_after:wN \__fp_tan_series_aux_o:Nnwww \__int_value:w - \if_int_odd:w \__int_eval:w #3 / \c_two \__int_eval_end: + \if_int_odd:w \__int_eval:w #3 / 2 \__int_eval_end: \exp_after:wN \reverse_if:N \fi: \if_meaning:w #1#2 2 \else: 0 \fi: @@ -14765,7 +15075,7 @@ \__fp_fixed_mul_sub_back:wwwn#3;{10000}{0000}{0000}{0000}{0000}{0000}; { \reverse_if:N \if_int_odd:w - \__int_eval:w (#2 - \c_one) / \c_two \__int_eval_end: + \__int_eval:w (#2 - 1) / 2 \__int_eval_end: \exp_after:wN \__fp_reverse_args:Nww \fi: \__fp_ep_div:wwwwn 0, @@ -14791,7 +15101,7 @@ \cs_new:Npn \__fp_atan_dispatch_o:NNnNw #1#2#3#4#5@ { \if_case:w - \__int_eval:w \__fp_array_count:n {#5} - \c_one \__int_eval_end: + \__int_eval:w \__fp_array_count:n {#5} - 1 \__int_eval_end: \exp_after:wN #1 \exp_after:wN #4 \c_one_fp #5 \exp:w \or: #2 #4 #5 \exp:w @@ -14809,13 +15119,14 @@ \if_meaning:w 3 #5 \__fp_case_return_ii_o:ww \fi: \if_case:w \if_meaning:w #2 #5 - \if_meaning:w 1 #2 \c_ten \else: \c_zero \fi: + \if_meaning:w 1 #2 10 \else: 0 \fi: \else: - \if_int_compare:w #2 > #5 \c_one \else: \c_two \fi: + \if_int_compare:w #2 > #5 \exp_stop_f: 1 \else: 2 \fi: \fi: - \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 \c_two } - \or: \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 \c_four } - \or: \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 \c_zero } + \exp_stop_f: + \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 2 } + \or: \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 4 } + \or: \__fp_case_return:nw { \__fp_atan_inf_o:NNNw #1 #3 0 } \fi: \__fp_atan_normal_o:NNnwNnw #1 \s__fp \__fp_chk:w #2#3#4; @@ -14828,7 +15139,7 @@ \exp_after:wN \__fp_atan_combine_o:NwwwwwN \exp_after:wN #2 \__int_value:w \__int_eval:w - \if_meaning:w 2 #5 \c_seven - \fi: #3 \exp_after:wN ; + \if_meaning:w 2 #5 7 - \fi: #3 \exp_after:wN ; \c__fp_one_fixed_tl ; {0000}{0000}{0000}{0000}{0000}{0000}; 0,{0000}{0000}{0000}{0000}{0000}{0000}; #1 @@ -14846,11 +15157,11 @@ \exp_after:wN #1 \__int_value:w \__int_eval:w \if_meaning:w 2 #4 - \c_seven - \__int_eval:w + 7 - \__int_eval:w \fi: \if_int_compare:w - \__fp_ep_compare:wwww #2,#3; #5,#6; > \c_zero - \c_three - + \__fp_ep_compare:wwww #2,#3; #5,#6; > 0 \exp_stop_f: + 3 - \exp_after:wN \__fp_reverse_args:Nww \fi: \__fp_atan_div:wnwwnw #2,#3; #5,#6; @@ -14863,14 +15174,14 @@ \exp_stop_f: \exp_after:wN \__fp_atan_near:wwwn \fi: - \c_zero + 0 \__fp_ep_div:wwwwn #1,{#2}#3; #4,{#5}#6; \__fp_atan_auxi:ww } \cs_new:Npn \__fp_atan_near:wwwn - \c_zero \__fp_ep_div:wwwwn #1,#2; #3, + 0 \__fp_ep_div:wwwwn #1,#2; #3, { - \c_one + 1 \__fp_ep_to_fixed:wwn #1 - #3, #2; \__fp_atan_near_aux:wwn } @@ -14892,14 +15203,14 @@ } \cs_new:Npn \__fp_atan_Taylor_loop:www #1; #2; #3; { - \if_int_compare:w #1 = - \c_one + \if_int_compare:w #1 = -1 \exp_stop_f: \__fp_atan_Taylor_break:w \fi: \exp_after:wN \__fp_fixed_div_int:wwN \c__fp_one_fixed_tl ; #1; \__fp_rrot:www \__fp_fixed_mul_sub_back:wwwn #2; #3; { \exp_after:wN \__fp_atan_Taylor_loop:www - \__int_value:w \__int_eval:w #1 - \c_two ; + \__int_value:w \__int_eval:w #1 - 2 ; } #3; } @@ -14921,7 +15232,7 @@ \__fp_fixed_mul:wwn #3; #4; { \exp_after:wN \__fp_atan_combine_aux:ww - \__int_value:w \__int_eval:w #2 / \c_two ; #2; + \__int_value:w \__int_eval:w #2 / 2 ; #2; } } { #7 \__fp_fixed_to_float:wN \__fp_fixed_to_float_rad:wN } @@ -14958,7 +15269,7 @@ \cs_new:Npn \__fp_acos_o:w #1 \s__fp \__fp_chk:w #2#3; @ { \if_case:w #2 \exp_stop_f: - \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 \c_four } + \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 } \or: \__fp_case_use:nw { @@ -14976,7 +15287,7 @@ \cs_new:Npn \__fp_asin_normal_o:NfwNnnnnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6#7#8#9; { - \if_int_compare:w #5 < \c_one + \if_int_compare:w #5 < 1 \exp_stop_f: \exp_after:wN \__fp_use_none_until_s:w \fi: \if_int_compare:w \__int_eval:w #5 + #6#7 + #8#9 = 1000 0001 ~ @@ -15031,14 +15342,14 @@ \__fp_acsc_normal_o:NfwNnw #1 { #1 { asec } { asecd } } \__fp_reverse_args:Nww } - \or: \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 \c_four } + \or: \__fp_case_use:nw { \__fp_atan_inf_o:NNNw #1 0 4 } \else: \__fp_case_return_same_o:w \fi: \s__fp \__fp_chk:w #2 #3; } \cs_new:Npn \__fp_acsc_normal_o:NfwNnw #1#2#3 \s__fp \__fp_chk:w 1#4#5#6; { - \int_compare:nNnTF {#5} < \c_one + \int_compare:nNnTF {#5} < 1 { \__fp_invalid_operation_o:fw {#2} \s__fp \__fp_chk:w 1#4{#5}#6; @@ -15071,16 +15382,15 @@ { \if_meaning:w 2 #2 \exp_after:wN - \exp:w \exp_end_continue_f:w \fi: \if_case:w #1 \exp_stop_f: - \__fp_case_return:nw { 0 } + \__fp_case_return:nw { 0.000000000000000e0 } \or: \exp_after:wN \__fp_to_scientific_normal:wnnnnn \or: \__fp_case_use:nw { - \__fp_invalid_operation:nnw + \exp_args:Nf \__fp_invalid_operation:nnw { - \exp_after:wN 1 - \exp_after:wN e - \int_use:N \c__fp_max_exponent_int + \__fp_expand:n + { { 1.000000000000000e } \int_use:N \c__fp_max_exponent_int } } { fp_to_scientific } } @@ -15088,7 +15398,7 @@ \__fp_case_use:nw { \__fp_invalid_operation:nnw - { 0 } + { 0.000000000000000e0 } { fp_to_scientific } } \fi: @@ -15097,17 +15407,13 @@ \cs_new:Npn \__fp_to_scientific_normal:wnnnnn \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; { - \if_int_compare:w #2 = \c_one - \exp_after:wN \__fp_to_scientific_normal:wNw - \else: - \exp_after:wN \__fp_to_scientific_normal:wNw - \exp_after:wN e - \__int_value:w \__int_eval:w #2 - \c_one - \fi: + \exp_after:wN \__fp_to_scientific_normal:wNw + \exp_after:wN e + \__int_value:w \__int_eval:w #2 - 1 ; #3 #4 #5 #6 ; } \cs_new:Npn \__fp_to_scientific_normal:wNw #1 ; #2#3; - { \__fp_trim_zeros:w #2.#3 ; #1 } + { #2.#3 #1 } \cs_new:Npn \fp_to_decimal:N #1 { \exp_after:wN \__fp_to_decimal_dispatch:w #1 } \cs_generate_variant:Nn \fp_to_decimal:N { c } @@ -15145,17 +15451,17 @@ \cs_new:Npn \__fp_to_decimal_normal:wnnnnn \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; { - \int_compare:nNnTF {#2} > \c_zero + \int_compare:nNnTF {#2} > 0 { - \int_compare:nNnTF {#2} < \c_sixteen + \int_compare:nNnTF {#2} < \c__fp_prec_int { - \__fp_decimate:nNnnnn { \c_sixteen - #2 } + \__fp_decimate:nNnnnn { \c__fp_prec_int - #2 } \__fp_to_decimal_large:Nnnw } { \exp_after:wN \exp_after:wN \exp_after:wN \__fp_to_decimal_huge:wnnnn - \prg_replicate:nn { #2 - \c_sixteen } { 0 } ; + \prg_replicate:nn { #2 - \c__fp_prec_int } { 0 } ; } {#3} {#4} {#5} {#6} } @@ -15170,7 +15476,7 @@ \cs_new:Npn \__fp_to_decimal_large:Nnnw #1#2#3#4; { \exp_after:wN \__fp_trim_zeros:w \__int_value:w - \if_int_compare:w #2 > \c_zero + \if_int_compare:w #2 > 0 \exp_stop_f: #2 \fi: \exp_stop_f: @@ -15196,19 +15502,22 @@ } \cs_new:Npn \__fp_to_tl_normal:nnnnn #1 { - \if_int_compare:w #1 > \c_sixteen - \exp_after:wN \__fp_to_scientific_normal:wnnnnn - \else: - \if_int_compare:w #1 < - \c_two - \exp_after:wN \exp_after:wN - \exp_after:wN \__fp_to_scientific_normal:wnnnnn - \else: - \exp_after:wN \exp_after:wN - \exp_after:wN \__fp_to_decimal_normal:wnnnnn - \fi: - \fi: + \int_compare:nTF + { -2 <= #1 <= \c__fp_prec_int } + { \__fp_to_decimal_normal:wnnnnn } + { \__fp_to_tl_scientific:wnnnnn } \s__fp \__fp_chk:w 1 0 {#1} } +\cs_new:Npn \__fp_to_tl_scientific:wnnnnn + \s__fp \__fp_chk:w 1 #1 #2 #3#4#5#6 ; + { + \exp_after:wN \__fp_to_tl_scientific:wNw + \exp_after:wN e + \__int_value:w \__int_eval:w #2 - 1 + ; #3 #4 #5 #6 ; + } +\cs_new:Npn \__fp_to_tl_scientific:wNw #1 ; #2#3; + { \__fp_trim_zeros:w #2.#3 ; #1 } \cs_new:Npn \fp_to_dim:N #1 { \fp_to_decimal:N #1 pt } \cs_generate_variant:Nn \fp_to_dim:N { c } @@ -15239,7 +15548,7 @@ \__fp_case_return:nw { \exp_after:wN \c_zero_fp } \else: \exp_after:wN \__fp_from_dim:wNw - \__int_value:w \__int_eval:w #1 - \c_four + \__int_value:w \__int_eval:w #1 - 4 \if_meaning:w - #2 \exp_after:wN , \exp_after:wN 2 \__int_value:w \else: @@ -15373,7 +15682,7 @@ \cs_new:Npn \__fp_randint_o:Nw ? #1 @ { \if_case:w - \__int_eval:w \__fp_array_count:n {#1} - \c_one \__int_eval_end: + \__int_eval:w \__fp_array_count:n {#1} - 1 \__int_eval_end: \exp_after:wN \__fp_randint_e:w \c_one_fp #1 \or: \__fp_randint_e:w #1 \else: @@ -15389,19 +15698,19 @@ { \if_meaning:w 1 #1 \if_int_compare:w - \use_i_delimit_by_q_stop:nw #3 \q_stop > \c_sixteen - \exp_after:wN \c_one + \use_i_delimit_by_q_stop:nw #3 \q_stop > \c__fp_prec_int + 1 \exp_stop_f: \fi: \fi: } - { \c_one } + { 1 \exp_stop_f: } } \cs_new:Npn \__fp_randint_e:w #1; #2; { \if_case:w \__fp_randint_badarg:w #1; \__fp_randint_badarg:w #2; - \fp_compare:nNnTF { #1; } > { #2; } { \c_one } { \c_zero } + \fp_compare:nNnTF { #1; } > { #2; } { 1 } { 0 } \exp_stop_f: \exp_after:wN \exp_after:wN \exp_after:wN \__fp_randint_e:wnn \__fp_parse:n { #2; - #1; } { #1; } { #2; } \or: @@ -15453,7 +15762,7 @@ { \__fp_exp_after_o:w #1 ; \exp:w } } } -%% File: l3fp-assign.dtx Copyright (C) 2011-2016 The LaTeX3 project +%% File: l3fp-assign.dtx Copyright (C) 2011-2017 The LaTeX3 project \cs_new_protected:Npn \fp_new:N #1 { \cs_new_eq:NN #1 \c_zero_fp } \cs_generate_variant:Nn \fp_new:N {c} @@ -15498,6 +15807,11 @@ \cs_new_protected:Npn \fp_show:n { \__msg_show_wrap:Nn \fp_to_tl:n } \cs_generate_variant:Nn \fp_show:N { c } +\cs_new_protected:Npn \fp_log:N + { \__msg_log_next: \fp_show:N } +\cs_new_protected:Npn \fp_log:n + { \__msg_log_next: \fp_show:n } +\cs_generate_variant:Nn \fp_log:N { c } \fp_const:Nn \c_e_fp { 2.718 2818 2845 9045 } \fp_const:Nn \c_one_fp { 1 } \fp_const:Nn \c_pi_fp { 3.141 5926 5358 9793 } @@ -15507,7 +15821,7 @@ \fp_new:N \g_tmpa_fp \fp_new:N \g_tmpb_fp %% File l3sort.dtx (C) Copyright 2012,2014-2017 The LaTeX3 Project -\GetIdInfo$Id: l3sort.dtx 6847 2017-02-07 15:05:44Z bruno $ +\GetIdInfo$Id: l3sort.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Sorting functions} \int_new:N \l__sort_length_int \int_new:N \l__sort_min_int @@ -15523,33 +15837,33 @@ \cs_new_protected:Npn \__sort_shrink_range: { \int_set:Nn \l__sort_A_int - { \l__sort_true_max_int - \l__sort_min_int + \c_one } - \int_set:Nn \l__sort_block_int { \c_max_register_int / \c_two } + { \l__sort_true_max_int - \l__sort_min_int + 1 } + \int_set:Nn \l__sort_block_int { \c_max_register_int / 2 } \__sort_shrink_range_loop: \int_set:Nn \l__sort_max_int { \int_compare:nNnTF - { \l__sort_block_int * \c_three / \c_two } > \l__sort_A_int + { \l__sort_block_int * 3 / 2 } > \l__sort_A_int { \l__sort_min_int - + ( \l__sort_A_int - \c_one ) / \c_two - + \l__sort_block_int / \c_four - - \c_one + + ( \l__sort_A_int - 1 ) / 2 + + \l__sort_block_int / 4 + - 1 } - { \l__sort_true_max_int - \l__sort_block_int / \c_two } + { \l__sort_true_max_int - \l__sort_block_int / 2 } } } \cs_new_protected:Npn \__sort_shrink_range_loop: { \if_int_compare:w \l__sort_A_int < \l__sort_block_int - \tex_divide:D \l__sort_block_int \c_two + \tex_divide:D \l__sort_block_int 2 \exp_stop_f: \exp_after:wN \__sort_shrink_range_loop: \fi: } \cs_new_protected:Npn \__sort_compute_range: { - \int_set:Nn \l__sort_min_int { \tex_count:D 15 + \c_one } - \int_set:Nn \l__sort_true_max_int { \c_max_register_int + \c_one } + \int_set:Nn \l__sort_min_int { \tex_count:D 15 + 1 } + \int_set:Nn \l__sort_true_max_int { \c_max_register_int + 1 } \__sort_shrink_range: \if_meaning:w \loctoks \tex_undefined:D \else: \if_meaning:w \loctoks \scan_stop: \else: @@ -15585,8 +15899,8 @@ { \cs_gset_protected:Npn \__sort_compute_range: { - \int_set:Nn \l__sort_min_int { #1 + \c_one } - \int_set:Nn \l__sort_true_max_int { \c_max_register_int + \c_one } + \int_set:Nn \l__sort_min_int { #1 + 1 } + \int_set:Nn \l__sort_true_max_int { \c_max_register_int + 1 } \__sort_shrink_range: } } @@ -15603,12 +15917,12 @@ \__sort_too_long_error:NNw #3 #5 \fi: \tex_toks:D \l__sort_top_int {##1} - \tex_advance:D \l__sort_top_int \c_one + \int_incr:N \l__sort_top_int } \int_set:Nn \l__sort_length_int { \l__sort_top_int - \l__sort_min_int } \cs_set:Npn \__sort_compare:nn ##1 ##2 { #6 } - \int_set_eq:NN \l__sort_block_int \c_one + \int_set:Nn \l__sort_block_int { 1 } \__sort_level: \use:x { @@ -15670,7 +15984,7 @@ \if_int_compare:w #3 < \l__sort_top_int #1 #2 { \tex_the:D \tex_toks:D #3 } \exp_after:wN \__sort_toks:NNw \exp_after:wN #1 \exp_after:wN #2 - \__int_value:w \__int_eval:w #3 + \c_one \exp_after:wN ; + \__int_value:w \__int_eval:w #3 + 1 \exp_after:wN ; \fi: } \cs_new_protected:Npn \__sort_level: @@ -15695,9 +16009,9 @@ \l__sort_B_int \l__sort_A_int \l__sort_C_int \l__sort_top_int \__sort_copy_block: - \tex_advance:D \l__sort_A_int - \c_one - \tex_advance:D \l__sort_B_int - \c_one - \tex_advance:D \l__sort_C_int - \c_one + \int_decr:N \l__sort_A_int + \int_decr:N \l__sort_B_int + \int_decr:N \l__sort_C_int \exp_after:wN \__sort_merge_blocks_aux: \exp_after:wN \__sort_merge_blocks: \fi: @@ -15705,8 +16019,8 @@ \cs_new_protected:Npn \__sort_copy_block: { \tex_toks:D \l__sort_C_int \tex_toks:D \l__sort_B_int - \tex_advance:D \l__sort_C_int \c_one - \tex_advance:D \l__sort_B_int \c_one + \int_incr:N \l__sort_C_int + \int_incr:N \l__sort_B_int \if_int_compare:w \l__sort_B_int = \l__sort_end_int \use_i:nn \fi: @@ -15740,8 +16054,8 @@ \cs_new_protected:Npn \__sort_return_same: { \tex_toks:D \l__sort_B_int \tex_toks:D \l__sort_C_int - \tex_advance:D \l__sort_B_int - \c_one - \tex_advance:D \l__sort_C_int - \c_one + \int_decr:N \l__sort_B_int + \int_decr:N \l__sort_C_int \if_int_compare:w \l__sort_C_int < \l__sort_top_int \use_i:nn \fi: @@ -15750,8 +16064,8 @@ \cs_new_protected:Npn \__sort_return_swapped: { \tex_toks:D \l__sort_B_int \tex_toks:D \l__sort_A_int - \tex_advance:D \l__sort_B_int - \c_one - \tex_advance:D \l__sort_A_int - \c_one + \int_decr:N \l__sort_B_int + \int_decr:N \l__sort_A_int \if_int_compare:w \l__sort_A_int < \l__sort_begin_int \__sort_merge_blocks_end: \use_i:nn \fi: @@ -15760,8 +16074,8 @@ \cs_new_protected:Npn \__sort_merge_blocks_end: { \tex_toks:D \l__sort_B_int \tex_toks:D \l__sort_C_int - \tex_advance:D \l__sort_B_int - \c_one - \tex_advance:D \l__sort_C_int - \c_one + \int_decr:N \l__sort_B_int + \int_decr:N \l__sort_C_int \if_int_compare:w \l__sort_B_int < \l__sort_begin_int \use_i:nn \fi: @@ -15903,10 +16217,26 @@ \iow_char:N\\sort_return_swapped: ~multiple~times.~ Exactly~one~of~these~should~be~called. } -\cs_new_eq:NN \sort_ordered: \sort_return_same: -\cs_new_eq:NN \sort_reversed: \sort_return_swapped: +\cs_new_protected:Npn \sort_ordered: + { + \__msg_kernel_warning:nnxxx { kernel } { deprecated-command } + { 2018-12-31 } + { \token_to_str:N \sort_ordered: } + { \token_to_str:N \sort_return_same: } + \cs_gset_eq:NN \sort_ordered: \sort_return_same: + \sort_return_same: + } +\cs_new_protected:Npn \sort_reversed: + { + \__msg_kernel_warning:nnxxx { kernel } { deprecated-command } + { 2018-12-31 } + { \token_to_str:N \sort_reversed: } + { \token_to_str:N \sort_return_swapped: } + \cs_gset_eq:NN \sort_reversed: \sort_return_swapped: + \sort_return_swapped: + } %% File: l3box.dtx Copyright (C) 2005-2016 The LaTeX3 Project -\GetIdInfo$Id: l3box.dtx 6805 2016-12-28 22:15:52Z joseph $ +\GetIdInfo$Id: l3box.dtx 6943 2017-02-17 16:47:59Z bruno $ {L3 Experimental boxes} \cs_new_protected:Npn \box_new:N #1 { @@ -16004,39 +16334,39 @@ \cs_new_protected:Npn \box_show:N #1 { \box_show:Nnn #1 \c_max_int \c_max_int } \cs_generate_variant:Nn \box_show:N { c } -\cs_new_protected:Npn \box_show:Nnn - { \__box_show:NNnn \c_one } +\cs_new_protected:Npn \box_show:Nnn #1#2#3 + { \__box_show:NNff 1 #1 { \int_eval:n {#2} } { \int_eval:n {#3} } } \cs_generate_variant:Nn \box_show:Nnn { c } \cs_new_protected:Npn \box_log:N #1 { \box_log:Nnn #1 \c_max_int \c_max_int } \cs_generate_variant:Nn \box_log:N { c } -\cs_new_protected:Npn \box_log:Nnn #1#2#3 +\cs_new_protected:Npn \box_log:Nnn + { \exp_args:No \__box_log:nNnn { \tex_the:D \etex_interactionmode:D } } +\cs_new_protected:Npn \__box_log:nNnn #1#2#3#4 { - \use:x - { - \etex_interactionmode:D \c_zero - \__box_show:NNnn \c_zero \exp_not:N #1 - { \int_eval:n {#2} } { \int_eval:n {#3} } - \etex_interactionmode:D - = \tex_the:D \etex_interactionmode:D \scan_stop: - } + \int_set:Nn \etex_interactionmode:D { 0 } + \__box_show:NNff 0 #2 { \int_eval:n {#3} } { \int_eval:n {#4} } + \int_set:Nn \etex_interactionmode:D {#1} } \cs_generate_variant:Nn \box_log:Nnn { c } \cs_new_protected:Npn \__box_show:NNnn #1#2#3#4 { - \group_begin: - \int_set:Nn \tex_showboxbreadth:D {#3} - \int_set:Nn \tex_showboxdepth:D {#4} - \int_set_eq:NN \tex_tracingonline:D #1 - \int_set:Nn \tex_errorcontextlines:D { - \c_one } - \box_if_exist:NTF #2 - { \tex_showbox:D \use:n {#2} } - { - \__msg_kernel_error:nnx { kernel } { variable-not-defined } - { \token_to_str:N #2 } - } - \group_end: + \box_if_exist:NTF #2 + { + \group_begin: + \int_set:Nn \tex_showboxbreadth:D {#3} + \int_set:Nn \tex_showboxdepth:D {#4} + \int_set:Nn \tex_tracingonline:D {#1} + \int_set:Nn \tex_errorcontextlines:D { -1 } + \tex_showbox:D \use:n {#2} + \group_end: + } + { + \__msg_kernel_error:nnx { kernel } { variable-not-defined } + { \token_to_str:N #2 } + } } +\cs_generate_variant:Nn \__box_show:NNnn { NNff } \cs_new_protected:Npn \hbox:n #1 { \tex_hbox:D \scan_stop: {#1} } \cs_new_protected:Npn \hbox_set:Nn #1#2 { \tex_setbox:D #1 \tex_hbox:D {#2} } @@ -16112,8 +16442,8 @@ \cs_generate_variant:Nn \vbox_unpack_clear:N { c } \cs_new_protected:Npn \vbox_set_split_to_ht:NNn #1#2#3 { \tex_setbox:D #1 \tex_vsplit:D #2 to \__dim_eval:w #3 \__dim_eval_end: } -%% File: l3coffins.dtx Copyright(C) 2010-2016 The LaTeX3 Project -\GetIdInfo$Id: l3coffins.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3coffins.dtx Copyright(C) 2010-2017 The LaTeX3 Project +\GetIdInfo$Id: l3coffins.dtx 6906 2017-02-12 20:07:58Z bruno $ {L3 Coffin code layer} \box_new:N \l__coffin_internal_box \dim_new:N \l__coffin_internal_dim @@ -16891,6 +17221,9 @@ } } \cs_generate_variant:Nn \coffin_show_structure:N { c } +\cs_new_protected:Npn \coffin_log_structure:N + { \__msg_log_next: \coffin_show_structure:N } +\cs_generate_variant:Nn \coffin_log_structure:N { c } \__msg_kernel_new:nnnn { kernel } { no-pole-intersection } { No~intersection~between~coffin~poles. } { @@ -16943,7 +17276,7 @@ } } %% File: l3sys.dtx Copyright (C) 2015-2017 The LaTeX3 Project -\GetIdInfo$Id: l3sys.dtx 6811 2017-01-01 08:50:54Z joseph $ +\GetIdInfo$Id: l3sys.dtx 6976 2017-02-22 16:49:53Z stonezeng $ {L3 Experimental system/runtime functions} \str_const:Nx \c_sys_jobname_str { \tex_jobname:D } \int_const:Nn \c_sys_minute_int @@ -17006,11 +17339,8 @@ \cs_gset_eq:NN \sys_if_engine_xetex_p: \c_true_bool \str_const:Nn \c_sys_engine_str { xetex } } -\bool_if:nTF - { - \cs_if_exist_p:N \pdftex_pdfoutput:D - && \int_compare_p:nNn \pdftex_pdfoutput:D > \c_zero - } +\int_compare:nNnTF + { \cs_if_exist_use:NF \pdftex_pdfoutput:D { 0 } } > { 0 } { \cs_new_eq:NN \sys_if_output_dvi:T \use_none:n \cs_new_eq:NN \sys_if_output_dvi:F \use:n @@ -17033,16 +17363,65 @@ \cs_new_eq:NN \sys_if_output_pdf_p: \c_false_bool \str_const:Nn \c_sys_output_str { dvi } } -%% File: l3candidates.dtx Copyright (C) 2012-2016 The LaTeX3 Project -\GetIdInfo$Id: l3candidates.dtx 6835 2017-01-30 21:25:17Z bruno $ +%% File: l3deprecation.dtx (C) Copyright 2017 The LaTeX3 Project +\GetIdInfo$Id: l3deprecation.dtx 6966 2017-02-20 03:39:43Z bruno $ + {L3 Deprecation errors} +\cs_new_protected:Npn \__deprecation_error:Nnn #1#2#3 + { + \etex_protected:D \tex_outer:D \tex_edef:D #1 + { + \exp_not:N \__msg_kernel_expandable_error:nnnnn + { kernel } { deprecated-command } + { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} } + \exp_not:N \__msg_kernel_error:nnxxx + { kernel } { deprecated-command } + { \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} } + } + } +\__deprecation_error:Nnn \c_job_name_tl { \c_sys_jobname_str } { 2017-01-01 } +\__deprecation_error:Nnn \dim_case:nnn { \dim_case:nnF } { 2015-07-14 } +\__deprecation_error:Nnn \int_case:nnn { \int_case:nnF } { 2015-07-14 } +\__deprecation_error:Nnn \int_from_binary:n { \int_from_bin:n } { 2016-01-05 } +\__deprecation_error:Nnn \int_from_hexadecimal:n { \int_from_hex:n } { 2016-01-05 } +\__deprecation_error:Nnn \int_from_octal:n { \int_from_oct:n } { 2016-01-05 } +\__deprecation_error:Nnn \int_to_binary:n { \int_to_bin:n } { 2016-01-05 } +\__deprecation_error:Nnn \int_to_hexadecimal:n { \int_to_hex:n } { 2016-01-05 } +\__deprecation_error:Nnn \int_to_octal:n { \int_to_oct:n } { 2016-01-05 } +\__deprecation_error:Nnn \luatex_if_engine_p: { \sys_if_engine_luatex_p: } { 2017-01-01 } +\__deprecation_error:Nnn \luatex_if_engine:F { \sys_if_engine_luatex:F } { 2017-01-01 } +\__deprecation_error:Nnn \luatex_if_engine:T { \sys_if_engine_luatex:T } { 2017-01-01 } +\__deprecation_error:Nnn \luatex_if_engine:TF { \sys_if_engine_luatex:TF } { 2017-01-01 } +\__deprecation_error:Nnn \pdftex_if_engine_p: { \sys_if_engine_pdftex_p: } { 2017-01-01 } +\__deprecation_error:Nnn \pdftex_if_engine:F { \sys_if_engine_pdftex:F } { 2017-01-01 } +\__deprecation_error:Nnn \pdftex_if_engine:T { \sys_if_engine_pdftex:T } { 2017-01-01 } +\__deprecation_error:Nnn \pdftex_if_engine:TF { \sys_if_engine_pdftex:TF } { 2017-01-01 } +\__deprecation_error:Nnn \prop_get:cn { \prop_item:cn } { 2016-01-05 } +\__deprecation_error:Nnn \prop_get:Nn { \prop_item:Nn } { 2016-01-05 } +\__deprecation_error:Nnn \quark_if_recursion_tail_break:N { } { 2015-07-14 } +\__deprecation_error:Nnn \quark_if_recursion_tail_break:n { }{ 2015-07-14 } +\__deprecation_error:Nnn \scan_align_safe_stop: { protected~commands } { 2017-01-01 } +\__deprecation_error:Nnn \str_case:nnn { \str_case:nnF } { 2015-07-14 } +\__deprecation_error:Nnn \str_case:onn { \str_case:onF } { 2015-07-14 } +\__deprecation_error:Nnn \str_case_x:nnn { \str_case_x:nnF } { 2015-07-14 } +\__deprecation_error:Nnn \tl_case:cnn { \tl_case:cnF } { 2015-07-14 } +\__deprecation_error:Nnn \tl_case:Nnn { \tl_case:NnF } { 2015-07-14 } +\__deprecation_error:Nnn \xetex_if_engine_p: { \sys_if_engine_xetex_p: } { 2017-01-01 } +\__deprecation_error:Nnn \xetex_if_engine:F { \sys_if_engine_xetex:F } { 2017-01-01 } +\__deprecation_error:Nnn \xetex_if_engine:T { \sys_if_engine_xetex:T } { 2017-01-01 } +\__deprecation_error:Nnn \xetex_if_engine:TF { \sys_if_engine_xetex:TF } { 2017-01-01 } +\cs_new_protected:Npn \deprecation_error: + { + \__deprecation_error:Nnn \tl_to_lowercase:n { } { 2017-12-31 } + \__deprecation_error:Nnn \tl_to_uppercase:n { } { 2017-12-31 } + \__deprecation_error:Nnn \ior_get_str:NN { \ior_str_get:NN } { 2017-12-31 } + \__deprecation_error:Nnn \c_minus_one { - 1 } { 2018-12-31 } + \__deprecation_error:Nnn \sort_ordered: { \sort_return_same: } { 2018-12-31 } + \__deprecation_error:Nnn \sort_reversed: { \sort_return_swapped: } { 2018-12-31 } + \cs_set_eq:NN \deprecation_error: \scan_stop: + } +%% File: l3candidates.dtx Copyright (C) 2012-2017 The LaTeX3 Project +\GetIdInfo$Id: l3candidates.dtx 6967 2017-02-20 14:51:30Z bruno $ {L3 Experimental additions to l3kernel} -\cs_new_protected:Npn \cs_log:N - { \__msg_log_next: \cs_show:N } -\cs_new_protected:Npn \cs_log:c - { \__msg_log_next: \cs_show:c } -\cs_new_protected:Npn \__kernel_register_log:N - { \__msg_log_next: \__kernel_register_show:N } -\cs_generate_variant:Nn \__kernel_register_log:N { c } \fp_new:N \l__box_angle_fp \fp_new:N \l__box_cos_fp \fp_new:N \l__box_sin_fp @@ -17430,16 +17809,11 @@ \box_set_eq:NN #1 \l__box_internal_box } \cs_generate_variant:Nn \box_viewport:Nnnnn { c } -\cs_new_protected:Npn \clist_log:N - { \__msg_log_next: \clist_show:N } -\cs_new_protected:Npn \clist_log:n - { \__msg_log_next: \clist_show:n } -\cs_generate_variant:Nn \clist_log:N { c } \cs_new:Npn \clist_rand_item:n #1 { \exp_args:Nf \__clist_rand_item:nn { \clist_count:n {#1} } {#1} } \cs_new:Npn \__clist_rand_item:nn #1#2 { - \int_compare:nNnF {#1} = \c_zero + \int_compare:nNnF {#1} = 0 { \clist_item:nn {#2} { \int_rand:nn { 1 } {#1} } } } \cs_new:Npn \clist_rand_item:N #1 @@ -17677,9 +18051,6 @@ {#5} {#6} } } -\cs_new_protected:Npn \coffin_log_structure:N - { \__msg_log_next: \coffin_show_structure:N } -\cs_generate_variant:Nn \coffin_log_structure:N { c } \cs_new_protected:Npn \file_if_exist_input:n #1 { \file_if_exist:nT {#1} @@ -17741,16 +18112,6 @@ { \__msg_log_next: \ior_list_streams: } \cs_new_protected:Npn \iow_log_streams: { \__msg_log_next: \iow_list_streams: } -\cs_new_protected:Npn \fp_log:N - { \__msg_log_next: \fp_show:N } -\cs_new_protected:Npn \fp_log:n - { \__msg_log_next: \fp_show:n } -\cs_generate_variant:Nn \fp_log:N { c } -\cs_new_protected:Npn \int_log:N - { \__msg_log_next: \int_show:N } -\cs_generate_variant:Nn \int_log:N { c } -\cs_new_protected:Npn \int_log:n - { \__msg_log_next: \int_show:n } \cs_if_exist:NTF \pdftex_uniformdeviate:D { \cs_new:Npn \int_rand:nn #1#2 @@ -17768,12 +18129,12 @@ \__int_rand:ww #2; #1; } { - \int_compare:nNnTF {#1} > \c_zero + \int_compare:nNnTF {#1} > 0 { \int_compare:nNnTF { #2 - #1 } < \c__fp_rand_size_int } { \int_compare:nNnTF {#2} < { #1 + \c__fp_rand_size_int } } { \exp_args:Nf \__int_rand_narrow:nn - { \int_eval:n { #2 - #1 + \c_one } } {#1} + { \int_eval:n { #2 - #1 + 1 } } {#1} } { \fp_to_int:n { randint(#1,#2) } } } @@ -17807,8 +18168,6 @@ \__msg_kernel_new:nnn { kernel } { backward-range } { Bounds~ordered~backwards~in~\int_rand:nn {#1}~{#2}. } } -\cs_new_protected:Npn \keys_log:nn - { \__msg_log_next: \keys_show:nn } \cs_new:Npn \msg_expandable_error:nnnnnn #1#2#3#4#5#6 { \exp_args:Nf \__msg_expandable_error_module:nn @@ -17866,20 +18225,15 @@ { \prg_return_true: } { \bool_if:nTF {#2} { \prg_return_true: } { \prg_return_false: } } } -\cs_new_protected:Npn \bool_log:N - { \__msg_log_next: \bool_show:N } -\cs_new_protected:Npn \bool_log:n - { \__msg_log_next: \bool_show:n } -\cs_generate_variant:Nn \bool_log:N { c } \cs_new:Npn \prop_count:N #1 { \int_eval:n { - \c_zero + 0 \prop_map_function:NN #1 \__prop_count:nn } } -\cs_new:Npn \__prop_count:nn #1#2 { + \c_one } +\cs_new:Npn \__prop_count:nn #1#2 { + 1 } \cs_generate_variant:Nn \prop_count:N { c } \cs_new:Npn \prop_map_tokens:Nn #1#2 { @@ -17896,9 +18250,6 @@ \__prop_map_tokens:nwwn {#1} } \cs_generate_variant:Nn \prop_map_tokens:Nn { c } -\cs_new_protected:Npn \prop_log:N - { \__msg_log_next: \prop_show:N } -\cs_generate_variant:Nn \prop_log:N { c } \cs_new:Npn \prop_rand_key_value:N { \__prop_rand:NN \__prop_rand:nNn } \cs_new:Npn \__prop_rand:nNn #1#2#3 { \exp_not:n { {#1} {#3} } } \cs_new:Npn \__prop_rand:NN #1#2 @@ -17912,10 +18263,10 @@ } \cs_new:Npn \__prop_rand_item:Nw #1#2 \s__prop \__prop_pair:wn #3 \s__prop #4 { - \int_compare:nNnF {#2} > \c_one + \int_compare:nNnF {#2} > 1 { \use_i_delimit_by_q_stop:nw { #1 {#3} \exp_not:n {#4} } } \exp_after:wN \__prop_rand_item:Nw \exp_after:wN #1 - \__int_value:w \int_eval:n { #2 - \c_one } \s__prop + \__int_value:w \int_eval:n { #2 - 1 } \s__prop } \cs_generate_variant:Nn \prop_rand_key_value:N { c } \cs_new:Npn \seq_mapthread_function:NNN #1#2#3 @@ -17961,9 +18312,6 @@ #1 #2 { #3 } \__seq_pop_item_def: } -\cs_new_protected:Npn \seq_log:N - { \__msg_log_next: \seq_show:N } -\cs_generate_variant:Nn \seq_log:N { c } \cs_new:Npn \seq_rand_item:N #1 { \seq_if_empty:NF #1 @@ -17983,18 +18331,6 @@ #2 } } -\cs_new_eq:NN \dim_log:N \__kernel_register_log:N -\cs_new_eq:NN \dim_log:c \__kernel_register_log:c -\cs_new_protected:Npn \dim_log:n - { \__msg_log_next: \dim_show:n } -\cs_new_eq:NN \skip_log:N \__kernel_register_log:N -\cs_new_eq:NN \skip_log:c \__kernel_register_log:c -\cs_new_protected:Npn \skip_log:n - { \__msg_log_next: \skip_show:n } -\cs_new_eq:NN \muskip_log:N \__kernel_register_log:N -\cs_new_eq:NN \muskip_log:c \__kernel_register_log:c -\cs_new_protected:Npn \muskip_log:n - { \__msg_log_next: \muskip_show:n } \prg_new_conditional:Npnn \tl_if_single_token:n #1 { p , T , F , TF } { \tl_if_head_is_N_type:nTF {#1} @@ -18358,11 +18694,11 @@ { \token_if_expandable:NTF #1 { - \bool_if:nTF + \bool_lazy_any:nTF { - \token_if_protected_macro_p:N #1 - || \token_if_protected_long_macro_p:N #1 - || \token_if_eq_meaning_p:NN \q_recursion_tail #1 + { \token_if_eq_meaning_p:NN \q_recursion_tail #1 } + { \token_if_protected_macro_p:N #1 } + { \token_if_protected_long_macro_p:N #1 } } { \use_ii:nn } { \use_i:nn } @@ -18434,11 +18770,9 @@ #2 \q_recursion_stop } { - \bool_if:nTF - { - \token_if_cs_p:N #1 - || ! ( \int_compare_p:nNn { `#1 } = { "0307 } ) - } + \bool_lazy_or:nnTF + { \token_if_cs_p:N #1 } + { ! \int_compare_p:nNn { `#1 } = { "0307 } } { \__tl_change_case_output:Vwn \c__unicode_dotless_i_tl } { \__tl_change_case_output:nwn { i } @@ -18528,15 +18862,15 @@ #3 \q_recursion_stop } { - \bool_if:nT + \bool_lazy_and:nnT + { ! \token_if_cs_p:N #2 } { - ! \token_if_cs_p:N #2 - && - ( - \int_compare_p:nNn { `#2 } = { "0300 } - || \int_compare_p:nNn { `#2 } = { "0301 } - || \int_compare_p:nNn { `#2 } = { "0303 } - ) + \bool_lazy_any_p:n + { + { \int_compare_p:nNn { `#2 } = { "0300 } } + { \int_compare_p:nNn { `#2 } = { "0301 } } + { \int_compare_p:nNn { `#2 } = { "0303 } } + } } { \__tl_change_case_output:Vwn \c__unicode_dot_above_tl } #1 #2#3 \q_recursion_stop @@ -18578,11 +18912,9 @@ #3 \q_recursion_stop } { - \bool_if:nTF - { - ! \token_if_cs_p:N #2 - && \int_compare_p:nNn { `#2 } = { "0307 } - } + \bool_lazy_and:nnTF + { ! \token_if_cs_p:N #2 } + { \int_compare_p:nNn { `#2 } = { "0307 } } { #1 } { #1 #2 } #3 \q_recursion_stop @@ -19012,11 +19344,9 @@ } \cs_new:Npn \__tl_change_case_mixed_nl:Nnw #1 { - \bool_if:nTF - { - \int_compare_p:nNn { `#1 } = { `i } - || \int_compare_p:nNn { `#1 } = { `I } - } + \bool_lazy_or:nnTF + { \int_compare_p:nNn { `#1 } = { `i } } + { \int_compare_p:nNn { `#1 } = { `I } } { \__tl_change_case_output:nwn { I } \__tl_change_case_mixed_nl:Nw @@ -19036,14 +19366,12 @@ #3 \q_recursion_stop } { - \bool_if:nTF + \bool_lazy_and:nnTF + { ! ( \token_if_cs_p:N #2 ) } { - ! ( \token_if_cs_p:N #2 ) - && - ( - \int_compare_p:nNn { `#2 } = { `j } - || \int_compare_p:nNn { `#2 } = { `J } - ) + \bool_lazy_or_p:nn + { \int_compare_p:nNn { `#2 } = { `j } } + { \int_compare_p:nNn { `#2 } = { `J } } } { \__tl_change_case_output:nwn { J } @@ -19068,11 +19396,6 @@ ` - } -\cs_new_protected:Npn \tl_log:N - { \__msg_log_next: \tl_show:N } -\cs_generate_variant:Nn \tl_log:N { c } -\cs_new_protected:Npn \tl_log:n - { \__msg_log_next: \tl_show:n } \cs_new:Npn \tl_rand_item:n #1 { \tl_if_blank:nF {#1} @@ -19080,16 +19403,84 @@ } \cs_new:Npn \tl_rand_item:N { \exp_args:No \tl_rand_item:n } \cs_generate_variant:Nn \tl_rand_item:N { c } +\cs_new:Npn \tl_range:Nnn { \exp_args:No \tl_range:nnn } +\cs_generate_variant:Nn \tl_range:Nnn { c } +\cs_new:Npn \tl_range:nnn #1#2#3 + { + \tl_head:f + { + \exp_args:Nf \__tl_range:nnnw { \tl_count:n {#1} } {#2} {#3} + #1 + } + } +\cs_new:Npn \__tl_range:nnnw #1#2#3 + { + \exp_args:Nff \__tl_range:nnw + { + \exp_args:Nf \__tl_range_normalize:nn + { \int_eval:n { #2 - 1 } } {#1} + } + { + \exp_args:Nf \__tl_range_normalize:nn + { \int_eval:n {#3} } {#1} + } + } +\cs_new:Npn \__tl_range:nnw #1#2 + { + \if_int_compare:w #2 > #1 \exp_stop_f: \else: + \exp_after:wN { \exp_after:wN } + \fi: + \exp_after:wN \__tl_range_collect:w + \__int_value:w \__int_eval:w #2 - #1 \exp_after:wN ; + \exp_after:wN { \exp_after:wN } + \exp:w \__tl_range_skip:w #1 ; { } + } +\cs_new:Npn \__tl_range_skip:w #1 ; #2 + { + \if_int_compare:w #1 > 0 \exp_stop_f: + \exp_after:wN \__tl_range_skip:w + \__int_value:w \__int_eval:w #1 - 1 \exp_after:wN ; + \else: + \exp_after:wN \exp_end: + \fi: + } +\cs_new:Npn \__tl_range_collect:w #1 ; #2#3 + { + \if_int_compare:w #1 > 1 \exp_stop_f: + \exp_after:wN \__tl_range_collect:w + \__int_value:w \__int_eval:w #1 - 1 \exp_after:wN ; + \fi: + { #2 {#3} } + } +\cs_new:Npn \__tl_range_normalize:nn #1#2 + { + \int_eval:n + { + \if_int_compare:w #1 < 0 \exp_stop_f: + \if_int_compare:w #1 < -#2 \exp_stop_f: + 0 + \else: + #1 + #2 + 1 + \fi: + \else: + \if_int_compare:w #1 < #2 \exp_stop_f: + #1 + \else: + #2 + \fi: + \fi: + } + } \group_begin: \cs_set_protected:Npn \__peek_tmp:w #1 \q_stop { \cs_new_protected:Npn \__peek_execute_branches_N_type: { \if_int_odd:w - \if_catcode:w \exp_not:N \l_peek_token { \c_two \fi: - \if_catcode:w \exp_not:N \l_peek_token } \c_two \fi: - \if_meaning:w \l_peek_token \c_space_token \c_two \fi: - \c_one + \if_catcode:w \exp_not:N \l_peek_token { 0 \exp_stop_f: \fi: + \if_catcode:w \exp_not:N \l_peek_token } 0 \exp_stop_f: \fi: + \if_meaning:w \l_peek_token \c_space_token 0 \exp_stop_f: \fi: + 1 \exp_stop_f: \exp_after:wN \__peek_N_type:w \token_to_meaning:N \l_peek_token \q_mark \__peek_N_type_aux:nnw @@ -19118,8 +19509,8 @@ { \__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: } -%% File: l3luatex.dtx Copyright (C) 2010-2016 The LaTeX3 Project -\GetIdInfo$Id: l3luatex.dtx 6805 2016-12-28 22:15:52Z joseph $ +%% File: l3luatex.dtx Copyright (C) 2010-2017 The LaTeX3 Project +\GetIdInfo$Id: l3luatex.dtx 6953 2017-02-18 19:07:54Z joseph $ {L3 Experimental LuaTeX-specific functions} \cs_new:Npn \lua_now_x:n #1 { \luatex_directlua:D {#1} } \cs_new:Npn \lua_now:n #1 { \lua_now_x:n { \exp_not:n {#1} } } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex index 1c902bb50c6..fecda62e0c2 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex @@ -21,8 +21,8 @@ %% File: expl3.dtx Copyright (C) 1990-2017 The LaTeX3 Project \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2017/02/10}% -\def\ExplFileVersion{6878}% +\def\ExplFileDate{2017/03/07}% +\def\ExplFileVersion{6984}% \let\ExplLoaderFileVersion\ExplFileVersion \begingroup \def\tempa{LaTeX2e}% @@ -93,11 +93,9 @@ \sys_if_engine_xetex:TF { xdvipdfmx } { - \bool_if:nTF - { - \cs_if_exist_p:N \pdftex_pdfoutput:D - && \int_compare_p:nNn \pdftex_pdfoutput:D > \c_zero - } + \bool_lazy_and:nnTF + { \cs_if_exist_p:N \pdftex_pdfoutput:D } + { \int_compare_p:nNn \pdftex_pdfoutput:D > 0 } { pdfmode } { dvips } } diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua index 3449bd8cad6..41a82db20ba 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua @@ -13,7 +13,7 @@ -- -- Do not distribute a modified version of this file. -- --- File: l3luatex.dtx Copyright (C) 2010-2016 The LaTeX3 Project +-- File: l3luatex.dtx Copyright (C) 2010-2017 The LaTeX3 Project l3kernel = l3kernel or { } local tex_setcatcode = tex.setcatcode local tex_sprint = tex.sprint diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty index 061e76769f7..39142546652 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty @@ -21,8 +21,8 @@ %% File: expl3.dtx Copyright (C) 1990-2017 The LaTeX3 Project \def\ExplFileName{expl3}% \def\ExplFileDescription{L3 programming layer}% -\def\ExplFileDate{2017/02/10}% -\def\ExplFileVersion{6878}% +\def\ExplFileDate{2017/03/07}% +\def\ExplFileVersion{6984}% \let\ExplLoaderFileVersion\ExplFileVersion \ProvidesPackage{\ExplFileName} [% diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty index cb7faa91f68..818afcd20fe 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3basics.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3basics} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty b/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty index 2c940cc90aa..3e8d64ae2a0 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3bootstrap.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3bootstrap} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty index 036ece889f6..d3b0c6e5d55 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3box.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3box.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3box} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty index 497330ddc05..cb507e50c0d 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3candidates.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3candidates} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty index 5580f3f0fad..e9c6ecd3d29 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3clist.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3clist} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty index 52421d84448..067b5635ad9 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3coffins.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3coffins} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3color.sty b/Master/texmf-dist/tex/latex/l3kernel/l3color.sty index d80b2631357..2c15626ebe0 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3color.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3color.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3color} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls index 9bbfb2dfdce..7a7d0125084 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls +++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls @@ -24,7 +24,7 @@ \let \fileversionOld \ExplFileVersion \let \filedescriptionOld \ExplFileDescription \RequirePackage{expl3,xparse,calc} -\GetIdInfo$Id: l3doc.dtx 6847 2017-02-07 15:05:44Z bruno $ +\GetIdInfo$Id: l3doc.dtx 6943 2017-02-17 16:47:59Z bruno $ {L3 Experimental documentation class} \ProvidesExplClass {\ExplFileName}{\ExplFileDate}{\ExplFileVersion}{\ExplFileDescription} @@ -307,6 +307,8 @@ } \msg_new:nnn { l3doc } { deprecated-function } { The~deprecated~function(s)~'#1'~should~have~been~removed~on~#2. } +\msg_new:nnn { l3doc } { date-format } + { The~date~'#1'~should~be~given~in~YYYY-MM-DD~format. } \DeclareOption { a5paper } { \@latexerr { Option~not~supported } { } } \DeclareOption { full } { @@ -827,8 +829,8 @@ \bool_set_true:N \l__codedoc_macro_noTF_bool \bool_set_true:N \l__codedoc_macro_TF_bool } , - added .tl_set:N = \l__codedoc_date_added_tl , - updated .tl_set:N = \l__codedoc_date_updated_tl , + added .code:n = { \__codedoc_date_set:Nn \l__codedoc_date_added_tl {#1} }, + updated .code:n = { \__codedoc_date_set:Nn \l__codedoc_date_updated_tl {#1} } , deprecated .code:n = { \__codedoc_deprecated_on:n {#1} } , tested .code:n = { } , label .code:n = @@ -840,6 +842,12 @@ verb .bool_set:N = \l__codedoc_names_verb_bool , module .tl_set:N = \l__codedoc_override_module_tl , } +\cs_new_protected:Npn \__codedoc_date_set:Nn #1#2 + { + \tl_if_in:nnT {#2} { / } + { \msg_error:nnn { l3doc } { date-format } {#2} } + \tl_set:Nn #1 {#2} + } \cs_new_protected:Npn \__codedoc_deprecated_on:n #1 { \__codedoc_date_compare:nNnT {#1} < { \tex_year:D - \tex_month:D - \tex_day:D } @@ -1040,11 +1048,9 @@ \cs_generate_variant:Nn \__codedoc_function_label:nN { x } \cs_new:Npn \__codedoc_typeset_dates: { - \bool_if:nF - { - \tl_if_empty_p:N \l__codedoc_date_added_tl && - \tl_if_empty_p:N \l__codedoc_date_updated_tl - } + \bool_lazy_and:nnF + { \tl_if_empty_p:N \l__codedoc_date_added_tl } + { \tl_if_empty_p:N \l__codedoc_date_updated_tl } { \midrule } \tl_if_empty:NF \l__codedoc_date_added_tl { @@ -1173,7 +1179,7 @@ \hbox:n { \strut - \int_compare:nNnT \l__codedoc_macro_int = \c_zero + \int_compare:nNnT \l__codedoc_macro_int = 0 { \HD@target } } \vskip \int_eval:n { \l__codedoc_macro_int - 1 } \baselineskip @@ -1380,12 +1386,12 @@ } \cs_new_protected:Npn \__codedoc_macro_end_check_tested: { - \bool_if:nT + \bool_lazy_all:nT { - \g__codedoc_checktest_bool && - ! \l__codedoc_macro_aux_bool && - ! \l__codedoc_macro_var_bool && - ! \l__codedoc_macro_tested_bool + { \g__codedoc_checktest_bool } + { ! \l__codedoc_macro_aux_bool } + { ! \l__codedoc_macro_var_bool } + { ! \l__codedoc_macro_tested_bool } } { \seq_gput_right:Nx \g__codedoc_not_tested_seq @@ -1425,11 +1431,9 @@ } \cs_new_protected:Npn \__codedoc_print_documented: { - \bool_if:nT - { - ! \l__codedoc_macro_aux_bool && - ! \l__codedoc_macro_internal_bool - } + \bool_lazy_or:nnF + { \l__codedoc_macro_aux_bool } + { \l__codedoc_macro_internal_bool } { \int_set:Nn \l__codedoc_tmpa_int { \seq_count:N \g__codedoc_nested_names_seq } @@ -1752,8 +1756,8 @@ \tl_new:N \l__codedoc_undoc_def_tl \cs_new_protected:Npn \__codedoc_show_functions_defined: { - \bool_if:nT - { \g__codedoc_typeset_implementation_bool && \g__codedoc_checkfunc_bool } + \bool_lazy_and:nnT + { \g__codedoc_typeset_implementation_bool } { \g__codedoc_checkfunc_bool } { \iow_term:x { \c__codedoc_iow_separator_tl \iow_newline: } \iow_open:Nn \g__codedoc_func_iow { \c_sys_jobname_str .cmds } diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def index 7576a3c1f95..6a5afa728e8 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def @@ -18,8 +18,8 @@ %% This file is part of the "l3kernel bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% -%% File: l3drivers.dtx Copyright(C) 2011-2016 The LaTeX3 Project -\GetIdInfo$Id: l3drivers.dtx 6809 2017-01-01 06:33:13Z bruno $ +%% File: l3drivers.dtx Copyright(C) 2011-2017 The LaTeX3 Project +\GetIdInfo$Id: l3drivers.dtx 6954 2017-02-18 20:26:11Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvidpfmx.def}{\ExplFileDate}{\ExplFileVersion} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index 5c160181f16..fb26087e4ba 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -18,8 +18,8 @@ %% This file is part of the "l3kernel bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% -%% File: l3drivers.dtx Copyright(C) 2011-2016 The LaTeX3 Project -\GetIdInfo$Id: l3drivers.dtx 6809 2017-01-01 06:33:13Z bruno $ +%% File: l3drivers.dtx Copyright(C) 2011-2017 The LaTeX3 Project +\GetIdInfo$Id: l3drivers.dtx 6954 2017-02-18 20:26:11Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvips.def}{\ExplFileDate}{\ExplFileVersion} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def index be5b305817e..d5379bf5d97 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def @@ -18,8 +18,8 @@ %% This file is part of the "l3kernel bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% -%% File: l3drivers.dtx Copyright(C) 2011-2016 The LaTeX3 Project -\GetIdInfo$Id: l3drivers.dtx 6809 2017-01-01 06:33:13Z bruno $ +%% File: l3drivers.dtx Copyright(C) 2011-2017 The LaTeX3 Project +\GetIdInfo$Id: l3drivers.dtx 6954 2017-02-18 20:26:11Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3dvisvgm.def}{\ExplFileDate}{\ExplFileVersion} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty index 62823f4bc8d..f6168202c0a 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3expan.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3expan} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty index 0c620387825..d6c24b83adb 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3file.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3file.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3file} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty index f41289e23c3..59fb01df30a 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3fp.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3fp} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty index d4b4b691e3e..941565152ba 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3int.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3int.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3int} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty b/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty index d682d8421f1..0d8d6905030 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3keys.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3keys} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty index 4bf5fb6207b..d896a830cc3 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3msg.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3msg} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty index 7c74891b8f0..712c05e876d 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3names.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3names.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3names} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def index b517bd9f7ff..d2a281110ad 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def @@ -18,8 +18,8 @@ %% This file is part of the "l3kernel bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% -%% File: l3drivers.dtx Copyright(C) 2011-2016 The LaTeX3 Project -\GetIdInfo$Id: l3drivers.dtx 6809 2017-01-01 06:33:13Z bruno $ +%% File: l3drivers.dtx Copyright(C) 2011-2017 The LaTeX3 Project +\GetIdInfo$Id: l3drivers.dtx 6954 2017-02-18 20:26:11Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3pdfmode.def}{\ExplFileDate}{\ExplFileVersion} diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty index 64add1e2797..96f4a275143 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3prg.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3prg} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty index 2c50ca3b795..d0afa0eff30 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3prop.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3prop} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty index 8570ac35ce1..3555ee57eee 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3quark.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3quark} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty index 362f18ad24b..af248cbc7c3 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3seq.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3seq} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty index 9689bfb36db..b58e08899f2 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3skip.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3skip} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3sort.sty b/Master/texmf-dist/tex/latex/l3kernel/l3sort.sty index 1ff2b655cae..ae011bd1a17 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3sort.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3sort.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3sort} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str.sty b/Master/texmf-dist/tex/latex/l3kernel/l3str.sty index c51a97a5cda..09ddcbadbbf 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3str.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3str.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3str} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty index 30ce86054ec..fd8ee701dc3 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3tl.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3tl} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty index 1c483d9dec9..c3795885939 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3token.sty +++ b/Master/texmf-dist/tex/latex/l3kernel/l3token.sty @@ -19,7 +19,7 @@ %% and all files in that bundle must be distributed together. %% %% File: l3oldmodules.dtx Copyright (C) 2014,2016,2017 The LaTeX3 Project -\def\ExplFileDate{2017/02/10} +\def\ExplFileDate{2017/03/07} \def\old@liii@module@name {l3token} \ProvidesPackage\old@liii@module@name diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def index af8468476db..0e754eee695 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def @@ -18,8 +18,8 @@ %% This file is part of the "l3kernel bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% -%% File: l3drivers.dtx Copyright(C) 2011-2016 The LaTeX3 Project -\GetIdInfo$Id: l3drivers.dtx 6809 2017-01-01 06:33:13Z bruno $ +%% File: l3drivers.dtx Copyright(C) 2011-2017 The LaTeX3 Project +\GetIdInfo$Id: l3drivers.dtx 6954 2017-02-18 20:26:11Z joseph $ {L3 Experimental drivers} \ProvidesExplFile {l3xdvidpfmx.def}{\ExplFileDate}{\ExplFileVersion} |