summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3experimental
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-02-23 21:54:14 +0000
committerKarl Berry <karl@freefriends.org>2018-02-23 21:54:14 +0000
commit87d871a3d83784d48b71fa3712b9f525bfc710d2 (patch)
treef12f9ffdc697b5af9ee14c06874ec0e2f72c9f94 /Master/texmf-dist/tex/latex/l3experimental
parentccc63194ce7813106830c8a8755c54d89de831b4 (diff)
l3 (22feb18)
git-svn-id: svn://tug.org/texlive/trunk@46720 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3experimental')
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty360
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty1347
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty24
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def4
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty26
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty10
-rw-r--r--Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty2
14 files changed, 1747 insertions, 40 deletions
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
new file mode 100644
index 00000000000..9b5e7cabac5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3color/l3color.sty
@@ -0,0 +1,360 @@
+%%
+%% This is file `l3color.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3color.dtx (with options: `package')
+%%
+%% Copyright (C) 2017-2018 The LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3experimental bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3color.dtx Copyright(C) 2017-2018 The LaTeX3 Project
+\RequirePackage{expl3}
+\ProvidesExplPackage{l3color}{2018/02/21}{}
+ {L3 Experimental color support}
+\tl_new:N \l__color_tmp_tl
+\prg_new_conditional:Npnn \__color_if_defined:n #1 { T, F, TF }
+ {
+ \tl_if_exist:cTF { l__color_named_ #1 _tl }
+ \prg_return_true:
+ \prg_return_false:
+ }
+\cs_new_protected:Npn \__color_extract:nNN #1#2#3
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \__color_extract:NNw
+ \exp_after:wN \exp_after:wN \exp_after:wN #2
+ \exp_after:wN \exp_after:wN \exp_after:wN #3
+ \cs:w l__color_named_ #1 _tl \cs_end: \q_stop
+ }
+\cs_generate_variant:Nn \__color_extract:nNN { V }
+\cs_new_protected:Npn \__color_extract:NNw #1#2 #3 ~ #4 \q_stop
+ {
+ \tl_set:Nn #1 {#3}
+ \tl_set:Nn #2 {#4}
+ }
+\cs_new_protected:Npn \__color_convert:nnN #1#2#3
+ { \__color_convert:nnVN {#1} {#2} #3 #3 }
+\cs_generate_variant:Nn \__color_convert:nnN { VV }
+\cs_new_protected:Npn \__color_convert:nnnN #1#2#3#4
+ {
+ \str_if_eq_x:nnT {#1} { spot } % TO DO!!!
+ { }
+ \tl_set:Nx #4
+ { \use:c { __color_convert_ #1 _ #2 :w } #3 ~ 0 ~ 0 ~ 0 \q_stop }
+ }
+\cs_generate_variant:Nn \__color_convert:nnnN { nnV }
+\cs_new:Npn \__color_convert_gray_rgb:w #1 ~ #2 \q_stop
+ { #1 ~ #1 ~ #1 }
+\cs_new:Npn \__color_convert_gray_cmyk:w #1 ~ #2 \q_stop
+ { 0 ~ 0 ~ 0 ~ \fp_eval:n { 1 - #1 } }
+\cs_new:Npn \__color_convert_rgb_gray:w #1 ~ #2 ~ #3 ~ #4 \q_stop
+ { \fp_eval:n { 0.3 * #1 + 0.59 * #2 + 0.11 * #3 } }
+\cs_new:Npn \__color_convert_rgb_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop
+ {
+ \exp_args:Nf \__color_convert_rgb_cmyk:nnnn
+ { \fp_eval:n { min ( 1 - #1 , 1 - #2 , 1 - #3 ) } } {#1} {#2} {#3}
+ }
+\cs_new:Npn \__color_convert_rgb_cmyk:nnnn #1#2#3#4
+ {
+ \fp_eval:n { min ( 1 , max ( 0 , 1 - #2 - #1 ) ) } \c_space_tl
+ \fp_eval:n { min ( 1 , max ( 0 , 1 - #3 - #1 ) ) } \c_space_tl
+ \fp_eval:n { min ( 1 , max ( 0 , 1 - #4 - #1 ) ) } \c_space_tl
+ #1
+ }
+\cs_new:Npn \__color_convert_cmyk_gray:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop
+ { \fp_eval:n { 1 - min ( 1 , 0.3 * #1 + 0.59 * #2 + 0.11 * #3 + #4 ) } }
+\cs_new:Npn \__color_convert_cmyk_rgb:w #1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop
+ {
+ \fp_eval:n { 1 - min ( 1 , #1 + #4 ) } \c_space_tl
+ \fp_eval:n { 1 - min ( 1 , #2 + #4 ) } \c_space_tl
+ \fp_eval:n { 1 - min ( 1 , #3 + #4 ) }
+ }
+\tl_new:N \l__color_model_tl
+\tl_new:N \l__color_value_tl
+\tl_new:N \l__color_next_model_tl
+\tl_new:N \l__color_next_value_tl
+\cs_new_protected:Npn \color_parse:nN #1#2
+ {
+ \group_begin:
+ \seq_map_inline:Nn \l_char_active_seq
+ {
+ \tl_set:Nx \l__color_tmp_tl { \cs_to_str:N ##1 }
+ \char_set_active_eq:NN ##1 \l__color_tmp_tl
+ }
+ \tl_set:Nx \l__color_tmp_tl {#1}
+ \exp_args:NNV \group_end:
+ \__color_parse:nN \l__color_tmp_tl #2
+ }
+\cs_new_protected:Npn \__color_parse:nN #1#2
+ {
+ \tl_if_exist:cTF { l__color_named_ #1 _tl }
+ { \tl_set_eq:Nc #2 { l__color_named_ #1 _tl } }
+ { \__color_parse:Nw #2#1 ! \q_stop }
+ }
+\cs_new_protected:Npn \__color_parse:Nw #1#2 ! #3 \q_stop
+ {
+ \__color_if_defined:nTF {#2}
+ {
+ \tl_if_blank:nTF {#3}
+ { \tl_set_eq:Nc #1 { l__color_named_ #2 _tl } }
+ { \__color_parse_loop_init:Nnn #1 {#2} {#3} }
+ }
+ {
+ \__kernel_msg_error:nnn { color } { unknown-color } {#3}
+ \tl_set_eq:NN \l__color_current_tl \l__color_named_black_tl
+ }
+ }
+\cs_new_protected:Npn \__color_parse_loop_init:Nnn #1#2#3
+ {
+ \group_begin:
+ \__color_extract:nNN {#2} \l__color_model_tl \l__color_value_tl
+ \__color_parse_loop:w #3 ! ! ! ! \q_stop
+ \tl_set:Nx \l__color_tmp_tl
+ { \l__color_model_tl \c_space_tl \l__color_value_tl }
+ \exp_args:NNNV \group_end:
+ \tl_set:Nn #1 \l__color_tmp_tl
+ }
+\cs_new_protected:Npn \__color_parse_loop:w #1 ! #2 ! #3 ! #4 ! #5 \q_stop
+ {
+ \bool_lazy_or:nnF
+ { \tl_if_blank_p:n {#1} }
+ { \int_compare_p:nNn {#1} = { 100 } }
+ {
+ \int_compare:nNnTF {#1} = { 0 }
+ {
+ \tl_if_blank:nTF {#2}
+ { \__color_extract:nNN { white } }
+ { \__color_extract:nNN {#2} }
+ \l__color_model_tl \l__color_value_tl
+ }
+ {
+ \use:x
+ {
+ \__color_parse_loop:nn {#1}
+ { \tl_if_blank:nTF {#2} { white } {#2} }
+ }
+ }
+ }
+ \tl_if_blank:nF {#3}
+ { \__color_parse_loop:w #3 ! #4 ! #5 \q_stop }
+ \__color_parse_end:
+ }
+\cs_new_protected:Npn \__color_parse_loop:nn #1#2
+ {
+ \__color_if_defined:nTF {#2}
+ {
+ \__color_extract:nNN {#2} \l__color_next_model_tl \l__color_next_value_tl
+ \tl_if_eq:NNF \l__color_model_tl \l__color_next_model_tl
+ {
+ \str_if_eq_x:nnT { \l__color_model_tl } { gray }
+ {
+ \use:x
+ {
+ \tl_set:Nn \exp_not:N \l__color_model_tl
+ { \l__color_next_model_tl }
+ \tl_set:Nn \exp_not:N \l__color_value_tl
+ { \l__color_next_value_tl }
+ \tl_set:Nn \exp_not:N \l_next__color_model_tl
+ { \l__color_model_tl }
+ \tl_set:Nn \exp_not:N \l_next__color_value_tl
+ { \l__color_value_tl }
+ }
+ }
+ \__color_convert:VVN
+ \l__color_next_model_tl
+ \l__color_model_tl
+ \l__color_next_value_tl
+ }
+ \tl_set:Nx \l__color_value_tl
+ {
+ \__color_parse_mix:NVVn
+ \l__color_model_tl \l__color_value_tl \l__color_next_value_tl {#1}
+ }
+ }
+ {
+ \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+ \__color_extract:nNN { black } \l__color_model_tl \l__color_value_tl
+ \__color_parse_break:w
+ }
+ }
+\cs_new_protected:Npn \__color_parse_break:w #1 \__color_parse_end: { }
+\cs_new_protected:Npn \__color_parse_end: { }
+\cs_new:Npn \__color_parse_mix:Nnnn #1#2#3#4
+ {
+ \exp_args:Nf \__color_parse_mix:nNnn
+ { \fp_eval:n { #4 / 100 } }
+ #1 {#2} {#3}
+ }
+\cs_generate_variant:Nn \__color_parse_mix:Nnnn { NVV }
+\cs_new:Npn \__color_parse_mix:nNnn #1#2#3#4
+ {
+ \use:c { __color_parse_mix_ #2 :nw } {#1}
+ #3 \q_mark #4 \q_stop
+ }
+\cs_new:Npn \__color_parse_mix_gray:nw #1#2 \q_mark #3 \q_stop
+ { \fp_eval:n { #2 * #1 + #3 * ( 1 - #1 ) } }
+\cs_new:Npn \__color_parse_mix_rgb:nw
+ #1#2 ~ #3 ~ #4 \q_mark #5 ~ #6 ~ #7 \q_stop
+ {
+ \fp_eval:n { #2 * #1 + #5 * ( 1 - #1 ) } \c_space_tl
+ \fp_eval:n { #3 * #1 + #6 * ( 1 - #1 ) } \c_space_tl
+ \fp_eval:n { #4 * #1 + #7 * ( 1 - #1 ) }
+ }
+\cs_new:Npn \__color_parse_mix_cmyk:nw
+ #1#2 ~ #3 ~ #4 ~ #5 \q_mark #6 ~ #7 ~ #8 ~ #9 \q_stop
+ {
+ \fp_eval:n { #2 * #1 + #6 * ( 1 - #1 ) } \c_space_tl
+ \fp_eval:n { #3 * #1 + #7 * ( 1 - #1 ) } \c_space_tl
+ \fp_eval:n { #4 * #1 + #8 * ( 1 - #1 ) } \c_space_tl
+ \fp_eval:n { #5 * #1 + #9 * ( 1 - #1 ) }
+ }
+\cs_new:Npn \__color_parse_gray:w #1 , #2 \q_stop {#1}
+\cs_new:Npn \__color_parse_rgb:w #1 , #2 , #3 , #4 \q_stop { #1 ~ #2 ~ #3 }
+\cs_new:Npn \__color_parse_cmyk:w #1 , #2 , #3 , #4 , #5 \q_stop
+ { #1 ~ #2 ~ #3 ~ #4 }
+\cs_new:Npn \__color_parse_spot:w #1 , #2 \q_stop
+ { \__color_parse_spot_aux:w #1 ! 100 ! \q_stop }
+\cs_new:Npn \__color_parse_spot_aux:w #1 ! #2 ! #3 \q_stop
+ { #1 ~ \fp_eval:n { #2 / 100 } }
+\tl_new:N \l_color_fixed_model_tl
+\cs_new_protected:Npn \__color_select:
+ {
+ \__color_finalise:N \l__color_current_tl
+ \tl_set_eq:cN { l__color_named_ . _tl } \l__color_current_tl
+ \__color_select:V \l__color_current_tl
+ }
+\cs_new_protected:Npn \__color_finalise:N #1
+ {
+ \tl_if_empty:NF \l_color_fixed_model_tl
+ {
+ \exp_after:wN \__color_finalise:w #1 \q_stop
+ \tl_if_eq:NNF \l__color_model_tl \l_color_fixed_model_tl
+ {
+ \__color_convert:VVN \l__color_model_tl \l_color_fixed_model_tl
+ \l__color_value_tl
+ }
+ \tl_set:Nx #1
+ { \l_color_fixed_model_tl \c_space_tl \l__color_value_tl }
+ }
+ }
+\cs_new_protected:Npn \__color_finalise:w #1 ~ #2 \q_stop
+ {
+ \tl_set:Nn \l__color_model_tl {#1}
+ \tl_set:Nn \l__color_value_tl {#2}
+ }
+\cs_new_protected:Npn \color_select:n #1
+ {
+ \color_parse:nN {#1} \l__color_current_tl
+ \__color_select:
+ }
+\cs_new_protected:Npn \color_select:nn #1#2
+ {
+ \__color_direct:nnN {#1} {#2} \l__color_current_tl
+ \__color_select:
+ }
+\cs_new_protected:Npn \__color_direct:nnN #1#2#3
+ {
+ \cs_if_exist:cTF { __color_parse_ #1 :w }
+ {
+ \tl_set:Nx #3
+ { #1 ~ \use:c { __color_parse_ #1 :w } #2 , 0 , 0 , 0 , 0 \q_stop }
+ }
+ {
+ \__kernel_msg_error:nnn { color } { invalid-model } {#1}
+ }
+ }
+\tl_new:N \l__color_named_tl
+\cs_new_protected:Npn \__color_store:Nn #1#2
+ {
+ \str_if_eq:nnF {#2} { . }
+ {
+ \tl_clear_new:c { l__color_named_ #2 _tl }
+ \tl_set_eq:cN { l__color_named_ #2 _tl } #1
+ }
+ }
+\cs_new_protected:Npn \color_set:nn #1#2
+ {
+ \color_parse:nN {#2} \l__color_named_tl
+ \__color_store:Nn \l__color_named_tl {#1}
+ }
+\cs_new_protected:Npn \color_set:nnn #1#2#3
+ {
+ \__color_direct:nnN {#2} {#3} \l__color_named_tl
+ \__color_store:Nn \l__color_named_tl {#1}
+ }
+\cs_new_protected:Npn \color_set_eq:nn #1#2
+ {
+ \__color_if_defined:nTF {#2}
+ {
+ \tl_clear_new:c { l__color_named_ #1 _tl }
+ \str_if_eq:nnTF {#2} { . }
+ { \tl_set_eq:cN { l__color_named_ #1 _tl } \l__color_current_tl }
+ { \tl_set_eq:cc { l__color_named_ #1 _tl } { l__color_named_ #2 _tl } }
+ }
+ {
+ \__kernel_msg_error:nnn { color } { unknown-color } {#2}
+ }
+ }
+\color_set:nnn { black } { gray } { 0 }
+\color_set:nnn { white } { gray } { 1 }
+\color_set:nnn { cyan } { cmyk } { 1 , 0 , 0 , 0 }
+\color_set:nnn { magenta } { cmyk } { 0 , 1 , 0 , 0 }
+\color_set:nnn { yellow } { cmyk } { 0 , 0 , 1 , 0 }
+\color_set:nnn { red } { rgb } { 1 , 0 , 0 }
+\color_set:nnn { green } { rgb } { 0 , 1 , 0 }
+\color_set:nnn { blue } { rgb } { 0 , 0 , 1 }
+\tl_new:c { l__color_named_._tl }
+\cs_new_protected:Npn \color_show:n #1
+ {
+ \msg_show:nnxxxx { LaTeX / color } { show }
+ {#1}
+ {
+ \__color_if_defined:nTF {#1}
+ { \exp_last_unbraced:Nv \__color_show:w { l__color_named_ #1 _tl } \q_stop }
+ { }
+ }
+ { }
+ { }
+ }
+\cs_new:Npn \__color_show:w #1 ~ #2 \q_stop
+ {
+ \msg_show_item_unbraced:nn { model } {#1}
+ \exp_args:Nnf \msg_show_item_unbraced:nn { value }
+ { \use:c { __color_show_ #1 :w } #2 \q_stop }
+ }
+\cs_new:Npn \__color_show_gray:w #1 \q_stop { #1 }
+\cs_new:Npn \__color_show_rgb:w #1 ~ #2 ~ #3 \q_stop { #1 ,~ #2 ,~ #3 }
+\cs_new:Npn \__color_show_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop { #1 ,~ #2 ,~ #3 ,~ #4 }
+\__kernel_msg_new:nnnn { color } { invalid-model }
+ { Invalid~color~model~'#1'. }
+ {
+ LaTeX~has~been~asked~to~use~a~color~model~called~'#1',~
+ but~this~model~is~not~set~up.
+ }
+\__kernel_msg_new:nnnn { color } { unknown-color }
+ { Unknown~color~'#1'. }
+ {
+ LaTeX~has~been~asked~to~use~a~color~named~'#1',~
+ but~this~has~never~been~defined.
+ }
+\__kernel_msg_new:nnn { color } { show }
+ {
+ The~color~#1~
+ \tl_if_empty:nTF {#2}
+ { is~undefined. }
+ { has~the~properties: #2 }
+ }
+%%
+%%
+%% End of file `l3color.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
new file mode 100644
index 00000000000..d485673b419
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3draw/l3draw.sty
@@ -0,0 +1,1347 @@
+%%
+%% This is file `l3draw.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3draw.dtx (with options: `package')
+%% l3draw-paths.dtx (with options: `package')
+%% l3draw-points.dtx (with options: `package')
+%% l3draw-scopes.dtx (with options: `package')
+%% l3draw-softpath.dtx (with options: `package')
+%% l3draw-state.dtx (with options: `package')
+%% l3draw-transforms.dtx (with options: `package')
+%%
+%% Copyright (C) 2018 The LaTeX3 Project
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3experimental bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3draw.dtx Copyright(C) 2018 The LaTeX3 Project
+\RequirePackage{expl3}
+\ProvidesExplPackage{l3draw}{2018/02/21}{}
+ {L3 Experimental core drawing support}
+\RequirePackage { l3color }
+%% File: l3draw-paths.dtx Copyright(C) 2018 The LaTeX3 Project
+\tl_new:N \l__draw_path_tmp_tl
+\fp_new:N \l__draw_path_tmpa_fp
+\fp_new:N \l__draw_path_tmpb_fp
+\dim_new:N \g__draw_path_lastx_dim
+\dim_new:N \g__draw_path_lasty_dim
+\dim_new:N \g__draw_path_xmax_dim
+\dim_new:N \g__draw_path_xmin_dim
+\dim_new:N \g__draw_path_ymax_dim
+\dim_new:N \g__draw_path_ymin_dim
+\cs_new_protected:Npn \__draw_path_update_limits:nn #1#2
+ {
+ \dim_gset:Nn \g__draw_path_xmax_dim
+ { \dim_max:nn \g__draw_path_xmax_dim {#1} }
+ \dim_gset:Nn \g__draw_path_xmin_dim
+ { \dim_min:nn \g__draw_path_xmin_dim {#1} }
+ \dim_gset:Nn \g__draw_path_ymax_dim
+ { \dim_max:nn \g__draw_path_ymax_dim {#2} }
+ \dim_gset:Nn \g__draw_path_ymin_dim
+ { \dim_min:nn \g__draw_path_ymin_dim {#2} }
+ \bool_if:NT \l__draw_update_bb_bool
+ {
+ \dim_gset:Nn \g__draw_xmax_dim
+ { \dim_max:nn \g__draw_xmax_dim {#1} }
+ \dim_gset:Nn \g__draw_xmin_dim
+ { \dim_min:nn \g__draw_xmin_dim {#1} }
+ \dim_gset:Nn \g__draw_ymax_dim
+ { \dim_max:nn \g__draw_ymax_dim {#2} }
+ \dim_gset:Nn \g__draw_ymin_dim
+ { \dim_min:nn \g__draw_ymin_dim {#2} }
+ }
+ }
+\cs_new_protected:Npn \__draw_path_reset_limits:
+ {
+ \dim_gset:Nn \g__draw_path_xmax_dim { -\c_max_dim }
+ \dim_gset:Nn \g__draw_path_xmin_dim { \c_max_dim }
+ \dim_gset:Nn \g__draw_path_ymax_dim { -\c_max_dim }
+ \dim_gset:Nn \g__draw_path_ymin_dim { \c_max_dim }
+ }
+\cs_new_protected:Npn \__draw_path_update_last:nn #1#2
+ {
+ \dim_gset:Nn \g__draw_path_lastx_dim {#1}
+ \dim_gset:Nn \g__draw_path_lasty_dim {#2}
+ }
+\dim_new:N \l__draw_corner_xarc_dim
+\dim_new:N \l__draw_corner_yarc_dim
+\bool_new:N \l__draw_corner_arc_bool
+\cs_new_protected:Npn \draw_path_corner_arc:n #1
+ {
+ \__draw_point_process:nn { \__draw_path_corner_arc:nn } {#1}
+ }
+\cs_new_protected:Npn \__draw_path_corner_arc:nn #1#2
+ {
+ \dim_set:Nn \l__draw_corner_xarc_dim {#1}
+ \dim_set:Nn \l__draw_corner_yarc_dim {#2}
+ \bool_lazy_and:nnTF
+ { \dim_compare_p:nNn \l__draw_corner_xarc_dim = { 0pt } }
+ { \dim_compare_p:nNn \l__draw_corner_yarc_dim = { 0pt } }
+ { \bool_set_false:N \l__draw_corner_arc_bool }
+ { \bool_set_true:N \l__draw_corner_arc_bool }
+ }
+\cs_new_protected:Npn \__draw_path_mark_corner:
+ {
+ \bool_if:NT \l__draw_corner_arc_bool
+ {
+ \__draw_softpath_roundpoint:VV
+ \l__draw_corner_xarc_dim
+ \l__draw_corner_yarc_dim
+ }
+ }
+\cs_new_protected:Npn \draw_path_moveto:n #1
+ {
+ \__draw_point_process:nn
+ { \__draw_path_moveto:nn }
+ { \draw_point_transform:n {#1} }
+ }
+\cs_new_protected:Npn \__draw_path_moveto:nn #1#2
+ {
+ \__draw_path_update_limits:nn {#1} {#2}
+ \__draw_softpath_moveto:nn {#1} {#2}
+ \__draw_path_update_last:nn {#1} {#2}
+ }
+\cs_new_protected:Npn \draw_path_lineto:n #1
+ {
+ \__draw_point_process:nn
+ { \__draw_path_lineto:nn }
+ { \draw_point_transform:n {#1} }
+ }
+\cs_new_protected:Npn \__draw_path_lineto:nn #1#2
+ {
+ \__draw_path_mark_corner:
+ \__draw_path_update_limits:nn {#1} {#2}
+ \__draw_softpath_lineto:nn {#1} {#2}
+ \__draw_path_update_last:nn {#1} {#2}
+ }
+\cs_new_protected:Npn \draw_path_curveto:nnn #1#2#3
+ {
+ \__draw_point_process:nnn
+ {
+ \__draw_point_process:nn
+ {
+ \__draw_path_mark_corner:
+ \__draw_path_curveto:nnnnnn
+ }
+ { \draw_point_transform:n {#1} }
+ }
+ { \draw_point_transform:n {#2} }
+ { \draw_point_transform:n {#3} }
+ }
+\cs_new_protected:Npn \__draw_path_curveto:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_path_update_limits:nn {#1} {#2}
+ \__draw_path_update_limits:nn {#3} {#4}
+ \__draw_path_update_limits:nn {#5} {#6}
+ \__draw_softpath_curveto:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6}
+ \__draw_path_update_last:nn {#5} {#6}
+ }
+\cs_new_protected:Npn \draw_path_close:
+ {
+ \__draw_path_mark_corner:
+ \__draw_softpath_closepath:
+ }
+\cs_new_protected:Npn \draw_path_curveto:nn #1#2
+ {
+ \__draw_point_process:nnn
+ { \__draw_path_curveto:nnnn }
+ { \draw_point_transform:n {#1} }
+ { \draw_point_transform:n {#2} }
+ }
+\cs_new_protected:Npn \__draw_path_curveto:nnnn #1#2#3#4
+ {
+ \fp_set:Nn \l__draw_path_tmpa_fp { \c__draw_path_curveto_b_fp * #1 }
+ \fp_set:Nn \l__draw_path_tmpb_fp { \c__draw_path_curveto_b_fp * #2 }
+ \use:x
+ {
+ \__draw_path_mark_corner:
+ \__draw_path_curveto:nnnnnn
+ {
+ \fp_to_dim:n
+ {
+ \c__draw_path_curveto_a_fp * \g__draw_path_lastx_dim
+ + \l__draw_path_tmpa_fp
+ }
+ }
+ {
+ \fp_to_dim:n
+ {
+ \c__draw_path_curveto_a_fp * \g__draw_path_lasty_dim
+ + \l__draw_path_tmpb_fp
+ }
+ }
+ {
+ \fp_to_dim:n
+ { \c__draw_path_curveto_a_fp * #3 + \l__draw_path_tmpa_fp }
+ }
+ {
+ \fp_to_dim:n
+ { \c__draw_path_curveto_a_fp * #4 + \l__draw_path_tmpb_fp }
+ }
+ {#3}
+ {#4}
+ }
+ }
+\fp_const:Nn \c__draw_path_curveto_a_fp { 1 / 3 }
+\fp_const:Nn \c__draw_path_curveto_b_fp { 2 / 3 }
+\cs_new_protected:Npn \draw_path_arc:nnn #1#2#3
+ { \draw_path_arc:nnnn {#1} {#2} {#3} {#3} }
+\cs_new_protected:Npn \draw_path_arc:nnnn #1#2#3#4
+ {
+ \use:x
+ {
+ \__draw_path_arc:nnnn
+ { \fp_eval:n {#1} }
+ { \fp_eval:n {#2} }
+ { \fp_to_dim:n {#3} }
+ { \fp_to_dim:n {#4} }
+ }
+ }
+\cs_new_protected:Npn \__draw_path_arc:nnnn #1#2#3#4
+ {
+ \fp_compare:nNnTF {#1} > {#2}
+ { \__draw_path_arc:nnNnn {#1} {#2} - {#3} {#4} }
+ { \__draw_path_arc:nnNnn {#1} {#2} + {#3} {#4} }
+ }
+\cs_new_protected:Npn \__draw_path_arc:nnNnn #1#2#3#4#5
+ {
+ \fp_set:Nn \l__draw_path_arc_start_fp {#1}
+ \fp_set:Nn \l__draw_path_arc_delta_fp { abs( #1 - #2 ) }
+ \fp_while_do:nNnn { \l__draw_path_arc_delta_fp } > { 90 }
+ {
+ \fp_compare:nNnTF \l__draw_path_arc_delta_fp > { 115 }
+ {
+ \__draw_path_arc_auxi:ffnnNnn
+ { \fp_to_decimal:N \l__draw_path_arc_start_fp }
+ { \fp_eval:n { \l__draw_path_arc_start_fp #3 90 } }
+ { 90 } {#2}
+ #3 {#4} {#5}
+ }
+ {
+ \__draw_path_arc_auxi:ffnnNnn
+ { \fp_to_decimal:N \l__draw_path_arc_start_fp }
+ { \fp_eval:n { \l__draw_path_arc_start_fp #3 60 } }
+ { 60 } {#2}
+ #3 {#4} {#5}
+ }
+ }
+ \__draw_path_mark_corner:
+ \__draw_path_arc_auxi:fnfnNnn
+ { \fp_to_decimal:N \l__draw_path_arc_start_fp }
+ {#2}
+ { \fp_eval:n { abs( \l__draw_path_arc_start_fp - #2 ) } }
+ {#2}
+ #3 {#4} {#5}
+ }
+\cs_new_protected:Npn \__draw_path_arc_auxi:nnnnNnn #1#2#3#4#5#6#7
+ {
+ \use:x
+ {
+ \__draw_path_arc_auxii:nnnNnnnn
+ {#1} {#2} {#4} #5 {#6} {#7}
+ {
+ \fp_to_dim:n
+ {
+ \cs_if_exist_use:cF
+ { c__draw_path_arc_ #3 _fp }
+ { 4/3 * tand( 0.25 * #3 ) }
+ * #6
+ }
+ }
+ {
+ \fp_to_dim:n
+ {
+ \cs_if_exist_use:cF
+ { c__draw_path_arc_ #3 _fp }
+ { 4/3 * tand( 0.25 * #3 ) }
+ * #7
+ }
+ }
+ }
+ }
+\cs_generate_variant:Nn \__draw_path_arc_auxi:nnnnNnn { fnf , ff }
+\cs_new_protected:Npn \__draw_path_arc_auxii:nnnNnnnn #1#2#3#4#5#6#7#8
+ {
+ \tl_clear:N \l__draw_path_tmp_tl
+ \__draw_point_process:nn
+ { \__draw_path_arc_auxiii:nn }
+ {
+ \__draw_point_transform_noshift:n
+ { \draw_point_polar:nnn { #1 #4 90 } {#7} {#8} }
+ }
+ \__draw_point_process:nn
+ {
+ \__draw_point_process:nn
+ { \__draw_path_arc_auxiv:nnnn }
+ {
+ \draw_point_transform:n
+ { \draw_point_polar:nnn {#1} {#5} {#6} }
+ }
+ }
+ {
+ \draw_point_transform:n
+ { \draw_point_polar:nnn {#2} {#5} {#6} }
+ }
+ \__draw_point_process:nn
+ { \__draw_path_arc_auxv:nn }
+ {
+ \__draw_point_transform_noshift:n
+ { \draw_point_polar:nnn { #2 #4 -90 } {#7} {#8} }
+ }
+ \exp_after:wN \__draw_path_curveto:nnnnnn \l__draw_path_tmp_tl
+ \fp_set:Nn \l__draw_path_arc_delta_fp { abs ( #2 - #3 ) }
+ \fp_set:Nn \l__draw_path_arc_start_fp {#2}
+ }
+\cs_new_protected:Npn \__draw_path_arc_auxiii:nn #1#2
+ {
+ \__draw_path_arc_aux_add:nn
+ { \g__draw_path_lastx_dim + #1 }
+ { \g__draw_path_lasty_dim + #2 }
+ }
+\cs_new_protected:Npn \__draw_path_arc_auxiv:nnnn #1#2#3#4
+ {
+ \__draw_path_arc_aux_add:nn
+ { \g__draw_path_lastx_dim - #1 + #3 }
+ { \g__draw_path_lasty_dim - #2 + #4 }
+ }
+\cs_new_protected:Npn \__draw_path_arc_auxv:nn #1#2
+ {
+ \exp_after:wN \__draw_path_arc_auxvi:nn
+ \l__draw_path_tmp_tl {#1} {#2}
+ }
+\cs_new_protected:Npn \__draw_path_arc_auxvi:nn #1#2#3#4#5#6
+ {
+ \tl_set:Nn \l__draw_path_tmp_tl { {#1} {#2} }
+ \__draw_path_arc_aux_add:nn
+ { #5 + #3 }
+ { #6 + #4 }
+ \tl_put_right:Nn \l__draw_path_tmp_tl { {#3} {#4} }
+ }
+\cs_new_protected:Npn \__draw_path_arc_aux_add:nn #1#2
+ {
+ \tl_put_right:Nx \l__draw_path_tmp_tl
+ { { \fp_to_dim:n {#1} } { \fp_to_dim:n {#2} } }
+ }
+\fp_new:N \l__draw_path_arc_delta_fp
+\fp_new:N \l__draw_path_arc_start_fp
+\fp_const:cn { c__draw_path_arc_90_fp } { 4/3 * (sqrt(2) - 1) }
+\fp_const:cn { c__draw_path_arc_60_fp } { 4/3 * tand(15) }
+\cs_new_protected:Npn \draw_path_arc_axes:nnnn #1#2#3#4
+ {
+ \draw_transform_triangle:nnn { 0cm , 0cm } {#3} {#4}
+ \draw_path_arc:nnn {#1} {#2} { 1pt }
+ }
+\cs_new_protected:Npn \draw_path_ellipse:nnn #1#2#3
+ {
+ \__draw_point_process:nnn
+ {
+ \__draw_point_process:nn
+ { \__draw_path_ellipse:nnnnnn }
+ { \draw_point_transform:n {#1} }
+ }
+ { \__draw_point_transform_noshift:n {#2} }
+ { \__draw_point_transform_noshift:n {#3} }
+ }
+\cs_new_protected:Npn \__draw_path_ellipse:nnnnnn #1#2#3#4#5#6
+ {
+ \use:x
+ {
+ \__draw_path_moveto:nn
+ { \fp_to_dim:n { #1 + #3 } } { \fp_to_dim:n { #2 + #4 } }
+ \__draw_path_ellipse_arci:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6}
+ \__draw_path_ellipse_arcii:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6}
+ \__draw_path_ellipse_arciii:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6}
+ \__draw_path_ellipse_arciv:nnnnnn {#1} {#2} {#3} {#4} {#5} {#6}
+ }
+ \__draw_softpath_closepath:
+ \__draw_path_moveto:nn {#1} {#2}
+ }
+\cs_new:Npn \__draw_path_ellipse_arci:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_path_curveto:nnnnnn
+ { \fp_to_dim:n { #1 + #3 + #5 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #2 + #4 + #6 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #1 + #3 * \c__draw_path_ellipse_fp + #5 } }
+ { \fp_to_dim:n { #2 + #4 * \c__draw_path_ellipse_fp + #6 } }
+ { \fp_to_dim:n { #1 + #5 } }
+ { \fp_to_dim:n { #2 + #6 } }
+ }
+\cs_new:Npn \__draw_path_ellipse_arcii:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_path_curveto:nnnnnn
+ { \fp_to_dim:n { #1 - #3 * \c__draw_path_ellipse_fp + #5 } }
+ { \fp_to_dim:n { #2 - #4 * \c__draw_path_ellipse_fp + #6 } }
+ { \fp_to_dim:n { #1 - #3 + #5 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #2 - #4 + #6 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #1 - #3 } }
+ { \fp_to_dim:n { #2 - #4 } }
+ }
+\cs_new:Npn \__draw_path_ellipse_arciii:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_path_curveto:nnnnnn
+ { \fp_to_dim:n { #1 - #3 - #5 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #2 - #4 - #6 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #1 - #3 * \c__draw_path_ellipse_fp - #5 } }
+ { \fp_to_dim:n { #2 - #4 * \c__draw_path_ellipse_fp - #6 } }
+ { \fp_to_dim:n { #1 - #5 } }
+ { \fp_to_dim:n { #2 - #6 } }
+ }
+\cs_new:Npn \__draw_path_ellipse_arciv:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_path_curveto:nnnnnn
+ { \fp_to_dim:n { #1 + #3 * \c__draw_path_ellipse_fp - #5 } }
+ { \fp_to_dim:n { #2 + #4 * \c__draw_path_ellipse_fp - #6 } }
+ { \fp_to_dim:n { #1 + #3 - #5 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #2 + #4 - #6 * \c__draw_path_ellipse_fp } }
+ { \fp_to_dim:n { #1 + #3 } }
+ { \fp_to_dim:n { #2 + #4 } }
+ }
+\fp_const:Nn \c__draw_path_ellipse_fp { \fp_use:c { c__draw_path_arc_90_fp } }
+\cs_new_protected:Npn \draw_path_circle:nn #1#2
+ { \draw_path_ellipse:nnn {#1} { #2 , 0pt } { 0pt , #2 } }
+\cs_new_protected:Npn \draw_path_rectangle:nn #1#2
+ {
+ \__draw_point_process:nnn
+ {
+ \bool_if:NTF \l__draw_corner_arc_bool
+ { \__draw_path_rectangle_rounded:nnnn }
+ { \__draw_path_rectangle:nnnn }
+ }
+ { \draw_point_transform:n {#1} }
+ {#2}
+ }
+\cs_new_protected:Npn \__draw_path_rectangle:nnnn #1#2#3#4
+ {
+ \__draw_path_update_limits:nn {#1} {#2}
+ \__draw_path_update_limits:nn { #1 + #3 } { #2 + #4 }
+ \__draw_softpath_rectangle:nnnn {#1} {#2} {#3} {#4}
+ \__draw_path_update_last:nn {#1} {#2}
+ }
+\cs_new_protected:Npn \__draw_path_rectangle_rounded:nnnn #1#2#3#4
+ {
+ \draw_path_moveto:n { #1 + #3 , #2 + #4 }
+ \draw_path_lineto:n { #1 , #2 + #4 }
+ \draw_path_lineto:n { #1 , #2 }
+ \draw_path_lineto:n { #1 + #3 , #2 }
+ \draw_path_close:
+ \draw_path_moveto:n { #1 , #2 }
+ }
+\cs_new_protected:Npn \draw_path_rectangle_corners:nn #1#2
+ {
+ \__draw_point_process:nnn
+ { \__draw_path_rectangle_corners:nnnnn {#1} }
+ {#1} {#2}
+ }
+\cs_new_protected:Npn \__draw_path_rectangle_corners:nnnnn #1#2#3#4#5
+ { \draw_path_rectangle:nn {#1} { #4 - #2 , #5 - #3 } }
+\cs_new_protected:Npn \draw_path_grid:nnnn #1#2#3#4
+ {
+ \__draw_point_process:nnn
+ { \__draw_path_grid:nnnnnn {#1} {#2} }
+ {#3} {#4}
+ }
+\cs_new_protected:Npn \__draw_path_grid:nnnnnn #1#2#3#4#5#6
+ {
+ \dim_step_inline:nnnn
+ {#3} { \dim_compare:nNnF {#3} < {#5} { - } \dim_abs:n {#1} } {#5}
+ {
+ \draw_path_moveto:n { ##1 , #4 }
+ \draw_path_lineto:n { ##1 , #6 }
+ }
+ \dim_step_inline:nnnn
+ {#4} { \dim_compare:nNnF {#4} < {#6} { - } \dim_abs:n {#2} } {#6}
+ {
+ \draw_path_moveto:n { #3 , ##1 }
+ \draw_path_lineto:n { #5 , ##1 }
+ }
+ }
+\bool_new:N \l__draw_path_use_clip_bool
+\bool_new:N \l__draw_path_use_fill_bool
+\bool_new:N \l__draw_path_use_stroke_bool
+\bool_new:N \l__draw_path_use_bb_bool
+\bool_new:N \l__draw_path_use_clear_bool
+\cs_new_protected:Npn \draw_path_use:n #1
+ {
+ \tl_if_blank:nF {#1}
+ { \__draw_path_use:n {#1} }
+ }
+\cs_new_protected:Npn \draw_path_use_clear:n #1
+ {
+ \bool_lazy_or:nnTF
+ { \tl_if_blank_p:n {#1} }
+ { \str_if_eq_p:nn {#1} { clear } }
+ {
+ \__draw_softpath_clear:
+ \__draw_path_reset_limits:
+ }
+ { \__draw_path_use:n { #1 , clear } }
+ }
+\cs_new_protected:Npn \__draw_path_use:n #1
+ {
+ \bool_set_false:N \l__draw_path_use_clip_bool
+ \bool_set_false:N \l__draw_path_use_fill_bool
+ \bool_set_false:N \l__draw_path_use_stroke_bool
+ \clist_map_inline:nn {#1}
+ {
+ \cs_if_exist:cTF { l__draw_path_use_ ##1 _ bool }
+ { \bool_set_true:c { l__draw_path_use_ ##1 _ bool } }
+ {
+ \cs_if_exist_use:cF { __draw_path_use_action_ ##1 : }
+ { \ERROR }
+ }
+ }
+ \bool_lazy_and:nnT
+ { \l__draw_update_bb_bool }
+ { \l__draw_path_use_stroke_bool }
+ { \__draw_path_use_stroke_bb: }
+ \bool_if:NTF \l__draw_path_use_clear_bool
+ { \__draw_softpath_use_clear: }
+ { \__draw_softpath_use: }
+ \bool_if:NT \l__draw_path_use_clip_bool
+ { \driver_draw_clip: }
+ \bool_lazy_or:nnT
+ { \l__draw_path_use_fill_bool }
+ { \l__draw_path_use_stroke_bool }
+ {
+ \use:c
+ {
+ driver_draw_
+ \bool_if:NT \l__draw_path_use_fill_bool { fill }
+ \bool_if:NT \l__draw_path_use_stroke_bool { stroke }
+ :
+ }
+ }
+ }
+\cs_new_protected:Npn \__draw_path_use_action_draw:
+ {
+ \bool_set_true:N \l__draw_path_use_stroke_bool
+ }
+\cs_new_protected:Npn \__draw_path_use_stroke_bb:
+ {
+ \__draw_path_use_stroke_bb_aux:NnN x { max } +
+ \__draw_path_use_stroke_bb_aux:NnN y { max } +
+ \__draw_path_use_stroke_bb_aux:NnN x { min } -
+ \__draw_path_use_stroke_bb_aux:NnN y { min } -
+ }
+\cs_new_protected:Npn \__draw_path_use_stroke_bb_aux:NnN #1#2#3
+ {
+ \dim_compare:nNnF { \dim_use:c { g__draw_ #1#2 _dim } } = { #3 -\c_max_dim }
+ {
+ \dim_gset:cn { g__draw_ #1#2 _dim }
+ {
+ \use:c { dim_ #2 :nn }
+ { \dim_use:c { g__draw_ #1#2 _dim } }
+ {
+ \dim_use:c { g__draw_path_ #1#2 _dim }
+ #3 0.5 \g__draw_linewidth_dim
+ }
+ }
+ }
+ }
+%% File: l3draw-points.dtx Copyright(C) 2018 The LaTeX3 Project
+\cs_new:Npn \__draw_point_process:nn #1#2
+ {
+ \__draw_point_process_auxi:fn
+ { \__draw_point_to_dim:n {#2} }
+ {#1}
+ }
+\cs_new:Npn \__draw_point_process_auxi:nn #1#2
+ { \__draw_point_process_auxii:nw {#2} #1 \q_stop }
+\cs_generate_variant:Nn \__draw_point_process_auxi:nn { f }
+\cs_new:Npn \__draw_point_process_auxii:nw #1 #2 , #3 \q_stop
+ { #1 {#2} {#3} }
+\cs_new:Npn \__draw_point_process:nnn #1#2#3
+ {
+ \__draw_point_process_auxiii:ffn
+ { \__draw_point_to_dim:n {#2} }
+ { \__draw_point_to_dim:n {#3} }
+ {#1}
+ }
+\cs_new:Npn \__draw_point_process_auxiii:nnn #1#2#3
+ { \__draw_point_process_auxiv:nw {#3} #1 \q_mark #2 \q_stop }
+\cs_generate_variant:Nn \__draw_point_process_auxiii:nnn { ff }
+\cs_new:Npn \__draw_point_process_auxiv:nw #1 #2 , #3 \q_mark #4 , #5 \q_stop
+ { #1 {#2} {#3} {#4} {#5} }
+\cs_new:Npn \__draw_point_to_dim:n #1
+ { \__draw_point_to_dim_aux:f { \fp_eval:n {#1} } }
+\cs_new:Npn \__draw_point_to_dim_aux:n #1
+ { \__draw_point_to_dim_aux:w #1 }
+\cs_generate_variant:Nn \__draw_point_to_dim_aux:n { f }
+\cs_new:Npn \__draw_point_to_dim_aux:w ( #1 , ~ #2 ) { #1pt , #2pt }
+\cs_new:Npn \draw_point:nn #1#2
+ { \__draw_point_to_dim:n { #1 , #2 } }
+\cs_new:Npn \draw_point_polar:nn #1#2
+ { \draw_point_polar:nnn {#1} {#2} {#2} }
+\cs_new:Npn \draw_point_polar:nnn #1#2#3
+ { \__draw_draw_polar:fnn { \fp_eval:n {#1} } {#2} {#3} }
+\cs_new:Npn \__draw_draw_polar:nnn #1#2#3
+ { \__draw_point_to_dim:n { cosd(#1) * (#2) , sind(#1) * (#3) } }
+\cs_generate_variant:Nn \__draw_draw_polar:nnn { f }
+\cs_new:Npn \draw_point_add:nn #1#2
+ { \__draw_point_to_dim:n { (#1) + (#2) } }
+\cs_new:Npn \draw_point_diff:nn #1#2
+ { \__draw_point_to_dim:n { (#2) - (#1) } }
+\cs_new:Npn \draw_point_scale:nn #1#2
+ { \__draw_point_to_dim:n { #1 * (#2) } }
+\cs_new:Npn \draw_point_unit_vector:n #1
+ { \__draw_point_process:nn { \__draw_point_unit_vector:nn } {#1} }
+\cs_new:Npn \__draw_point_unit_vector:nn #1#2
+ {
+ \__draw_point_to_dim:n
+ { ( #1 , #2 ) / (sqrt(#1 * #1 + #2 * #2)) }
+ }
+\cs_new:Npn \draw_point_intersect_lines:nnnn #1#2#3#4
+ {
+ \__draw_point_process:nnn
+ {
+ \__draw_point_process:nnn
+ { \__draw_point_intersect_lines:nnnnnnnn } {#3} {#4}
+ }
+ {#1} {#2}
+ }
+\cs_new:Npn \__draw_point_intersect_lines:nnnnnnnn #1#2#3#4#5#6#7#8
+ {
+ \__draw_point_intersect_lines_aux:ffffff
+ { \fp_eval:n { #1 * #4 - #2 * #3 } }
+ { \fp_eval:n { #5 * #8 - #6 * #7 } }
+ { \fp_eval:n { #1 - #3 } }
+ { \fp_eval:n { #5 - #7 } }
+ { \fp_eval:n { #2 - #4 } }
+ { \fp_eval:n { #6 - #8 } }
+ }
+\cs_new:Npn \__draw_point_intersect_lines_aux:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_point_to_dim:n
+ {
+ ( #2 * #3 - #1 * #4 , #2 * #5 - #1 * #6 )
+ / ( #4 * #5 - #6 * #3 )
+ }
+ }
+\cs_generate_variant:Nn \__draw_point_intersect_lines_aux:nnnnnn { ffffff }
+\cs_new:Npn \draw_point_intersect_circles:nnnnn #1#2#3#4#5
+ {
+ \__draw_point_process:nnn
+ { \__draw_point_intersect_circles_auxi:nnnnnnn {#2} {#4} {#5} }
+ {#1} {#3}
+ }
+\cs_new:Npn \__draw_point_intersect_circles_auxi:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \__draw_point_intersect_circles_auxii:ffnnnnn
+ { \fp_eval:n {#1} } { \fp_eval:n {#2} } {#4} {#5} {#6} {#7} {#3}
+ }
+\cs_new:Npn \__draw_point_intersect_circles_auxii:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \__draw_point_intersect_circles_auxiii:ffnnnnn
+ { \fp_eval:n { #5 - #3 } }
+ { \fp_eval:n { #6 - #4 } }
+ {#1} {#2} {#3} {#4} {#7}
+ }
+\cs_generate_variant:Nn \__draw_point_intersect_circles_auxii:nnnnnnn { ff }
+\cs_new:Npn \__draw_point_intersect_circles_auxiii:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \__draw_point_intersect_circles_auxiv:fnnnnnnn
+ { \fp_eval:n { sqrt( #1 * #1 + #2 * #2 ) } }
+ {#1} {#2} {#3} {#4} {#5} {#6} {#7}
+ }
+\cs_generate_variant:Nn \__draw_point_intersect_circles_auxiii:nnnnnnn { ff }
+\cs_new:Npn \__draw_point_intersect_circles_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
+ {
+ \__draw_point_intersect_circles_auxv:ffnnnnnnn
+ { \fp_eval:n { 1 / #1 } }
+ { \fp_eval:n { #4 * #4 } }
+ {#1} {#2} {#3} {#5} {#6} {#7} {#8}
+ }
+\cs_generate_variant:Nn \__draw_point_intersect_circles_auxiv:nnnnnnnn { f }
+\cs_new:Npn \__draw_point_intersect_circles_auxv:nnnnnnnnn #1#2#3#4#5#6#7#8#9
+ {
+ \__draw_point_intersect_circles_auxvi:fnnnnnnn
+ { \fp_eval:n { 0.5 * #1 * ( #2 + #3 * #3 - #6 * #6 ) } }
+ {#1} {#2} {#4} {#5} {#7} {#8} {#9}
+ }
+\cs_generate_variant:Nn \__draw_point_intersect_circles_auxv:nnnnnnnnn { ff }
+\cs_new:Npn \__draw_point_intersect_circles_auxvi:nnnnnnnn #1#2#3#4#5#6#7#8
+ {
+ \__draw_point_intersect_circles_auxvii:fffnnnn
+ { \fp_eval:n { #1 * #2 } }
+ { \int_if_odd:nTF {#8} { 1 } { -1 } }
+ { \fp_eval:n { sqrt ( #3 - #1 * #1 ) * #2 } }
+ {#4} {#5} {#6} {#7}
+ }
+\cs_generate_variant:Nn \__draw_point_intersect_circles_auxvi:nnnnnnnn { f }
+\cs_new:Npn \__draw_point_intersect_circles_auxvii:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \__draw_point_to_dim:n
+ { #6 + #4 * #1 + #2 * #3 * #5 , #7 + #5 * #1 + -1 * #2 * #3 * #4 }
+ }
+\cs_generate_variant:Nn \__draw_point_intersect_circles_auxvii:nnnnnnn { fff }
+\cs_new:Npn \draw_point_interpolate_line:nnn #1#2#3
+ {
+ \__draw_point_process:nnn
+ { \__draw_point_interpolate_line_aux:fnnnn { \fp_eval:n {#1} } }
+ {#2} {#3}
+ }
+\cs_new:Npn \__draw_point_interpolate_line_aux:nnnnn #1#2#3#4#5
+ {
+ \__draw_point_interpolate_line_aux:fnnnnn { \fp_eval:n { 1 - #1 } }
+ {#1} {#2} {#3} {#4} {#5}
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_line_aux:nnnnn { f }
+\cs_new:Npn \__draw_point_interpolate_line_aux:nnnnnn #1#2#3#4#5#6
+ { \__draw_point_to_dim:n { #2 * #3 + #1 * #5 , #2 * #4 + #1 * #6 } }
+\cs_generate_variant:Nn \__draw_point_interpolate_line_aux:nnnnnn { f }
+\cs_new:Npn \draw_point_interpolate_distance:nnn #1#2#3
+ {
+ \__draw_point_process:nnn
+ { \__draw_point_interpolate_distance:nnnnn {#1} }
+ {#2} {#3}
+ }
+\cs_new:Npn \__draw_point_interpolate_distance:nnnnn #1#2#3#4#5
+ {
+ \__draw_point_interpolate_distance_aux:nnnnnnn
+ { \fp_eval:n { #4 - #2 } }
+ { \fp_eval:n { #5 - #3 } }
+ {#2} {#3} {#4} {#5} {#1}
+ }
+\cs_new:Npn \__draw_point_interpolate_distance_aux:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \__draw_point_interpolate_distance_aux:fnnnn
+ { \fp_eval:n { (#7) / (sqrt ( #1 * #1 + #2 * #2 )) } }
+ {#3} {#4} {#5} {#6}
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_distance_aux:nnnnnnn { ff }
+\cs_new:Npn \__draw_point_interpolate_distance_aux:nnnnn #1#2#3#4#5
+ { \__draw_point_to_dim:n { #2 + #1 * #4 , #3 + #1 * #5 } }
+\cs_generate_variant:Nn \__draw_point_interpolate_distance_aux:nnnnn { f }
+\cs_new:Npn \draw_point_interpolate_arcaxes:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_point_process:nnn
+ {
+ \__draw_point_process:nn
+ { \__draw_point_interpolate_arcaxes_auxi:nnnnnnnnn {#1} {#5} {#6} }
+ {#4}
+ }
+ {#2} {#3}
+ }
+\cs_new:Npn \__draw_point_interpolate_arcaxes_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
+ {
+ \__draw_point_interpolate_arcaxes_auxii:fnnnnnnnn
+ { \fp_eval:n {#1} } {#2} {#3} {#6} {#7} {#8} {#9} {#4} {#5}
+ }
+\cs_new:Npn \__draw_point_interpolate_arcaxes_auxii:nnnnnnnnn #1#2#3#4#5#6#7#8#9
+ {
+ \__draw_point_interpolate_arcaxes_auxiii:fnnnnnn
+ { \fp_eval:n { #1 * (#3) + ( 1 - #1 ) * (#2) } }
+ {#4} {#5} {#6} {#7} {#8} {#9}
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_arcaxes_auxii:nnnnnnnnn { f }
+\cs_new:Npn \__draw_point_interpolate_arcaxes_auxiii:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \__draw_point_interpolate_arcaxes_auxiv:ffnnnnnn
+ { \fp_eval:n { cosd (#1) } }
+ { \fp_eval:n { sind (#1) } }
+ {#2} {#3} {#4} {#5} {#6} {#7}
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_arcaxes_auxiii:nnnnnnn { f }
+\cs_new:Npn \__draw_point_interpolate_arcaxes_auxiv:nnnnnnnn #1#2#3#4#5#6#7#8
+ {
+ \__draw_point_to_dim:n
+ { #3 + #1 * #5 + #2 * #7 , #4 + #1 * #6 + #2 * #8 }
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_arcaxes_auxiv:nnnnnnnn { ff }
+\cs_new:Npn \draw_point_interpolate_curve:nnnnnn #1#2#3#4#5
+ {
+ \__draw_point_process:nnn
+ {
+ \__draw_point_process:nnn
+ { \__draw_point_interpolate_curve_auxi:nnnnnnnnn {#1} }
+ {#4} {#5}
+ }
+ {#2} {#3}
+ }
+\cs_new:Npn \__draw_point_interpolate_curve_auxi:nnnnnnnnn #1#2#3#4#5#6#7#8#9
+ {
+ \__draw_point_interpolate_curve_auxii:fnnnnnnnn
+ { \fp_eval:n {#1} }
+ {#6} {#7} {#8} {#9} {#2} {#3} {#4} {#5}
+ }
+\cs_new:Npn \__draw_point_interpolate_curve_auxii:nnnnnnnnn
+ #1#2#3#4#5#6#7#8#9
+ {
+ \__draw_point_interpolate_curve_auxiii:fnnnnn
+ { \fp_eval:n { 1 - #1 } }
+ {#1}
+ { {#2} {#3} } { {#4} {#5} } { {#6} {#7} } { {#8} {#9} }
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_curve_auxii:nnnnnnnnn { f }
+\cs_new:Npn \__draw_point_interpolate_curve_auxiii:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_point_interpolate_curve_auxiv:nnnnnn {#1} {#2} #3 #4
+ \__draw_point_interpolate_curve_auxiv:nnnnnn {#1} {#2} #4 #5
+ \__draw_point_interpolate_curve_auxiv:nnnnnn {#1} {#2} #5 #6
+ \prg_do_nothing:
+ \__draw_point_interpolate_curve_auxvi:n { {#1} {#2} }
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_curve_auxiii:nnnnnn { f }
+\cs_new:Npn \__draw_point_interpolate_curve_auxiv:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_point_interpolate_curve_auxv:ffw
+ { \fp_eval:n { #1 * #3 + #2 * #5 } }
+ { \fp_eval:n { #1 * #4 + #2 * #6 } }
+ }
+\cs_new:Npn \__draw_point_interpolate_curve_auxv:nnw
+ #1#2#3 \prg_do_nothing: #4#5
+ {
+ #3
+ \prg_do_nothing:
+ #4 { #5 {#1} {#2} }
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_curve_auxv:nnw { ff }
+\cs_new:Npn \__draw_point_interpolate_curve_auxvi:n #1
+ { \__draw_point_interpolate_curve_auxvii:nnnnnnnn #1 }
+\cs_new:Npn \__draw_point_interpolate_curve_auxvii:nnnnnnnn #1#2#3#4#5#6#7#8
+ {
+ \__draw_point_interpolate_curve_auxviii:ffffnn
+ { \fp_eval:n { #1 * #5 + #2 * #3 } }
+ { \fp_eval:n { #1 * #6 + #2 * #4 } }
+ { \fp_eval:n { #1 * #7 + #2 * #5 } }
+ { \fp_eval:n { #1 * #8 + #2 * #6 } }
+ {#1} {#2}
+ }
+\cs_new:Npn \__draw_point_interpolate_curve_auxviii:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_point_to_dim:n
+ { #5 * #3 + #6 * #1 , #5 * #4 + #6 * #2 }
+ }
+\cs_generate_variant:Nn \__draw_point_interpolate_curve_auxviii:nnnnnn { ffff }
+\dim_new:N \l__draw_xvec_x_dim
+\dim_new:N \l__draw_xvec_y_dim
+\dim_new:N \l__draw_yvec_x_dim
+\dim_new:N \l__draw_yvec_y_dim
+\dim_new:N \l__draw_zvec_x_dim
+\dim_new:N \l__draw_zvec_y_dim
+\cs_new_protected:Npn \draw_xvec:n #1
+ { \__draw_vec:nn { x } {#1} }
+\cs_new_protected:Npn \draw_yvec:n #1
+ { \__draw_vec:nn { y } {#1} }
+\cs_new_protected:Npn \draw_zvec:n #1
+ { \__draw_vec:nn { z } {#1} }
+\cs_new_protected:Npn \__draw_vec:nn #1#2
+ {
+ \__draw_point_process:nn { \__draw_vec:nnn {#1} } {#2}
+ }
+\cs_new_protected:Npn \__draw_vec:nnn #1#2#3
+ {
+ \dim_set:cn { l__draw_ #1 vec_x_dim } {#2}
+ \dim_set:cn { l__draw_ #1 vec_y_dim } {#3}
+ }
+\draw_xvec:n { 1cm , 0cm }
+\draw_yvec:n { 0cm , 1cm }
+\draw_zvec:n { -0.385cm , -0.385cm }
+\cs_new:Npn \draw_point_vec:nn #1#2
+ { \__draw_point_vec:ff { \fp_eval:n {#1} } { \fp_eval:n {#2} } }
+\cs_new:Npn \__draw_point_vec:nn #1#2
+ {
+ \__draw_point_to_dim:n
+ {
+ #1 * \l__draw_xvec_x_dim + #2 * \l__draw_yvec_x_dim ,
+ #1 * \l__draw_xvec_y_dim + #2 * \l__draw_yvec_y_dim
+ }
+ }
+\cs_generate_variant:Nn \__draw_point_vec:nn { ff }
+\cs_new:Npn \draw_point_vec:nnn #1#2#3
+ {
+ \__draw_point_vec:fff
+ { \fp_eval:n {#1} } { \fp_eval:n {#2} } { \fp_eval:n {#3} }
+ }
+\cs_new:Npn \__draw_point_vec:nnn #1#2#3
+ {
+ \__draw_point_to_dim:n
+ {
+ #1 * \l__draw_xvec_x_dim
+ + #2 * \l__draw_yvec_x_dim
+ + #3 * \l__draw_zvec_x_dim
+ ,
+ #1 * \l__draw_xvec_y_dim
+ + #2 * \l__draw_yvec_y_dim
+ + #3 * \l__draw_zvec_y_dim
+ }
+ }
+\cs_generate_variant:Nn \__draw_point_vec:nnn { fff }
+\cs_new:Npn \draw_point_vec_polar:nn #1#2
+ { \draw_point_vec_polar:nnn {#1} {#2} {#2} }
+\cs_new:Npn \draw_point_vec_polar:nnn #1#2#3
+ { \__draw_draw_vec_polar:fnn { \fp_eval:n {#1} } {#2} {#3} }
+\cs_new:Npn \__draw_draw_vec_polar:nnn #1#2#3
+ {
+ \__draw_point_to_dim:n
+ {
+ cosd(#1) * (#2) * \l__draw_xvec_x_dim ,
+ sind(#1) * (#3) * \l__draw_yvec_y_dim
+ }
+ }
+\cs_generate_variant:Nn \__draw_draw_vec_polar:nnn { f }
+\cs_new:Npn \draw_point_transform:n #1
+ {
+ \__draw_point_process:nn
+ { \__draw_point_transform:nn } {#1}
+ }
+\cs_new:Npn \__draw_point_transform:nn #1#2
+ {
+ \bool_if:NTF \l__draw_transformcm_active_bool
+ {
+ \__draw_point_to_dim:n
+ {
+ (
+ \l__draw_transformcm_aa_fp * #1
+ + \l__draw_transformcm_ba_fp * #2
+ + \l__draw_transformcm_xshift_dim
+ )
+ ,
+ (
+ \l__draw_transformcm_ab_fp * #1
+ + \l__draw_transformcm_bb_fp * #2
+ + \l__draw_transformcm_yshift_dim
+ )
+ }
+ }
+ {
+ \__draw_point_to_dim:n
+ {
+ (#1, #2)
+ + ( \l__draw_transformcm_xshift_dim ,
+ \l__draw_transformcm_yshift_dim )
+ }
+ }
+ }
+\cs_new:Npn \__draw_point_transform_noshift:n #1
+ {
+ \__draw_point_process:nn
+ { \__draw_point_transform_noshift:nn } {#1}
+ }
+\cs_new:Npn \__draw_point_transform_noshift:nn #1#2
+ {
+ \bool_if:NTF \l__draw_transformcm_active_bool
+ {
+ \__draw_point_to_dim:n
+ {
+ (
+ \l__draw_transformcm_aa_fp * #1
+ + \l__draw_transformcm_ba_fp * #2
+ )
+ ,
+ (
+ \l__draw_transformcm_ab_fp * #1
+ + \l__draw_transformcm_bb_fp * #2
+ )
+ }
+ }
+ { \__draw_point_to_dim:n { (#1, #2) } }
+ }
+%% File: l3draw-scopes.dtx Copyright(C) 2018 The LaTeX3 Project
+\dim_new:N \g__draw_xmax_dim
+\dim_new:N \g__draw_xmin_dim
+\dim_new:N \g__draw_ymax_dim
+\dim_new:N \g__draw_ymin_dim
+\bool_new:N \l__draw_update_bb_bool
+\box_new:N \l__draw_main_box
+\cs_new_protected:Npn \draw_begin:
+ {
+ \vbox_set:Nw \l__draw_main_box
+ \driver_draw_begin:
+ \dim_gset:Nn \g__draw_xmax_dim { -\c_max_dim }
+ \dim_gset:Nn \g__draw_xmin_dim { \c_max_dim }
+ \dim_gset:Nn \g__draw_ymax_dim { -\c_max_dim }
+ \dim_gset:Nn \g__draw_ymin_dim { \c_max_dim }
+ \bool_set_true:N \l__draw_update_bb_bool
+ \draw_transform_reset:
+ \draw_linewidth:n { \l_draw_default_linewidth_dim }
+ }
+\cs_new_protected:Npn \draw_end:
+ {
+ \driver_draw_end:
+ \vbox_set_end:
+ \hbox_set:Nn \l__draw_main_box
+ {
+ \skip_horizontal:n { -\g__draw_xmin_dim }
+ \box_move_down:nn { \g__draw_ymin_dim }
+ { \box_use_drop:N \l__draw_main_box }
+ }
+ \box_set_ht:Nn \l__draw_main_box
+ { \g__draw_ymax_dim - \g__draw_ymin_dim }
+ \box_set_dp:Nn \l__draw_main_box { 0pt }
+ \box_set_wd:Nn \l__draw_main_box
+ { \g__draw_xmax_dim - \g__draw_xmin_dim }
+ \mode_leave_vertical:
+ \box_use_drop:N \l__draw_main_box
+ }
+%% File: l3draw-softpath.dtx Copyright(C) 2018 The LaTeX3 Project
+\tl_new:N \g__draw_softpath_main_tl
+\tl_new:N \g__draw_softpath_buffer_a_tl
+\tl_new:N \g__draw_softpath_buffer_b_tl
+\int_new:N \g__draw_softpath_buffer_a_int
+\int_new:N \g__draw_softpath_buffer_b_int
+\cs_new_protected:Npn \__draw_softpath_add:n #1
+ {
+ \int_compare:nNnTF \g__draw_softpath_buffer_a_int < { 40 }
+ {
+ \int_gincr:N \g__draw_softpath_buffer_a_int
+ \tl_gput_right:Nn \g__draw_softpath_buffer_a_tl {#1}
+ }
+ {
+ \int_compare:nNnTF \g__draw_softpath_buffer_b_int < { 40 }
+ {
+ \int_gincr:N \g__draw_softpath_buffer_b_int
+ \tl_gset:Nx \g__draw_softpath_buffer_b_tl
+ {
+ \exp_not:V \g__draw_softpath_buffer_b_tl
+ \exp_not:V \g__draw_softpath_buffer_a_tl
+ \exp_not:n {#1}
+ }
+ \int_gzero:N \g__draw_softpath_buffer_a_int
+ \tl_gclear:N \g__draw_softpath_buffer_a_tl
+ }
+ { \__draw_softpath_concat:n {#1} }
+ }
+ }
+\cs_generate_variant:Nn \__draw_softpath_add:n { x }
+\cs_new_protected:Npn \__draw_softpath_concat:n #1
+ {
+ \tl_gset:Nx \g__draw_softpath_main_tl
+ {
+ \exp_not:V \g__draw_softpath_main_tl
+ \exp_not:V \g__draw_softpath_buffer_b_tl
+ \exp_not:V \g__draw_softpath_buffer_a_tl
+ \exp_not:n {#1}
+ }
+ \__draw_softpath_reset_buffers:
+ }
+\cs_new_protected:Npn \__draw_softpath_reset_buffers:
+ {
+ \int_gzero:N \g__draw_softpath_buffer_a_int
+ \tl_gclear:N \g__draw_softpath_buffer_a_tl
+ \int_gzero:N \g__draw_softpath_buffer_b_int
+ \tl_gclear:N \g__draw_softpath_buffer_b_tl
+ }
+\cs_new_protected:Npn \__draw_softpath_get:N #1
+ {
+ \__draw_softpath_concat:n { }
+ \tl_set_eq:NN #1 \g__draw_softpath_main_tl
+ }
+\cs_new_protected:Npn \__draw_softpath_set_eq:N #1
+ {
+ \tl_gset_eq:NN \g__draw_softpath_main_tl #1
+ \__draw_softpath_reset_buffers:
+ }
+\cs_new_protected:Npn \__draw_softpath_use:
+ {
+ \g__draw_softpath_main_tl
+ \g__draw_softpath_buffer_b_tl
+ \g__draw_softpath_buffer_a_tl
+ }
+\cs_new_protected:Npn \__draw_softpath_clear:
+ {
+ \tl_gclear:N \g__draw_softpath_main_tl
+ \tl_gclear:N \g__draw_softpath_buffer_a_tl
+ \tl_gclear:N \g__draw_softpath_buffer_b_tl
+ }
+\cs_new_protected:Npn \__draw_softpath_use_clear:
+ {
+ \__draw_softpath_use:
+ \__draw_softpath_clear:
+ }
+\dim_new:N \g__draw_softpath_lastx_dim
+\dim_new:N \g__draw_softpath_lasty_dim
+\bool_new:N \g__draw_softpath_move_bool
+\bool_gset_true:N \g__draw_softpath_move_bool
+\cs_new_protected:Npn \__draw_softpath_closepath:
+ {
+ \__draw_softpath_add:x
+ {
+ \__draw_softpath_close_op:nn
+ { \dim_use:N \g__draw_softpath_lastx_dim }
+ { \dim_use:N \g__draw_softpath_lasty_dim }
+ }
+ }
+\cs_new_protected:Npn \__draw_softpath_curveto:nnnnnn #1#2#3#4#5#6
+ {
+ \__draw_softpath_add:n
+ {
+ \__draw_softpath_curveto_opi:nn {#1} {#2}
+ \__draw_softpath_curveto_opii:nn {#3} {#4}
+ \__draw_softpath_curveto_opiii:nn {#5} {#6}
+ }
+ }
+\cs_new_protected:Npn \__draw_softpath_lineto:nn #1#2
+ {
+ \__draw_softpath_add:n
+ { \__draw_softpath_lineto_op:nn {#1} {#2} }
+ }
+\cs_new_protected:Npn \__draw_softpath_moveto:nn #1#2
+ {
+ \__draw_softpath_add:n
+ { \__draw_softpath_moveto_op:nn {#1} {#2} }
+ \bool_if:NT \g__draw_softpath_move_bool
+ {
+ \dim_gset:Nn \g__draw_softpath_lastx_dim {#1}
+ \dim_gset:Nn \g__draw_softpath_lasty_dim {#2}
+ }
+ }
+\cs_new_protected:Npn \__draw_softpath_rectangle:nnnn #1#2#3#4
+ {
+ \__draw_softpath_add:n
+ {
+ \__draw_softpath_rectangle_opi:nn {#1} {#2}
+ \__draw_softpath_rectangle_opii:nn {#3} {#4}
+ }
+ }
+\cs_new_protected:Npn \__draw_softpath_roundpoint:nn #1#2
+ {
+ \__draw_softpath_add:n
+ { \__draw_softpath_roundpoint_op:nn {#1} {#2} }
+ }
+\cs_generate_variant:Nn \__draw_softpath_roundpoint:nn { VV }
+\cs_new_protected:Npn \__draw_softpath_close_op:nn #1#2
+ { \driver_draw_closepath: }
+\cs_new_protected:Npn \__draw_softpath_curveto_opi:nn #1#2
+ { \__draw_softpath_curveto_opi:nnNnnNnn {#1} {#2} }
+\cs_new_protected:Npn \__draw_softpath_curveto_opi:nnNnnNnn #1#2#3#4#5#6#7#8
+ { \driver_draw_curveto:nnnnnn {#1} {#2} {#4} {#5} {#7} {#8} }
+\cs_new_protected:Npn \__draw_softpath_curveto_opii:nn #1#2 { }
+\cs_new_protected:Npn \__draw_softpath_curveto_opiii:nn #1#2 { }
+\cs_new_protected:Npn \__draw_softpath_lineto_op:nn #1#2
+ { \driver_draw_lineto:nn {#1} {#2} }
+\cs_new_protected:Npn \__draw_softpath_moveto_op:nn #1#2
+ { \driver_draw_moveto:nn {#1} {#2} }
+\cs_new_protected:Npn \__draw_softpath_roundpoint_op:nn #1#2 { }
+\cs_new_protected:Npn \__draw_softpath_rectangle_opi:nn #1#2
+ { \__draw_softpath_rectangle_opi:nnNnn {#1} {#2} }
+\cs_new_protected:Npn \__draw_softpath_rectangle_opi:nnNnn #1#2#3#4#5
+ { \driver_draw_rectangle:nnnn {#1} {#2} {#4} {#5} }
+ \cs_new_protected:Npn \__draw_softpath_rectangle_opii:nn #1#2 { }
+%% File: l3draw-state.dtx Copyright(C) 2018 The LaTeX3 Project
+\dim_new:N \g__draw_linewidth_dim
+\dim_new:N \g__draw_inner_linewidth_dim
+\dim_new:N \l_draw_default_linewidth_dim
+\dim_set:Nn \l_draw_default_linewidth_dim { 0.4pt }
+\cs_new_protected:Npn \draw_linewidth:n #1
+ {
+ \dim_gset:Nn \g__draw_linewidth_dim { \fp_to_dim:n {#1} }
+ \driver_draw_linewidth:n \g__draw_linewidth_dim
+ }
+\cs_new_protected:Npn \draw_inner_linewidth:n #1
+ { \dim_gset:Nn \g__draw_inner_linewidth_dim { \fp_to_dim:n {#1} } }
+\cs_new_protected:Npn \draw_miterlimit:n #1
+ { \driver_draw_miterlimit:n { \fp_to_dim:n {#1} } }
+\cs_new_protected:Npn \draw_cap_butt: { \driver_draw_cap_butt: }
+\cs_new_protected:Npn \draw_cap_rectangle: { \driver_draw_cap_rectangle: }
+\cs_new_protected:Npn \draw_cap_round: { \driver_draw_cap_round: }
+\cs_new_protected:Npn \draw_evenodd_rule: { \driver_draw_evenodd_rule: }
+\cs_new_protected:Npn \draw_nonzero_rule: { \driver_draw_nonzero_rule: }
+\cs_new_protected:Npn \draw_join_bevel: { \driver_draw_join_bevel: }
+\cs_new_protected:Npn \draw_join_miter: { \driver_draw_join_miter: }
+\cs_new_protected:Npn \draw_join_round: { \driver_draw_join_round: }
+\tl_new:N \l__draw_color_tmp_tl
+\tl_new:N \g__draw_fill_color_tl
+\tl_new:N \g__draw_stroke_color_tl
+\cs_new_protected:Npn \draw_color:n #1
+ { \__draw_color:nn { } {#1} }
+\cs_new_protected:Npn \draw_color_fill:n #1
+ { \__draw_color:nn { fill } {#1} }
+\cs_new_protected:Npn \draw_color_stroke:n #1
+ { \__draw_color:nn { stroke } {#1} }
+\cs_new_protected:Npn \__draw_color:nn #1#2
+ {
+ \color_parse:nN {#2} \l__draw_color_tmp_tl
+ \tl_if_blank:nTF {#1}
+ {
+ \tl_gset_eq:NN \g__draw_fill_color_tl \l__draw_color_tmp_tl
+ \tl_gset_eq:NN \g__draw_stroke_color_tl \l__draw_color_tmp_tl
+ \__draw_color_aux:Vn \l__draw_color_tmp_tl { color }
+ }
+ {
+ \tl_gset_eq:cN { g__draw_ #1 _color_tl } \l__draw_color_tmp_tl
+ \__draw_color_aux:Vn \l__draw_color_tmp_tl { #1 }
+ }
+ }
+\cs_new_protected:Npn \__draw_color_aux:nn #1#2
+ { \__draw_color:nw {#2} #1 \q_stop }
+\cs_generate_variant:Nn \__draw_color_aux:nn { V }
+\cs_new_protected:Npn \__draw_color:nw #1#2 ~ #3 \q_stop
+ { \use:c { __draw_color_ #2 :nw } {#1} #3 \q_stop }
+\cs_new_protected:Npn \__draw_color_cmyk:nw #1#2 ~ #3 ~ #4 ~ #5 \q_stop
+ { \use:c { driver_draw_ #1 _cmyk:nnnn } {#2} {#3} {#4} {#5} }
+\cs_new_protected:Npn \__draw_color_gray:nw #1#2 \q_stop
+ { \use:c { driver_draw_ #1 _gray:n } {#2} }
+\cs_new_protected:Npn \__draw_color_rgb:nw #1#2 ~ #3 ~ #4 \q_stop
+ { \use:c { driver_draw_ #1 _rgb:nnn } {#2} {#3} {#4} }
+\cs_new_protected:Npn \__draw_color_spot:nw #1#2 ~ #3 \q_stop
+ { \use:c { driver_draw_ #1 _spot:nn } {#2} {#3} }
+%% File: l3draw-transforms.dtx Copyright(C) 2018 The LaTeX3 Project
+\bool_new:N \l__draw_transformcm_active_bool
+\fp_new:N \l__draw_transformcm_aa_fp
+\fp_new:N \l__draw_transformcm_ab_fp
+\fp_new:N \l__draw_transformcm_ba_fp
+\fp_new:N \l__draw_transformcm_bb_fp
+\dim_new:N \l__draw_transformcm_xshift_dim
+\dim_new:N \l__draw_transformcm_yshift_dim
+\cs_new_protected:Npn \draw_transform_reset:
+ {
+ \fp_set:Nn \l__draw_transformcm_aa_fp { 1}
+ \fp_zero:N \l__draw_transformcm_ab_fp
+ \fp_zero:N \l__draw_transformcm_ba_fp
+ \fp_set:Nn \l__draw_transformcm_bb_fp { 1 }
+ \dim_zero:N \l__draw_transformcm_xshift_dim
+ \dim_zero:N \l__draw_transformcm_yshift_dim
+ }
+\draw_transform_reset:
+\cs_new_protected:Npn \draw_transform:nnnnn #1#2#3#4#5
+ {
+ \__draw_point_process:nn
+ { \__draw_transform:nnnnnnn {#1} {#2} {#3} {#4} }
+ {#5}
+ }
+\cs_new_protected:Npn \__draw_transform:nnnnnnn #1#2#3#4#5#6
+ {
+ \fp_set:Nn \l__draw_transformcm_aa_fp {#1}
+ \fp_set:Nn \l__draw_transformcm_ab_fp {#2}
+ \fp_set:Nn \l__draw_transformcm_ba_fp {#3}
+ \fp_set:Nn \l__draw_transformcm_bb_fp {#4}
+ \dim_set:Nn \l__draw_transformcm_xshift_dim {#5}
+ \dim_set:Nn \l__draw_transformcm_yshift_dim {#6}
+ \bool_lazy_all:nTF
+ {
+ { \fp_compare_p:nNn \l__draw_transformcm_aa_fp = \c_one_fp }
+ { \fp_compare_p:nNn \l__draw_transformcm_ab_fp = \c_zero_fp }
+ { \fp_compare_p:nNn \l__draw_transformcm_ba_fp = \c_zero_fp }
+ { \fp_compare_p:nNn \l__draw_transformcm_bb_fp = \c_one_fp }
+ }
+ { \bool_set_false:N \l__draw_transformcm_active_bool }
+ { \bool_set_true:N \l__draw_transformcm_active_bool }
+ }
+\cs_new_protected:Npn \draw_transform_concat:nnnnn #1#2#3#4#5
+ {
+ \__draw_point_process:nn
+ { \__draw_transform_concat:nnnnnn {#1} {#2} {#3} {#4} }
+ {#5}
+ }
+\cs_new_protected:Npn \__draw_transform_concat:nnnnnn #1#2#3#4#5#6
+ {
+ \use:x
+ {
+ \__draw_transform_concat_aux:nnnnnn
+ { \fp_eval:n {#1} }
+ { \fp_eval:n {#2} }
+ { \fp_eval:n {#3} }
+ { \fp_eval:n {#4} }
+ {#5}
+ {#6}
+ }
+ }
+\cs_new_protected:Npn \__draw_transform_concat_aux:nnnnnn #1#2#3#4#5#6
+ {
+ \use:x
+ {
+ \__draw_transform:nnnnnnn
+ { #1 * \l__draw_transformcm_aa_fp + #2 * \l__draw_transformcm_ba_fp }
+ { #1 * \l__draw_transformcm_ab_fp + #2 * \l__draw_transformcm_bb_fp }
+ { #3 * \l__draw_transformcm_aa_fp + #4 * \l__draw_transformcm_ba_fp }
+ { #3 * \l__draw_transformcm_ab_fp + #4 * \l__draw_transformcm_bb_fp }
+ {
+ \fp_to_dim:n
+ {
+ \l__draw_transformcm_xshift_dim
+ + \l__draw_transformcm_aa_fp * #5
+ + \l__draw_transformcm_ba_fp * #6
+ }
+ }
+ {
+ \fp_to_dim:n
+ {
+ \l__draw_transformcm_yshift_dim
+ + \l__draw_transformcm_ab_fp * #5
+ + \l__draw_transformcm_bb_fp * #6
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \draw_transform_invert:
+ {
+ \bool_if:NT \l__draw_transformcm_active_bool
+ {
+ \__draw_transform_invert:f
+ {
+ \fp_eval:n
+ {
+ 1 /
+ (
+ \l__draw_transformcm_aa_fp * \l__draw_transformcm_bb_fp
+ - \l__draw_transformcm_ab_fp * \l__draw_transformcm_ba_fp
+ )
+ }
+ }
+ }
+ \dim_set:Nn \l__draw_transformcm_xshift_dim
+ {
+ \fp_to_dim:n
+ {
+ -\l__draw_transformcm_xshift_dim * \l__draw_transformcm_aa_fp
+ -\l__draw_transformcm_yshift_dim * \l__draw_transformcm_ba_fp
+ }
+ }
+ \dim_set:Nn \l__draw_transformcm_yshift_dim
+ {
+ \fp_to_dim:n
+ {
+ -\l__draw_transformcm_xshift_dim * \l__draw_transformcm_ab_fp
+ -\l__draw_transformcm_yshift_dim * \l__draw_transformcm_bb_fp
+ }
+ }
+ }
+\cs_new_protected:Npn \__draw_transform_invert:n #1
+ {
+ \fp_set:Nn \l__draw_transformcm_aa_fp
+ { \l__draw_transformcm_bb_fp * #1 }
+ \fp_set:Nn \l__draw_transformcm_ab_fp
+ { -\l__draw_transformcm_ab_fp * #1 }
+ \fp_set:Nn \l__draw_transformcm_ba_fp
+ { -\l__draw_transformcm_ba_fp * #1 }
+ \fp_set:Nn \l__draw_transformcm_bb_fp
+ { \l__draw_transformcm_aa_fp * #1 }
+ }
+\cs_generate_variant:Nn \__draw_transform_invert:n { f }
+\cs_new_protected:Npn \draw_transform_triangle:nnn #1#2#3
+ {
+ \__draw_point_process:nnn
+ {
+ \__draw_point_process:nn
+ { \__draw_tranform_triangle:nnnnnn }
+ {#1}
+ }
+ {#2} {#3}
+ }
+\cs_new_protected:Npn \__draw_tranform_triangle:nnnnnn #1#2#3#4#5#6
+ {
+ \use:x
+ {
+ \__draw_transform:nnnnnnn
+ { #3 - #1 }
+ { #4 - #2 }
+ { #5 - #1 }
+ { #6 - #2 }
+ {#1}
+ {#2}
+ }
+ }
+%%
+%%
+%% End of file `l3draw.sty'.
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
index b1443b74a78..021b453f912 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-convert.sty
@@ -20,7 +20,7 @@
%%
%% File: l3str-convert.dtx Copyright (C) 2013-2017 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-convert}{2017/12/16}{}
+\ProvidesExplPackage{l3str-convert}{2018/02/21}{}
{L3 Experimental string encoding conversions}
\cs_if_exist:NF \use_ii_i:nn
{ \cs_new:Npn \use_ii_i:nn #1#2 { #2 #1 } }
@@ -181,7 +181,7 @@
\cs_new_protected:Npn \__str_if_flag_error:nnx #1
{
\flag_if_raised:nTF {#1}
- { \__msg_kernel_error:nnx { str } }
+ { \__kernel_msg_error:nnx { str } }
{ \use_none:nn }
}
\cs_new_protected:Npn \__str_if_flag_no_error:nnx #1#2#3
@@ -240,7 +240,7 @@
{
\if_meaning:w #1 #5
\tl_if_empty:nF {#3}
- { \__msg_kernel_error:nnx { str } { native-escaping } {#3} }
+ { \__kernel_msg_error:nnx { str } { native-escaping } {#3} }
#1
\else:
#4 #2 #1
@@ -272,7 +272,7 @@
}
{
\tl_clear:N \l__str_internal_tl
- \__msg_kernel_error:nnxx { str } { unknown-#2 } {#4} {#1}
+ \__kernel_msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
}
}
\cs_if_exist:cF { __str_convert_#3_#1: }
@@ -414,7 +414,7 @@
\__str_output_byte:n {#1}
\fi:
}
- \__msg_kernel_new:nnnn { str } { pdfTeX-native-overflow }
+ \__kernel_msg_new:nnnn { str } { pdfTeX-native-overflow }
{ Character~code~too~large~for~pdfTeX. }
{
The~pdfTeX~engine~only~supports~8-bit~characters:~
@@ -541,18 +541,18 @@
\__str_output_byte:n {#1}
\fi:
}
-\__msg_kernel_new:nnn { str } { unknown-esc }
+\__kernel_msg_new:nnn { str } { unknown-esc }
{ Escaping~scheme~'#1'~(filtered:~'#2')~unknown. }
-\__msg_kernel_new:nnn { str } { unknown-enc }
+\__kernel_msg_new:nnn { str } { unknown-enc }
{ Encoding~scheme~'#1'~(filtered:~'#2')~unknown. }
-\__msg_kernel_new:nnnn { str } { native-escaping }
+\__kernel_msg_new:nnnn { str } { native-escaping }
{ The~'native'~encoding~scheme~does~not~support~any~escaping. }
{
Since~native~strings~do~not~consist~in~bytes,~
none~of~the~escaping~methods~make~sense.~
The~specified~escaping,~'#1',~will be ignored.
}
-\__msg_kernel_new:nnn { str } { file-not-found }
+\__kernel_msg_new:nnn { str } { file-not-found }
{ File~'l3str-#1.def'~not~found. }
\bool_lazy_any:nT
{
@@ -560,7 +560,7 @@
\sys_if_engine_xetex_p:
}
{
- \__msg_kernel_new:nnnn { str } { non-byte }
+ \__kernel_msg_new:nnnn { str } { non-byte }
{ String~invalid~in~escaping~'#1':~it~may~only~contain~bytes. }
{
Some~characters~in~the~string~you~asked~to~convert~are~not~
@@ -574,13 +574,13 @@
}
}
}
-\__msg_kernel_new:nnnn { str } { decode-8-bit }
+\__kernel_msg_new:nnnn { str } { decode-8-bit }
{ Invalid~string~in~encoding~'#1'. }
{
LaTeX~came~across~a~byte~which~is~not~defined~to~represent~
any~character~in~the~encoding~'#1'.
}
-\__msg_kernel_new:nnnn { str } { encode-8-bit }
+\__kernel_msg_new:nnnn { str } { encode-8-bit }
{ Unicode~string~cannot~be~converted~to~encoding~'#1'. }
{
The~encoding~'#1'~only~contains~a~subset~of~all~Unicode~characters.~
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
index f180be34a57..5cb922bcdd2 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf16.def
@@ -59,14 +59,14 @@
\flag_clear_new:n { str_missing }
\flag_clear_new:n { str_extra }
\flag_clear_new:n { str_end }
- \__msg_kernel_new:nnnn { str } { utf16-encode }
+ \__kernel_msg_new:nnnn { str } { utf16-encode }
{ Unicode~string~cannot~be~expressed~in~UTF-16:~surrogate. }
{
Surrogate~code~points~(in~the~range~[U+D800,~U+DFFF])~
can~be~expressed~in~the~UTF-8~and~UTF-32~encodings,~
but~not~in~the~UTF-16~encoding.
}
- \__msg_kernel_new:nnnn { str } { utf16-decode }
+ \__kernel_msg_new:nnnn { str } { utf16-decode }
{
Invalid~UTF-16~string: \exp_last_unbraced:Nf \use_none:n
\__str_if_flag_times:nT { str_missing } { ,~missing~trail~surrogate }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
index c1c2c5ca595..7084d5597e5 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf32.def
@@ -56,7 +56,7 @@
}
\flag_clear_new:n { str_overflow }
\flag_clear_new:n { str_end }
- \__msg_kernel_new:nnnn { str } { utf32-decode }
+ \__kernel_msg_new:nnnn { str } { utf32-decode }
{
Invalid~UTF-32~string: \exp_last_unbraced:Nf \use_none:n
\__str_if_flag_times:nT { str_overflow } { ,~code~point~too~large }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
index c3bc0506f64..eaf3d0a6a4b 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-enc-utf8.def
@@ -45,7 +45,7 @@
\flag_clear_new:n { str_extra }
\flag_clear_new:n { str_overlong }
\flag_clear_new:n { str_overflow }
-\__msg_kernel_new:nnnn { str } { utf8-decode }
+\__kernel_msg_new:nnnn { str } { utf8-decode }
{
Invalid~UTF-8~string: \exp_last_unbraced:Nf \use_none:n
\__str_if_flag_times:nT { str_missing } { ,~missing~continuation~byte }
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
index d3ed4b3c947..a6f3e978931 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-hex.def
@@ -59,7 +59,7 @@
\__str_unescape_hex_auxii:N
}
}
-\__msg_kernel_new:nnnn { str } { unescape-hex }
+\__kernel_msg_new:nnnn { str } { unescape-hex }
{ String~invalid~in~escaping~'hex':~only~hexadecimal~digits~allowed. }
{
Some~characters~in~the~string~you~asked~to~convert~are~not~
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
index 150e208bafb..9edf8df871a 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-name.def
@@ -58,7 +58,7 @@
\__str_output_end:
\use_i:nnn #3 ##2##3
}
- \__msg_kernel_new:nnnn { str } { unescape-#2 }
+ \__kernel_msg_new:nnnn { str } { unescape-#2 }
{ String~invalid~in~escaping~'#2'. }
{
LaTeX~came~across~the~escape~character~'#1'~not~followed~by~
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
index 34fc37267e9..e008b1ee5ad 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-string.def
@@ -98,7 +98,7 @@
\if_charcode:w ^^J #2 \else: ^^J \fi:
\__str_unescape_string_newlines:wN #2
}
- \__msg_kernel_new:nnnn { str } { unescape-string }
+ \__kernel_msg_new:nnnn { str } { unescape-string }
{ String~invalid~in~escaping~'string'. }
{
LaTeX~came~across~an~escape~character~'\c_backslash_str'~
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
index 5459b12971b..f27189e72d6 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-esc-url.def
@@ -58,7 +58,7 @@
\__str_output_end:
\use_i:nnn #3 ##2##3
}
- \__msg_kernel_new:nnnn { str } { unescape-#2 }
+ \__kernel_msg_new:nnnn { str } { unescape-#2 }
{ String~invalid~in~escaping~'#2'. }
{
LaTeX~came~across~the~escape~character~'#1'~not~followed~by~
diff --git a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
index e6b39e8706b..6ed2b3f9273 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/l3str/l3str-format.sty
@@ -20,7 +20,7 @@
%%
%% File: l3str-format.dtx Copyright (C) 2012-2017 The LaTeX3 Project
\RequirePackage{expl3}
-\ProvidesExplPackage{l3str-format}{2017/12/16}{}
+\ProvidesExplPackage{l3str-format}{2018/02/21}{}
{L3 Experimental string formatting}
\cs_generate_variant:Nn \use:nn { nf }
\cs_generate_variant:Nn \use:nnn { fnf }
@@ -101,7 +101,7 @@
\cs_new:Npn \__str_format_parse_end:nwn #1 #2 \s__stop \s__stop #3
{
\tl_if_empty:nF {#2}
- { \__msg_kernel_expandable_error:nnn { str } { invalid-format } {#3} }
+ { \__kernel_msg_expandable_error:nnn { str } { invalid-format } {#3} }
#1
}
\cs_new:cpn { __str_format_align_<:nnnN } #1#2#3#4
@@ -168,7 +168,7 @@
{
\token_if_eq_charcode:NNTF #2 =
{
- \__msg_kernel_expandable_error:nnnn
+ \__kernel_msg_expandable_error:nnnn
{ str } { invalid-align-format } {#2} {tl}
\__str_format_put:nw { #1 < }
}
@@ -179,7 +179,7 @@
}
\token_if_eq_charcode:NNF #3 ?
{
- \__msg_kernel_expandable_error:nnnn
+ \__kernel_msg_expandable_error:nnnn
{ str } { invalid-sign-format } {#3} {tl}
}
\__str_format_put:nw { {#4} }
@@ -190,7 +190,7 @@
{
\token_if_eq_charcode:NNF #6 ?
{
- \__msg_kernel_expandable_error:nnnn
+ \__kernel_msg_expandable_error:nnnn
{ str } { invalid-style-format } {#6} {tl}
}
}
@@ -259,7 +259,7 @@
\__str_format_put:nw { {#4} }
\tl_if_empty:nF {#5}
{
- \__msg_kernel_expandable_error:nnnn
+ \__kernel_msg_expandable_error:nnnn
{ str } { invalid-precision-format } {#5} {int}
}
\str_case:nnF {#6}
@@ -271,7 +271,7 @@
{ X } { \__str_format_int:NwnnNNn \int_to_Hex:n }
}
{
- \__msg_kernel_expandable_error:nnnn
+ \__kernel_msg_expandable_error:nnnn
{ str } { invalid-style-format } {#6} { int }
\__str_format_int:NwnnNNn \use:n
}
@@ -324,7 +324,7 @@
{ ? } { \__str_format_fp:wnnnNNw \__str_format_fp_g:wn }
}
{
- \__msg_kernel_expandable_error:nnnn
+ \__kernel_msg_expandable_error:nnnn
{ str } { invalid-style-format } {#6} { fp }
\__str_format_fp:wnnnNNw \__str_format_fp_g:wn
}
@@ -427,15 +427,15 @@
\exp:w \exp_end_continue_f:w \fp_to_scientific:n
}
\cs_new:Npn \__str_format_fp_trim:w #1 e { \__fp_trim_zeros:w #1 ; e }
-\__msg_kernel_new:nnn { str } { invalid-format }
+\__kernel_msg_new:nnn { str } { invalid-format }
{ Invalid~format~'#1'. }
-\__msg_kernel_new:nnn { str } { invalid-align-format }
+\__kernel_msg_new:nnn { str } { invalid-align-format }
{ Invalid~alignment~'#1'~for~type~'#2'. }
-\__msg_kernel_new:nnn { str } { invalid-sign-format }
+\__kernel_msg_new:nnn { str } { invalid-sign-format }
{ Invalid~sign~'#1'~for~type~'#2'. }
-\__msg_kernel_new:nnn { str } { invalid-precision-format }
+\__kernel_msg_new:nnn { str } { invalid-precision-format }
{ Invalid~precision~'#1'~for~type~'#2'. }
-\__msg_kernel_new:nnn { str } { invalid-style-format }
+\__kernel_msg_new:nnn { str } { invalid-style-format }
{ Invalid~style~'#1'~for~type~'#2'. }
%%
%%
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
index 7a4d48d3811..355a3334d29 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xcoffins/xcoffins.sty
@@ -20,7 +20,7 @@
%%
%% File: xcoffins.dtx Copyright(C) 2010-2012,2014,2016,2017 The LaTeX3 Project
\RequirePackage{xparse}
-\ProvidesExplPackage{xcoffins}{2017/12/16}{}
+\ProvidesExplPackage{xcoffins}{2018/02/21}{}
{L3 Experimental design level coffins}
\keys_define:nn { coffin }
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
index 3f2201bcec9..927b2888eab 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/l3galley.sty
@@ -20,8 +20,8 @@
%%
%% File: l3galley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach
%% (C) 2010-2017 The LaTeX3 Project
-\RequirePackage{expl3}[2017/12/16]
-\@ifpackagelater{expl3}{2017/12/16}
+\RequirePackage{expl3}[2018/02/21]
+\@ifpackagelater{expl3}{2018/02/21}
{}
{%
\PackageError{l3galley}{Support package l3kernel too old}
@@ -33,7 +33,7 @@
}%
\endinput
}
-\ProvidesExplPackage{l3galley}{2017/12/16}{}
+\ProvidesExplPackage{l3galley}{2018/02/21}{}
{L3 Experimental galley code}
\int_new:N \l__galley_tmp_int
\seq_new:N \g__galley_tmpa_seq
@@ -705,7 +705,7 @@
\cs_new_protected:Npn \galley_break_line:Nn #1#2
{
\mode_if_vertical:TF
- { \__msg_kernel_error:nn { galley } { no-line-to-end } }
+ { \__kernel_msg_error:nn { galley } { no-line-to-end } }
{
\tex_unskip:D
\bool_if:NF #1
@@ -881,7 +881,7 @@
{ \__int_value:w \etex_widowpenalties:D \__int_eval:n {#1} , }
\cs_new_protected:Npn \galley_interline_penalty:
{ \__int_value:w \etex_interlinepenalties:D \etex_interlinepenalties:D 0 \exp_stop_f: }
-\__msg_kernel_new:nnn { galley } { no-line-to-end }
+\__kernel_msg_new:nnn { galley } { no-line-to-end }
{ There's~no~line~here~to~end. }
\cs_set:Npn \clearpage
{
diff --git a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
index f8a04f871f2..06d3bf6ecb5 100644
--- a/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
+++ b/Master/texmf-dist/tex/latex/l3experimental/xgalley/xgalley.sty
@@ -21,7 +21,7 @@
%% File: xgalley.dtx Copyright (C) 1999-2001, 2004-2009 Frank Mittelbach
%% (C) 2010-2012,2014,2016-2017 The LaTeX3 Project
\RequirePackage{xparse}
-\ProvidesExplPackage{xgalley}{2017/12/16}{}
+\ProvidesExplPackage{xgalley}{2018/02/21}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
\clist_new:N \l__galley_tmpa_clist