summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-07-02 21:03:06 +0000
committerKarl Berry <karl@freefriends.org>2019-07-02 21:03:06 +0000
commit6cd9cb9b90a640486b1e6cf9bf4385e1622dc621 (patch)
tree55b66dec7d3519db5b1b299ba0ae90aa4fe2714d /Master/texmf-dist/tex/latex/l3kernel
parent0eeaf7545f37a529bbc7549c23ec0f2160e509e0 (diff)
l3 (2jul19)
git-svn-id: svn://tug.org/texlive/trunk@51534 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex1422
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex4
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty5
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3doc.cls27
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def635
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def1176
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def487
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def690
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def29
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def75
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def120
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def85
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def60
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def37
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def69
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def86
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def64
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def79
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def123
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def109
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def108
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def96
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def35
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def681
24 files changed, 2564 insertions, 3738 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index dbdc37c17f5..d4f199159cc 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -40,6 +40,7 @@
%% l3fp-random.dtx (with options: `package')
%% l3fparray.dtx (with options: `package')
%% l3sort.dtx (with options: `package')
+%% l3str-convert.dtx (with options: `package')
%% l3tl-analysis.dtx (with options: `package')
%% l3regex.dtx (with options: `package')
%% l3box.dtx (with options: `package')
@@ -64,7 +65,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-05-28}%
+\def\ExplFileDate{2019-07-01}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
@@ -2189,6 +2190,7 @@
\cs_set:Npn \use_ii:nnnn #1#2#3#4 {#2}
\cs_set:Npn \use_iii:nnnn #1#2#3#4 {#3}
\cs_set:Npn \use_iv:nnnn #1#2#3#4 {#4}
+\cs_set:Npn \use_ii_i:nn #1#2 { #2 #1 }
\cs_set:Npn \use_none_delimit_by_q_nil:w #1 \q_nil { }
\cs_set:Npn \use_none_delimit_by_q_stop:w #1 \q_stop { }
\cs_set:Npn \use_none_delimit_by_q_recursion_stop:w #1 \q_recursion_stop { }
@@ -9348,7 +9350,7 @@
}
}
%% File: l3msg.dtx
-\tl_new:N \l__msg_tmp_tl
+\tl_new:N \l__msg_internal_tl
\str_new:N \l__msg_name_str
\str_new:N \l__msg_text_str
\tl_const:Nn \c__msg_text_prefix_tl { msg~text~>~ }
@@ -9435,22 +9437,35 @@
\c_space_tl
\msg_line_number:
}
-\cs_new_protected:Npn \__msg_interrupt:Nnnn #1#2#3#4
+\cs_new_protected:Npn \__msg_interrupt:NnnnN #1#2#3#4#5
{
\str_set:Nx \l__msg_text_str { #1 {#2} }
\str_set:Nx \l__msg_name_str { \msg_module_name:n {#2} }
- \tl_if_empty:nTF {#4}
+ \cs_if_eq:cNTF
+ { \c__msg_more_text_prefix_tl #2 / #3 }
+ \__msg_no_more_text:nnnn
{
- \__msg_interrupt_wrap:nnn {#3}
+ \__msg_interrupt_wrap:nnn
+ { \use:c { \c__msg_text_prefix_tl #2 / #3 } #4 }
{ \c__msg_continue_text_tl }
- { \c__msg_no_info_text_tl }
+ {
+ \c__msg_no_info_text_tl
+ \tl_if_empty:NF #5
+ { \\ \\ #5 }
+ }
}
{
- \__msg_interrupt_wrap:nnn {#3}
+ \__msg_interrupt_wrap:nnn
+ { \use:c { \c__msg_text_prefix_tl #2 / #3 } #4 }
{ \c__msg_help_text_tl }
- {#4}
+ {
+ \use:c { \c__msg_more_text_prefix_tl #2 / #3 } #4
+ \tl_if_empty:NF #5
+ { \\ \\ #5 }
+ }
}
}
+\cs_new:Npn \__msg_no_more_text:nnnn #1#2#3#4 { }
\cs_new_protected:Npn \__msg_interrupt_wrap:nnn #1#2#3
{
\iow_wrap:nnnN { \\ #3 } { } { } \__msg_interrupt_more_text:n
@@ -9468,13 +9483,13 @@
{ ~ }
}
{ } \__msg_interrupt_text:n
- \iow_wrap:nnnN { \l__msg_tmp_tl \\ \\ #2 } { } { }
+ \iow_wrap:nnnN { \l__msg_internal_tl \\ \\ #2 } { } { }
\__msg_interrupt:n
}
\cs_new_protected:Npn \__msg_interrupt_text:n #1
{
\group_end:
- \tl_set:Nn \l__msg_tmp_tl {#1}
+ \tl_set:Nn \l__msg_internal_tl {#1}
}
\cs_new_protected:Npn \__msg_interrupt_more_text:n #1
{ \exp_args:Nx \tex_errhelp:D { #1 \iow_newline: } }
@@ -9600,41 +9615,32 @@
}
\__msg_class_new:nn { fatal }
{
- \__msg_interrupt:Nnnn
- \msg_fatal_text:n
- {#1}
- { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
- { \c__msg_fatal_text_tl }
- \tex_end:D
+ \__msg_interrupt:NnnnN
+ \msg_fatal_text:n {#1} {#2}
+ { {#3} {#4} {#5} {#6} }
+ \c__msg_fatal_text_tl
+ \__msg_fatal_exit:
+ }
+ \cs_new_protected:Npn \__msg_fatal_exit:
+ {
+ \tex_batchmode:D
+ \tex_read:D -1 to \l__msg_internal_tl
}
\__msg_class_new:nn { critical }
{
- \__msg_interrupt:Nnnn
- \msg_critical_text:n
- {#1}
- { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
- { \c__msg_critical_text_tl }
+ \__msg_interrupt:NnnnN
+ \msg_critical_text:n {#1} {#2}
+ { {#3} {#4} {#5} {#6} }
+ \c__msg_critical_text_tl
\tex_endinput:D
}
\__msg_class_new:nn { error }
{
- \__msg_error:cnnnnn
- { \c__msg_more_text_prefix_tl #1 / #2 }
- {#3} {#4} {#5} {#6}
- {
- \__msg_interrupt:Nnnn
- \msg_error_text:n
- {#1}
- { \use:c { \c__msg_text_prefix_tl #1 / #2 } {#3} {#4} {#5} {#6} }
- }
- }
- \cs_new_protected:Npn \__msg_error:cnnnnn #1#2#3#4#5#6
- {
- \cs_if_eq:cNTF {#1} \__msg_no_more_text:nnnn
- { #6 { } }
- { #6 { \use:c {#1} {#2} {#3} {#4} {#5} } }
+ \__msg_interrupt:NnnnN
+ \msg_error_text:n {#1} {#2}
+ { {#3} {#4} {#5} {#6} }
+ \c_empty_tl
}
- \cs_new:Npn \__msg_no_more_text:nnnn #1#2#3#4 { }
\__msg_class_new:nn { warning }
{
\str_set:Nx \l__msg_text_str { \msg_warning_text:n {#1} }
@@ -9710,13 +9716,13 @@
{
\tl_if_empty:nF {#1}
{ \exp_args:No \iow_term:n { \use_none:n #1 } }
- \tl_set:Nn \l__msg_tmp_tl {#2}
+ \tl_set:Nn \l__msg_internal_tl {#2}
\__kernel_iow_with:Nnn \tex_newlinechar:D { 10 }
{
\__kernel_iow_with:Nnn \tex_errorcontextlines:D { -1 }
{
\tex_showtokens:D \exp_after:wN \exp_after:wN \exp_after:wN
- { \exp_after:wN \l__msg_tmp_tl }
+ { \exp_after:wN \l__msg_internal_tl }
}
}
}
@@ -12154,7 +12160,8 @@
{
\__keys_property_find:n {#1}
\cs_if_exist:cTF { \c__keys_props_root_tl \l__keys_property_tl }
- { \__keys_define_code:n {#2} }
+ { \__keys_define_code:n {#2}
+ }
{
\tl_if_empty:NF \l__keys_property_tl
{
@@ -12183,7 +12190,7 @@
{
\tl_if_empty:NF \l__keys_module_tl
{ \l__keys_module_tl / }
- #1
+ \tl_trim_spaces:n {#1}
}
\tl_set:Nn \l__keys_property_tl { . #2 }
}
@@ -12992,7 +12999,28 @@
}
}
\cs_new:Npn \__keys_trim_spaces:n #1
- { \tl_trim_spaces:o { \tl_to_str:n {#1} } }
+ {
+ \exp_after:wN \__keys_trim_spaces_auxi:w \tl_to_str:n {#1}
+ / \q_nil \q_stop
+
+ }
+\cs_new:Npn \__keys_trim_spaces_auxi:w #1 / #2 \q_stop
+ {
+ \quark_if_nil:nTF {#2}
+ { \tl_trim_spaces:n {#1} }
+ { \__keys_trim_spaces_auxii:w #1 / #2 }
+ }
+\cs_new:Npn \__keys_trim_spaces_auxii:w #1 / #2 / \q_nil
+ {
+ \tl_trim_spaces:n {#1}
+ \__keys_trim_spaces_auxiii:w #2 / \q_recursion_tail / \q_recursion_stop
+ }
+\cs_set:Npn \__keys_trim_spaces_auxiii:w #1 /
+ {
+ \quark_if_recursion_tail_stop:n {#1}
+ \tl_trim_spaces:n { / #1 }
+ \__keys_trim_spaces_auxiii:w
+ }
\prg_new_conditional:Npnn \keys_if_exist:nn #1#2 { p , T , F , TF }
{
\cs_if_exist:cTF
@@ -20040,6 +20068,1296 @@
\iow_char:N\\sort_return_swapped: ~multiple~times.~
Exactly~one~of~these~should~be~called.
}
+%% File: l3str-convert.dtx
+\cs_new_protected:Npn \__str_tmp:w { }
+\tl_new:N \l__str_internal_tl
+\int_new:N \l__str_internal_int
+\tl_new:N \g__str_result_tl
+\int_const:Nn \c__str_replacement_char_int { "FFFD }
+\int_const:Nn \c__str_max_byte_int { 255 }
+\prop_new:N \g__str_alias_prop
+\prop_gput:Nnn \g__str_alias_prop { latin1 } { iso88591 }
+\prop_gput:Nnn \g__str_alias_prop { latin2 } { iso88592 }
+\prop_gput:Nnn \g__str_alias_prop { latin3 } { iso88593 }
+\prop_gput:Nnn \g__str_alias_prop { latin4 } { iso88594 }
+\prop_gput:Nnn \g__str_alias_prop { latin5 } { iso88599 }
+\prop_gput:Nnn \g__str_alias_prop { latin6 } { iso885910 }
+\prop_gput:Nnn \g__str_alias_prop { latin7 } { iso885913 }
+\prop_gput:Nnn \g__str_alias_prop { latin8 } { iso885914 }
+\prop_gput:Nnn \g__str_alias_prop { latin9 } { iso885915 }
+\prop_gput:Nnn \g__str_alias_prop { latin10 } { iso885916 }
+\prop_gput:Nnn \g__str_alias_prop { utf16le } { utf16 }
+\prop_gput:Nnn \g__str_alias_prop { utf16be } { utf16 }
+\prop_gput:Nnn \g__str_alias_prop { utf32le } { utf32 }
+\prop_gput:Nnn \g__str_alias_prop { utf32be } { utf32 }
+\prop_gput:Nnn \g__str_alias_prop { hexadecimal } { hex }
+\bool_new:N \g__str_error_bool
+\flag_new:n { str_byte }
+\flag_new:n { str_error }
+\prg_new_conditional:Npnn \__str_if_contains_char:NN #1#2 { T , TF }
+ {
+ \exp_after:wN \__str_if_contains_char_aux:NN \exp_after:wN #2
+ #1 { \prg_break:n { ? \fi: } }
+ \prg_break_point:
+ \prg_return_false:
+ }
+\prg_new_conditional:Npnn \__str_if_contains_char:nN #1#2 { TF }
+ {
+ \__str_if_contains_char_aux:NN #2 #1 { \prg_break:n { ? \fi: } }
+ \prg_break_point:
+ \prg_return_false:
+ }
+\cs_new:Npn \__str_if_contains_char_aux:NN #1#2
+ {
+ \if_charcode:w #1 #2
+ \exp_after:wN \__str_if_contains_char_true:
+ \fi:
+ \__str_if_contains_char_aux:NN #1
+ }
+\cs_new:Npn \__str_if_contains_char_true:
+ { \prg_break:n { \prg_return_true: \use_none:n } }
+\prg_new_conditional:Npnn \__str_octal_use:N #1 { TF }
+ {
+ \if_int_compare:w 1 < '1 \token_to_str:N #1 \exp_stop_f:
+ #1 \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+\prg_new_conditional:Npnn \__str_hexadecimal_use:N #1 { TF }
+ {
+ \if_int_compare:w 1 < "1 \token_to_str:N #1 \exp_stop_f:
+ #1 \prg_return_true:
+ \else:
+ \if_case:w \int_eval:n { \exp_after:wN ` \token_to_str:N #1 - `a }
+ A
+ \or: B
+ \or: C
+ \or: D
+ \or: E
+ \or: F
+ \else:
+ \prg_return_false:
+ \exp_after:wN \use_none:n
+ \fi:
+ \prg_return_true:
+ \fi:
+ }
+\group_begin:
+ \tl_set:Nx \l__str_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
+ \tl_map_inline:Nn \l__str_internal_tl
+ {
+ \tl_map_inline:Nn \l__str_internal_tl
+ {
+ \tl_const:cx { c__str_byte_ \int_eval:n {"#1##1} _tl }
+ { \char_generate:nn { "#1##1 } { 12 } #1 ##1 }
+ }
+ }
+\group_end:
+\tl_const:cn { c__str_byte_-1_tl } { { } \use_none:n { } }
+\cs_new:Npn \__str_output_byte:n #1
+ { \__str_output_byte:w #1 \__str_output_end: }
+\cs_new:Npn \__str_output_byte:w
+ {
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \use_i:nnn
+ \cs:w c__str_byte_ \int_eval:w
+ }
+\cs_new:Npn \__str_output_hexadecimal:n #1
+ {
+ \exp_after:wN \exp_after:wN
+ \exp_after:wN \use_none:n
+ \cs:w c__str_byte_ \int_eval:n {#1} _tl \cs_end:
+ }
+\cs_new:Npn \__str_output_end:
+ { \scan_stop: _tl \cs_end: }
+\cs_new:Npn \__str_output_byte_pair_be:n #1
+ {
+ \exp_args:Nf \__str_output_byte_pair:nnN
+ { \int_div_truncate:nn { #1 } { "100 } } {#1} \use:nn
+ }
+\cs_new:Npn \__str_output_byte_pair_le:n #1
+ {
+ \exp_args:Nf \__str_output_byte_pair:nnN
+ { \int_div_truncate:nn { #1 } { "100 } } {#1} \use_ii_i:nn
+ }
+\cs_new:Npn \__str_output_byte_pair:nnN #1#2#3
+ {
+ #3
+ { \__str_output_byte:n { #1 } }
+ { \__str_output_byte:n { #2 - #1 * "100 } }
+ }
+\cs_new_protected:Npn \__str_convert_gmap:N #1
+ {
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_convert_gmap_loop:NN
+ \exp_after:wN #1
+ \g__str_result_tl { ? \prg_break: }
+ \prg_break_point:
+ }
+ }
+\cs_new:Npn \__str_convert_gmap_loop:NN #1#2
+ {
+ \use_none:n #2
+ #1#2
+ \__str_convert_gmap_loop:NN #1
+ }
+\cs_new_protected:Npn \__str_convert_gmap_internal:N #1
+ {
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_convert_gmap_internal_loop:Nww
+ \exp_after:wN #1
+ \g__str_result_tl \s__tl \q_stop \prg_break: \s__tl
+ \prg_break_point:
+ }
+ }
+\cs_new:Npn \__str_convert_gmap_internal_loop:Nww #1 #2 \s__tl #3 \s__tl
+ {
+ \use_none_delimit_by_q_stop:w #3 \q_stop
+ #1 {#3}
+ \__str_convert_gmap_internal_loop:Nww #1
+ }
+\cs_new_protected:Npn \__str_if_flag_error:nnx #1
+ {
+ \flag_if_raised:nTF {#1}
+ { \__kernel_msg_error:nnx { str } }
+ { \use_none:nn }
+ }
+\cs_new_protected:Npn \__str_if_flag_no_error:nnx #1#2#3
+ { \flag_if_raised:nT {#1} { \bool_gset_true:N \g__str_error_bool } }
+\cs_new:Npn \__str_if_flag_times:nT #1#2
+ { \flag_if_raised:nT {#1} { #2~(x \flag_height:n {#1} ) } }
+\cs_new_protected:Npn \str_set_convert:Nnnn
+ { \__str_convert:nNNnnn { } \tl_set_eq:NN }
+\cs_new_protected:Npn \str_gset_convert:Nnnn
+ { \__str_convert:nNNnnn { } \tl_gset_eq:NN }
+\prg_new_protected_conditional:Npnn
+ \str_set_convert:Nnnn #1#2#3#4 { T , F , TF }
+ {
+ \bool_gset_false:N \g__str_error_bool
+ \__str_convert:nNNnnn
+ { \cs_set_eq:NN \__str_if_flag_error:nnx \__str_if_flag_no_error:nnx }
+ \tl_set_eq:NN #1 {#2} {#3} {#4}
+ \bool_if:NTF \g__str_error_bool \prg_return_false: \prg_return_true:
+ }
+\prg_new_protected_conditional:Npnn
+ \str_gset_convert:Nnnn #1#2#3#4 { T , F , TF }
+ {
+ \bool_gset_false:N \g__str_error_bool
+ \__str_convert:nNNnnn
+ { \cs_set_eq:NN \__str_if_flag_error:nnx \__str_if_flag_no_error:nnx }
+ \tl_gset_eq:NN #1 {#2} {#3} {#4}
+ \bool_if:NTF \g__str_error_bool \prg_return_false: \prg_return_true:
+ }
+\cs_new_protected:Npn \__str_convert:nNNnnn #1#2#3#4#5#6
+ {
+ \group_begin:
+ #1
+ \tl_gset:Nx \g__str_result_tl { \__kernel_str_to_other_fast:n {#4} }
+ \exp_after:wN \__str_convert:wwwnn
+ \tl_to_str:n {#5} /// \q_stop
+ { decode } { unescape }
+ \prg_do_nothing:
+ \__str_convert_decode_:
+ \exp_after:wN \__str_convert:wwwnn
+ \tl_to_str:n {#6} /// \q_stop
+ { encode } { escape }
+ \use_ii_i:nn
+ \__str_convert_encode_:
+ \group_end:
+ #2 #3 \g__str_result_tl
+ }
+\cs_new_protected:Npn \__str_convert:wwwnn
+ #1 / #2 // #3 \q_stop #4#5
+ {
+ \__str_convert:nnn {enc} {#4} {#1}
+ \__str_convert:nnn {esc} {#5} {#2}
+ \exp_args:Ncc \__str_convert:NNnNN
+ { __str_convert_#4_#1: } { __str_convert_#5_#2: } {#2}
+ }
+\cs_new_protected:Npn \__str_convert:NNnNN #1#2#3#4#5
+ {
+ \if_meaning:w #1 #5
+ \tl_if_empty:nF {#3}
+ { \__kernel_msg_error:nnx { str } { native-escaping } {#3} }
+ #1
+ \else:
+ #4 #2 #1
+ \fi:
+ }
+\cs_new_protected:Npn \__str_convert:nnn #1#2#3
+ {
+ \cs_if_exist:cF { __str_convert_#2_#3: }
+ {
+ \exp_args:Nx \__str_convert:nnnn
+ { \__str_convert_lowercase_alphanum:n {#3} }
+ {#1} {#2} {#3}
+ }
+ }
+\cs_new_protected:Npn \__str_convert:nnnn #1#2#3#4
+ {
+ \cs_if_exist:cF { __str_convert_#3_#1: }
+ {
+ \prop_get:NnNF \g__str_alias_prop {#1} \l__str_internal_tl
+ { \tl_set:Nn \l__str_internal_tl {#1} }
+ \cs_if_exist:cF { __str_convert_#3_ \l__str_internal_tl : }
+ {
+ \file_if_exist:nTF { l3str-#2- \l__str_internal_tl .def }
+ {
+ \group_begin:
+ \__str_load_catcodes:
+ \file_input:n { l3str-#2- \l__str_internal_tl .def }
+ \group_end:
+ }
+ {
+ \tl_clear:N \l__str_internal_tl
+ \__kernel_msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
+ }
+ }
+ \cs_if_exist:cF { __str_convert_#3_#1: }
+ {
+ \cs_gset_eq:cc { __str_convert_#3_#1: }
+ { __str_convert_#3_ \l__str_internal_tl : }
+ }
+ }
+ \cs_gset_eq:cc { __str_convert_#3_#4: } { __str_convert_#3_#1: }
+ }
+\cs_new:Npn \__str_convert_lowercase_alphanum:n #1
+ {
+ \exp_after:wN \__str_convert_lowercase_alphanum_loop:N
+ \tl_to_str:n {#1} { ? \prg_break: }
+ \prg_break_point:
+ }
+\cs_new:Npn \__str_convert_lowercase_alphanum_loop:N #1
+ {
+ \use_none:n #1
+ \if_int_compare:w `#1 > `Z \exp_stop_f:
+ \if_int_compare:w `#1 > `z \exp_stop_f: \else:
+ \if_int_compare:w `#1 < `a \exp_stop_f: \else:
+ #1
+ \fi:
+ \fi:
+ \else:
+ \if_int_compare:w `#1 < `A \exp_stop_f:
+ \if_int_compare:w 1 < 1#1 \exp_stop_f:
+ #1
+ \fi:
+ \else:
+ \__str_output_byte:n { `#1 + `a - `A }
+ \fi:
+ \fi:
+ \__str_convert_lowercase_alphanum_loop:N
+ }
+\cs_new_protected:Npn \__str_load_catcodes:
+ {
+ \char_set_catcode_escape:N \\
+ \char_set_catcode_group_begin:N \{
+ \char_set_catcode_group_end:N \}
+ \char_set_catcode_math_toggle:N \$
+ \char_set_catcode_alignment:N \&
+ \char_set_catcode_parameter:N \#
+ \char_set_catcode_math_superscript:N \^
+ \char_set_catcode_ignore:N \ %
+ \char_set_catcode_space:N \~
+ \tl_map_function:nN { abcdefghijklmnopqrstuvwxyz_:ABCDEFILNPSTUX }
+ \char_set_catcode_letter:N
+ \tl_map_function:nN { 0123456789"'?*+-.(),`!/<>[];= }
+ \char_set_catcode_other:N
+ \char_set_catcode_comment:N \%
+ \int_set:Nn \tex_endlinechar:D {32}
+ }
+\bool_lazy_any:nTF
+ {
+ \sys_if_engine_luatex_p:
+ \sys_if_engine_xetex_p:
+ }
+ {
+ \cs_new:Npn \__str_filter_bytes:n #1
+ {
+ \__str_filter_bytes_aux:N #1
+ { ? \prg_break: }
+ \prg_break_point:
+ }
+ \cs_new:Npn \__str_filter_bytes_aux:N #1
+ {
+ \use_none:n #1
+ \if_int_compare:w `#1 < 256 \exp_stop_f:
+ #1
+ \else:
+ \flag_raise:n { str_byte }
+ \fi:
+ \__str_filter_bytes_aux:N
+ }
+ }
+ { \cs_new_eq:NN \__str_filter_bytes:n \use:n }
+\bool_lazy_any:nTF
+ {
+ \sys_if_engine_luatex_p:
+ \sys_if_engine_xetex_p:
+ }
+ {
+ \cs_new_protected:Npn \__str_convert_unescape_:
+ {
+ \flag_clear:n { str_byte }
+ \tl_gset:Nx \g__str_result_tl
+ { \exp_args:No \__str_filter_bytes:n \g__str_result_tl }
+ \__str_if_flag_error:nnx { str_byte } { non-byte } { bytes }
+ }
+ }
+ { \cs_new_protected:Npn \__str_convert_unescape_: { } }
+\cs_new_eq:NN \__str_convert_unescape_bytes: \__str_convert_unescape_:
+\cs_new_protected:Npn \__str_convert_escape_: { }
+\cs_new_eq:NN \__str_convert_escape_bytes: \__str_convert_escape_:
+\cs_new_protected:Npn \__str_convert_decode_:
+ { \__str_convert_gmap:N \__str_decode_native_char:N }
+\cs_new:Npn \__str_decode_native_char:N #1
+ { #1 \s__tl \int_value:w `#1 \s__tl }
+\bool_lazy_any:nTF
+ {
+ \sys_if_engine_luatex_p:
+ \sys_if_engine_xetex_p:
+ }
+ {
+ \cs_new_protected:Npn \__str_convert_encode_:
+ { \__str_convert_gmap_internal:N \__str_encode_native_char:n }
+ \cs_new:Npn \__str_encode_native_char:n #1
+ { \char_generate:nn {#1} {12} }
+ }
+ {
+ \cs_new_protected:Npn \__str_convert_encode_:
+ {
+ \flag_clear:n { str_error }
+ \__str_convert_gmap_internal:N \__str_encode_native_char:n
+ \__str_if_flag_error:nnx { str_error }
+ { native-overflow } { }
+ }
+ \cs_new:Npn \__str_encode_native_char:n #1
+ {
+ \if_int_compare:w #1 > \c__str_max_byte_int
+ \flag_raise:n { str_error }
+ ?
+ \else:
+ \char_generate:nn {#1} {12}
+ \fi:
+ }
+ \__kernel_msg_new:nnnn { str } { native-overflow }
+ { Character~code~too~large~for~this~engine. }
+ {
+ This~engine~only~support~8-bit~characters:~
+ valid~character~codes~are~in~the~range~[0,255].~
+ To~manipulate~arbitrary~Unicode,~use~LuaTeX~or~XeTeX.
+ }
+ }
+\cs_new_protected:Npn \__str_convert_decode_clist:
+ {
+ \clist_gset:No \g__str_result_tl \g__str_result_tl
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_args:No \clist_map_function:nN
+ \g__str_result_tl \__str_decode_clist_char:n
+ }
+ }
+\cs_new:Npn \__str_decode_clist_char:n #1
+ { #1 \s__tl \int_eval:n {#1} \s__tl }
+\cs_new_protected:Npn \__str_convert_encode_clist:
+ {
+ \__str_convert_gmap_internal:N \__str_encode_clist_char:n
+ \tl_gset:Nx \g__str_result_tl { \tl_tail:N \g__str_result_tl }
+ }
+\cs_new:Npn \__str_encode_clist_char:n #1 { , #1 }
+\cs_new_protected:Npn \str_declare_eight_bit_encoding:nnn #1#2#3
+ {
+ \tl_set:Nn \l__str_internal_tl {#1}
+ \cs_new_protected:cpn { __str_convert_decode_#1: }
+ { \__str_convert_decode_eight_bit:n {#1} }
+ \cs_new_protected:cpn { __str_convert_encode_#1: }
+ { \__str_convert_encode_eight_bit:n {#1} }
+ \tl_const:cn { c__str_encoding_#1_tl } {#2}
+ \tl_const:cn { c__str_encoding_#1_missing_tl } {#3}
+ }
+\cs_new_protected:Npn \__str_convert_decode_eight_bit:n #1
+ {
+ \group_begin:
+ \int_zero:N \l__str_internal_int
+ \exp_last_unbraced:Nx \__str_decode_eight_bit_load:nn
+ { \tl_use:c { c__str_encoding_#1_tl } }
+ { \q_stop \prg_break: } { }
+ \prg_break_point:
+ \exp_last_unbraced:Nx \__str_decode_eight_bit_load_missing:n
+ { \tl_use:c { c__str_encoding_#1_missing_tl } }
+ { \q_stop \prg_break: }
+ \prg_break_point:
+ \flag_clear:n { str_error }
+ \__str_convert_gmap:N \__str_decode_eight_bit_char:N
+ \__str_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
+ \group_end:
+ }
+\cs_new_protected:Npn \__str_decode_eight_bit_load:nn #1#2
+ {
+ \use_none_delimit_by_q_stop:w #1 \q_stop
+ \tex_dimen:D "#1 = \l__str_internal_int sp \scan_stop:
+ \tex_skip:D \l__str_internal_int = "#1 sp \scan_stop:
+ \tex_toks:D \l__str_internal_int \exp_after:wN { \int_value:w "#2 }
+ \int_incr:N \l__str_internal_int
+ \__str_decode_eight_bit_load:nn
+ }
+\cs_new_protected:Npn \__str_decode_eight_bit_load_missing:n #1
+ {
+ \use_none_delimit_by_q_stop:w #1 \q_stop
+ \tex_dimen:D "#1 = \l__str_internal_int sp \scan_stop:
+ \tex_skip:D \l__str_internal_int = "#1 sp \scan_stop:
+ \tex_toks:D \l__str_internal_int \exp_after:wN
+ { \int_use:N \c__str_replacement_char_int }
+ \int_incr:N \l__str_internal_int
+ \__str_decode_eight_bit_load_missing:n
+ }
+\cs_new:Npn \__str_decode_eight_bit_char:N #1
+ {
+ #1 \s__tl
+ \if_int_compare:w \tex_dimen:D `#1 < \l__str_internal_int
+ \if_int_compare:w \tex_skip:D \tex_dimen:D `#1 = `#1 \exp_stop_f:
+ \tex_the:D \tex_toks:D \tex_dimen:D
+ \fi:
+ \fi:
+ \int_value:w `#1 \s__tl
+ }
+\cs_new_protected:Npn \__str_convert_encode_eight_bit:n #1
+ {
+ \group_begin:
+ \int_zero:N \l__str_internal_int
+ \exp_last_unbraced:Nx \__str_encode_eight_bit_load:nn
+ { \tl_use:c { c__str_encoding_#1_tl } }
+ { \q_stop \prg_break: } { }
+ \prg_break_point:
+ \flag_clear:n { str_error }
+ \__str_convert_gmap_internal:N \__str_encode_eight_bit_char:n
+ \__str_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
+ \group_end:
+ }
+\cs_new_protected:Npn \__str_encode_eight_bit_load:nn #1#2
+ {
+ \use_none_delimit_by_q_stop:w #1 \q_stop
+ \tex_dimen:D "#2 = \l__str_internal_int sp \scan_stop:
+ \tex_skip:D \l__str_internal_int = "#2 sp \scan_stop:
+ \exp_args:NNf \tex_toks:D \l__str_internal_int
+ { \__str_output_byte:n { "#1 } }
+ \int_incr:N \l__str_internal_int
+ \__str_encode_eight_bit_load:nn
+ }
+\cs_new:Npn \__str_encode_eight_bit_char:n #1
+ {
+ \if_int_compare:w #1 > \c_max_register_int
+ \flag_raise:n { str_error }
+ \else:
+ \if_int_compare:w \tex_dimen:D #1 < \l__str_internal_int
+ \if_int_compare:w \tex_skip:D \tex_dimen:D #1 = #1 \exp_stop_f:
+ \tex_the:D \tex_toks:D \tex_dimen:D #1 \exp_stop_f:
+ \exp_after:wN \exp_after:wN \exp_after:wN \use_none:nn
+ \fi:
+ \fi:
+ \__str_encode_eight_bit_char_aux:n {#1}
+ \fi:
+ }
+\cs_new:Npn \__str_encode_eight_bit_char_aux:n #1
+ {
+ \if_int_compare:w #1 > \c__str_max_byte_int
+ \flag_raise:n { str_error }
+ \else:
+ \__str_output_byte:n {#1}
+ \fi:
+ }
+\__kernel_msg_new:nnn { str } { unknown-esc }
+ { Escaping~scheme~'#1'~(filtered:~'#2')~unknown. }
+\__kernel_msg_new:nnn { str } { unknown-enc }
+ { Encoding~scheme~'#1'~(filtered:~'#2')~unknown. }
+\__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.
+ }
+\__kernel_msg_new:nnn { str } { file-not-found }
+ { File~'l3str-#1.def'~not~found. }
+\bool_lazy_any:nT
+ {
+ \sys_if_engine_luatex_p:
+ \sys_if_engine_xetex_p:
+ }
+ {
+ \__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~
+ 8-bit~characters.~Perhaps~the~string~is~a~'native'~Unicode~string?~
+ If~it~is,~try~using\\
+ \\
+ \iow_indent:n
+ {
+ \iow_char:N\\str_set_convert:Nnnn \\
+ \ \ <str~var>~\{~<string>~\}~\{~native~\}~\{~<target~encoding>~\}
+ }
+ }
+ }
+\__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'.
+ }
+\__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.~
+ LaTeX~was~asked~to~convert~a~string~to~that~encoding,~but~that~
+ string~contains~a~character~that~'#1'~does~not~support.
+ }
+\cs_new_protected:Npn \__str_convert_unescape_hex:
+ {
+ \group_begin:
+ \flag_clear:n { str_error }
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \__str_output_byte:w "
+ \exp_last_unbraced:Nf \__str_unescape_hex_auxi:N
+ { \tl_to_str:N \g__str_result_tl }
+ 0 { ? 0 - 1 \prg_break: }
+ \prg_break_point:
+ \__str_output_end:
+ }
+ \__str_if_flag_error:nnx { str_error } { unescape-hex } { }
+ \group_end:
+ }
+\cs_new:Npn \__str_unescape_hex_auxi:N #1
+ {
+ \use_none:n #1
+ \__str_hexadecimal_use:NTF #1
+ { \__str_unescape_hex_auxii:N }
+ {
+ \flag_raise:n { str_error }
+ \__str_unescape_hex_auxi:N
+ }
+ }
+\cs_new:Npn \__str_unescape_hex_auxii:N #1
+ {
+ \use_none:n #1
+ \__str_hexadecimal_use:NTF #1
+ {
+ \__str_output_end:
+ \__str_output_byte:w " \__str_unescape_hex_auxi:N
+ }
+ {
+ \flag_raise:n { str_error }
+ \__str_unescape_hex_auxii:N
+ }
+ }
+\__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~
+ hexadecimal~digits~(0-9,~A-F,~a-f)~nor~spaces.
+ }
+\cs_set_protected:Npn \__str_tmp:w #1#2#3
+ {
+ \cs_new_protected:cpn { __str_convert_unescape_#2: }
+ {
+ \group_begin:
+ \flag_clear:n { str_byte }
+ \flag_clear:n { str_error }
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN #3 \g__str_result_tl
+ #1 ? { ? \prg_break: }
+ \prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_byte } { non-byte } { #2 }
+ \__str_if_flag_error:nnx { str_error } { unescape-#2 } { }
+ \group_end:
+ }
+ \cs_new:Npn #3 ##1#1##2##3
+ {
+ \__str_filter_bytes:n {##1}
+ \use_none:n ##3
+ \__str_output_byte:w "
+ \__str_hexadecimal_use:NTF ##2
+ {
+ \__str_hexadecimal_use:NTF ##3
+ { }
+ {
+ \flag_raise:n { str_error }
+ * 0 + `#1 \use_i:nn
+ }
+ }
+ {
+ \flag_raise:n { str_error }
+ 0 + `#1 \use_i:nn
+ }
+ \__str_output_end:
+ \use_i:nnn #3 ##2##3
+ }
+ \__kernel_msg_new:nnnn { str } { unescape-#2 }
+ { String~invalid~in~escaping~'#2'. }
+ {
+ LaTeX~came~across~the~escape~character~'#1'~not~followed~by~
+ two~hexadecimal~digits.~This~is~invalid~in~the~escaping~'#2'.
+ }
+ }
+\exp_after:wN \__str_tmp:w \c_hash_str { name }
+ \__str_unescape_name_loop:wNN
+\exp_after:wN \__str_tmp:w \c_percent_str { url }
+ \__str_unescape_url_loop:wNN
+\group_begin:
+ \char_set_catcode_other:N \^^J
+ \char_set_catcode_other:N \^^M
+ \cs_set_protected:Npn \__str_tmp:w #1
+ {
+ \cs_new_protected:Npn \__str_convert_unescape_string:
+ {
+ \group_begin:
+ \flag_clear:n { str_byte }
+ \flag_clear:n { str_error }
+ \int_set:Nn \tex_escapechar:D { 92 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_unescape_string_newlines:wN
+ \g__str_result_tl \prg_break: ^^M ?
+ \prg_break_point:
+ }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_unescape_string_loop:wNNN
+ \g__str_result_tl #1 ?? { ? \prg_break: }
+ \prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_byte } { non-byte } { string }
+ \__str_if_flag_error:nnx { str_error } { unescape-string } { }
+ \group_end:
+ }
+ }
+ \exp_args:No \__str_tmp:w { \c_backslash_str }
+ \exp_last_unbraced:NNNNo
+ \cs_new:Npn \__str_unescape_string_loop:wNNN #1 \c_backslash_str #2#3#4
+ {
+ \__str_filter_bytes:n {#1}
+ \use_none:n #4
+ \__str_output_byte:w '
+ \__str_octal_use:NTF #2
+ {
+ \__str_octal_use:NTF #3
+ {
+ \__str_octal_use:NTF #4
+ {
+ \if_int_compare:w #2 > 3 \exp_stop_f:
+ - 256
+ \fi:
+ \__str_unescape_string_repeat:NNNNNN
+ }
+ { \__str_unescape_string_repeat:NNNNNN ? }
+ }
+ { \__str_unescape_string_repeat:NNNNNN ?? }
+ }
+ {
+ \str_case_e:nnF {#2}
+ {
+ { \c_backslash_str } { 134 }
+ { ( } { 50 }
+ { ) } { 51 }
+ { r } { 15 }
+ { f } { 14 }
+ { n } { 12 }
+ { t } { 11 }
+ { b } { 10 }
+ { ^^J } { 0 - 1 }
+ }
+ {
+ \flag_raise:n { str_error }
+ 0 - 1 \use_i:nn
+ }
+ }
+ \__str_output_end:
+ \use_i:nn \__str_unescape_string_loop:wNNN #2#3#4
+ }
+ \cs_new:Npn \__str_unescape_string_repeat:NNNNNN #1#2#3#4#5#6
+ { \__str_output_end: \__str_unescape_string_loop:wNNN }
+ \cs_new:Npn \__str_unescape_string_newlines:wN #1 ^^M #2
+ {
+ #1
+ \if_charcode:w ^^J #2 \else: ^^J \fi:
+ \__str_unescape_string_newlines:wN #2
+ }
+ \__kernel_msg_new:nnnn { str } { unescape-string }
+ { String~invalid~in~escaping~'string'. }
+ {
+ LaTeX~came~across~an~escape~character~'\c_backslash_str'~
+ not~followed~by~any~of:~'n',~'r',~'t',~'b',~'f',~'(',~')',~
+ '\c_backslash_str',~one~to~three~octal~digits,~or~the~end~
+ of~a~line.
+ }
+\group_end:
+\cs_new_protected:Npn \__str_convert_escape_hex:
+ { \__str_convert_gmap:N \__str_escape_hex_char:N }
+\cs_new:Npn \__str_escape_hex_char:N #1
+ { \__str_output_hexadecimal:n { `#1 } }
+\str_const:Nn \c__str_escape_name_not_str { ! " $ & ' } %$
+\str_const:Nn \c__str_escape_name_str { {}/<>[] }
+\cs_new_protected:Npn \__str_convert_escape_name:
+ { \__str_convert_gmap:N \__str_escape_name_char:N }
+\cs_new:Npn \__str_escape_name_char:N #1
+ {
+ \__str_if_escape_name:NTF #1 {#1}
+ { \c_hash_str \__str_output_hexadecimal:n {`#1} }
+ }
+\prg_new_conditional:Npnn \__str_if_escape_name:N #1 { TF }
+ {
+ \if_int_compare:w `#1 < "2A \exp_stop_f:
+ \__str_if_contains_char:NNTF \c__str_escape_name_not_str #1
+ \prg_return_true: \prg_return_false:
+ \else:
+ \if_int_compare:w `#1 > "7E \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \__str_if_contains_char:NNTF \c__str_escape_name_str #1
+ \prg_return_false: \prg_return_true:
+ \fi:
+ \fi:
+ }
+\str_const:Nx \c__str_escape_string_str
+ { \c_backslash_str ( ) }
+\cs_new_protected:Npn \__str_convert_escape_string:
+ { \__str_convert_gmap:N \__str_escape_string_char:N }
+\cs_new:Npn \__str_escape_string_char:N #1
+ {
+ \__str_if_escape_string:NTF #1
+ {
+ \__str_if_contains_char:NNT
+ \c__str_escape_string_str #1
+ { \c_backslash_str }
+ #1
+ }
+ {
+ \c_backslash_str
+ \int_div_truncate:nn {`#1} {64}
+ \int_mod:nn { \int_div_truncate:nn {`#1} { 8 } } { 8 }
+ \int_mod:nn {`#1} { 8 }
+ }
+ }
+\prg_new_conditional:Npnn \__str_if_escape_string:N #1 { TF }
+ {
+ \if_int_compare:w `#1 < "21 \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \if_int_compare:w `#1 > "7E \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \prg_return_true:
+ \fi:
+ \fi:
+ }
+\cs_new_protected:Npn \__str_convert_escape_url:
+ { \__str_convert_gmap:N \__str_escape_url_char:N }
+\cs_new:Npn \__str_escape_url_char:N #1
+ {
+ \__str_if_escape_url:NTF #1 {#1}
+ { \c_percent_str \__str_output_hexadecimal:n { `#1 } }
+ }
+\prg_new_conditional:Npnn \__str_if_escape_url:N #1 { TF }
+ {
+ \if_int_compare:w `#1 < "41 \exp_stop_f:
+ \__str_if_contains_char:nNTF { "-.<> } #1
+ \prg_return_true: \prg_return_false:
+ \else:
+ \if_int_compare:w `#1 > "7E \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \__str_if_contains_char:nNTF { [ ] } #1
+ \prg_return_false: \prg_return_true:
+ \fi:
+ \fi:
+ }
+\cs_new_protected:cpn { __str_convert_encode_utf8: }
+ { \__str_convert_gmap_internal:N \__str_encode_utf_viii_char:n }
+\cs_new:Npn \__str_encode_utf_viii_char:n #1
+ {
+ \__str_encode_utf_viii_loop:wwnnw #1 ; - 1 + 0 * ;
+ { 128 } { 0 }
+ { 32 } { 192 }
+ { 16 } { 224 }
+ { 8 } { 240 }
+ \q_stop
+ }
+\cs_new:Npn \__str_encode_utf_viii_loop:wwnnw #1; #2; #3#4 #5 \q_stop
+ {
+ \if_int_compare:w #1 < #3 \exp_stop_f:
+ \__str_output_byte:n { #1 + #4 }
+ \exp_after:wN \use_none_delimit_by_q_stop:w
+ \fi:
+ \exp_after:wN \__str_encode_utf_viii_loop:wwnnw
+ \int_value:w \int_div_truncate:nn {#1} {64} ; #1 ;
+ #5 \q_stop
+ \__str_output_byte:n { #2 - 64 * ( #1 - 2 ) }
+ }
+\flag_clear_new:n { str_missing }
+\flag_clear_new:n { str_extra }
+\flag_clear_new:n { str_overlong }
+\flag_clear_new:n { str_overflow }
+\__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 }
+ \__str_if_flag_times:nT { str_extra } { ,~extra~continuation~byte }
+ \__str_if_flag_times:nT { str_overlong } { ,~overlong~form }
+ \__str_if_flag_times:nT { str_overflow } { ,~code~point~too~large }
+ }
+ .
+ }
+ {
+ In~the~UTF-8~encoding,~each~Unicode~character~consists~in~
+ 1~to~4~bytes,~with~the~following~bit~pattern: \\
+ \iow_indent:n
+ {
+ Code~point~\ \ \ \ <~128:~0xxxxxxx \\
+ Code~point~\ \ \ <~2048:~110xxxxx~10xxxxxx \\
+ Code~point~\ \ <~65536:~1110xxxx~10xxxxxx~10xxxxxx \\
+ Code~point~ <~1114112:~11110xxx~10xxxxxx~10xxxxxx~10xxxxxx \\
+ }
+ Bytes~of~the~form~10xxxxxx~are~called~continuation~bytes.
+ \flag_if_raised:nT { str_missing }
+ {
+ \\\\
+ A~leading~byte~(in~the~range~[192,255])~was~not~followed~by~
+ the~appropriate~number~of~continuation~bytes.
+ }
+ \flag_if_raised:nT { str_extra }
+ {
+ \\\\
+ LaTeX~came~across~a~continuation~byte~when~it~was~not~expected.
+ }
+ \flag_if_raised:nT { str_overlong }
+ {
+ \\\\
+ Every~Unicode~code~point~must~be~expressed~in~the~shortest~
+ possible~form.~For~instance,~'0xC0'~'0x83'~is~not~a~valid~
+ representation~for~the~code~point~3.
+ }
+ \flag_if_raised:nT { str_overflow }
+ {
+ \\\\
+ Unicode~limits~code~points~to~the~range~[0,1114111].
+ }
+ }
+\cs_new_protected:cpn { __str_convert_decode_utf8: }
+ {
+ \flag_clear:n { str_error }
+ \flag_clear:n { str_missing }
+ \flag_clear:n { str_extra }
+ \flag_clear:n { str_overlong }
+ \flag_clear:n { str_overflow }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_decode_utf_viii_start:N \g__str_result_tl
+ { \prg_break: \__str_decode_utf_viii_end: }
+ \prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_error } { utf8-decode } { }
+ }
+\cs_new:Npn \__str_decode_utf_viii_start:N #1
+ {
+ #1
+ \if_int_compare:w `#1 < "C0 \exp_stop_f:
+ \s__tl
+ \if_int_compare:w `#1 < "80 \exp_stop_f:
+ \int_value:w `#1
+ \else:
+ \flag_raise:n { str_extra }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \fi:
+ \else:
+ \exp_after:wN \__str_decode_utf_viii_continuation:wwN
+ \int_value:w \int_eval:n { `#1 - "C0 } \exp_after:wN
+ \fi:
+ \s__tl
+ \use_none_delimit_by_q_stop:w {"80} {"800} {"10000} {"110000} \q_stop
+ \__str_decode_utf_viii_start:N
+ }
+\cs_new:Npn \__str_decode_utf_viii_continuation:wwN
+ #1 \s__tl #2 \__str_decode_utf_viii_start:N #3
+ {
+ \use_none:n #3
+ \if_int_compare:w `#3 <
+ \if_int_compare:w `#3 < "80 \exp_stop_f: - \fi:
+ "C0 \exp_stop_f:
+ #3
+ \exp_after:wN \__str_decode_utf_viii_aux:wNnnwN
+ \int_value:w \int_eval:n { #1 * "40 + `#3 - "80 } \exp_after:wN
+ \else:
+ \s__tl
+ \flag_raise:n { str_missing }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \fi:
+ \s__tl
+ #2
+ \__str_decode_utf_viii_start:N #3
+ }
+\cs_new:Npn \__str_decode_utf_viii_aux:wNnnwN
+ #1 \s__tl #2#3#4 #5 \__str_decode_utf_viii_start:N #6
+ {
+ \if_int_compare:w #1 < #4 \exp_stop_f:
+ \s__tl
+ \if_int_compare:w #1 < #3 \exp_stop_f:
+ \flag_raise:n { str_overlong }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \else:
+ #1
+ \fi:
+ \else:
+ \if_meaning:w \q_stop #5
+ \__str_decode_utf_viii_overflow:w #1
+ \fi:
+ \exp_after:wN \__str_decode_utf_viii_continuation:wwN
+ \int_value:w \int_eval:n { #1 - #4 } \exp_after:wN
+ \fi:
+ \s__tl
+ #2 {#4} #5
+ \__str_decode_utf_viii_start:N
+ }
+\cs_new:Npn \__str_decode_utf_viii_overflow:w #1 \fi: #2 \fi:
+ {
+ \fi: \fi:
+ \flag_raise:n { str_overflow }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ }
+\cs_new:Npn \__str_decode_utf_viii_end:
+ {
+ \s__tl
+ \flag_raise:n { str_missing }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int \s__tl
+ \prg_break:
+ }
+\group_begin:
+ \char_set_catcode_other:N \^^fe
+ \char_set_catcode_other:N \^^ff
+ \cs_new_protected:cpn { __str_convert_encode_utf16: }
+ {
+ \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_be:n
+ \tl_gput_left:Nx \g__str_result_tl { ^^fe ^^ff }
+ }
+ \cs_new_protected:cpn { __str_convert_encode_utf16be: }
+ { \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_be:n }
+ \cs_new_protected:cpn { __str_convert_encode_utf16le: }
+ { \__str_encode_utf_xvi_aux:N \__str_output_byte_pair_le:n }
+ \cs_new_protected:Npn \__str_encode_utf_xvi_aux:N #1
+ {
+ \flag_clear:n { str_error }
+ \cs_set_eq:NN \__str_tmp:w #1
+ \__str_convert_gmap_internal:N \__str_encode_utf_xvi_char:n
+ \__str_if_flag_error:nnx { str_error } { utf16-encode } { }
+ }
+ \cs_new:Npn \__str_encode_utf_xvi_char:n #1
+ {
+ \if_int_compare:w #1 < "D800 \exp_stop_f:
+ \__str_tmp:w {#1}
+ \else:
+ \if_int_compare:w #1 < "10000 \exp_stop_f:
+ \if_int_compare:w #1 < "E000 \exp_stop_f:
+ \flag_raise:n { str_error }
+ \__str_tmp:w { \c__str_replacement_char_int }
+ \else:
+ \__str_tmp:w {#1}
+ \fi:
+ \else:
+ \exp_args:Nf \__str_tmp:w { \int_div_truncate:nn {#1} {"400} + "D7C0 }
+ \exp_args:Nf \__str_tmp:w { \int_mod:nn {#1} {"400} + "DC00 }
+ \fi:
+ \fi:
+ }
+ \flag_clear_new:n { str_missing }
+ \flag_clear_new:n { str_extra }
+ \flag_clear_new:n { str_end }
+ \__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.
+ }
+ \__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 }
+ \__str_if_flag_times:nT { str_extra } { ,~extra~trail~surrogate }
+ \__str_if_flag_times:nT { str_end } { ,~odd~number~of~bytes }
+ }
+ .
+ }
+ {
+ In~the~UTF-16~encoding,~each~Unicode~character~is~encoded~as~
+ 2~or~4~bytes: \\
+ \iow_indent:n
+ {
+ Code~point~in~[U+0000,~U+D7FF]:~two~bytes \\
+ Code~point~in~[U+D800,~U+DFFF]:~illegal \\
+ Code~point~in~[U+E000,~U+FFFF]:~two~bytes \\
+ Code~point~in~[U+10000,~U+10FFFF]:~
+ a~lead~surrogate~and~a~trail~surrogate \\
+ }
+ Lead~surrogates~are~pairs~of~bytes~in~the~range~[0xD800,~0xDBFF],~
+ and~trail~surrogates~are~in~the~range~[0xDC00,~0xDFFF].
+ \flag_if_raised:nT { str_missing }
+ {
+ \\\\
+ A~lead~surrogate~was~not~followed~by~a~trail~surrogate.
+ }
+ \flag_if_raised:nT { str_extra }
+ {
+ \\\\
+ LaTeX~came~across~a~trail~surrogate~when~it~was~not~expected.
+ }
+ \flag_if_raised:nT { str_end }
+ {
+ \\\\
+ The~string~contained~an~odd~number~of~bytes.~This~is~invalid:~
+ the~basic~code~unit~for~UTF-16~is~16~bits~(2~bytes).
+ }
+ }
+ \cs_new_protected:cpn { __str_convert_decode_utf16be: }
+ { \__str_decode_utf_xvi:Nw 1 \g__str_result_tl \s_stop }
+ \cs_new_protected:cpn { __str_convert_decode_utf16le: }
+ { \__str_decode_utf_xvi:Nw 2 \g__str_result_tl \s_stop }
+ \cs_new_protected:cpn { __str_convert_decode_utf16: }
+ {
+ \exp_after:wN \__str_decode_utf_xvi_bom:NN
+ \g__str_result_tl \s_stop \s_stop \s_stop
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xvi_bom:NN #1#2
+ {
+ \str_if_eq:nnTF { #1#2 } { ^^ff ^^fe }
+ { \__str_decode_utf_xvi:Nw 2 }
+ {
+ \str_if_eq:nnTF { #1#2 } { ^^fe ^^ff }
+ { \__str_decode_utf_xvi:Nw 1 }
+ { \__str_decode_utf_xvi:Nw 1 #1#2 }
+ }
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xvi:Nw #1#2 \s_stop
+ {
+ \flag_clear:n { str_error }
+ \flag_clear:n { str_missing }
+ \flag_clear:n { str_extra }
+ \flag_clear:n { str_end }
+ \cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_decode_utf_xvi_pair:NN
+ #2 \q_nil \q_nil
+ \prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_error } { utf16-decode } { }
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_pair:NN #1#2
+ {
+ \if_meaning:w \q_nil #2
+ \__str_decode_utf_xvi_pair_end:Nw #1
+ \fi:
+ \if_case:w
+ \int_eval:n { ( \__str_tmp:w #1#2 - "D6 ) / 4 } \scan_stop:
+ \or: \exp_after:wN \__str_decode_utf_xvi_quad:NNwNN
+ \or: \exp_after:wN \__str_decode_utf_xvi_extra:NNw
+ \fi:
+ #1#2 \s__tl
+ \int_eval:n { "100 * \__str_tmp:w #1#2 + \__str_tmp:w #2#1 } \s__tl
+ \__str_decode_utf_xvi_pair:NN
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_quad:NNwNN
+ #1#2 #3 \__str_decode_utf_xvi_pair:NN #4#5
+ {
+ \if_meaning:w \q_nil #5
+ \__str_decode_utf_xvi_error:nNN { missing } #1#2
+ \__str_decode_utf_xvi_pair_end:Nw #4
+ \fi:
+ \if_int_compare:w
+ \if_int_compare:w \__str_tmp:w #4#5 < "DC \exp_stop_f:
+ 0 = 1
+ \else:
+ \__str_tmp:w #4#5 < "E0
+ \fi:
+ \exp_stop_f:
+ #1 #2 #4 #5 \s__tl
+ \int_eval:n
+ {
+ ( "100 * \__str_tmp:w #1#2 + \__str_tmp:w #2#1 - "D7F7 ) * "400
+ + "100 * \__str_tmp:w #4#5 + \__str_tmp:w #5#4
+ }
+ \s__tl
+ \exp_after:wN \use_i:nnn
+ \else:
+ \__str_decode_utf_xvi_error:nNN { missing } #1#2
+ \fi:
+ \__str_decode_utf_xvi_pair:NN #4#5
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_pair_end:Nw #1 \fi:
+ {
+ \fi:
+ \if_meaning:w \q_nil #1
+ \else:
+ \__str_decode_utf_xvi_error:nNN { end } #1 \prg_do_nothing:
+ \fi:
+ \prg_break:
+ }
+ \cs_new:Npn \__str_decode_utf_xvi_extra:NNw #1#2 \s__tl #3 \s__tl
+ { \__str_decode_utf_xvi_error:nNN { extra } #1#2 }
+ \cs_new:Npn \__str_decode_utf_xvi_error:nNN #1#2#3
+ {
+ \flag_raise:n { str_error }
+ \flag_raise:n { str_#1 }
+ #2 #3 \s__tl
+ \int_use:N \c__str_replacement_char_int \s__tl
+ }
+\group_end:
+\group_begin:
+ \char_set_catcode_other:N \^^00
+ \char_set_catcode_other:N \^^fe
+ \char_set_catcode_other:N \^^ff
+ \cs_new_protected:cpn { __str_convert_encode_utf32: }
+ {
+ \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_be:n
+ \tl_gput_left:Nx \g__str_result_tl { ^^00 ^^00 ^^fe ^^ff }
+ }
+ \cs_new_protected:cpn { __str_convert_encode_utf32be: }
+ { \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_be:n }
+ \cs_new_protected:cpn { __str_convert_encode_utf32le: }
+ { \__str_convert_gmap_internal:N \__str_encode_utf_xxxii_le:n }
+ \cs_new:Npn \__str_encode_utf_xxxii_be:n #1
+ {
+ \exp_args:Nf \__str_encode_utf_xxxii_be_aux:nn
+ { \int_div_truncate:nn {#1} { "100 } } {#1}
+ }
+ \cs_new:Npn \__str_encode_utf_xxxii_be_aux:nn #1#2
+ {
+ ^^00
+ \__str_output_byte_pair_be:n {#1}
+ \__str_output_byte:n { #2 - #1 * "100 }
+ }
+ \cs_new:Npn \__str_encode_utf_xxxii_le:n #1
+ {
+ \exp_args:Nf \__str_encode_utf_xxxii_le_aux:nn
+ { \int_div_truncate:nn {#1} { "100 } } {#1}
+ }
+ \cs_new:Npn \__str_encode_utf_xxxii_le_aux:nn #1#2
+ {
+ \__str_output_byte:n { #2 - #1 * "100 }
+ \__str_output_byte_pair_le:n {#1}
+ ^^00
+ }
+ \flag_clear_new:n { str_overflow }
+ \flag_clear_new:n { str_end }
+ \__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 }
+ \__str_if_flag_times:nT { str_end } { ,~truncated~string }
+ }
+ .
+ }
+ {
+ In~the~UTF-32~encoding,~every~Unicode~character~
+ (in~the~range~[U+0000,~U+10FFFF])~is~encoded~as~4~bytes.
+ \flag_if_raised:nT { str_overflow }
+ {
+ \\\\
+ LaTeX~came~across~a~code~point~larger~than~1114111,~
+ the~maximum~code~point~defined~by~Unicode.~
+ Perhaps~the~string~was~not~encoded~in~the~UTF-32~encoding?
+ }
+ \flag_if_raised:nT { str_end }
+ {
+ \\\\
+ The~length~of~the~string~is~not~a~multiple~of~4.~
+ Perhaps~the~string~was~truncated?
+ }
+ }
+ \cs_new_protected:cpn { __str_convert_decode_utf32be: }
+ { \__str_decode_utf_xxxii:Nw 1 \g__str_result_tl \s_stop }
+ \cs_new_protected:cpn { __str_convert_decode_utf32le: }
+ { \__str_decode_utf_xxxii:Nw 2 \g__str_result_tl \s_stop }
+ \cs_new_protected:cpn { __str_convert_decode_utf32: }
+ {
+ \exp_after:wN \__str_decode_utf_xxxii_bom:NNNN \g__str_result_tl
+ \s_stop \s_stop \s_stop \s_stop \s_stop
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xxxii_bom:NNNN #1#2#3#4
+ {
+ \str_if_eq:nnTF { #1#2#3#4 } { ^^ff ^^fe ^^00 ^^00 }
+ { \__str_decode_utf_xxxii:Nw 2 }
+ {
+ \str_if_eq:nnTF { #1#2#3#4 } { ^^00 ^^00 ^^fe ^^ff }
+ { \__str_decode_utf_xxxii:Nw 1 }
+ { \__str_decode_utf_xxxii:Nw 1 #1#2#3#4 }
+ }
+ }
+ \cs_new_protected:Npn \__str_decode_utf_xxxii:Nw #1#2 \s_stop
+ {
+ \flag_clear:n { str_overflow }
+ \flag_clear:n { str_end }
+ \flag_clear:n { str_error }
+ \cs_set:Npn \__str_tmp:w ##1 ##2 { ` ## #1 }
+ \tl_gset:Nx \g__str_result_tl
+ {
+ \exp_after:wN \__str_decode_utf_xxxii_loop:NNNN
+ #2 \s_stop \s_stop \s_stop \s_stop
+ \prg_break_point:
+ }
+ \__str_if_flag_error:nnx { str_error } { utf32-decode } { }
+ }
+ \cs_new:Npn \__str_decode_utf_xxxii_loop:NNNN #1#2#3#4
+ {
+ \if_meaning:w \s_stop #4
+ \exp_after:wN \__str_decode_utf_xxxii_end:w
+ \fi:
+ #1#2#3#4 \s__tl
+ \if_int_compare:w \__str_tmp:w #1#4 > 0 \exp_stop_f:
+ \flag_raise:n { str_overflow }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \else:
+ \if_int_compare:w \__str_tmp:w #2#3 > 16 \exp_stop_f:
+ \flag_raise:n { str_overflow }
+ \flag_raise:n { str_error }
+ \int_use:N \c__str_replacement_char_int
+ \else:
+ \int_eval:n
+ { \__str_tmp:w #2#3*"10000 + \__str_tmp:w #3#2*"100 + \__str_tmp:w #4#1 }
+ \fi:
+ \fi:
+ \s__tl
+ \__str_decode_utf_xxxii_loop:NNNN
+ }
+ \cs_new:Npn \__str_decode_utf_xxxii_end:w #1 \s_stop
+ {
+ \tl_if_empty:nF {#1}
+ {
+ \flag_raise:n { str_end }
+ \flag_raise:n { str_error }
+ #1 \s__tl
+ \int_use:N \c__str_replacement_char_int \s__tl
+ }
+ \prg_break:
+ }
+\group_end:
%% File: l3tl-analysis.dtx
\scan_new:N \s__tl
\cs_new_eq:NN \l__tl_analysis_token ?
@@ -24147,7 +25465,7 @@
\tex_kern:D -\l__box_left_new_dim
\hbox:n
{
- \driver_box_use_rotate:Nn
+ \__box_backend_rotate:Nn
\l__box_internal_box
\l__box_angle_fp
}
@@ -24416,7 +25734,7 @@
{
\hbox_set:Nn \l__box_internal_box
{
- \driver_box_use_scale:Nnn
+ \__box_backend_scale:Nnn
#1
\l__box_scale_x_fp
\l__box_scale_y_fp
@@ -24454,7 +25772,7 @@
\cs_new_eq:NN \color_group_end: \group_end:
\cs_new_protected:Npn \color_ensure_current:
{
- \driver_color_pickup:N \l__color_current_tl
+ \__color_backend_pickup:N \l__color_current_tl
\__color_select:V \l__color_current_tl
}
\cs_new_protected:Npn \__color_select:n #1
@@ -24463,13 +25781,13 @@
\cs_new_protected:Npn \__color_select:w #1 ~ #2 \q_stop
{ \use:c { __color_select_ #1 :w } #2 \q_stop }
\cs_new_protected:Npn \__color_select_cmyk:w #1 ~ #2 ~ #3 ~ #4 \q_stop
- { \driver_color_cmyk:nnnn {#1} {#2} {#3} {#4} }
+ { \__color_backend_cmyk:nnnn {#1} {#2} {#3} {#4} }
\cs_new_protected:Npn \__color_select_gray:w #1 \q_stop
- { \driver_color_gray:n {#1} }
+ { \__color_backend_gray:n {#1} }
\cs_new_protected:Npn \__color_select_rgb:w #1 ~ #2 ~ #3 \q_stop
- { \driver_color_rgb:nnn {#1} {#2} {#3} }
+ { \__color_backend_rgb:nnn {#1} {#2} {#3} }
\cs_new_protected:Npn \__color_select_spot:w #1 ~ #2 \q_stop
- { \driver_color_spot:nn {#1} {#2} }
+ { \__color_backend_spot:nn {#1} {#2} }
\tl_new:N \l__color_current_tl
\tl_set:Nn \l__color_current_tl { gray~0 }
%% File: l3coffins.dtx
@@ -25332,7 +26650,7 @@
\cs_generate_variant:Nn \coffin_attach:NnnNnnnn { c , Nnnc , cnnc }
\cs_new_protected:Npn \coffin_gattach:NnnNnnnn #1#2#3#4#5#6#7#8
{
- \__coffin_gattach:NnnNnnnnN #1 {#2} {#3} #4 {#5} {#6} {#7} {#8}
+ \__coffin_attach:NnnNnnnnN #1 {#2} {#3} #4 {#5} {#6} {#7} {#8}
\coffin_gset_eq:NN
}
\cs_generate_variant:Nn \coffin_gattach:NnnNnnnn { c , Nnnc , cnnc }
@@ -25897,10 +27215,10 @@
\fi:
}
\cs_new_protected:Npn \box_clip:N #1
- { \hbox_set:Nn #1 { \driver_box_use_clip:N #1 } }
+ { \hbox_set:Nn #1 { \__box_backend_clip:N #1 } }
\cs_generate_variant:Nn \box_clip:N { c }
\cs_new_protected:Npn \box_gclip:N #1
- { \hbox_gset:Nn #1 { \driver_box_use_clip:N #1 } }
+ { \hbox_gset:Nn #1 { \__box_backend_clip:N #1 } }
\cs_generate_variant:Nn \box_gclip:N { c }
\cs_new_protected:Npn \box_set_trim:Nnnnn #1#2#3#4#5
{ \__box_set_trim:NnnnnN #1 {#2} {#3} {#4} {#5} \box_set_eq:NN }
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 8014aa50960..ee6b0cfdad3 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-05-28}%
+\def\ExplFileDate{2019-07-01}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
@@ -86,7 +86,7 @@
\iow_log:x { File:~#1~#2~v#3~#4 }
}
\tex_input:D
- l3
+ l3backend
\sys_if_engine_xetex:TF
{ xdvipdfmx }
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 41b84801c47..f08739aaacd 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-05-28}%
+\def\ExplFileDate{2019-07-01}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
@@ -277,7 +277,8 @@
\ProvidesFile {#1} [ #2~v#3~#4 ]
}
\tl_const:Nn \c__expl_def_ext_tl { def }
- \@onefilewithoptions { l3 \l__expl_driver_tl } [ ] [ ] \c__expl_def_ext_tl
+ \@onefilewithoptions { l3backend- \l__expl_driver_tl } [ ] [ ]
+ \c__expl_def_ext_tl
}
\tl_put_left:Nn \@pushfilename
{
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
index ed111045fbf..e1f1aad315d 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3doc.cls
@@ -1921,8 +1921,9 @@
\char_set_catcode_active:N \>
\cs_new_protected:Npn \__codedoc_xmacro_code:n #1
{
+ \tl_clear:N \l__codedoc_tmpa_tl
\tl_if_in:nnTF {#1} { < @ @ = }
- { \__codedoc_xmacro_code:w #1 \q_stop }
+ { \__codedoc_xmacro_code:w #1 < @ @ = \q_recursion_tail > \q_recursion_stop }
{
\tl_set:Nn \l__codedoc_tmpa_tl {#1}
\__codedoc_detect_internals:N \l__codedoc_tmpa_tl
@@ -1930,21 +1931,21 @@
\tl_use:N \l__codedoc_tmpa_tl
}
}
- \cs_new_protected:Npn \__codedoc_xmacro_code:w #1 < @ @ = #2 > #3 \q_stop
+ \cs_new_protected:Npn \__codedoc_xmacro_code:w #1 < @ @ = #2 >
{
- \tl_set:Nn \l__codedoc_tmpa_tl {#1}
- \__codedoc_detect_internals:N \l__codedoc_tmpa_tl
- \__codedoc_replace_at_at:N \l__codedoc_tmpa_tl
-
- \tl_gset:Nn \g__codedoc_module_name_tl {#2}
- \tl_put_right:Nn \l__codedoc_tmpa_tl { < \text { \verbatim@font @ @ = #2 } > }
-
- \tl_set:Nn \l__codedoc_tmpb_tl {#3}
+ % Add code before <__codedoc=...>
+ \tl_set:Nn \l__codedoc_tmpb_tl {#1}
\__codedoc_detect_internals:N \l__codedoc_tmpb_tl
\__codedoc_replace_at_at:N \l__codedoc_tmpb_tl
- \tl_put_right:No \l__codedoc_tmpa_tl { \l__codedoc_tmpb_tl }
-
- \tl_use:N \l__codedoc_tmpa_tl
+ \tl_put_right:NV \l__codedoc_tmpa_tl \l__codedoc_tmpb_tl
+ % Check for \q_recursion_tail
+ \quark_if_recursion_tail_stop_do:nn {#2}
+ { \tl_use:N \l__codedoc_tmpa_tl }
+ % Change module name and add <__codedoc=#2> to typeset output
+ \tl_gset:Nn \g__codedoc_module_name_tl {#2}
+ \tl_put_right:Nn \l__codedoc_tmpa_tl { < \text { \verbatim@font @ @ = #2 } > }
+ % Loop
+ \__codedoc_xmacro_code:w
}
\group_end:
\iow_new:N \g__codedoc_func_iow
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
deleted file mode 100644
index 20789461412..00000000000
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+++ /dev/null
@@ -1,635 +0,0 @@
-%%
-%% This is file `l3dvipdfmx.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3drivers.dtx (with options: `package,dvipdfmx')
-%% l3drivers-basics.dtx (with options: `package,dvipdfmx')
-%% l3drivers-color.dtx (with options: `package,dvipdfmx')
-%% l3drivers-box.dtx (with options: `package,dvipdfmx')
-%% l3drivers-draw.dtx (with options: `package,dvipdfmx')
-%% l3drivers-graphics.dtx (with options: `package,dvipdfmx')
-%% l3drivers-pdf.dtx (with options: `package,dvipdfmx')
-%%
-%% Copyright (C) 1990-2019 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:
-%%
-%% https://www.latex-project.org/lppl.txt
-%%
-%% 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
-%% File: l3drivers-basics.dtx
-\ProvidesExplFile
- {l3dvipdfmx.def}{2019-04-06}{}
- {L3 Experimental driver: dvipdfmx}
-\cs_new_eq:NN \__driver_literal:e \tex_special:D
-\cs_new_protected:Npn \__driver_literal:n #1
- { \__driver_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__driver_literal:n { x }
-\box_new:N \l__driver_internal_box
-\cs_new_protected:Npn \__driver_literal_pdf:n #1
- { \__driver_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__driver_literal_pdf:n { x }
-\cs_new_protected:Npn \__driver_scope_begin:
- { \__driver_literal:n { x:gsave } }
-\cs_new_protected:Npn \__driver_scope_end:
- { \__driver_literal:n { x:grestore } }
-%% File: l3drivers-color.dtx
-\cs_new_protected:Npn \driver_color_pickup:N #1 { }
-\AtBeginDocument
- {
- \@ifpackageloaded { color }
- {
- \cs_set_protected:Npn \driver_color_pickup:N #1
- {
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- spot ~
- \exp_after:wN \use:n \current@color \c_space_tl 1
- }
- }
- {
- \exp_last_unbraced:Nx \__driver_color_pickup:w
- { \current@color } \q_stop #1
- }
- }
- \cs_new_protected:Npn \__driver_color_pickup:w #1 ~ #2 \q_stop #3
- { \tl_set:Nn #3 { #1 ~ #2 } }
- }
- { }
- }
-\cs_new_protected:Npn \driver_color_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:x
- {
- cmyk~
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4}
- }
- }
-\cs_new_protected:Npn \driver_color_gray:n #1
- { \__driver_color_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \driver_color_rgb:nnn #1#2#3
- {
- \__driver_color_select:x
- { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
- }
-\cs_new_protected:Npn \driver_color_spot:nn #1#2
- { \__driver_color_select:n { #1 } }
-\cs_new_protected:Npn \__driver_color_select:n #1
- {
- \__driver_literal:n { color~push~ #1 }
- \group_insert_after:N \__driver_color_reset:
- }
-\cs_generate_variant:Nn \__driver_color_select:n { x }
-\cs_new_protected:Npn \__driver_color_reset:
- { \__driver_literal:n { color~pop } }
-%% File: l3drivers-box.dtx
-\cs_new_protected:Npn \driver_box_use_clip:N #1
- {
- \__driver_scope_begin:
- \__driver_literal_pdf:x
- {
- 0~
- \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
- re~W~n
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- \skip_horizontal:n { \box_wd:N #1 }
- }
-\cs_new_protected:Npn \driver_box_use_rotate:Nn #1#2
- { \exp_args:NNf \__driver_box_use_rotate:Nn #1 { \fp_eval:n {#2} } }
-\cs_new_protected:Npn \__driver_box_use_rotate:Nn #1#2
- {
- \__driver_scope_begin:
- \__driver_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#2} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( #2 , 5 ) } }
- }
- \box_use:N #1
- \__driver_scope_end:
- }
-\cs_new_protected:Npn \driver_box_use_scale:Nnn #1#2#3
- {
- \__driver_scope_begin:
- \__driver_literal:x
- {
- x:scale~
- \fp_eval:n { round ( #2 , 5 ) } ~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- }
-%% File: l3drivers-draw.dtx
-\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_pdf:n
-\cs_generate_variant:Nn \__driver_draw_literal:n { x }
-\cs_new_protected:Npn \driver_draw_begin:
- { \driver_draw_scope_begin: }
-\cs_new_protected:Npn \driver_draw_end:
- { \driver_draw_scope_end: }
-\cs_new_eq:NN \driver_draw_scope_begin: \__driver_scope_begin:
-\cs_new_eq:NN \driver_draw_scope_end: \__driver_scope_end:
-\cs_new_protected:Npn \driver_draw_moveto:nn #1#2
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
- }
-\cs_new_protected:Npn \driver_draw_lineto:nn #1#2
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
- }
-\cs_new_protected:Npn \driver_draw_curveto:nnnnnn #1#2#3#4#5#6
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
- \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~
- c
- }
- }
-\cs_new_protected:Npn \driver_draw_rectangle:nnnn #1#2#3#4
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
- re
- }
- }
-\cs_new_protected:Npn \driver_draw_evenodd_rule:
- { \bool_gset_true:N \g__driver_draw_eor_bool }
-\cs_new_protected:Npn \driver_draw_nonzero_rule:
- { \bool_gset_false:N \g__driver_draw_eor_bool }
-\bool_new:N \g__driver_draw_eor_bool
-\cs_new_protected:Npn \driver_draw_closepath:
- { \__driver_draw_literal:n { h } }
-\cs_new_protected:Npn \driver_draw_stroke:
- { \__driver_draw_literal:n { S } }
-\cs_new_protected:Npn \driver_draw_closestroke:
- { \__driver_draw_literal:n { s } }
-\cs_new_protected:Npn \driver_draw_fill:
- {
- \__driver_draw_literal:x
- { f \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_fillstroke:
- {
- \__driver_draw_literal:x
- { B \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_clip:
- {
- \__driver_draw_literal:x
- { W \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_discardpath:
- { \__driver_draw_literal:n { n } }
-\cs_new_protected:Npn \driver_draw_dash_pattern:nn #1#2
- {
- \__driver_draw_literal:x
- {
- [
- \exp_args:Nf \use:n
- { \clist_map_function:nN {#1} \__driver_draw_dash:n }
- ] ~
- \dim_to_decimal_in_bp:n {#2} ~ d
- }
- }
-\cs_new:Npn \__driver_draw_dash:n #1
- { ~ \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \driver_draw_linewidth:n #1
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ w }
- }
-\cs_new_protected:Npn \driver_draw_miterlimit:n #1
- { \__driver_draw_literal:x { \fp_eval:n {#1} ~ M } }
-\cs_new_protected:Npn \driver_draw_cap_butt:
- { \__driver_draw_literal:n { 0 ~ J } }
-\cs_new_protected:Npn \driver_draw_cap_round:
- { \__driver_draw_literal:n { 1 ~ J } }
-\cs_new_protected:Npn \driver_draw_cap_rectangle:
- { \__driver_draw_literal:n { 2 ~ J } }
-\cs_new_protected:Npn \driver_draw_join_miter:
- { \__driver_draw_literal:n { 0 ~ j } }
-\cs_new_protected:Npn \driver_draw_join_round:
- { \__driver_draw_literal:n { 1 ~ j } }
-\cs_new_protected:Npn \driver_draw_join_bevel:
- { \__driver_draw_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_fill_select:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- k
- }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- k
- }
- }
-\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
- { \__driver_color_fill_select:x { \fp_eval:n {#1} ~ g } }
-\cs_new_protected:Npn \driver_draw_color_stroke_gray:n #1
- { \__driver_color_select:x { \fp_eval:n {#1} ~ G } }
-\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
- {
- \__driver_color_fill_select:x
- { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_rgb:nnn #1#2#3
- {
- \__driver_color_select:x
- { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG }
- }
-\cs_new_eq:NN \__driver_color_fill_select:n \__driver_draw_literal:n
-\cs_generate_variant:Nn \__driver_color_fill_select:n { x }
-\cs_new_protected:Npn \driver_draw_cm:nnnn #1#2#3#4
- {
- \__driver_draw_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
- \__driver_draw_cm:nnnn
- }
-\cs_new_protected:Npn \__driver_draw_cm:nnnn #1#2#3#4
- {
- \__driver_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#1} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( -#1 , 5 ) } }
- }
- \__driver_literal:x
- {
- x:scale~
- \fp_eval:n { round ( #2 , 5 ) } ~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \__driver_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#4} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( -#4 , 5 ) } }
- }
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__driver_draw_cm_decompose_auxi:nnnnN
- { \fp_eval:n { (#1 + #4) / 2 } }
- { \fp_eval:n { (#1 - #4) / 2 } }
- { \fp_eval:n { (#3 + #2) / 2 } }
- { \fp_eval:n { (#3 - #2) / 2 } }
- }
- #5
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose_auxi:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__driver_draw_cm_decompose_auxii:nnnnN
- { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
- { \fp_eval:n { 2 * sqrt ( #2 * #2 + #3 * #3 ) } }
- { \fp_eval:n { atand ( #3 , #2 ) } }
- { \fp_eval:n { atand ( #4 , #1 ) } }
- }
- #5
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose_auxii:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__driver_draw_cm_decompose_auxiii:nnnnN
- { \fp_eval:n { ( #4 - #3 ) / 2 } }
- { \fp_eval:n { ( #1 + #2 ) / 2 } }
- { \fp_eval:n { ( #1 - #2 ) / 2 } }
- { \fp_eval:n { ( #4 + #3 ) / 2 } }
- }
- #5
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose_auxiii:nnnnN #1#2#3#4#5
- {
- \fp_compare:nNnTF { abs( #2 ) } > { abs ( #3 ) }
- { #5 {#1} {#2} {#3} {#4} }
- { #5 {#1} {#3} {#2} {#4} }
- }
-\cs_new_protected:Npn \driver_draw_box_use:Nnnnn #1#2#3#4#5
- {
- \__driver_scope_begin:
- \__driver_literal:x
- {
- pdf:btrans~matrix~
- \fp_eval:n {#2} ~ \fp_eval:n {#3} ~
- \fp_eval:n {#4} ~ \fp_eval:n {#5} ~
- 0 ~ 0
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_literal:n { pdf:etrans }
- \__driver_scope_end:
- }
-%% File: l3drivers-graphics.dtx
-\AtBeginDocument
- { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
-\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
- {
- \int_zero:N \l_graphics_page_int
- \tl_clear:N \l_graphics_pagebox_tl
- \graphics_extract_bb:n {#1}
- }
-\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
-\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
- {
- \tl_clear:N \l_graphics_decodearray_tl
- \bool_set_false:N \l_graphics_interpolate_bool
- \graphics_extract_bb:n {#1}
- }
-\int_new:N \g__driver_graphics_int
-\cs_new_protected:Npn \driver_graphics_include_eps:n #1
- {
- \__driver_literal:x
- {
- PSfile = #1 \c_space_tl
- llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
- lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
- urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
- ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
- }
- }
-\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
- { \__driver_graphics_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \driver_graphics_include_png:n \driver_graphics_include_jpg:n
-\cs_new_protected:Npn \driver_graphics_include_pdf:n #1
- { \__driver_graphics_include_auxi:nn {#1} { epdf } }
-\cs_new_protected:Npn \__driver_graphics_include_auxi:nn #1#2
- {
- \__driver_graphics_include_auxii:xnn
- {
- \tl_if_empty:NF \l_graphics_pagebox_tl
- { : \l_graphics_pagebox_tl }
- \int_compare:nNnT \l_graphics_page_int > 1
- { :P \int_use:N \l_graphics_page_int }
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { :D \l_graphics_decodearray_tl }
- \bool_if:NT \l_graphics_interpolate_bool
- { :I }
- }
- {#1} {#2}
- }
-\cs_new_protected:Npn \__driver_graphics_include_auxii:nnn #1#2#3
- {
- \int_if_exist:cTF { c__driver_graphics_ #2#1 _int }
- {
- \__driver_literal:x
- { pdf:usexobj~@graphic \int_use:c { c__driver_graphics_ #2#1 _int } }
- }
- { \__driver_graphics_include_auxiii:nnn {#2} {#1} {#3} }
- }
-\cs_generate_variant:Nn \__driver_graphics_include_auxii:nnn { x }
-\cs_new_protected:Npn \__driver_graphics_include_auxiii:nnn #1#2#3
- {
- \int_gincr:N \g__driver_graphics_int
- \int_const:cn { c__driver_graphics_ #1#2 _int } { \g__driver_graphics_int }
- \__driver_literal:x
- {
- pdf:#3~
- @graphic \int_use:c { c__driver_graphics_ #1#2 _int } ~
- \int_compare:nNnT \l_graphics_page_int > 1
- { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
- \tl_if_empty:NF \l_graphics_pagebox_tl
- {
- pagebox ~ \l_graphics_pagebox_tl \c_space_tl
- bbox ~
- \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_ury_dim \c_space_tl
- }
- (#1)
- \bool_lazy_or:nnT
- { \l_graphics_interpolate_bool }
- { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
- {
- <<
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { /Decode~[ \l_graphics_decodearray_tl ] }
- \bool_if:NT \l_graphics_interpolate_bool
- { /Interpolate~true> }
- >>
- }
- }
- }
-%% File: l3drivers-pdf.dtx
-\cs_new_protected:Npx \__driver_pdf:n #1
- { \__driver_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \__driver_pdf:n { x }
-\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
- { \__driver_pdf:n { put ~ @catalog << /#1 ~ #2 >> } }
-\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
- { \__driver_pdf:n { docinfo << /#1 ~ #2 >> } }
-\int_new:N \g__driver_pdf_object_int
-\prop_new:N \g__driver_pdf_object_prop
-\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2
- {
- \int_gincr:N \g__driver_pdf_object_int
- \int_const:cn
- { g__driver_pdf_object_ \tl_to_str:n {#1} _int }
- { \g__driver_pdf_object_int }
- \prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2}
- }
-\cs_new:Npn \driver_pdf_object_ref:n #1
- { @driver.obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } }
-\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2
- {
- \exp_args:Nx \__driver_pdf_object_write:nnn
- { \prop_item:Nn \g__driver_pdf_object_prop {#1} } {#1} {#2}
- }
-\cs_new_protected:Npn \__driver_pdf_object_write:nnn #1#2#3
- { \use:c { __driver_pdf_object_write_ #1 :nn } {#2} {#3} }
-\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2
- {
- \__driver_pdf:x
- {
- obj ~ \driver_pdf_object_ref:n {#1} ~
- [ ~ \exp_not:n {#2} ~ ]
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2
- {
- \__driver_pdf:x
- {
- obj ~ \driver_pdf_object_ref:n {#1} ~
- << ~ \exp_not:n {#2} ~ >>
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_fstream:nn #1#2
- { \__driver_pdf_object_write_stream:nnnn { f } {#1} #2 }
-\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2
- { \__driver_pdf_object_write_stream:nnnn { } {#1} #2 }
-\cs_new_protected:Npn \__driver_pdf_object_write_stream:nnnn #1#2#3#4
- {
- \__driver_pdf:x
- {
- #1 stream ~ \driver_pdf_object_ref:n {#2} ~
- ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
-
- }
- }
-\bool_new:N \g__driver_landscape_bool
-\AtBeginDocument
- {
- \cs_if_exist:NT \landscape
- {
- \tl_put_right:Nn \landscape
- { \bool_gset_true:N \g__driver_landscape_bool }
- \tl_put_left:Nn \endlandscape
- { \bool_gset_false:N \g__driver_landscape_bool }
- }
- }
-\int_new:N \g__driver_pdf_annotation_int
-\cs_new_protected:Npn \driver_pdf_annotation:nnnn #1#2#3#4
- {
- \bool_if:NTF \g__driver_landscape_bool
- {
- \box_move_up:nn {#2}
- {
- \vbox:n
- {
- \__driver_pdf_annotation:nnnn
- { #2 + #3 } {#1} { 0pt } {#4}
- }
- }
- }
- { \__driver_pdf_annotation:nnnn {#1} {#2} {#3} {#4} }
- }
-\cs_new_protected:Npn \__driver_pdf_annotation:nnnn #1#2#3#4
- {
- \int_gincr:N \g__driver_pdf_object_int
- \int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int
- \__driver_pdf:x
- {
- ann ~ @driver.obj \int_use:N \g__driver_pdf_object_int \c_space_tl
- width ~ \dim_eval:n {#1} ~
- height ~ \dim_eval:n {#2} ~
- depth ~ \dim_eval:n {#3} ~
- << #4 >>
- }
- }
-\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
- { \__driver_pdf_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
-\cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
- { \__driver_pdf_link_begin:n {#1#2} }
-\cs_new_protected:Npn \__driver_pdf_link_begin:n #1
- {
- \__driver_pdf:n
- {
- bann
- <<
- /Type /Annot
- #1
- >>
- }
- }
-\cs_new_protected:Npn \driver_pdf_link_end:
- { \__driver_pdf:n { eann } }
-\cs_new:Npn \driver_pdf_link_last: { }
-\cs_new_protected:Npn \driver_pdf_link_margin:n #1
- { \__driver_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
-\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
- {
- \__driver_pdf:x
- {
- dest ~ ( \exp_not:n {#1} )
- [
- @thispage
- \str_case:nnF {#2}
- {
- { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
- { fit } { /Fit }
- { fitb } { /FitB }
- { fitbh } { /FitBH }
- { fitbv } { /FitBV ~ @xpos }
- { fith } { /FitH ~ @ypos }
- { fitv } { /FitV ~ @xpos }
- }
- { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
- ]
- }
- }
-\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
- {
- \group_begin:
- \hbox_set:Nn \l__driver_internal_box {#2}
- \box_move_down:nn { \box_dp:N \l__driver_internal_box }
- {
- \hbox:n
- {
- \__driver_pdf:n { obj ~ @driver_#1_llx ~ @xpos }
- \__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
- }
- }
- \box_use:N \l__driver_internal_box
- \box_move_up:nn { \box_ht:N \l__driver_internal_box }
- {
- \hbox:n
- {
- \__driver_pdf:n
- {
- dest ~ (#1)
- [
- @thispage
- /FitR ~
- @driver_#1_llx ~ @driver_#1_lly ~
- @xpos ~ @ypos
- ]
- }
- }
- }
- \group_end:
- }
-\cs_new_protected:Npn \driver_pdf_compresslevel:n #1
- { \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
-\cs_new_protected:Npn \driver_pdf_compress_objects:n #1
- {
- \str_if_eq:nnF {#1} { true }
- { \__driver_literal:n { dvipdfmx:config~C~0x40 } }
- }
-\cs_new_protected:Npn \driver_pdf_version_major:n #1
- {
- \cs_gset:Npx \driver_pdf_version_major: { \int_eval:n {#1} }
- \__driver_literal:x { pdf:majorversion \driver_pdf_version_major: }
- }
-\cs_new_protected:Npn \driver_pdf_version_minor:n #1
- {
- \cs_gset:Npx \driver_pdf_version_minor: { \int_eval:n {#1} }
- \__driver_literal:x { pdf:minorversion \driver_pdf_version_minor: }
- }
-\cs_new:Npn \driver_pdf_version_major: { 1 }
-\cs_new:Npn \driver_pdf_version_minor: { 5 }
-%%
-%%
-%% End of file `l3dvipdfmx.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
deleted file mode 100644
index f51166f9231..00000000000
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
+++ /dev/null
@@ -1,1176 +0,0 @@
-%%
-%% This is file `l3dvips.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3drivers.dtx (with options: `package,dvips')
-%% l3drivers-basics.dtx (with options: `package,dvips')
-%% l3drivers-color.dtx (with options: `package,dvips')
-%% l3drivers-box.dtx (with options: `package,dvips')
-%% l3drivers-draw.dtx (with options: `package,dvips')
-%% l3drivers-graphics.dtx (with options: `package,dvips')
-%% l3drivers-pdf.dtx (with options: `package,dvips')
-%%
-%% Copyright (C) 1990-2019 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:
-%%
-%% https://www.latex-project.org/lppl.txt
-%%
-%% 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
-%% File: l3drivers-basics.dtx
-\ProvidesExplFile
- {l3dvips.def}{2019-04-06}{}
- {L3 Experimental driver: dvips}
-\cs_new_eq:NN \__driver_literal:e \tex_special:D
-\cs_new_protected:Npn \__driver_literal:n #1
- { \__driver_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__driver_literal:n { x }
-\box_new:N \l__driver_internal_box
-\cs_new_protected:Npn \__driver_literal_postscript:n #1
- { \__driver_literal:n { ps:: #1 } }
-\cs_generate_variant:Nn \__driver_literal_postscript:n { x }
-\cs_new_protected:Npn \__driver_postscript:n #1
- { \__driver_literal:n { ps: SDict ~ begin ~ #1 ~ end } }
-\cs_generate_variant:Nn \__driver_postscript:n { x }
-\cs_new_protected:Npx \__driver_postscript_header:n #1
- {
- \cs_if_exist:NTF \AtBeginDvi
- { \exp_not:N \AtBeginDvi }
- { \use:n }
- { \__driver_literal:n { ! #1 } }
- }
-\cs_new_protected:Npn \__driver_align_currentpoint_begin:
- {
- \__driver_literal:n { ps::[begin] }
- \__driver_literal_postscript:n { currentpoint }
- \__driver_literal_postscript:n { currentpoint~translate }
- }
-\cs_new_protected:Npn \__driver_align_currentpoint_end:
- {
- \__driver_literal_postscript:n { neg~exch~neg~exch~translate }
- \__driver_literal:n { ps::[end] }
- }
-\cs_new_protected:Npn \__driver_scope_begin:
- { \__driver_literal:n { ps:gsave } }
-\cs_new_protected:Npn \__driver_scope_end:
- { \__driver_literal:n { ps:grestore } }
-%% File: l3drivers-color.dtx
-\cs_new_protected:Npn \driver_color_pickup:N #1 { }
-\AtBeginDocument
- {
- \@ifpackageloaded { color }
- {
- \cs_set_protected:Npn \driver_color_pickup:N #1
- {
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- spot ~
- \exp_after:wN \use:n \current@color \c_space_tl 1
- }
- }
- {
- \exp_last_unbraced:Nx \__driver_color_pickup:w
- { \current@color } \q_stop #1
- }
- }
- \cs_new_protected:Npn \__driver_color_pickup:w #1 ~ #2 \q_stop #3
- { \tl_set:Nn #3 { #1 ~ #2 } }
- }
- { }
- }
-\cs_new_protected:Npn \driver_color_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:x
- {
- cmyk~
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4}
- }
- }
-\cs_new_protected:Npn \driver_color_gray:n #1
- { \__driver_color_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \driver_color_rgb:nnn #1#2#3
- {
- \__driver_color_select:x
- { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
- }
-\cs_new_protected:Npn \driver_color_spot:nn #1#2
- { \__driver_color_select:n { #1 } }
-\cs_new_protected:Npn \__driver_color_select:n #1
- {
- \__driver_literal:n { color~push~ #1 }
- \__driver_postscript:n { /driver.fc~{ }~def }
- \group_insert_after:N \__driver_color_reset:
- }
-\cs_generate_variant:Nn \__driver_color_select:n { x }
-\cs_new_protected:Npn \__driver_color_reset:
- { \__driver_literal:n { color~pop } }
-%% File: l3drivers-box.dtx
-\cs_new_protected:Npn \driver_box_use_clip:N #1
- {
- \__driver_scope_begin:
- \__driver_align_currentpoint_begin:
- \__driver_literal_postscript:n { matrix~currentmatrix }
- \__driver_literal_postscript:n
- { Resolution~72~div~VResolution~72~div~scale }
- \__driver_literal_postscript:n { DVImag~dup~scale }
- \__driver_literal_postscript:x
- {
- 0 ~
- \dim_to_decimal_in_bp:n { \box_dp:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
- \dim_to_decimal_in_bp:n { -\box_ht:N #1 - \box_dp:N #1 } ~
- rectclip
- }
- \__driver_literal_postscript:n { setmatrix }
- \__driver_align_currentpoint_end:
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- \skip_horizontal:n { \box_wd:N #1 }
- }
-\cs_new_protected:Npn \driver_box_use_rotate:Nn #1#2
- { \exp_args:NNf \__driver_box_use_rotate:Nn #1 { \fp_eval:n {#2} } }
-\cs_new_protected:Npn \__driver_box_use_rotate:Nn #1#2
- {
- \__driver_scope_begin:
- \__driver_align_currentpoint_begin:
- \__driver_literal_postscript:x
- {
- \fp_compare:nNnTF {#2} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( -(#2) , 5 ) } } ~
- rotate
- }
- \__driver_align_currentpoint_end:
- \box_use:N #1
- \__driver_scope_end:
- }
-\cs_new_protected:Npn \driver_box_use_scale:Nnn #1#2#3
- {
- \__driver_scope_begin:
- \__driver_align_currentpoint_begin:
- \__driver_literal_postscript:x
- {
- \fp_eval:n { round ( #2 , 5 ) } ~
- \fp_eval:n { round ( #3 , 5 ) } ~
- scale
- }
- \__driver_align_currentpoint_end:
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- }
-%% File: l3drivers-draw.dtx
-\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_postscript:n
-\cs_generate_variant:Nn \__driver_draw_literal:n { x }
-\cs_new_protected:Npn \driver_draw_begin:
- {
- \__driver_literal:n { ps::[begin] }
- \__driver_draw_literal:n { @beginspecial }
- \__driver_darw_literal:n { SDict ~ begin ~ /driver.fc ~ { } ~ def ~ end }
- }
-\cs_new_protected:Npn \driver_draw_end:
- {
- \__driver_draw_literal:n { @endspecial }
- \__driver_literal:n { ps::[end] }
- }
-\cs_new_protected:Npn \driver_draw_scope_begin:
- { \__driver_draw_literal:n { save } }
-\cs_new_protected:Npn \driver_draw_scope_end:
- { \__driver_draw_literal:n { restore } }
-\cs_new_protected:Npn \driver_draw_moveto:nn #1#2
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~
- \dim_to_decimal_in_bp:n {#2} ~ moveto
- }
- }
-\cs_new_protected:Npn \driver_draw_lineto:nn #1#2
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~
- \dim_to_decimal_in_bp:n {#2} ~ lineto
- }
- }
-\cs_new_protected:Npn \driver_draw_rectangle:nnnn #1#2#3#4
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- moveto~dup~0~rlineto~exch~0~exch~rlineto~neg~0~rlineto~closepath
- }
- }
-\cs_new_protected:Npn \driver_draw_curveto:nnnnnn #1#2#3#4#5#6
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
- \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~
- curveto
- }
- }
-\cs_new_protected:Npn \driver_draw_evenodd_rule:
- { \bool_gset_true:N \g__driver_draw_eor_bool }
-\cs_new_protected:Npn \driver_draw_nonzero_rule:
- { \bool_gset_false:N \g__driver_draw_eor_bool }
-\bool_new:N \g__driver_draw_eor_bool
-\cs_new_protected:Npn \driver_draw_closepath:
- { \__driver_draw_literal:n { closepath } }
-\cs_new_protected:Npn \driver_draw_stroke:
- {
- \__driver_draw_literal:n { stroke }
- \bool_if:NT \g__driver_draw_clip_bool
- {
- \__driver_draw_literal:x
- {
- \bool_if:NT \g__driver_draw_eor_bool { eo }
- clip
- }
- }
- \__driver_draw_literal:n { newpath }
- \bool_gset_false:N \g__driver_draw_clip_bool
- }
-\cs_new_protected:Npn \driver_draw_closestroke:
- {
- \driver_draw_closepath:
- \driver_draw_stroke:
- }
-\cs_new_protected:Npn \driver_draw_fill:
- {
- \__driver_draw_literal:n { gsave }
- \__driver_draw_literal:n { driver.fc }
- \__driver_draw_literal:x
- {
- \bool_if:NT \g__driver_draw_eor_bool { eo }
- fill
- }
- \__driver_draw_literal:n { grestore }
- \bool_if:NT \g__driver_draw_clip_bool
- {
- \__driver_draw_literal:x
- {
- \bool_if:NT \g__driver_draw_eor_bool { eo }
- clip
- }
- }
- \__driver_draw_literal:n { newpath }
- \bool_gset_false:N \g__driver_draw_clip_bool
- }
-\cs_new_protected:Npn \driver_draw_fillstroke:
- {
- \__driver_draw_literal:n { gsave }
- \__driver_draw_literal:n { driver.fc }
- \__driver_draw_literal:x
- {
- \bool_if:NT \g__driver_draw_eor_bool { eo }
- fill
- }
- \__driver_draw_literal:n { grestore }
- \__driver_draw_literal:n { stroke }
- \bool_if:NT \g__driver_draw_clip_bool
- {
- \__driver_draw_literal:x
- {
- \bool_if:NT \g__driver_draw_eor_bool { eo }
- clip
- }
- }
- \__driver_draw_literal:n { newpath }
- \bool_gset_false:N \g__driver_draw_clip_bool
- }
-\cs_new_protected:Npn \driver_draw_clip:
- { \bool_gset_true:N \g__driver_draw_clip_bool }
-\bool_new:N \g__driver_draw_clip_bool
-\cs_new_protected:Npn \driver_draw_discardpath:
- {
- \bool_if:NT \g__driver_draw_clip_bool
- {
- \__driver_draw_literal:x
- {
- \bool_if:NT \g__driver_draw_eor_bool { eo }
- clip
- }
- }
- \__driver_draw_literal:n { newpath }
- \bool_gset_false:N \g__driver_draw_clip_bool
- }
-\cs_new_protected:Npn \driver_draw_dash_pattern:nn #1#2
- {
- \__driver_draw_literal:x
- {
- [
- \exp_args:Nf \use:n
- { \clist_map_function:nN {#1} \__driver_draw_dash:n }
- ] ~
- \dim_to_decimal_in_bp:n {#2} ~ setdash
- }
- }
-\cs_new:Npn \__driver_draw_dash:n #1
- { ~ \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \driver_draw_linewidth:n #1
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ setlinewidth }
- }
-\cs_new_protected:Npn \driver_draw_miterlimit:n #1
- { \__driver_draw_literal:x { \fp_eval:n {#1} ~ setmiterlimit } }
-\cs_new_protected:Npn \driver_draw_cap_butt:
- { \__driver_draw_literal:n { 0 ~ setlinecap } }
-\cs_new_protected:Npn \driver_draw_cap_round:
- { \__driver_draw_literal:n { 1 ~ setlinecap } }
-\cs_new_protected:Npn \driver_draw_cap_rectangle:
- { \__driver_draw_literal:n { 2 ~ setlinecap } }
-\cs_new_protected:Npn \driver_draw_join_miter:
- { \__driver_draw_literal:n { 0 ~ setlinejoin } }
-\cs_new_protected:Npn \driver_draw_join_round:
- { \__driver_draw_literal:n { 1 ~ setlinejoin } }
-\cs_new_protected:Npn \driver_draw_join_bevel:
- { \__driver_draw_literal:n { 2 ~ setlinejoin } }
-\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
- {
- \__driver_draw_color_fill:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- setcmykcolor
- }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
- {
- \__driver_draw_color_stroke:x
- {
- cmyk ~
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4}
- }
- }
-\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
- { \__driver_draw_color_fill:x { \fp_eval:n {#1} ~ setgray } }
-\cs_new_protected:Npn \driver_draw_color_stroke_gray:n #1
- { \__driver_draw_color_stroke:x { gray ~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
- {
- \__driver_draw_color_fill:x
- { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ setrgbcolor }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_rgb:nnn #1#2#3
- {
- \__driver_draw_color_stroke:x
- { rgb ~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
- }
-\cs_new_protected:Npn \__driver_draw_color_fill:n #1
- { \__driver_postscript:n { SDict ~ begin ~ /driver.fc ~ { #1 } ~ def ~ end } }
-\cs_generate_variant:Nn \__driver_draw_color_fill:n { x }
-\cs_new_protected:Npn \__driver_draw_color_stroke:n #1
- {
- \__driver_literal:n { color~push~#1 }
- \group_insert_after:N \__driver_color_reset:
- }
-\cs_generate_variant:Nn \__driver_draw_color_stroke:n { x }
-\cs_new_protected:Npn \driver_draw_cm:nnnn #1#2#3#4
- {
- \__driver_draw_literal:n
- {
- [
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- 0 ~ 0
- ] ~
- concat
- }
- }
-\cs_new_protected:Npn \driver_draw_box_use:Nnnnn #1#2#3#4#5
- {
- \__driver_draw_literal:n { @endspecial }
- \__driver_draw_literal:n { [end] }
- \__driver_draw_literal:n { [begin] }
- \__driver_draw_literal:n { save }
- \__driver_draw_literal:n { currentpoint }
- \__driver_draw_literal:n { currentpoint~translate }
- \driver_draw_cm:nnnn { 1 } { 0 } { 0 } { -1 }
- \driver_draw_cm:nnnn {#2} {#3} {#4} {#5}
- \driver_draw_cm:nnnn { 1 } { 0 } { 0 } { -1 }
- \__driver_draw_literal:n { neg~exch~neg~exch~translate }
- \__driver_draw_literal:n { [end] }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_draw_literal:n { [begin] }
- \__driver_draw_literal:n { restore }
- \__driver_draw_literal:n { [end] }
- \__driver_draw_literal:n { [begin] }
- \__driver_draw_literal:n { @beginspecial }
- }
-%% File: l3drivers-graphics.dtx
-\AtBeginDocument
- { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
-\cs_new_protected:Npn \driver_graphics_include_eps:n #1
- {
- \__driver_literal:x
- {
- PSfile = #1 \c_space_tl
- llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
- lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
- urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
- ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
- }
- }
-%% File: l3drivers-pdf.dtx
-\cs_new_protected:Npn \__driver_pdfmark:n #1
- { \__driver_postscript:n { mark #1 ~ pdfmark } }
-\cs_generate_variant:Nn \__driver_pdfmark:n { x }
-\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
- { \__driver_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } }
-\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
- { \__driver_pdfmark:n { /#1 ~ #2 /DOCINFO } }
-\int_new:N \g__driver_pdf_object_int
-\prop_new:N \g__driver_pdf_object_prop
-\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2
- {
- \int_gincr:N \g__driver_pdf_object_int
- \int_const:cn
- { c__driver_pdf_object_ \tl_to_str:n {#1} _int }
- { \g__driver_pdf_object_int }
- \prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2}
- }
-\cs_new:Npn \driver_pdf_object_ref:n #1
- { { driver.obj \int_use:c { c__driver_pdf_object_ \tl_to_str:n {#1} _int } } }
-\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2
- {
- \__driver_pdfmark:x
- {
- /_objdef ~ \driver_pdf_object_ref:n {#1}
- /type
- \str_case_e:nn
- { \prop_item:Nn \g__driver_pdf_object_prop {#1} }
- {
- { array } { /array }
- { dict } { /dict }
- { fstream } { /stream }
- { stream } { /stream }
- }
- /OBJ
- }
- \use:c
- { __driver_pdf_object_write_ \prop_item:Nn \g__driver_pdf_object_prop {#1} :nn }
- {#1} {#2}
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2
- {
- \__driver_pdfmark:x
- {
- \driver_pdf_object_ref:n {#1}
- [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2
- {
- \__driver_pdfmark:x
- {
- \driver_pdf_object_ref:n {#1}
- << \exp_not:n {#2} >> /PUT
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2
- {
- \exp_args:Nx
- \__driver_pdf_object_write_stream:nnn
- { \driver_pdf_object_ref:n {#1} }
- #2
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_stream:nnn #1#2#3
- {
- \__driver_postscript:n
- {
- [nobreak]
- mark ~ #1 ~ ( #3 ) /PUT ~ pdfmark ~
- mark ~ #1 ~ << #2 >> /PUT ~ pdfmark
- }
- }
-\__driver_postscript_header:n
- {
- true ~ setglobal ~
- /driver.globaldict ~ 4 ~ dict ~ def ~
- false ~ setglobal
- }
-\__driver_postscript_header:n
- {
- /driver.cvs { 65534 ~ string ~ cvs } def
- /driver.dvi.pt { 72.27 ~ mul ~ Resolution ~ div } def
- /driver.pt.dvi { 72.27 ~ div ~ Resolution ~ mul } def
- /driver.rect.ht { dup ~ 1 ~ get ~ neg ~ exch ~ 3 ~ get ~ add } def
- }
-\__driver_postscript_header:n
- {
- /driver.linkmargin { 1 ~ driver.pt.dvi } def
- /driver.linkdp.pad { 0 } def
- /driver.linkht.pad { 0 } def
- }
-\__driver_postscript_header:n
- {
- /driver.rect
- { /Rect [ driver.llx ~ driver.lly ~ driver.urx ~ driver.ury ] } def
- /driver.save.ll
- {
- currentpoint
- /driver.lly ~ exch ~ def
- /driver.llx ~ exch ~ def
- }
- def
- /driver.save.ur
- {
- currentpoint
- /driver.ury ~ exch ~ def
- /driver.urx ~ exch ~ def
- }
- def
- /driver.save.linkll
- {
- currentpoint ~
- driver.linkmargin ~ add ~
- driver.linkdp.pad ~ add
- /driver.lly ~ exch ~ def ~
- driver.linkmargin ~ sub
- /driver.llx ~ exch ~ def
- }
- def
- /driver.save.linkur
- {
- currentpoint ~
- driver.linkmargin ~ sub ~
- driver.linkht.pad ~ sub
- /driver.ury ~ exch ~ def ~
- driver.linkmargin ~ add
- /driver.urx ~ exch ~ def
- }
- def
- }
-\__driver_postscript_header:n
- {
- /driver.dest.anchor
- {
- currentpoint ~ exch ~
- driver.dvi.pt ~ 72 ~ add ~
- /driver.dest.x ~ exch ~ def ~
- driver.dvi.pt ~
- vsize ~ 72 ~ sub ~ exch ~ sub ~
- /driver.dest.y ~ exch ~ def
- }
- def
- /driver.dest.point
- { driver.dest.x ~ driver.dest.y } def
- /driver.dest2device
- {
- /driver.dest.y ~ exch ~ def
- /driver.dest.x ~ exch ~ def ~
- matrix ~ currentmatrix ~
- matrix ~ defaultmatrix ~
- matrix ~ invertmatrix ~
- matrix ~ concatmatrix ~
- cvx ~ exec
- /driver.dev.y ~ exch ~ def
- /driver.dev.x ~ exch ~ def
- /driver.tmpd ~ exch ~ def
- /driver.tmpc ~ exch ~ def
- /driver.tmpb ~ exch ~ def
- /driver.tmpa ~ exch ~ def ~
- driver.dest.x ~ driver.tmpa ~ mul ~
- driver.dest.y ~ driver.tmpc ~ mul ~ add ~
- driver.dev.x ~ add ~
- driver.dest.x ~ driver.tmpb ~ mul ~
- driver.dest.y ~ driver.tmpd ~ mul ~ add ~
- driver.dev.y ~ add
- }
- def
- }
-\__driver_postscript_header:n
- {
- /driver.bordertracking ~ false ~ def
- /driver.bordertracking.begin
- {
- SDict ~ /driver.bordertracking ~ true ~ put ~
- SDict ~ /driver.leftboundary ~ undef ~
- SDict ~ /driver.rightboundary ~ undef ~
- /a ~ where
- {
- /a
- {
- currentpoint ~ pop ~
- SDict /driver.rightboundary ~ known ~ dup
- {
- SDict /driver.rightboundary ~ get ~ 2 ~ index ~ lt
- { not }
- if
- }
- if
- { pop }
- { SDict ~ exch /driver.rightboundary ~ exch ~ put }
- ifelse ~
- moveto ~
- currentpoint ~ pop ~
- SDict /driver.leftboundary ~ known ~ dup
- {
- SDict /driver.leftboundary ~ get ~ 2 ~ index ~ gt
- { not }
- if
- }
- if
- { pop }
- { SDict ~ exch /driver.leftboundary ~ exch ~ put }
- ifelse
- }
- put
- }
- if
- }
- def
- /driver.bordertracking.end
- {
- /a ~ where { /a { moveto } put } if
- /x ~ where { /x { 0 ~ exch ~ rmoveto } put } if ~
- SDict /driver.leftboundary ~ known
- { driver.outerbox ~ 0 ~ driver.leftboundary ~ put }
- if ~
- SDict /driver.rightboundary ~ known
- { driver.outerbox ~ 2 ~ driver.rightboundary ~ put }
- if ~
- SDict /driver.bordertracking ~ false ~ put
- }
- def
- /driver.bordertracking.endpage
- {
- driver.bordertracking
- {
- driver.bordertracking.end ~
- true ~ setglobal ~
- driver.globaldict
- /driver.brokenlink.rect [ driver.outerbox ~ aload ~ pop ] put ~
- driver.globaldict
- /driver.brokenlink.skip ~ driver.baselineskip ~ put ~
- driver.globaldict
- /driver.brokenlink.dict ~
- driver.link.dict ~ driver.cvs ~ put ~
- false ~ setglobal ~
- mark ~ driver.link.dict ~ cvx ~ exec ~ /Rect
- [
- driver.llx ~
- driver.lly ~
- driver.outerbox ~ 2 ~ get ~ driver.linkmargin ~ add ~
- currentpoint ~ exch ~ pop ~
- driver.outerbox ~ driver.rect.ht ~ sub ~ driver.linkmargin ~ sub
- ]
- /ANN ~ driver.pdfmark
- }
- if
- }
- def
- /driver.bordertracking.continue
- {
- /driver.link.dict ~ driver.globaldict
- /driver.brokenlink.dict ~ get ~ def
- /driver.outerbox ~ driver.globaldict
- /driver.brokenlink.rect ~ get ~ def
- /driver.baselineskip ~ driver.globaldict
- /driver.brokenlink.skip ~ get ~ def ~
- driver.globaldict ~ dup ~ dup
- /driver.brokenlink.dict ~ undef
- /driver.brokenlink.skip ~ undef
- /driver.brokenlink.rect ~ undef ~
- currentpoint
- /driver.originy ~ exch ~ def
- /driver.originx ~ exch ~ def
- /a ~ where
- {
- /a
- {
- moveto ~
- SDict ~
- begin ~
- currentpoint ~ driver.originy ~ ne ~ exch ~
- driver.originx ~ ne ~ or
- {
- driver.save.linkll
- /driver.lly ~
- driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~
- driver.bordertracking.begin
- }
- if ~
- end
- }
- put
- }
- if
- /x ~ where
- {
- /x
- {
- 0 ~ exch ~ rmoveto ~
- SDict~
- begin ~
- currentpoint ~
- driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or
- {
- driver.save.linkll
- /driver.lly ~
- driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~
- driver.bordertracking.begin
- }
- if ~
- end
- }
- put
- }
- if
- }
- def
- }
-\__driver_postscript_header:n
- {
- /driver.breaklink
- {
- pop ~
- counttomark ~ 2 ~ mod ~ 0 ~ eq
- {
- counttomark /driver.count ~ exch ~ def
- {
- driver.count ~ 0 ~ eq { exit } if ~
- counttomark ~ 2 ~ roll ~
- 1 ~ index ~ /Rect ~ eq
- {
- dup ~ 4 ~ array ~ copy ~
- dup ~ dup ~
- 1 ~ get ~
- driver.outerbox ~ driver.rect.ht ~
- driver.linkmargin ~ 2 ~ mul ~ add ~ sub ~
- 3 ~ exch ~ put ~
- dup ~
- driver.outerbox ~ 2 ~ get ~
- driver.linkmargin ~ add ~
- 2 ~ exch ~ put ~
- dup ~ dup ~
- 3 ~ get ~
- driver.outerbox ~ driver.rect.ht ~
- driver.linkmargin ~ 2 ~ mul ~ add ~ add ~
- 1 ~ exch ~ put
- /driver.currentrect ~ exch ~ def ~
- driver.breaklink.write
- {
- driver.currentrect ~
- dup ~
- driver.outerbox ~ 0 ~ get ~
- driver.linkmargin ~ sub ~
- 0 ~ exch ~ put ~
- dup ~
- driver.outerbox ~ 2 ~ get ~
- driver.linkmargin ~ add ~
- 2 ~ exch ~ put ~
- dup ~ dup ~
- 1 ~ get ~
- driver.baselineskip ~ add ~
- 1 ~ exch ~ put ~
- dup ~ dup ~
- 3 ~ get ~
- driver.baselineskip ~ add ~
- 3 ~ exch ~ put ~
- /driver.currentrect ~ exch ~ def ~
- driver.breaklink.write
- }
- 1 ~ index ~ 3 ~ get ~
- driver.linkmargin ~ 2 ~ mul ~ add ~
- driver.outerbox ~ driver.rect.ht ~ add ~
- 2 ~ index ~ 1 ~ get ~ sub ~
- driver.baselineskip ~ div ~ round ~ cvi ~ 1 ~ sub ~
- exch ~
- repeat ~
- driver.currentrect ~
- dup ~
- driver.outerbox ~ 0 ~ get ~
- driver.linkmargin ~ sub ~
- 0 ~ exch ~ put ~
- dup ~ dup ~
- 1 ~ get ~
- driver.baselineskip ~ add ~
- 1 ~ exch ~ put ~
- dup ~ dup ~
- 3 ~ get ~
- driver.baselineskip ~ add ~
- 3 ~ exch ~ put ~
- dup ~ 2 ~ index ~ 2 ~ get ~ 2 ~ exch ~ put
- /driver.currentrect ~ exch ~ def ~
- driver.breaklink.write ~
- SDict /driver.pdfmark.good ~ false ~ put ~
- exit
- }
- { driver.count ~ 2 ~ sub /driver.count ~ exch ~ def }
- ifelse
- }
- loop
- }
- if
- /ANN
- }
- def
- /driver.breaklink.write
- {
- counttomark ~ 1 ~ sub ~
- index /_objdef ~ eq
- {
- counttomark ~ -2 ~ roll ~
- dup ~ wcheck ~
- {
- readonly ~
- counttomark ~ 2 ~ roll
- }
- { pop ~ pop }
- ifelse
- }
- if ~
- counttomark ~ 1 ~ add ~ copy ~
- pop ~ driver.currentrect
- /ANN ~ pdfmark
- }
- def
- }
-\__driver_postscript_header:n
- {
- /driver.pdfmark
- {
- SDict /driver.pdfmark.good ~ true ~ put ~
- dup /ANN ~ eq
- {
- driver.pdfmark.store ~
- driver.pdfmark.dict ~
- begin ~
- Subtype /Link ~ eq ~
- currentdict /Rect ~ known ~ and ~
- SDict /driver.outerbox ~ known ~ and ~
- SDict /driver.baselineskip ~ known ~ and ~
- {
- Rect ~ 3 ~ get ~
- driver.linkmargin ~ 2 ~ mul ~ add ~
- driver.outerbox ~ driver.rect.ht ~ add ~
- Rect ~ 1 ~ get ~ sub ~
- driver.baselineskip ~ div ~ round ~ cvi ~ 0 ~ gt
- { driver.breaklink }
- if
- }
- if ~
- end ~
- SDict /driver.outerbox ~ undef ~
- SDict /driver.baselineskip ~ undef ~
- currentdict /driver.pdfmark.dict ~ undef ~
- }
- if ~
- driver.pdfmark.good
- { pdfmark }
- { cleartomark }
- ifelse
- }
- def
- /driver.pdfmark.store
- {
- /driver.pdfmark.dict ~ 65534 ~ dict ~ def ~
- counttomark ~ 1 ~ add ~ copy ~
- pop
- {
- dup ~ mark ~ eq
- {
- pop ~
- exit
- }
- {
- driver.pdfmark.dict ~
- begin ~ def ~ end
- }
- ifelse
- }
- loop
- }
- def
- }
-\box_new:N \l__driver_pdf_content_box
-\box_new:N \l__driver_pdf_model_box
-\int_new:N \g__driver_pdf_annotation_int
-\cs_new_protected:Npn \driver_pdf_annotation:nnnn #1#2#3#4
- {
- \__driver_pdf_annotation:nnnn {#1} {#2} {#3} {#4}
- \int_gincr:N \g__driver_pdf_object_int
- \int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int
- \__driver_pdfmark:x
- {
-
- /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
- driver.rect ~
- #4 ~
- /ANN
- }
- }
-\cs_new_protected:Npn \__driver_pdf_annotation:nnnn #1#2#3#4
- {
- \box_move_down:nn {#3}
- { \hbox:n { \__driver_postscript:n { driver.save.ll } } }
- \hbox:n {#4}
- \box_move_up:nn {#2}
- {
- \hbox:n
- {
- \tex_kern:D \dim_eval:n {#1} \scan_stop:
- \__driver_postscript:n { driver.save.ur }
- }
- }
- \int_gincr:N \g__driver_pdf_object_int
- \int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int
- \__driver_pdfmark:x
- {
- /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
- driver.rect
- /ANN
- }
- }
-\cs_new:Npn \driver_pdf_annotation_last:
- { { driver.obj \int_use:N \g__driver_pdf_annotation_int } }
-\int_new:N \g__driver_pdf_link_int
-\tl_new:N \g__driver_pdf_link_dict_tl
-\int_new:N \g__driver_pdf_link_sf_int
-\bool_new:N \g__driver_pdf_link_math_bool
-\bool_new:N \g__driver_pdf_link_bool
-\tl_new:N \l__driver_breaklink_pdfmark_tl
-\tl_set:Nn \l__driver_breaklink_pdfmark_tl { pdfmark }
-\cs_new_protected:Npn \__driver_breaklink_postscript:n #1 { }
-\cs_new_eq:NN \__driver_breaklink_usebox:N \box_use:N
-\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
- { \__driver_pdf_link_begin:nw { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
-\cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
- { \__driver_pdf_link_begin:nw {#1#2} }
-\cs_new_protected:Npn \__driver_pdf_link_begin:nw #1
- {
- \bool_if:NF \g__driver_pdf_link_bool
- { \__driver_pdf_link_begin_aux:nw {#1} }
- }
-\cs_new_protected:Npn \__driver_pdf_link_begin_aux:nw #1
- {
- \bool_gset_true:N \g__driver_pdf_link_bool
- \__driver_postscript:n
- { /driver.link.dict ( #1 ) def }
- \tl_gset:Nn \g__driver_pdf_link_dict_tl {#1}
- \__driver_pdf_link_sf_save:
- \mode_if_math:TF
- { \bool_gset_true:N \g__driver_pdf_link_math_bool }
- { \bool_gset_false:N \g__driver_pdf_link_math_bool }
- \hbox_set:Nw \l__driver_pdf_content_box
- \__driver_pdf_link_sf_restore:
- \bool_if:NT \g__driver_pdf_link_math_bool
- { \c_math_toggle_token }
- }
-\cs_new_protected:Npn \driver_pdf_link_end:
- {
- \bool_if:NT \g__driver_pdf_link_bool
- { \__driver_pdf_link_end: }
- }
-\cs_new_protected:Npn \__driver_pdf_link_end:
- {
- \bool_if:NT \g__driver_pdf_link_math_bool
- { \c_math_toggle_token }
- \__driver_pdf_link_sf_save:
- \hbox_set_end:
- \__driver_pdf_link_minima:
- \hbox_set:Nn \l__driver_pdf_model_box { Gg }
- \exp_args:Nx \__driver_driver_link_outerbox:n
- {
- \int_if_odd:nTF { \value { page } }
- { \oddsidemargin }
- { \evensidemargin }
- }
- \box_move_down:nn { \box_dp:N \l__driver_pdf_content_box }
- { \hbox:n { \__driver_postscript:n { driver.save.linkll } } }
- \__driver_breaklink_postscript:n { driver.bordertracking.begin }
- \__driver_breaklink_usebox:N \l__driver_pdf_content_box
- \__driver_breaklink_postscript:n { driver.bordertracking.end }
- \box_move_up:nn { \box_ht:N \l__driver_pdf_content_box }
- {
- \hbox:n
- { \__driver_postscript:n { driver.save.linkur } }
- }
- \int_gincr:N \g__driver_pdf_object_int
- \int_gset_eq:NN \g__driver_pdf_link_int \g__driver_pdf_object_int
- \__driver_postscript:x
- {
- mark
- /_objdef { driver.obj \int_use:N \g__driver_pdf_link_int }
- \g__driver_pdf_link_dict_tl \c_space_tl
- driver.rect
- /ANN ~ \l__driver_breaklink_pdfmark_tl
- }
- \__driver_pdf_link_sf_restore:
- \bool_gset_false:N \g__driver_pdf_link_bool
- }
-\cs_new_protected:Npn \__driver_pdf_link_minima:
- {
- \hbox_set:Nn \l__driver_pdf_model_box { Gg }
- \__driver_postscript:x
- {
- /driver.linkdp.pad ~
- \dim_to_decimal:n
- {
- \dim_max:nn
- {
- \box_dp:N \l__driver_pdf_model_box
- - \box_dp:N \l__driver_pdf_content_box
- }
- { 0pt }
- } ~
- driver.pt.dvi ~ def
- /driver.linkht.pad ~
- \dim_to_decimal:n
- {
- \dim_max:nn
- {
- \box_ht:N \l__driver_pdf_model_box
- - \box_ht:N \l__driver_pdf_content_box
- }
- { 0pt }
- } ~
- driver.pt.dvi ~ def
- }
- }
-\cs_new_protected:Npn \__driver_driver_link_outerbox:n #1
- {
- \__driver_postscript:x
- {
- /driver.outerbox
- [
- \dim_to_decimal:n {#1} ~
- \dim_to_decimal:n { -\box_dp:N \l__driver_pdf_model_box } ~
- \dim_to_decimal:n { #1 + \textwidth } ~
- \dim_to_decimal:n { \box_ht:N \l__driver_pdf_model_box }
- ]
- [ exch { driver.pt.dvi } forall ] def
- /driver.baselineskip ~
- \dim_to_decimal:n { \tex_baselineskip:D } ~ dup ~ 0 ~ gt
- { driver.pt.dvi ~ def }
- { pop ~ pop }
- ifelse
- }
- }
-\cs_new_protected:Npn \__driver_pdf_link_sf_save:
- {
- \int_gset:Nn \g__driver_pdf_link_sf_int
- {
- \mode_if_horizontal:TF
- { \tex_spacefactor:D }
- { 0 }
- }
- }
-\cs_new_protected:Npn \__driver_pdf_link_sf_restore:
- {
- \mode_if_horizontal:T
- {
- \int_compare:nNnT \g__driver_pdf_link_sf_int > { 0 }
- { \int_set_eq:NN \tex_spacefactor:D \g__driver_pdf_link_sf_int }
- }
- }
-\use_none:n
- {
- \cs_if_exist:NT \@makecol@hook
- {
- \tl_put_right:Nn \@makecol@hook
- {
- \box_if_empty:NF \@cclv
- {
- \vbox_set:Nn \@cclv
- {
- \__driver_postscript:n
- {
- driver.globaldict /driver.brokenlink.rect ~ known
- { driver.bordertracking.continue }
- if
- }
- \vbox_unpack_drop:N \@cclv
- \__driver_postscript:n
- { driver.bordertracking.endpage }
- }
- }
- }
- \tl_set:Nn \l__driver_breaklink_pdfmark_tl { driver.pdfmark }
- \cs_set_eq:NN \__driver_breaklink_postscript:n \__driver_postscript:n
- \cs_set_eq:NN \__driver_breaklink_usebox:N \hbox_unpack:N
- }
- }
-\cs_new:Npn \driver_pdf_link_last:
- { { driver.obj \int_use:N \g__driver_pdf_link_int } }
-\cs_new_protected:Npn \driver_pdf_link_margin:n #1
- {
- \__driver_postscript:x
- {
- /driver.linkmargin { \dim_to_decimal:n {#1} ~ driver.pt.dvi } def
- }
- }
-\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
- {
- \__driver_postscript:n { driver.dest.anchor }
- \__driver_pdfmark:x
- {
- /View
- [
- \str_case:nnF {#2}
- {
- { xyz } { /XYZ ~ driver.dest.point ~ null }
- { fit } { /Fit }
- { fitb } { /FitB }
- { fitbh } { /FitBH ~ driver.dest.y }
- { fitbv } { /FitBV ~ driver.dest.x }
- { fith } { /FitH ~ driver.dest.y }
- { fitv } { /FitV ~ driver.dest.x }
- }
- {
- /XYZ ~ driver.dest.point ~ \fp_eval:n { (#2) / 100 }
- }
- ]
- /Dest ( \exp_not:n {#1} ) cvn
- /DEST
- }
- }
-\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
- {
- \group_begin:
- \hbox_set:Nn \l__driver_internal_box {#2}
- \box_move_down:nn
- { \box_dp:N \l__driver_internal_box }
- { \hbox:n { \__driver_postscript:n { driver.save.ll } } }
- \box_use:N \l__driver_internal_box
- \box_move_up:nn
- { \box_ht:N \l__driver_internal_box }
- { \hbox:n { \__driver_postscript:n { driver.save.ur } } }
- \__driver_pdfmark:n
- {
- /View
- [
- /FitR ~
- driver.llx ~ driver.lly ~ driver.dest2device ~
- driver.urx ~ driver.ury ~ driver.dest2device
- ]
- /Dest ( #1 ) cvn
- /DEST
- }
- \group_end:
- }
-\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { }
-\cs_new_protected:Npn \driver_pdf_compress_objects:n #1 { }
-\cs_new_protected:Npn \driver_pdf_version_major_gset:n #1 { }
-\cs_new_protected:Npn \driver_pdf_version_minor_gset:n #1 { }
-\cs_new:Npn \driver_pdf_version_major: { -1 }
-\cs_new:Npn \driver_pdf_version_minor: { -1 }
-%%
-%%
-%% End of file `l3dvips.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
deleted file mode 100644
index fb15c593f01..00000000000
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
+++ /dev/null
@@ -1,487 +0,0 @@
-%%
-%% This is file `l3dvisvgm.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3drivers.dtx (with options: `package,dvisvgm')
-%% l3drivers-basics.dtx (with options: `package,dvisvgm')
-%% l3drivers-color.dtx (with options: `package,dvisvgm')
-%% l3drivers-box.dtx (with options: `package,dvisvgm')
-%% l3drivers-draw.dtx (with options: `package,dvisvgm')
-%% l3drivers-graphics.dtx (with options: `package,dvisvgm')
-%% l3drivers-pdf.dtx (with options: `package,dvisvgm')
-%%
-%% Copyright (C) 1990-2019 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:
-%%
-%% https://www.latex-project.org/lppl.txt
-%%
-%% 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
-%% File: l3drivers-basics.dtx
-\ProvidesExplFile
- {l3dvisvgm.def}{2019-04-06}{}
- {L3 Experimental driver: dvisvgm}
-\cs_new_eq:NN \__driver_literal:e \tex_special:D
-\cs_new_protected:Npn \__driver_literal:n #1
- { \__driver_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__driver_literal:n { x }
-\box_new:N \l__driver_internal_box
-\cs_new_protected:Npn \__driver_literal_svg:n #1
- { \__driver_literal:n { dvisvgm:raw~ #1 { ?nl } } }
-\cs_generate_variant:Nn \__driver_literal_svg:n { x }
-\cs_new_protected:Npn \__driver_scope_begin:
- { \__driver_literal_svg:n { <g> } }
-\cs_new_protected:Npn \__driver_scope_end:
- { \__driver_literal_svg:n { </g> } }
-\cs_new_protected:Npn \__driver_scope_begin:n #1
- { \__driver_literal_svg:n { <g~ #1 > } }
-\cs_generate_variant:Nn \__driver_scope_begin:n { x }
-%% File: l3drivers-color.dtx
-\cs_new_protected:Npn \driver_color_pickup:N #1 { }
-\AtBeginDocument
- {
- \@ifpackageloaded { color }
- {
- \cs_set_protected:Npn \driver_color_pickup:N #1
- {
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- spot ~
- \exp_after:wN \use:n \current@color \c_space_tl 1
- }
- }
- {
- \exp_last_unbraced:Nx \__driver_color_pickup:w
- { \current@color } \q_stop #1
- }
- }
- \cs_new_protected:Npn \__driver_color_pickup:w #1 ~ #2 \q_stop #3
- { \tl_set:Nn #3 { #1 ~ #2 } }
- }
- { }
- }
-\cs_new_protected:Npn \driver_color_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:x
- {
- cmyk~
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4}
- }
- }
-\cs_new_protected:Npn \driver_color_gray:n #1
- { \__driver_color_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \driver_color_rgb:nnn #1#2#3
- {
- \__driver_color_select:x
- { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
- }
-\cs_new_protected:Npn \driver_color_spot:nn #1#2
- { \__driver_color_select:n { #1 } }
-\cs_new_protected:Npn \__driver_color_select:n #1
- {
- \__driver_literal:n { color~push~ #1 }
- \group_insert_after:N \__driver_color_reset:
- }
-\cs_generate_variant:Nn \__driver_color_select:n { x }
-\cs_new_protected:Npn \__driver_color_reset:
- { \__driver_literal:n { color~pop } }
-%% File: l3drivers-box.dtx
-\cs_new_protected:Npn \driver_box_use_clip:N #1
- {
- \int_gincr:N \g__driver_clip_path_int
- \__driver_literal_svg:x
- { < clipPath~id = " l3cp \int_use:N \g__driver_clip_path_int " > }
- \__driver_literal_svg:x
- {
- <
- path ~ d =
- "
- M ~ 0 ~
- \dim_to_decimal:n { -\box_dp:N #1 } ~
- L ~ \dim_to_decimal:n { \box_wd:N #1 } ~
- \dim_to_decimal:n { -\box_dp:N #1 } ~
- L ~ \dim_to_decimal:n { \box_wd:N #1 } ~
- \dim_to_decimal:n { \box_ht:N #1 + \box_dp:N #1 } ~
- L ~ 0 ~
- \dim_to_decimal:n { \box_ht:N #1 + \box_dp:N #1 } ~
- Z
- "
- />
- }
- \__driver_literal_svg:n
- { < /clipPath > }
- \__driver_scope_begin:n
- {
- transform =
- "
- translate ( { ?x } , { ?y } ) ~
- scale ( 1 , -1 )
- "
- }
- \__driver_scope_begin:x
- {
- clip-path =
- "url ( \c_hash_str l3cp \int_use:N \g__driver_clip_path_int ) "
- }
- \__driver_scope_begin:n
- {
- transform =
- "
- scale ( -1 , 1 ) ~
- translate ( { ?x } , { ?y } ) ~
- scale ( -1 , -1 )
- "
- }
- \box_use:N #1
- \__driver_scope_end:
- \__driver_scope_end:
- \__driver_scope_end:
- }
-\int_new:N \g__driver_clip_path_int
-\cs_new_protected:Npn \driver_box_use_rotate:Nn #1#2
- {
- \__driver_scope_begin:x
- {
- transform =
- "
- rotate
- ( \fp_eval:n { round ( -(#2) , 5 ) } , ~ { ?x } , ~ { ?y } )
- "
- }
- \box_use:N #1
- \__driver_scope_end:
- }
-\cs_new_protected:Npn \driver_box_use_scale:Nnn #1#2#3
- {
- \__driver_scope_begin:x
- {
- transform =
- "
- translate ( { ?x } , { ?y } ) ~
- scale
- (
- \fp_eval:n { round ( -#2 , 5 ) } ,
- \fp_eval:n { round ( -#3 , 5 ) }
- ) ~
- translate ( { ?x } , { ?y } ) ~
- scale ( -1 )
- "
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- }
-%% File: l3drivers-draw.dtx
-\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_svg:n
-\cs_generate_variant:Nn \__driver_draw_literal:n { x }
-\cs_new_protected:Npn \driver_draw_begin:
- {
- \driver_draw_scope_begin:
- \__driver_draw_scope:n { transform="translate({?x},{?y})~scale(1,-1)" }
- }
-\cs_new_protected:Npn \driver_draw_end:
- { \driver_draw_scope_end: }
-\cs_new_protected:Npn \driver_draw_scope_begin:
- {
- \int_set_eq:NN
- \l__driver_draw_scope_int
- \g__driver_draw_scope_int
- \group_begin:
- \int_gzero:N \g__driver_draw_scope_int
- }
-\cs_new_protected:Npn \driver_draw_scope_end:
- {
- \prg_replicate:nn
- { \g__driver_draw_scope_int }
- { \__driver_draw_literal:n { </g> } }
- \group_end:
- \int_gset_eq:NN
- \g__driver_draw_scope_int
- \l__driver_draw_scope_int
- }
-\cs_new_protected:Npn \__driver_draw_scope:n #1
- {
- \__driver_draw_literal:n { <g~ #1 > }
- \int_gincr:N \g__driver_draw_scope_int
- }
-\cs_generate_variant:Nn \__driver_draw_scope:n { x }
-\int_new:N \g__driver_draw_scope_int
-\int_new:N \l__driver_draw_scope_int
-\cs_new_protected:Npn \driver_draw_moveto:nn #1#2
- {
- \__driver_draw_add_to_path:n
- { M ~ \dim_to_decimal:n {#1} ~ \dim_to_decimal:n {#2} }
- }
-\cs_new_protected:Npn \driver_draw_lineto:nn #1#2
- {
- \__driver_draw_add_to_path:n
- { L ~ \dim_to_decimal:n {#1} ~ \dim_to_decimal:n {#2} }
- }
-\cs_new_protected:Npn \driver_draw_rectangle:nnnn #1#2#3#4
- {
- \__driver_draw_add_to_path:n
- {
- M ~ \dim_to_decimal:n {#1} ~ \dim_to_decimal:n {#2}
- h ~ \dim_to_decimal:n {#3} ~
- v ~ \dim_to_decimal:n {#4} ~
- h ~ \dim_to_decimal:n { -#3 } ~
- Z
- }
- }
-\cs_new_protected:Npn \driver_draw_curveto:nnnnnn #1#2#3#4#5#6
- {
- \__driver_draw_add_to_path:n
- {
- C ~
- \dim_to_decimal:n {#1} ~ \dim_to_decimal:n {#2} ~
- \dim_to_decimal:n {#3} ~ \dim_to_decimal:n {#4} ~
- \dim_to_decimal:n {#5} ~ \dim_to_decimal:n {#6}
- }
- }
-\cs_new_protected:Npn \__driver_draw_add_to_path:n #1
- {
- \tl_gset:Nx \g__driver_draw_path_tl
- {
- \g__driver_draw_path_tl
- \tl_if_empty:NF \g__driver_draw_path_tl { \c_space_tl }
- #1
- }
- }
-\tl_new:N \g__driver_draw_path_tl
-\cs_new_protected:Npn \driver_draw_evenodd_rule:
- { \__driver_draw_scope:n { fill-rule="evenodd" } }
-\cs_new_protected:Npn \driver_draw_nonzero_rule:
- { \__driver_draw_scope:n { fill-rule="nonzero" } }
-\cs_new_protected:Npn \driver_draw_closepath:
- { \__driver_draw_add_to_path:n { Z } }
-\cs_new_protected:Npn \__driver_draw_path:n #1
- {
- \bool_if:NTF \g__driver_draw_clip_bool
- {
- \int_gincr:N \g__driver_clip_path_int
- \__driver_draw_literal:x
- {
- < clipPath~id = " l3cp \int_use:N \g__driver_clip_path_int " >
- { ?nl }
- <path~d=" \g__driver_draw_path_tl "/> { ?nl }
- < /clipPath > { ? nl }
- <
- use~xlink:href =
- "\c_hash_str l3path \int_use:N \g__driver_path_int " ~
- #1
- />
- }
- \__driver_draw_scope:x
- {
- clip-path =
- "url( \c_hash_str l3cp \int_use:N \g__driver_clip_path_int)"
- }
- }
- {
- \__driver_draw_literal:x
- { <path ~ d=" \g__driver_draw_path_tl " ~ #1 /> }
- }
- \tl_gclear:N \g__driver_draw_path_tl
- \bool_gset_false:N \g__driver_draw_clip_bool
- }
-\int_new:N \g__driver_path_int
-\cs_new_protected:Npn \driver_draw_stroke:
- { \__driver_draw_path:n { style="fill:none" } }
-\cs_new_protected:Npn \driver_draw_closestroke:
- {
- \driver_draw_closepath:
- \driver_draw_stroke:
- }
-\cs_new_protected:Npn \driver_draw_fill:
- { \__driver_draw_path:n { style="stroke:none" } }
-\cs_new_protected:Npn \driver_draw_fillstroke:
- { \__driver_draw_path:n { } }
-\cs_new_protected:Npn \driver_draw_clip:
- { \bool_gset_true:N \g__driver_draw_clip_bool }
-\bool_new:N \g__driver_draw_clip_bool
-\cs_new_protected:Npn \driver_draw_discardpath:
- {
- \bool_if:NT \g__driver_draw_clip_bool
- {
- \int_gincr:N \g__driver_clip_path_int
- \__driver_draw_literal:x
- {
- < clipPath~id = " l3cp \int_use:N \g__driver_clip_path_int " >
- { ?nl }
- <path~d=" \g__driver_draw_path_tl "/> { ?nl }
- < /clipPath >
- }
- \__driver_draw_scope:x
- {
- clip-path =
- "url( \c_hash_str l3cp \int_use:N \g__driver_clip_path_int)"
- }
- }
- \tl_gclear:N \g__driver_draw_path_tl
- \bool_gset_false:N \g__driver_draw_clip_bool
- }
-\cs_new_protected:Npn \driver_draw_dash_pattern:nn #1#2
- {
- \use:x
- {
- \__driver_draw_dash_aux:nn
- { \clist_map_function:nn {#1} \__driver_draw_dash:n }
- { \dim_to_decimal:n {#2} }
- }
- }
-\cs_new:Npn \__driver_draw_dash:n #1
- { , \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \__driver_draw_dash_aux:nn #1#2
- {
- \__driver_draw_scope:x
- {
- stroke-dasharray =
- "
- \tl_if_empty:oTF { \use_none:n #1 }
- { none }
- { \use_none:n #1 }
- " ~
- stroke-offset=" #2 "
- }
- }
-\cs_new_protected:Npn \driver_draw_linewidth:n #1
- { \__driver_draw_scope:x { stroke-width=" \dim_to_decimal:n {#1} " } }
-\cs_new_protected:Npn \driver_draw_miterlimit:n #1
- { \__driver_draw_scope:x { stroke-miterlimit=" \fp_eval:n {#1} " } }
-\cs_new_protected:Npn \driver_draw_cap_butt:
- { \__driver_draw_scope:n { stroke-linecap="butt" } }
-\cs_new_protected:Npn \driver_draw_cap_round:
- { \__driver_draw_scope:n { stroke-linecap="round" } }
-\cs_new_protected:Npn \driver_draw_cap_rectangle:
- { \__driver_draw_scope:n { stroke-linecap="square" } }
-\cs_new_protected:Npn \driver_draw_join_miter:
- { \__driver_draw_scope:n { stroke-linejoin="miter" } }
-\cs_new_protected:Npn \driver_draw_join_round:
- { \__driver_draw_scope:n { stroke-linejoin="round" } }
-\cs_new_protected:Npn \driver_draw_join_bevel:
- { \__driver_draw_scope:n { stroke-linejoin="bevel" } }
-\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
- {
- \use:x
- {
- \__driver_draw_color_fill:nnn
- { \fp_eval:n { -100 * ( (#1) * ( 1 - (#4) ) - 1 ) } }
- { \fp_eval:n { -100 * ( (#2) * ( 1 - (#4) ) + #4 - 1 ) } }
- { \fp_eval:n { -100 * ( (#3) * ( 1 - (#4) ) + #4 - 1 ) } }
- }
- }
-\cs_new_eq:NN \driver_draw_color_stroke_cmyk:nnnn \driver_color_cmyk:nnnn
-\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
- {
- \use:x
- {
- \__driver_draw_color_gray_aux:n
- { \fp_eval:n { 100 * (#1) } }
- }
- }
-\cs_new_protected:Npn \__driver_draw_color_gray_aux:n #1
- { \__driver_draw_color_fill:nnn {#1} {#1} {#1} }
-\cs_new_eq:NN \driver_draw_color_stroke_gray:n \driver_color_gray:n
-\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
- {
- \use:x
- {
- \__driver_draw_color_fill:nnn
- { \fp_eval:n { 100 * (#1) } }
- { \fp_eval:n { 100 * (#2) } }
- { \fp_eval:n { 100 * (#3) } }
- }
- }
-\cs_new_protected:Npn \__driver_draw_color_fill:nnn #1#2#3
- {
- \__driver_draw_scope:x
- {
- fill =
- "
- rgb
- (
- #1 \c_percent_str ,
- #2 \c_percent_str ,
- #3 \c_percent_str
- )
- "
- }
- }
-\cs_new_eq:NN \driver_draw_color_stroke_rgb:nnn \driver_color_rgb:nnn
-\cs_new_protected:Npn \driver_draw_cm:nnnn #1#2#3#4
- {
- \__driver_draw_scope:n
- {
- transform =
- "
- matrix
- (
- \fp_eval:n {#1} , \fp_eval:n {#2} ,
- \fp_eval:n {#3} , \fp_eval:n {#4} ,
- 0pt , 0pt
- )
- "
- }
- }
-\cs_new_protected:Npn \driver_draw_box_use:Nnnnn #1#2#3#4#5#6#7
- {
- \__driver_scope_begin:
- \driver_draw_cm:nnnn {#2} {#3} {#4} {#5}
- \__driver_literal_svg:n
- {
- < g~
- stroke="none"~
- transform="scale(-1,1)~translate({?x},{?y})~scale(-1,-1)"
- >
- }
- \box_set_wd:Nn #1 { 0pt }
- \box_set_ht:Nn #1 { 0pt }
- \box_set_dp:Nn #1 { 0pt }
- \box_use:N #1
- \__driver_literal_svg:n { </g> }
- \__driver_scope_end:
- }
-%% File: l3drivers-graphics.dtx
-\AtBeginDocument
- {
- \cs_new_eq:NN \driver_graphics_getbb_png:n \graphics_extract_bb:n
- \cs_new_eq:NN \driver_graphics_getbb_jpg:n \graphics_extract_bb:n
- }
-\cs_new_protected:Npn \driver_graphics_include_png:n #1
- {
- \__driver_literal:x
- {
- dvisvgm:img~
- \dim_to_decimal:n { \l_graphics_ury_dim } ~
- \dim_to_decimal:n { \l_graphics_ury_dim } ~
- \__driver_graphics_include_bitmap_quote:w #1 " #1 " \q_stop
- }
- }
-\cs_new_eq:NN \driver_graphics_include_jpg:n \driver_graphics_include_png:n
-\cs_new:Npn \__driver_graphics_include_bitmap_quote:w #1 " #2 " #3 \q_stop
- { " #2 " }
-%% File: l3drivers-pdf.dtx
-\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 { }
-\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 { }
-\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2 { }
-\cs_new:Npn \driver_pdf_object_ref:n #1 { }
-\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { }
-\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { }
-\cs_new_protected:Npn \driver_pdf_compress_objects:n #1 { }
-\cs_new_protected:Npn \driver_pdf_version_major_gset:n #1 { }
-\cs_new_protected:Npn \driver_pdf_version_minor_gset:n #1 { }
-\cs_new:Npn \driver_pdf_version_major: { -1 }
-\cs_new:Npn \driver_pdf_version_minor: { -1 }
-%%
-%%
-%% End of file `l3dvisvgm.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
deleted file mode 100644
index 3afb54a6b05..00000000000
--- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
+++ /dev/null
@@ -1,690 +0,0 @@
-%%
-%% This is file `l3pdfmode.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3drivers.dtx (with options: `package,pdfmode')
-%% l3drivers-basics.dtx (with options: `package,pdfmode')
-%% l3drivers-color.dtx (with options: `package,pdfmode')
-%% l3drivers-box.dtx (with options: `package,pdfmode')
-%% l3drivers-draw.dtx (with options: `package,pdfmode')
-%% l3drivers-graphics.dtx (with options: `package,pdfmode')
-%% l3drivers-pdf.dtx (with options: `package,pdfmode')
-%%
-%% Copyright (C) 1990-2019 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:
-%%
-%% https://www.latex-project.org/lppl.txt
-%%
-%% 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
-%% File: l3drivers-basics.dtx
-\ProvidesExplFile
- {l3pdfmode.def}{2019-04-06}{}
- {L3 Experimental driver: PDF mode}
-\cs_new_eq:NN \__driver_literal:e \tex_special:D
-\cs_new_protected:Npn \__driver_literal:n #1
- { \__driver_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__driver_literal:n { x }
-\box_new:N \l__driver_internal_box
-\cs_new_protected:Npx \__driver_literal_pdf:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D literal }
- { \tex_pdfliteral:D }
- { \exp_not:N \exp_not:n {#1} }
- }
-\cs_generate_variant:Nn \__driver_literal_pdf:n { x }
-\cs_new_protected:Npx \__driver_scope_begin:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D save \scan_stop: }
- { \tex_pdfsave:D }
- }
-\cs_new_protected:Npx \__driver_scope_end:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D restore \scan_stop: }
- { \tex_pdfrestore:D }
- }
-\cs_new_protected:Npx \__driver_matrix:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D setmatrix }
- { \tex_pdfsetmatrix:D }
- { \exp_not:N \exp_not:n {#1} }
- }
-\cs_generate_variant:Nn \__driver_matrix:n { x }
-%% File: l3drivers-color.dtx
-\cs_new_protected:Npn \driver_color_pickup:N #1 { }
-\AtBeginDocument
- {
- \@ifpackageloaded { color }
- {
- \cs_set_protected:Npn \driver_color_pickup:N #1
- {
- \exp_last_unbraced:Nx \__driver_color_pickup:w
- { \current@color } ~ 0 ~ 0 ~ 0 \q_stop #1
- }
- \cs_new_protected:Npn \__driver_color_pickup:w
- #1 ~ #2 ~ #3 ~ #4 ~ #5 ~ #6 \q_stop #7
- {
- \str_if_eq:nnTF {#2} { g }
- { \tl_set:Nn #7 { gray ~ #1 } }
- {
- \str_if_eq:nnTF {#4} { rg }
- { \tl_set:Nn #7 { rgb ~ #1 ~ #2 ~ #3 } }
- {
- \str_if_eq:nnTF {#5} { k }
- { \tl_set:Nn #7 { cmyk ~ #1 ~ #2 ~ #3 ~ #4 } }
- {
- \str_if_eq:nnTF {#2} { cs }
- {
- \tl_set:Nx #7 { spot ~ \use_none:n #1 ~ #5 }
- }
- {
- \tl_set:Nn #7 { gray ~ 0 }
- }
- }
- }
- }
- }
- }
- { }
- }
-\int_new:N \l__driver_color_stack_int
-\cs_new_protected:Npn \driver_color_cmyk:nnnn #1#2#3#4
- {
- \use:x
- {
- \__driver_color_cmyk:nnnn
- { \fp_eval:n {#1} }
- { \fp_eval:n {#2} }
- { \fp_eval:n {#3} }
- { \fp_eval:n {#4} }
- }
- }
-\cs_new_protected:Npn \__driver_color_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:n
- { #1 ~ #2 ~ #3 ~ #4 ~ k ~ #1 ~ #2 ~ #3 ~ #4 ~ K }
- }
-\cs_new_protected:Npn \driver_color_gray:n #1
- { \exp_args:Nx \__driver_color_gray:n { \fp_eval:n {#1} } }
-\cs_new_protected:Npn \__driver_color_gray:n #1
- { \__driver_color_select:n { #1 ~ g ~ #1 ~ G } }
-\cs_new_protected:Npn \driver_color_rgb:nnn #1#2#3
- {
- \use:x
- {
- \__driver_color_rgb:nnn
- { \fp_eval:n {#1} }
- { \fp_eval:n {#2} }
- { \fp_eval:n {#3} }
- }
- }
-\cs_new_protected:Npn \__driver_color_rgb:nnn #1#2#3
- { \__driver_color_select:n { #1 ~ #2 ~ #3 ~ rg ~ #1 ~ #2 ~ #3 ~ RG } }
-\cs_new_protected:Npn \driver_color_spot:nn #1#2
- { \__driver_color_select:n { /#1 ~ cs ~ /#1 ~ CS ~ #2 ~ sc ~ #2 ~ SC } }
-\cs_new_protected:Npx \__driver_color_select:n #1
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__driver_color_stack_int push {#1}
- \group_insert_after:N \exp_not:N \__driver_color_reset:
- }
-\cs_generate_variant:Nn \__driver_color_select:n { x }
-\cs_new_protected:Npx \__driver_color_reset:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D colorstack }
- { \tex_pdfcolorstack:D }
- \exp_not:N \l__driver_color_stack_int pop \scan_stop:
- }
-%% File: l3drivers-box.dtx
-\cs_new_protected:Npn \driver_box_use_clip:N #1
- {
- \__driver_scope_begin:
- \__driver_literal_pdf:x
- {
- 0~
- \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
- re~W~n
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- \skip_horizontal:n { \box_wd:N #1 }
- }
-\cs_new_protected:Npn \driver_box_use_rotate:Nn #1#2
- { \exp_args:NNf \__driver_box_use_rotate:Nn #1 { \fp_eval:n {#2} } }
-\cs_new_protected:Npn \__driver_box_use_rotate:Nn #1#2
- {
- \__driver_scope_begin:
- \box_set_wd:Nn #1 { 0pt }
- \fp_set:Nn \l__driver_cos_fp { round ( cosd ( #2 ) , 5 ) }
- \fp_compare:nNnT \l__driver_cos_fp = \c_zero_fp
- { \fp_zero:N \l__driver_cos_fp }
- \fp_set:Nn \l__driver_sin_fp { round ( sind ( #2 ) , 5 ) }
- \__driver_matrix:x
- {
- \fp_use:N \l__driver_cos_fp \c_space_tl
- \fp_compare:nNnTF \l__driver_sin_fp = \c_zero_fp
- { 0~0 }
- {
- \fp_use:N \l__driver_sin_fp
- \c_space_tl
- \fp_eval:n { -\l__driver_sin_fp }
- }
- \c_space_tl
- \fp_use:N \l__driver_cos_fp
- }
- \box_use:N #1
- \__driver_scope_end:
- }
-\fp_new:N \l__driver_cos_fp
-\fp_new:N \l__driver_sin_fp
-\cs_new_protected:Npn \driver_box_use_scale:Nnn #1#2#3
- {
- \__driver_scope_begin:
- \__driver_matrix:x
- {
- \fp_eval:n { round ( #2 , 5 ) } ~
- 0~0~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- }
-%% File: l3drivers-draw.dtx
-\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_pdf:n
-\cs_generate_variant:Nn \__driver_draw_literal:n { x }
-\cs_new_protected:Npn \driver_draw_begin:
- { \driver_draw_scope_begin: }
-\cs_new_protected:Npn \driver_draw_end:
- { \driver_draw_scope_end: }
-\cs_new_eq:NN \driver_draw_scope_begin: \__driver_scope_begin:
-\cs_new_eq:NN \driver_draw_scope_end: \__driver_scope_end:
-\cs_new_protected:Npn \driver_draw_moveto:nn #1#2
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
- }
-\cs_new_protected:Npn \driver_draw_lineto:nn #1#2
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
- }
-\cs_new_protected:Npn \driver_draw_curveto:nnnnnn #1#2#3#4#5#6
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
- \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~
- c
- }
- }
-\cs_new_protected:Npn \driver_draw_rectangle:nnnn #1#2#3#4
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
- re
- }
- }
-\cs_new_protected:Npn \driver_draw_evenodd_rule:
- { \bool_gset_true:N \g__driver_draw_eor_bool }
-\cs_new_protected:Npn \driver_draw_nonzero_rule:
- { \bool_gset_false:N \g__driver_draw_eor_bool }
-\bool_new:N \g__driver_draw_eor_bool
-\cs_new_protected:Npn \driver_draw_closepath:
- { \__driver_draw_literal:n { h } }
-\cs_new_protected:Npn \driver_draw_stroke:
- { \__driver_draw_literal:n { S } }
-\cs_new_protected:Npn \driver_draw_closestroke:
- { \__driver_draw_literal:n { s } }
-\cs_new_protected:Npn \driver_draw_fill:
- {
- \__driver_draw_literal:x
- { f \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_fillstroke:
- {
- \__driver_draw_literal:x
- { B \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_clip:
- {
- \__driver_draw_literal:x
- { W \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_discardpath:
- { \__driver_draw_literal:n { n } }
-\cs_new_protected:Npn \driver_draw_dash_pattern:nn #1#2
- {
- \__driver_draw_literal:x
- {
- [
- \exp_args:Nf \use:n
- { \clist_map_function:nN {#1} \__driver_draw_dash:n }
- ] ~
- \dim_to_decimal_in_bp:n {#2} ~ d
- }
- }
-\cs_new:Npn \__driver_draw_dash:n #1
- { ~ \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \driver_draw_linewidth:n #1
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ w }
- }
-\cs_new_protected:Npn \driver_draw_miterlimit:n #1
- { \__driver_draw_literal:x { \fp_eval:n {#1} ~ M } }
-\cs_new_protected:Npn \driver_draw_cap_butt:
- { \__driver_draw_literal:n { 0 ~ J } }
-\cs_new_protected:Npn \driver_draw_cap_round:
- { \__driver_draw_literal:n { 1 ~ J } }
-\cs_new_protected:Npn \driver_draw_cap_rectangle:
- { \__driver_draw_literal:n { 2 ~ J } }
-\cs_new_protected:Npn \driver_draw_join_miter:
- { \__driver_draw_literal:n { 0 ~ j } }
-\cs_new_protected:Npn \driver_draw_join_round:
- { \__driver_draw_literal:n { 1 ~ j } }
-\cs_new_protected:Npn \driver_draw_join_bevel:
- { \__driver_draw_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_fill_select:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- k
- }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- k
- }
- }
-\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
- { \__driver_color_fill_select:x { \fp_eval:n {#1} ~ g } }
-\cs_new_protected:Npn \driver_draw_color_stroke_gray:n #1
- { \__driver_color_select:x { \fp_eval:n {#1} ~ G } }
-\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
- {
- \__driver_color_fill_select:x
- { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_rgb:nnn #1#2#3
- {
- \__driver_color_select:x
- { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG }
- }
-\cs_new_eq:NN \__driver_color_fill_select:n \__driver_color_select:n
-\cs_generate_variant:Nn \__driver_color_fill_select:n { x }
-\cs_new_protected:Npn \driver_draw_cm:nnnn #1#2#3#4
- {
- \__driver_matrix:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4}
- }
- }
-\cs_new_protected:Npn \driver_draw_box_use:Nnnnn #1#2#3#4#5
- {
- \__driver_scope_begin:
- \driver_draw_cm:nnnn {#2} {#3} {#4} {#5}
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- }
-%% File: l3drivers-graphics.dtx
-\tl_new:N \l__driver_graphics_attr_tl
-\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
- {
- \int_zero:N \l_graphics_page_int
- \tl_clear:N \l_graphics_pagebox_tl
- \tl_set:Nx \l__driver_graphics_attr_tl
- {
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { :D \l_graphics_decodearray_tl }
- \bool_if:NT \l_graphics_interpolate_bool
- { :I }
- }
- \tl_clear:N \l__driver_graphics_attr_tl
- \__driver_graphics_getbb_auxi:n {#1}
- }
-\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
-\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
- {
- \tl_clear:N \l_graphics_decodearray_tl
- \bool_set_false:N \l_graphics_interpolate_bool
- \tl_set:Nx \l__driver_graphics_attr_tl
- {
- : \l_graphics_pagebox_tl
- \int_compare:nNnT \l_graphics_page_int > 1
- { :P \int_use:N \l_graphics_page_int }
- }
- \__driver_graphics_getbb_auxi:n {#1}
- }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxi:n #1
- {
- \graphics_bb_restore:xF { #1 \l__driver_graphics_attr_tl }
- { \__driver_graphics_getbb_auxii:n {#1} }
- }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxii:n #1
- {
- \tex_immediate:D \tex_pdfximage:D
- \bool_lazy_or:nnT
- { \l_graphics_interpolate_bool }
- { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
- {
- attr ~
- {
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { /Decode~[ \l_graphics_decodearray_tl ] }
- \bool_if:NT \l_graphics_interpolate_bool
- { /Interpolate~true }
- }
- }
- \int_compare:nNnT \l_graphics_page_int > 0
- { page ~ \int_use:N \l_graphics_page_int }
- \tl_if_empty:NF \l_graphics_pagebox_tl
- { \l_graphics_pagebox_tl }
- {#1}
- \hbox_set:Nn \l__driver_internal_box
- { \tex_pdfrefximage:D \tex_pdflastximage:D }
- \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__driver_internal_box }
- \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__driver_internal_box }
- \int_const:cn { c__driver_graphics_ #1 \l__driver_graphics_attr_tl _int }
- { \tex_the:D \tex_pdflastximage:D }
- \graphics_bb_save:x { #1 \l__driver_graphics_attr_tl }
- }
-\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
- {
- \tex_pdfrefximage:D
- \int_use:c { c__driver_graphics_ #1 \l__driver_graphics_attr_tl _int }
- }
-\cs_new_eq:NN \driver_graphics_include_pdf:n \driver_graphics_include_jpg:n
-\cs_new_eq:NN \driver_graphics_include_png:n \driver_graphics_include_jpg:n
-\sys_if_shell:T
- {
- \str_new:N \l__driver_dir_str
- \str_new:N \l__driver_name_str
- \str_new:N \l__driver_ext_str
- \cs_new_protected:Npn \driver_graphics_getbb_eps:n #1
- {
- \file_parse_full_name:nNNN {#1}
- \l__driver_dir_str
- \l__driver_name_str
- \l__driver_ext_str
- \exp_args:Nx \__driver_graphics_getbb_eps:nn
- {
- \l__driver_name_str - \str_tail:N \l__driver_ext_str
- -converted-to.pdf
- }
- {#1}
- }
- \cs_new_protected:Npn \__driver_graphics_getbb_eps:nn #1#2
- {
- \file_compare_timestamp:nNnT {#2} > {#1}
- {
- \sys_shell_now:n
- { repstopdf ~ #2 ~ #1 }
- }
- \tl_set:Nn \l_graphics_name_tl {#1}
- \driver_graphics_getbb_pdf:n {#1}
- }
- \cs_new_protected:Npn \driver_graphics_include_eps:n #1
- {
- \file_parse_full_name:nNNN {#1}
- \l__driver_dir_str \l__driver_name_str \l__driver_ext_str
- \exp_args:Nx \driver_graphics_include_pdf:n
- {
- \l__driver_name_str - \str_tail:N \l__driver_ext_str
- -converted-to.pdf
- }
- }
- }
-%% File: l3drivers-pdf.dtx
-\cs_new_protected:Npx \driver_pdf_annotation:nnnn #1#2#3#4
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D annot ~ }
- { \tex_pdfannot:D }
- width ~ \exp_not:N \dim_eval:n {#1} ~
- height ~ \exp_not:N \dim_eval:n {#2} ~
- depth ~ \exp_not:N \dim_eval:n {#3} ~
- {#4}
- }
-\cs_new:Npx \driver_pdf_annotation_last:
- {
- \exp_not:N \tex_the:D
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D annot ~ }
- { \exp_not:N \tex_pdflastannot:D }
- 0 ~ R
- }
-\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
- { \__driver_pdf_link_begin:nnnw {#1} { goto~name } {#2} }
-\cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
- { \__driver_pdf_link_begin:nnnw {#1} { user } {#2} }
-\cs_new_protected:Npx \__driver_pdf_link_begin:nnnw #1#2#3
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D startlink ~ }
- { \tex_pdfstartlink:D }
- attr {#1}
- #2 {#3}
- }
-\cs_new_protected:Npx \driver_pdf_link_end:
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D endlink \scan_stop: }
- { \tex_pdfendlink:D }
- }
-\cs_new:Npx \driver_pdf_link_last:
- {
- \exp_not:N \tex_the:D
- \cs_if_exist:NTF \tex_pdffeedback:D
- { \exp_not:N \tex_pdffeedback:D lastlink \scan_stop: }
- { \exp_not:N \tex_pdflastlink:D }
- ~ 0 ~ R
- }
-\cs_new_protected:Npx \driver_pdf_link_margin:n #1
- {
- \cs_if_exist:NTF \tex_pdfvariable:D
- { \exp_not:N \tex_pdfvariable:D linkmargin }
- { \exp_not:N \tex_pdflinkmargin:D }
- \exp_not:N \dim_eval:n {#1} \scan_stop:
- }
-\cs_new_protected:Npx \driver_pdf_destination:nn #1#2
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \exp_not:N \tex_pdfextension:D dest ~ }
- { \exp_not:N \tex_pdfdest:D }
- name {#1}
- \exp_not:N \str_case:nnF {#2}
- {
- { xyz } { xyz }
- { fit } { fit }
- { fitb } { fitb }
- { fitbh } { fitbh }
- { fitbv } { fitbv }
- { fith } { fith }
- { fitv } { fitv }
- }
- { xyz ~ zoom \exp_not:N \fp_eval:n { #2 * 10 } }
- \scan_stop:
- }
-\cs_new_protected:Npx \driver_pdf_destination_rectangle:nn #1#2
- {
- \group_begin:
- \hbox_set:Nn \l__driver_internal_box {#2}
- \cs_if_exist:NTF \tex_pdfextension:D
- { \exp_not:N \tex_pdfextension:D dest ~ }
- { \exp_not:N \tex_pdfdest:D }
- name {#1}
- fitr ~
- width \exp_not:N \box_wd:N \l__driver_internal_box
- height \exp_not:N \box_ht:N \l__driver_internal_box
- depth \exp_not:N \box_dp:N \l__driver_internal_box
- \box_use:N \l__driver_internal_box
- \group_end:
- }
-\cs_new_protected:Npx \driver_pdf_catalog_gput:nn #1#2
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D catalog }
- { \tex_pdfcatalog:D }
- { / #1 ~ #2 }
- }
-\cs_new_protected:Npx \driver_pdf_info_gput:nn #1#2
- {
- \cs_if_exist:NTF \tex_pdfextension:D
- { \tex_pdfextension:D info }
- { \tex_pdfinfo:D }
- { / #1 ~ #2 }
- }
-\prop_new:N \g__driver_pdf_object_prop
-\group_begin:
- \cs_set_protected:Npn \__driver_tmp:w #1#2
- {
- \cs_new_protected:Npx \driver_pdf_object_new:nn ##1##2
- {
- #1 reserveobjnum ~
- \int_const:cn
- { c__driver_pdf_object_ \exp_not:N \tl_to_str:n {##1} _int }
- {#2}
- \prop_gput:Nnn \exp_not:N \g__driver_pdf_object_prop {##1} {##2}
- }
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- {
- \__driver_tmp:w
- { \tex_pdfextension:D obj ~ }
- { \exp_not:N \tex_pdffeedback:D lastobj }
- }
- { \__driver_tmp:w { \tex_pdfobj:D } { \tex_pdflastobj:D } }
-\group_end:
-\cs_new:Npn \driver_pdf_object_ref:n #1
- { \int_use:c { c__driver_pdf_object_ \tl_to_str:n {#1} _int } ~ 0 ~ R }
-\group_begin:
- \cs_set_protected:Npn \__driver_tmp:w #1
- {
- \cs_new_protected:Npn \driver_pdf_object_write:nn ##1##2
- {
- \tex_immediate:D #1 useobjnum ~
- \int_use:c
- { c__driver_pdf_object_ \tl_to_str:n {##1} _int }
- \str_case_e:nn
- { \prop_item:Nn \g__driver_pdf_object_prop {##1} }
- {
- { array } { { [ ~ \exp_not:n {##2} ~ ] } }
- { dict } { { << ~ \exp_not:n {##2} ~ >> } }
- { fstream }
- {
- stream ~ attr ~ { \__driver_exp_not_i:nn ##2 } ~
- file ~ { \__driver_exp_not_ii:nn ##2 }
- }
- { stream }
- {
- stream ~ attr ~ { \__driver_exp_not_i:nn ##2 } ~
- { \__driver_exp_not_ii:nn ##2 }
- }
- }
- }
- }
- \cs_if_exist:NTF \tex_pdfextension:D
- { \__driver_tmp:w { \tex_pdfextension:D obj ~ } }
- { \__driver_tmp:w { \tex_pdfobj:D } }
-\group_end:
-\cs_new:Npn \__driver_exp_not_i:nn #1#2 { \exp_not:n {#1} }
-\cs_new:Npn \__driver_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
-\cs_new_protected:Npx \driver_pdf_compresslevel:n #1
- {
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfcompresslevel:D
- { \tex_pdfcompresslevel:D }
- { \tex_pdfvariable:D compresslevel }
- \exp_not:N \int_value:w \exp_not:N \int_eval:n {#1} \scan_stop:
- }
-\cs_new_protected:Npn \driver_pdf_compress_objects:n #1
- {
- \str_if_eq:nnTF {#1} { true }
- { \__driver_pdf_objcompresslevel:n { 2 } }
- { \__driver_pdf_objcompresslevel:n { 0 } }
- }
-\cs_new_protected:Npx \__driver_pdf_objcompresslevel:n #1
- {
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfobjcompresslevel:D
- { \tex_pdfobjcompresslevel:D }
- { \tex_pdfvariable:D objcompresslevel }
- #1 \scan_stop:
- }
-\cs_new_protected:Npx \driver_pdf_version_major_gset:n #1
- {
- \cs_if_exist:NTF \tex_pdfvariable:D
- {
- \int_compare:nNnT \tex_luatexversion:D > { 106 }
- {
- \exp_not:N \tex_global:D \tex_pdfvariable:D majorversion
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
- }
- {
- \cs_if_exist:NT \tex_pdfmajorversion:D
- {
- \exp_not:N \tex_global:D \tex_pdfmajorversion:D
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
- }
- }
-\cs_new_protected:Npx \driver_pdf_version_minor_gset:n #1
- {
- \exp_not:N \tex_global:D
- \cs_if_exist:NTF \tex_pdfminorversion:D
- { \exp_not:N \tex_pdfminorversion:D }
- { \tex_pdfvariable:D minorversion }
- \exp_not:N \int_eval:n {#1} \scan_stop:
- }
-\cs_new:Npx \driver_pdf_version_major:
- {
- \cs_if_exist:NTF \tex_pdfvariable:D
- {
- \int_compare:nNnTF \tex_luatexversion:D > { 106 }
- { \exp_not:N \tex_the:D \tex_pdfvariable:D majorversion }
- { 1 }
- }
- {
- \cs_if_exist:NTF \tex_pdfmajorversion:D
- { \exp_not:N \tex_the:D \tex_pdfmajorversion:D }
- { 1 }
- }
- }
-\cs_new:Npx \driver_pdf_version_minor:
- {
- \exp_not:N \tex_the:D
- \cs_if_exist:NTF \tex_pdfminorversion:D
- { \exp_not:N \tex_pdfminorversion:D }
- { \tex_pdfvariable:D minorversion }
- }
-%%
-%%
-%% End of file `l3pdfmode.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def
new file mode 100644
index 00000000000..a70bc9f6fe8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88591.def
@@ -0,0 +1,29 @@
+%%
+%% This is file `l3str-enc-iso88591.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88591')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88591 }
+ {
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88591.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def
new file mode 100644
index 00000000000..c24d358a553
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885910.def
@@ -0,0 +1,75 @@
+%%
+%% This is file `l3str-enc-iso885910.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885910')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso885910 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 0112 }
+ { A3 } { 0122 }
+ { A4 } { 012A }
+ { A5 } { 0128 }
+ { A6 } { 0136 }
+ { A8 } { 013B }
+ { A9 } { 0110 }
+ { AA } { 0160 }
+ { AB } { 0166 }
+ { AC } { 017D }
+ { AE } { 016A }
+ { AF } { 014A }
+ { B1 } { 0105 }
+ { B2 } { 0113 }
+ { B3 } { 0123 }
+ { B4 } { 012B }
+ { B5 } { 0129 }
+ { B6 } { 0137 }
+ { B8 } { 013C }
+ { B9 } { 0111 }
+ { BA } { 0161 }
+ { BB } { 0167 }
+ { BC } { 017E }
+ { BD } { 2015 }
+ { BE } { 016B }
+ { BF } { 014B }
+ { C0 } { 0100 }
+ { C7 } { 012E }
+ { C8 } { 010C }
+ { CA } { 0118 }
+ { CC } { 0116 }
+ { D1 } { 0145 }
+ { D2 } { 014C }
+ { D7 } { 0168 }
+ { D9 } { 0172 }
+ { E0 } { 0101 }
+ { E7 } { 012F }
+ { E8 } { 010D }
+ { EA } { 0119 }
+ { EC } { 0117 }
+ { F1 } { 0146 }
+ { F2 } { 014D }
+ { F7 } { 0169 }
+ { F9 } { 0173 }
+ { FF } { 0138 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885910.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def
new file mode 100644
index 00000000000..f6b39e6d096
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885911.def
@@ -0,0 +1,120 @@
+%%
+%% This is file `l3str-enc-iso885911.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885911')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso885911 }
+ {
+ { A1 } { 0E01 }
+ { A2 } { 0E02 }
+ { A3 } { 0E03 }
+ { A4 } { 0E04 }
+ { A5 } { 0E05 }
+ { A6 } { 0E06 }
+ { A7 } { 0E07 }
+ { A8 } { 0E08 }
+ { A9 } { 0E09 }
+ { AA } { 0E0A }
+ { AB } { 0E0B }
+ { AC } { 0E0C }
+ { AD } { 0E0D }
+ { AE } { 0E0E }
+ { AF } { 0E0F }
+ { B0 } { 0E10 }
+ { B1 } { 0E11 }
+ { B2 } { 0E12 }
+ { B3 } { 0E13 }
+ { B4 } { 0E14 }
+ { B5 } { 0E15 }
+ { B6 } { 0E16 }
+ { B7 } { 0E17 }
+ { B8 } { 0E18 }
+ { B9 } { 0E19 }
+ { BA } { 0E1A }
+ { BB } { 0E1B }
+ { BC } { 0E1C }
+ { BD } { 0E1D }
+ { BE } { 0E1E }
+ { BF } { 0E1F }
+ { C0 } { 0E20 }
+ { C1 } { 0E21 }
+ { C2 } { 0E22 }
+ { C3 } { 0E23 }
+ { C4 } { 0E24 }
+ { C5 } { 0E25 }
+ { C6 } { 0E26 }
+ { C7 } { 0E27 }
+ { C8 } { 0E28 }
+ { C9 } { 0E29 }
+ { CA } { 0E2A }
+ { CB } { 0E2B }
+ { CC } { 0E2C }
+ { CD } { 0E2D }
+ { CE } { 0E2E }
+ { CF } { 0E2F }
+ { D0 } { 0E30 }
+ { D1 } { 0E31 }
+ { D2 } { 0E32 }
+ { D3 } { 0E33 }
+ { D4 } { 0E34 }
+ { D5 } { 0E35 }
+ { D6 } { 0E36 }
+ { D7 } { 0E37 }
+ { D8 } { 0E38 }
+ { D9 } { 0E39 }
+ { DA } { 0E3A }
+ { DF } { 0E3F }
+ { E0 } { 0E40 }
+ { E1 } { 0E41 }
+ { E2 } { 0E42 }
+ { E3 } { 0E43 }
+ { E4 } { 0E44 }
+ { E5 } { 0E45 }
+ { E6 } { 0E46 }
+ { E7 } { 0E47 }
+ { E8 } { 0E48 }
+ { E9 } { 0E49 }
+ { EA } { 0E4A }
+ { EB } { 0E4B }
+ { EC } { 0E4C }
+ { ED } { 0E4D }
+ { EE } { 0E4E }
+ { EF } { 0E4F }
+ { F0 } { 0E50 }
+ { F1 } { 0E51 }
+ { F2 } { 0E52 }
+ { F3 } { 0E53 }
+ { F4 } { 0E54 }
+ { F5 } { 0E55 }
+ { F6 } { 0E56 }
+ { F7 } { 0E57 }
+ { F8 } { 0E58 }
+ { F9 } { 0E59 }
+ { FA } { 0E5A }
+ { FB } { 0E5B }
+ }
+ {
+ { DB }
+ { DC }
+ { DD }
+ { DE }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885911.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def
new file mode 100644
index 00000000000..24ed74b1c31
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885913.def
@@ -0,0 +1,85 @@
+%%
+%% This is file `l3str-enc-iso885913.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885913')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso885913 }
+ {
+ { A1 } { 201D }
+ { A5 } { 201E }
+ { A8 } { 00D8 }
+ { AA } { 0156 }
+ { AF } { 00C6 }
+ { B4 } { 201C }
+ { B8 } { 00F8 }
+ { BA } { 0157 }
+ { BF } { 00E6 }
+ { C0 } { 0104 }
+ { C1 } { 012E }
+ { C2 } { 0100 }
+ { C3 } { 0106 }
+ { C6 } { 0118 }
+ { C7 } { 0112 }
+ { C8 } { 010C }
+ { CA } { 0179 }
+ { CB } { 0116 }
+ { CC } { 0122 }
+ { CD } { 0136 }
+ { CE } { 012A }
+ { CF } { 013B }
+ { D0 } { 0160 }
+ { D1 } { 0143 }
+ { D2 } { 0145 }
+ { D4 } { 014C }
+ { D8 } { 0172 }
+ { D9 } { 0141 }
+ { DA } { 015A }
+ { DB } { 016A }
+ { DD } { 017B }
+ { DE } { 017D }
+ { E0 } { 0105 }
+ { E1 } { 012F }
+ { E2 } { 0101 }
+ { E3 } { 0107 }
+ { E6 } { 0119 }
+ { E7 } { 0113 }
+ { E8 } { 010D }
+ { EA } { 017A }
+ { EB } { 0117 }
+ { EC } { 0123 }
+ { ED } { 0137 }
+ { EE } { 012B }
+ { EF } { 013C }
+ { F0 } { 0161 }
+ { F1 } { 0144 }
+ { F2 } { 0146 }
+ { F4 } { 014D }
+ { F8 } { 0173 }
+ { F9 } { 0142 }
+ { FA } { 015B }
+ { FB } { 016B }
+ { FD } { 017C }
+ { FE } { 017E }
+ { FF } { 2019 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885913.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def
new file mode 100644
index 00000000000..e51b8534a99
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885914.def
@@ -0,0 +1,60 @@
+%%
+%% This is file `l3str-enc-iso885914.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885914')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso885914 }
+ {
+ { A1 } { 1E02 }
+ { A2 } { 1E03 }
+ { A4 } { 010A }
+ { A5 } { 010B }
+ { A6 } { 1E0A }
+ { A8 } { 1E80 }
+ { AA } { 1E82 }
+ { AB } { 1E0B }
+ { AC } { 1EF2 }
+ { AF } { 0178 }
+ { B0 } { 1E1E }
+ { B1 } { 1E1F }
+ { B2 } { 0120 }
+ { B3 } { 0121 }
+ { B4 } { 1E40 }
+ { B5 } { 1E41 }
+ { B7 } { 1E56 }
+ { B8 } { 1E81 }
+ { B9 } { 1E57 }
+ { BA } { 1E83 }
+ { BB } { 1E60 }
+ { BC } { 1EF3 }
+ { BD } { 1E84 }
+ { BE } { 1E85 }
+ { BF } { 1E61 }
+ { D0 } { 0174 }
+ { D7 } { 1E6A }
+ { DE } { 0176 }
+ { F0 } { 0175 }
+ { F7 } { 1E6B }
+ { FE } { 0177 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885914.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def
new file mode 100644
index 00000000000..5776213ff39
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885915.def
@@ -0,0 +1,37 @@
+%%
+%% This is file `l3str-enc-iso885915.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885915')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso885915 }
+ {
+ { A4 } { 20AC }
+ { A6 } { 0160 }
+ { A8 } { 0161 }
+ { B4 } { 017D }
+ { B8 } { 017E }
+ { BC } { 0152 }
+ { BD } { 0153 }
+ { BE } { 0178 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885915.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def
new file mode 100644
index 00000000000..b7376b0b252
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso885916.def
@@ -0,0 +1,69 @@
+%%
+%% This is file `l3str-enc-iso885916.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso885916')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso885916 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 0105 }
+ { A3 } { 0141 }
+ { A4 } { 20AC }
+ { A5 } { 201E }
+ { A6 } { 0160 }
+ { A8 } { 0161 }
+ { AA } { 0218 }
+ { AC } { 0179 }
+ { AE } { 017A }
+ { AF } { 017B }
+ { B2 } { 010C }
+ { B3 } { 0142 }
+ { B4 } { 017D }
+ { B5 } { 201D }
+ { B8 } { 017E }
+ { B9 } { 010D }
+ { BA } { 0219 }
+ { BC } { 0152 }
+ { BD } { 0153 }
+ { BE } { 0178 }
+ { BF } { 017C }
+ { C3 } { 0102 }
+ { C5 } { 0106 }
+ { D0 } { 0110 }
+ { D1 } { 0143 }
+ { D5 } { 0150 }
+ { D7 } { 015A }
+ { D8 } { 0170 }
+ { DD } { 0118 }
+ { DE } { 021A }
+ { E3 } { 0103 }
+ { E5 } { 0107 }
+ { F0 } { 0111 }
+ { F1 } { 0144 }
+ { F5 } { 0151 }
+ { F7 } { 015B }
+ { F8 } { 0171 }
+ { FD } { 0119 }
+ { FE } { 021B }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso885916.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def
new file mode 100644
index 00000000000..ef2cd5ab200
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88592.def
@@ -0,0 +1,86 @@
+%%
+%% This is file `l3str-enc-iso88592.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88592')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88592 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 02D8 }
+ { A3 } { 0141 }
+ { A5 } { 013D }
+ { A6 } { 015A }
+ { A9 } { 0160 }
+ { AA } { 015E }
+ { AB } { 0164 }
+ { AC } { 0179 }
+ { AE } { 017D }
+ { AF } { 017B }
+ { B1 } { 0105 }
+ { B2 } { 02DB }
+ { B3 } { 0142 }
+ { B5 } { 013E }
+ { B6 } { 015B }
+ { B7 } { 02C7 }
+ { B9 } { 0161 }
+ { BA } { 015F }
+ { BB } { 0165 }
+ { BC } { 017A }
+ { BD } { 02DD }
+ { BE } { 017E }
+ { BF } { 017C }
+ { C0 } { 0154 }
+ { C3 } { 0102 }
+ { C5 } { 0139 }
+ { C6 } { 0106 }
+ { C8 } { 010C }
+ { CA } { 0118 }
+ { CC } { 011A }
+ { CF } { 010E }
+ { D0 } { 0110 }
+ { D1 } { 0143 }
+ { D2 } { 0147 }
+ { D5 } { 0150 }
+ { D8 } { 0158 }
+ { D9 } { 016E }
+ { DB } { 0170 }
+ { DE } { 0162 }
+ { E0 } { 0155 }
+ { E3 } { 0103 }
+ { E5 } { 013A }
+ { E6 } { 0107 }
+ { E8 } { 010D }
+ { EA } { 0119 }
+ { EC } { 011B }
+ { EF } { 010F }
+ { F0 } { 0111 }
+ { F1 } { 0144 }
+ { F2 } { 0148 }
+ { F5 } { 0151 }
+ { F8 } { 0159 }
+ { F9 } { 016F }
+ { FB } { 0171 }
+ { FE } { 0163 }
+ { FF } { 02D9 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88592.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def
new file mode 100644
index 00000000000..dc7cc7a88fd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88593.def
@@ -0,0 +1,64 @@
+%%
+%% This is file `l3str-enc-iso88593.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88593')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88593 }
+ {
+ { A1 } { 0126 }
+ { A2 } { 02D8 }
+ { A6 } { 0124 }
+ { A9 } { 0130 }
+ { AA } { 015E }
+ { AB } { 011E }
+ { AC } { 0134 }
+ { AF } { 017B }
+ { B1 } { 0127 }
+ { B6 } { 0125 }
+ { B9 } { 0131 }
+ { BA } { 015F }
+ { BB } { 011F }
+ { BC } { 0135 }
+ { BF } { 017C }
+ { C5 } { 010A }
+ { C6 } { 0108 }
+ { D5 } { 0120 }
+ { D8 } { 011C }
+ { DD } { 016C }
+ { DE } { 015C }
+ { E5 } { 010B }
+ { E6 } { 0109 }
+ { F5 } { 0121 }
+ { F8 } { 011D }
+ { FD } { 016D }
+ { FE } { 015D }
+ { FF } { 02D9 }
+ }
+ {
+ { A5 }
+ { AE }
+ { BE }
+ { C3 }
+ { D0 }
+ { E3 }
+ { F0 }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88593.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def
new file mode 100644
index 00000000000..2ac8afb3b32
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88594.def
@@ -0,0 +1,79 @@
+%%
+%% This is file `l3str-enc-iso88594.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88594')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88594 }
+ {
+ { A1 } { 0104 }
+ { A2 } { 0138 }
+ { A3 } { 0156 }
+ { A5 } { 0128 }
+ { A6 } { 013B }
+ { A9 } { 0160 }
+ { AA } { 0112 }
+ { AB } { 0122 }
+ { AC } { 0166 }
+ { AE } { 017D }
+ { B1 } { 0105 }
+ { B2 } { 02DB }
+ { B3 } { 0157 }
+ { B5 } { 0129 }
+ { B6 } { 013C }
+ { B7 } { 02C7 }
+ { B9 } { 0161 }
+ { BA } { 0113 }
+ { BB } { 0123 }
+ { BC } { 0167 }
+ { BD } { 014A }
+ { BE } { 017E }
+ { BF } { 014B }
+ { C0 } { 0100 }
+ { C7 } { 012E }
+ { C8 } { 010C }
+ { CA } { 0118 }
+ { CC } { 0116 }
+ { CF } { 012A }
+ { D0 } { 0110 }
+ { D1 } { 0145 }
+ { D2 } { 014C }
+ { D3 } { 0136 }
+ { D9 } { 0172 }
+ { DD } { 0168 }
+ { DE } { 016A }
+ { E0 } { 0101 }
+ { E7 } { 012F }
+ { E8 } { 010D }
+ { EA } { 0119 }
+ { EC } { 0117 }
+ { EF } { 012B }
+ { F0 } { 0111 }
+ { F1 } { 0146 }
+ { F2 } { 014D }
+ { F3 } { 0137 }
+ { F9 } { 0173 }
+ { FD } { 0169 }
+ { FE } { 016B }
+ { FF } { 02D9 }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88594.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def
new file mode 100644
index 00000000000..e8361b2b6fd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88595.def
@@ -0,0 +1,123 @@
+%%
+%% This is file `l3str-enc-iso88595.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88595')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88595 }
+ {
+ { A1 } { 0401 }
+ { A2 } { 0402 }
+ { A3 } { 0403 }
+ { A4 } { 0404 }
+ { A5 } { 0405 }
+ { A6 } { 0406 }
+ { A7 } { 0407 }
+ { A8 } { 0408 }
+ { A9 } { 0409 }
+ { AA } { 040A }
+ { AB } { 040B }
+ { AC } { 040C }
+ { AE } { 040E }
+ { AF } { 040F }
+ { B0 } { 0410 }
+ { B1 } { 0411 }
+ { B2 } { 0412 }
+ { B3 } { 0413 }
+ { B4 } { 0414 }
+ { B5 } { 0415 }
+ { B6 } { 0416 }
+ { B7 } { 0417 }
+ { B8 } { 0418 }
+ { B9 } { 0419 }
+ { BA } { 041A }
+ { BB } { 041B }
+ { BC } { 041C }
+ { BD } { 041D }
+ { BE } { 041E }
+ { BF } { 041F }
+ { C0 } { 0420 }
+ { C1 } { 0421 }
+ { C2 } { 0422 }
+ { C3 } { 0423 }
+ { C4 } { 0424 }
+ { C5 } { 0425 }
+ { C6 } { 0426 }
+ { C7 } { 0427 }
+ { C8 } { 0428 }
+ { C9 } { 0429 }
+ { CA } { 042A }
+ { CB } { 042B }
+ { CC } { 042C }
+ { CD } { 042D }
+ { CE } { 042E }
+ { CF } { 042F }
+ { D0 } { 0430 }
+ { D1 } { 0431 }
+ { D2 } { 0432 }
+ { D3 } { 0433 }
+ { D4 } { 0434 }
+ { D5 } { 0435 }
+ { D6 } { 0436 }
+ { D7 } { 0437 }
+ { D8 } { 0438 }
+ { D9 } { 0439 }
+ { DA } { 043A }
+ { DB } { 043B }
+ { DC } { 043C }
+ { DD } { 043D }
+ { DE } { 043E }
+ { DF } { 043F }
+ { E0 } { 0440 }
+ { E1 } { 0441 }
+ { E2 } { 0442 }
+ { E3 } { 0443 }
+ { E4 } { 0444 }
+ { E5 } { 0445 }
+ { E6 } { 0446 }
+ { E7 } { 0447 }
+ { E8 } { 0448 }
+ { E9 } { 0449 }
+ { EA } { 044A }
+ { EB } { 044B }
+ { EC } { 044C }
+ { ED } { 044D }
+ { EE } { 044E }
+ { EF } { 044F }
+ { F0 } { 2116 }
+ { F1 } { 0451 }
+ { F2 } { 0452 }
+ { F3 } { 0453 }
+ { F4 } { 0454 }
+ { F5 } { 0455 }
+ { F6 } { 0456 }
+ { F7 } { 0457 }
+ { F8 } { 0458 }
+ { F9 } { 0459 }
+ { FA } { 045A }
+ { FB } { 045B }
+ { FC } { 045C }
+ { FD } { 00A7 }
+ { FE } { 045E }
+ { FF } { 045F }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88595.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def
new file mode 100644
index 00000000000..912fb1067f7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88596.def
@@ -0,0 +1,109 @@
+%%
+%% This is file `l3str-enc-iso88596.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88596')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88596 }
+ {
+ { AC } { 060C }
+ { BB } { 061B }
+ { BF } { 061F }
+ { C1 } { 0621 }
+ { C2 } { 0622 }
+ { C3 } { 0623 }
+ { C4 } { 0624 }
+ { C5 } { 0625 }
+ { C6 } { 0626 }
+ { C7 } { 0627 }
+ { C8 } { 0628 }
+ { C9 } { 0629 }
+ { CA } { 062A }
+ { CB } { 062B }
+ { CC } { 062C }
+ { CD } { 062D }
+ { CE } { 062E }
+ { CF } { 062F }
+ { D0 } { 0630 }
+ { D1 } { 0631 }
+ { D2 } { 0632 }
+ { D3 } { 0633 }
+ { D4 } { 0634 }
+ { D5 } { 0635 }
+ { D6 } { 0636 }
+ { D7 } { 0637 }
+ { D8 } { 0638 }
+ { D9 } { 0639 }
+ { DA } { 063A }
+ { E0 } { 0640 }
+ { E1 } { 0641 }
+ { E2 } { 0642 }
+ { E3 } { 0643 }
+ { E4 } { 0644 }
+ { E5 } { 0645 }
+ { E6 } { 0646 }
+ { E7 } { 0647 }
+ { E8 } { 0648 }
+ { E9 } { 0649 }
+ { EA } { 064A }
+ { EB } { 064B }
+ { EC } { 064C }
+ { ED } { 064D }
+ { EE } { 064E }
+ { EF } { 064F }
+ { F0 } { 0650 }
+ { F1 } { 0651 }
+ { F2 } { 0652 }
+ }
+ {
+ { A1 }
+ { A2 }
+ { A3 }
+ { A5 }
+ { A6 }
+ { A7 }
+ { A8 }
+ { A9 }
+ { AA }
+ { AB }
+ { AE }
+ { AF }
+ { B0 }
+ { B1 }
+ { B2 }
+ { B3 }
+ { B4 }
+ { B5 }
+ { B6 }
+ { B7 }
+ { B8 }
+ { B9 }
+ { BA }
+ { BC }
+ { BD }
+ { BE }
+ { C0 }
+ { DB }
+ { DC }
+ { DD }
+ { DE }
+ { DF }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88596.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def
new file mode 100644
index 00000000000..e3486353f1f
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88597.def
@@ -0,0 +1,108 @@
+%%
+%% This is file `l3str-enc-iso88597.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88597')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88597 }
+ {
+ { A1 } { 2018 }
+ { A2 } { 2019 }
+ { A4 } { 20AC }
+ { A5 } { 20AF }
+ { AA } { 037A }
+ { AF } { 2015 }
+ { B4 } { 0384 }
+ { B5 } { 0385 }
+ { B6 } { 0386 }
+ { B8 } { 0388 }
+ { B9 } { 0389 }
+ { BA } { 038A }
+ { BC } { 038C }
+ { BE } { 038E }
+ { BF } { 038F }
+ { C0 } { 0390 }
+ { C1 } { 0391 }
+ { C2 } { 0392 }
+ { C3 } { 0393 }
+ { C4 } { 0394 }
+ { C5 } { 0395 }
+ { C6 } { 0396 }
+ { C7 } { 0397 }
+ { C8 } { 0398 }
+ { C9 } { 0399 }
+ { CA } { 039A }
+ { CB } { 039B }
+ { CC } { 039C }
+ { CD } { 039D }
+ { CE } { 039E }
+ { CF } { 039F }
+ { D0 } { 03A0 }
+ { D1 } { 03A1 }
+ { D3 } { 03A3 }
+ { D4 } { 03A4 }
+ { D5 } { 03A5 }
+ { D6 } { 03A6 }
+ { D7 } { 03A7 }
+ { D8 } { 03A8 }
+ { D9 } { 03A9 }
+ { DA } { 03AA }
+ { DB } { 03AB }
+ { DC } { 03AC }
+ { DD } { 03AD }
+ { DE } { 03AE }
+ { DF } { 03AF }
+ { E0 } { 03B0 }
+ { E1 } { 03B1 }
+ { E2 } { 03B2 }
+ { E3 } { 03B3 }
+ { E4 } { 03B4 }
+ { E5 } { 03B5 }
+ { E6 } { 03B6 }
+ { E7 } { 03B7 }
+ { E8 } { 03B8 }
+ { E9 } { 03B9 }
+ { EA } { 03BA }
+ { EB } { 03BB }
+ { EC } { 03BC }
+ { ED } { 03BD }
+ { EE } { 03BE }
+ { EF } { 03BF }
+ { F0 } { 03C0 }
+ { F1 } { 03C1 }
+ { F2 } { 03C2 }
+ { F3 } { 03C3 }
+ { F4 } { 03C4 }
+ { F5 } { 03C5 }
+ { F6 } { 03C6 }
+ { F7 } { 03C7 }
+ { F8 } { 03C8 }
+ { F9 } { 03C9 }
+ { FA } { 03CA }
+ { FB } { 03CB }
+ { FC } { 03CC }
+ { FD } { 03CD }
+ { FE } { 03CE }
+ }
+ {
+ { AE }
+ { D2 }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88597.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def
new file mode 100644
index 00000000000..414212db091
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88598.def
@@ -0,0 +1,96 @@
+%%
+%% This is file `l3str-enc-iso88598.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88598')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88598 }
+ {
+ { AA } { 00D7 }
+ { BA } { 00F7 }
+ { DF } { 2017 }
+ { E0 } { 05D0 }
+ { E1 } { 05D1 }
+ { E2 } { 05D2 }
+ { E3 } { 05D3 }
+ { E4 } { 05D4 }
+ { E5 } { 05D5 }
+ { E6 } { 05D6 }
+ { E7 } { 05D7 }
+ { E8 } { 05D8 }
+ { E9 } { 05D9 }
+ { EA } { 05DA }
+ { EB } { 05DB }
+ { EC } { 05DC }
+ { ED } { 05DD }
+ { EE } { 05DE }
+ { EF } { 05DF }
+ { F0 } { 05E0 }
+ { F1 } { 05E1 }
+ { F2 } { 05E2 }
+ { F3 } { 05E3 }
+ { F4 } { 05E4 }
+ { F5 } { 05E5 }
+ { F6 } { 05E6 }
+ { F7 } { 05E7 }
+ { F8 } { 05E8 }
+ { F9 } { 05E9 }
+ { FA } { 05EA }
+ { FD } { 200E }
+ { FE } { 200F }
+ }
+ {
+ { A1 }
+ { BF }
+ { C0 }
+ { C1 }
+ { C2 }
+ { C3 }
+ { C4 }
+ { C5 }
+ { C6 }
+ { C7 }
+ { C8 }
+ { C9 }
+ { CA }
+ { CB }
+ { CC }
+ { CD }
+ { CE }
+ { CF }
+ { D0 }
+ { D1 }
+ { D2 }
+ { D3 }
+ { D4 }
+ { D5 }
+ { D6 }
+ { D7 }
+ { D8 }
+ { D9 }
+ { DA }
+ { DB }
+ { DC }
+ { DD }
+ { DE }
+ { FB }
+ { FC }
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88598.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def
new file mode 100644
index 00000000000..946ab0b41bf
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3str-enc-iso88599.def
@@ -0,0 +1,35 @@
+%%
+%% This is file `l3str-enc-iso88599.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% l3str-convert.dtx (with options: `iso88599')
+%%
+%% Copyright (C) 1990-2019 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:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "l3kernel bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+%% File: l3str-convert.dtx
+\str_declare_eight_bit_encoding:nnn { iso88599 }
+ {
+ { D0 } { 011E }
+ { DD } { 0130 }
+ { DE } { 015E }
+ { F0 } { 011F }
+ { FD } { 0131 }
+ { FE } { 015F }
+ }
+ {
+ }
+%%
+%%
+%% End of file `l3str-enc-iso88599.def'.
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
deleted file mode 100644
index 49ee9115e3a..00000000000
--- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
+++ /dev/null
@@ -1,681 +0,0 @@
-%%
-%% This is file `l3xdvipdfmx.def',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% l3drivers.dtx (with options: `package,xdvipdfmx')
-%% l3drivers-basics.dtx (with options: `package,xdvipdfmx')
-%% l3drivers-color.dtx (with options: `package,xdvipdfmx')
-%% l3drivers-box.dtx (with options: `package,xdvipdfmx')
-%% l3drivers-draw.dtx (with options: `package,xdvipdfmx')
-%% l3drivers-graphics.dtx (with options: `package,xdvipdfmx')
-%% l3drivers-pdf.dtx (with options: `package,xdvipdfmx')
-%%
-%% Copyright (C) 1990-2019 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:
-%%
-%% https://www.latex-project.org/lppl.txt
-%%
-%% 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
-%% File: l3drivers-basics.dtx
-\ProvidesExplFile
- {l3xdvipdfmx.def}{2019-04-06}{}
- {L3 Experimental driver: xdvipdfmx}
-\cs_new_eq:NN \__driver_literal:e \tex_special:D
-\cs_new_protected:Npn \__driver_literal:n #1
- { \__driver_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__driver_literal:n { x }
-\box_new:N \l__driver_internal_box
-\cs_new_protected:Npn \__driver_literal_pdf:n #1
- { \__driver_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__driver_literal_pdf:n { x }
-\cs_new_protected:Npn \__driver_scope_begin:
- { \__driver_literal:n { x:gsave } }
-\cs_new_protected:Npn \__driver_scope_end:
- { \__driver_literal:n { x:grestore } }
-%% File: l3drivers-color.dtx
-\cs_new_protected:Npn \driver_color_pickup:N #1 { }
-\AtBeginDocument
- {
- \@ifpackageloaded { color }
- {
- \cs_set_protected:Npn \driver_color_pickup:N #1
- {
- \exp_args:NV \tl_if_head_is_space:nTF \current@color
- {
- \tl_set:Nx #1
- {
- spot ~
- \exp_after:wN \use:n \current@color \c_space_tl 1
- }
- }
- {
- \exp_last_unbraced:Nx \__driver_color_pickup:w
- { \current@color } \q_stop #1
- }
- }
- \cs_new_protected:Npn \__driver_color_pickup:w #1 ~ #2 \q_stop #3
- { \tl_set:Nn #3 { #1 ~ #2 } }
- }
- { }
- }
-\cs_new_protected:Npn \driver_color_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:x
- {
- cmyk~
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4}
- }
- }
-\cs_new_protected:Npn \driver_color_gray:n #1
- { \__driver_color_select:x { gray~ \fp_eval:n {#1} } }
-\cs_new_protected:Npn \driver_color_rgb:nnn #1#2#3
- {
- \__driver_color_select:x
- { rgb~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
- }
-\cs_new_protected:Npn \driver_color_spot:nn #1#2
- { \__driver_color_select:n { #1 } }
-\cs_new_protected:Npn \__driver_color_select:n #1
- {
- \__driver_literal:n { color~push~ #1 }
- \group_insert_after:N \__driver_color_reset:
- }
-\cs_generate_variant:Nn \__driver_color_select:n { x }
-\cs_new_protected:Npn \__driver_color_reset:
- { \__driver_literal:n { color~pop } }
-%% File: l3drivers-box.dtx
-\cs_new_protected:Npn \driver_box_use_clip:N #1
- {
- \__driver_scope_begin:
- \__driver_literal_pdf:x
- {
- 0~
- \dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~
- \dim_to_decimal_in_bp:n { \box_ht:N #1 + \box_dp:N #1 } ~
- re~W~n
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- \skip_horizontal:n { \box_wd:N #1 }
- }
-\cs_new_protected:Npn \driver_box_use_rotate:Nn #1#2
- { \exp_args:NNf \__driver_box_use_rotate:Nn #1 { \fp_eval:n {#2} } }
-\cs_new_protected:Npn \__driver_box_use_rotate:Nn #1#2
- {
- \__driver_scope_begin:
- \__driver_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#2} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( #2 , 5 ) } }
- }
- \box_use:N #1
- \__driver_scope_end:
- }
-\cs_new_protected:Npn \driver_box_use_scale:Nnn #1#2#3
- {
- \__driver_scope_begin:
- \__driver_literal:x
- {
- x:scale~
- \fp_eval:n { round ( #2 , 5 ) } ~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_scope_end:
- }
-%% File: l3drivers-draw.dtx
-\cs_new_eq:NN \__driver_draw_literal:n \__driver_literal_pdf:n
-\cs_generate_variant:Nn \__driver_draw_literal:n { x }
-\cs_new_protected:Npn \driver_draw_begin:
- { \driver_draw_scope_begin: }
-\cs_new_protected:Npn \driver_draw_end:
- { \driver_draw_scope_end: }
-\cs_new_eq:NN \driver_draw_scope_begin: \__driver_scope_begin:
-\cs_new_eq:NN \driver_draw_scope_end: \__driver_scope_end:
-\cs_new_protected:Npn \driver_draw_moveto:nn #1#2
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
- }
-\cs_new_protected:Npn \driver_draw_lineto:nn #1#2
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
- }
-\cs_new_protected:Npn \driver_draw_curveto:nnnnnn #1#2#3#4#5#6
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
- \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~
- c
- }
- }
-\cs_new_protected:Npn \driver_draw_rectangle:nnnn #1#2#3#4
- {
- \__driver_draw_literal:x
- {
- \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
- \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
- re
- }
- }
-\cs_new_protected:Npn \driver_draw_evenodd_rule:
- { \bool_gset_true:N \g__driver_draw_eor_bool }
-\cs_new_protected:Npn \driver_draw_nonzero_rule:
- { \bool_gset_false:N \g__driver_draw_eor_bool }
-\bool_new:N \g__driver_draw_eor_bool
-\cs_new_protected:Npn \driver_draw_closepath:
- { \__driver_draw_literal:n { h } }
-\cs_new_protected:Npn \driver_draw_stroke:
- { \__driver_draw_literal:n { S } }
-\cs_new_protected:Npn \driver_draw_closestroke:
- { \__driver_draw_literal:n { s } }
-\cs_new_protected:Npn \driver_draw_fill:
- {
- \__driver_draw_literal:x
- { f \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_fillstroke:
- {
- \__driver_draw_literal:x
- { B \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_clip:
- {
- \__driver_draw_literal:x
- { W \bool_if:NT \g__driver_draw_eor_bool * }
- }
-\cs_new_protected:Npn \driver_draw_discardpath:
- { \__driver_draw_literal:n { n } }
-\cs_new_protected:Npn \driver_draw_dash_pattern:nn #1#2
- {
- \__driver_draw_literal:x
- {
- [
- \exp_args:Nf \use:n
- { \clist_map_function:nN {#1} \__driver_draw_dash:n }
- ] ~
- \dim_to_decimal_in_bp:n {#2} ~ d
- }
- }
-\cs_new:Npn \__driver_draw_dash:n #1
- { ~ \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \driver_draw_linewidth:n #1
- {
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ w }
- }
-\cs_new_protected:Npn \driver_draw_miterlimit:n #1
- { \__driver_draw_literal:x { \fp_eval:n {#1} ~ M } }
-\cs_new_protected:Npn \driver_draw_cap_butt:
- { \__driver_draw_literal:n { 0 ~ J } }
-\cs_new_protected:Npn \driver_draw_cap_round:
- { \__driver_draw_literal:n { 1 ~ J } }
-\cs_new_protected:Npn \driver_draw_cap_rectangle:
- { \__driver_draw_literal:n { 2 ~ J } }
-\cs_new_protected:Npn \driver_draw_join_miter:
- { \__driver_draw_literal:n { 0 ~ j } }
-\cs_new_protected:Npn \driver_draw_join_round:
- { \__driver_draw_literal:n { 1 ~ j } }
-\cs_new_protected:Npn \driver_draw_join_bevel:
- { \__driver_draw_literal:n { 2 ~ j } }
-\cs_new_protected:Npn \driver_draw_color_fill_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_fill_select:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- k
- }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_cmyk:nnnn #1#2#3#4
- {
- \__driver_color_select:x
- {
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- k
- }
- }
-\cs_new_protected:Npn \driver_draw_color_fill_gray:n #1
- { \__driver_color_fill_select:x { \fp_eval:n {#1} ~ g } }
-\cs_new_protected:Npn \driver_draw_color_stroke_gray:n #1
- { \__driver_color_select:x { \fp_eval:n {#1} ~ G } }
-\cs_new_protected:Npn \driver_draw_color_fill_rgb:nnn #1#2#3
- {
- \__driver_color_fill_select:x
- { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ rg }
- }
-\cs_new_protected:Npn \driver_draw_color_stroke_rgb:nnn #1#2#3
- {
- \__driver_color_select:x
- { \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} ~ RG }
- }
-\cs_new_eq:NN \__driver_color_fill_select:n \__driver_draw_literal:n
-\cs_generate_variant:Nn \__driver_color_fill_select:n { x }
-\cs_new_protected:Npn \driver_draw_cm:nnnn #1#2#3#4
- {
- \__driver_draw_cm_decompose:nnnnN {#1} {#2} {#3} {#4}
- \__driver_draw_cm:nnnn
- }
-\cs_new_protected:Npn \__driver_draw_cm:nnnn #1#2#3#4
- {
- \__driver_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#1} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( -#1 , 5 ) } }
- }
- \__driver_literal:x
- {
- x:scale~
- \fp_eval:n { round ( #2 , 5 ) } ~
- \fp_eval:n { round ( #3 , 5 ) }
- }
- \__driver_literal:x
- {
- x:rotate~
- \fp_compare:nNnTF {#4} = \c_zero_fp
- { 0 }
- { \fp_eval:n { round ( -#4 , 5 ) } }
- }
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__driver_draw_cm_decompose_auxi:nnnnN
- { \fp_eval:n { (#1 + #4) / 2 } }
- { \fp_eval:n { (#1 - #4) / 2 } }
- { \fp_eval:n { (#3 + #2) / 2 } }
- { \fp_eval:n { (#3 - #2) / 2 } }
- }
- #5
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose_auxi:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__driver_draw_cm_decompose_auxii:nnnnN
- { \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
- { \fp_eval:n { 2 * sqrt ( #2 * #2 + #3 * #3 ) } }
- { \fp_eval:n { atand ( #3 , #2 ) } }
- { \fp_eval:n { atand ( #4 , #1 ) } }
- }
- #5
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose_auxii:nnnnN #1#2#3#4#5
- {
- \use:x
- {
- \__driver_draw_cm_decompose_auxiii:nnnnN
- { \fp_eval:n { ( #4 - #3 ) / 2 } }
- { \fp_eval:n { ( #1 + #2 ) / 2 } }
- { \fp_eval:n { ( #1 - #2 ) / 2 } }
- { \fp_eval:n { ( #4 + #3 ) / 2 } }
- }
- #5
- }
-\cs_new_protected:Npn \__driver_draw_cm_decompose_auxiii:nnnnN #1#2#3#4#5
- {
- \fp_compare:nNnTF { abs( #2 ) } > { abs ( #3 ) }
- { #5 {#1} {#2} {#3} {#4} }
- { #5 {#1} {#3} {#2} {#4} }
- }
-\cs_new_protected:Npn \driver_draw_box_use:Nnnnn #1#2#3#4#5
- {
- \__driver_scope_begin:
- \__driver_literal:x
- {
- pdf:btrans~matrix~
- \fp_eval:n {#2} ~ \fp_eval:n {#3} ~
- \fp_eval:n {#4} ~ \fp_eval:n {#5} ~
- 0 ~ 0
- }
- \hbox_overlap_right:n { \box_use:N #1 }
- \__driver_literal:n { pdf:etrans }
- \__driver_scope_end:
- }
-%% File: l3drivers-graphics.dtx
-\AtBeginDocument
- { \cs_new_eq:NN \driver_graphics_getbb_eps:n \graphics_read_bb:n }
-\int_new:N \g__driver_graphics_int
-\cs_new_protected:Npn \driver_graphics_include_eps:n #1
- {
- \__driver_literal:x
- {
- PSfile = #1 \c_space_tl
- llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
- lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
- urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
- ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim
- }
- }
-\cs_new_protected:Npn \driver_graphics_include_jpg:n #1
- { \__driver_graphics_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \driver_graphics_include_png:n \driver_graphics_include_jpg:n
-\cs_new_protected:Npn \__driver_graphics_include_auxi:nn #1#2
- {
- \__driver_graphics_include_auxii:xnn
- {
- \tl_if_empty:NF \l_graphics_pagebox_tl
- { : \l_graphics_pagebox_tl }
- \int_compare:nNnT \l_graphics_page_int > 1
- { :P \int_use:N \l_graphics_page_int }
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { :D \l_graphics_decodearray_tl }
- \bool_if:NT \l_graphics_interpolate_bool
- { :I }
- }
- {#1} {#2}
- }
-\cs_new_protected:Npn \__driver_graphics_include_auxii:nnn #1#2#3
- {
- \int_if_exist:cTF { c__driver_graphics_ #2#1 _int }
- {
- \__driver_literal:x
- { pdf:usexobj~@graphic \int_use:c { c__driver_graphics_ #2#1 _int } }
- }
- { \__driver_graphics_include_auxiii:nnn {#2} {#1} {#3} }
- }
-\cs_generate_variant:Nn \__driver_graphics_include_auxii:nnn { x }
-\cs_new_protected:Npn \__driver_graphics_include_auxiii:nnn #1#2#3
- {
- \int_gincr:N \g__driver_graphics_int
- \int_const:cn { c__driver_graphics_ #1#2 _int } { \g__driver_graphics_int }
- \__driver_literal:x
- {
- pdf:#3~
- @graphic \int_use:c { c__driver_graphics_ #1#2 _int } ~
- \int_compare:nNnT \l_graphics_page_int > 1
- { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
- \tl_if_empty:NF \l_graphics_pagebox_tl
- {
- pagebox ~ \l_graphics_pagebox_tl \c_space_tl
- bbox ~
- \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_graphics_ury_dim \c_space_tl
- }
- (#1)
- \bool_lazy_or:nnT
- { \l_graphics_interpolate_bool }
- { ! \tl_if_empty_p:N \l_graphics_decodearray_tl }
- {
- <<
- \tl_if_empty:NF \l_graphics_decodearray_tl
- { /Decode~[ \l_graphics_decodearray_tl ] }
- \bool_if:NT \l_graphics_interpolate_bool
- { /Interpolate~true> }
- >>
- }
- }
- }
-\cs_new_protected:Npn \driver_graphics_getbb_jpg:n #1
- {
- \int_zero:N \l_graphics_page_int
- \tl_clear:N \l_graphics_pagebox_tl
- \__driver_graphics_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
- }
-\cs_new_eq:NN \driver_graphics_getbb_png:n \driver_graphics_getbb_jpg:n
-\cs_new_protected:Npn \driver_graphics_getbb_pdf:n #1
- {
- \tl_clear:N \l_graphics_decodearray_tl
- \bool_set_false:N \l_graphics_interpolate_bool
- \__driver_graphics_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
- }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxi:nN #1#2
- {
- \int_compare:nNnTF \l_graphics_page_int > 1
- { \__driver_graphics_getbb_auxii:VnN \l_graphics_page_int {#1} #2 }
- { \__driver_graphics_getbb_auxiii:nNnn {#1} #2 { :P 1 } { page 1 } }
- }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxii:nnN #1#2#3
- { \__driver_graphics_getbb_auxiii:nNnn {#2} #3 { :P #1 } { page #1 } }
-\cs_generate_variant:Nn \__driver_graphics_getbb_auxii:nnN { V }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxiii:nNnn #1#2#3#4
- {
- \tl_if_empty:NTF \l_graphics_pagebox_tl
- { \__driver_graphics_getbb_auxiv:VnNnn \l_graphics_pagebox_tl }
- { \__driver_graphics_getbb_auxv:nNnn }
- {#1} #2 {#3} {#4}
- }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxiv:nnNnn #1#2#3#4#5
- {
- \use:x
- {
- \__driver_graphics_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
- { #5 ~ \__driver_graphics_getbb_pagebox:w #1 }
- }
- }
-\cs_generate_variant:Nn \__driver_graphics_getbb_auxiv:nnNnn { V }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxv:nNnn #1#2#3#4
- {
- \graphics_bb_restore:nF {#1#3}
- { \__driver_graphics_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
- }
-\cs_new_protected:Npn \__driver_graphics_getbb_auxvi:nNnn #1#2#3#4
- {
- \hbox_set:Nn \l__driver_internal_box { #2 #1 ~ #4 }
- \dim_set:Nn \l_graphics_urx_dim { \box_wd:N \l__driver_internal_box }
- \dim_set:Nn \l_graphics_ury_dim { \box_ht:N \l__driver_internal_box }
- \graphics_bb_save:n {#1#3}
- }
-\cs_new:Npn \__driver_graphics_getbb_pagebox:w #1 box {#1}
-\cs_new_protected:Npn \driver_graphics_include_pdf:n #1
- {
- \tex_XeTeXpdffile:D
- \__driver_graphics_include_pdf_quote:w #1 "#1" \q_stop \c_space_tl
- \int_compare:nNnT \l_graphics_page_int > 0
- { page ~ \int_use:N \l_graphics_page_int \c_space_tl }
- \exp_after:wN \__driver_graphics_getbb_pagebox:w \l_graphics_pagebox_tl
- }
-\cs_new:Npn \__driver_graphics_include_pdf_quote:w #1 " #2 " #3 \q_stop
- { " #2 " }
-%% File: l3drivers-pdf.dtx
-\cs_new_protected:Npx \__driver_pdf:n #1
- { \__driver_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \__driver_pdf:n { x }
-\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2
- { \__driver_pdf:n { put ~ @catalog << /#1 ~ #2 >> } }
-\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2
- { \__driver_pdf:n { docinfo << /#1 ~ #2 >> } }
-\int_new:N \g__driver_pdf_object_int
-\prop_new:N \g__driver_pdf_object_prop
-\cs_new_protected:Npn \driver_pdf_object_new:nn #1#2
- {
- \int_gincr:N \g__driver_pdf_object_int
- \int_const:cn
- { g__driver_pdf_object_ \tl_to_str:n {#1} _int }
- { \g__driver_pdf_object_int }
- \prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2}
- }
-\cs_new:Npn \driver_pdf_object_ref:n #1
- { @driver.obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } }
-\cs_new_protected:Npn \driver_pdf_object_write:nn #1#2
- {
- \exp_args:Nx \__driver_pdf_object_write:nnn
- { \prop_item:Nn \g__driver_pdf_object_prop {#1} } {#1} {#2}
- }
-\cs_new_protected:Npn \__driver_pdf_object_write:nnn #1#2#3
- { \use:c { __driver_pdf_object_write_ #1 :nn } {#2} {#3} }
-\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2
- {
- \__driver_pdf:x
- {
- obj ~ \driver_pdf_object_ref:n {#1} ~
- [ ~ \exp_not:n {#2} ~ ]
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2
- {
- \__driver_pdf:x
- {
- obj ~ \driver_pdf_object_ref:n {#1} ~
- << ~ \exp_not:n {#2} ~ >>
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_fstream:nn #1#2
- { \__driver_pdf_object_write_stream:nnnn { f } {#1} #2 }
-\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2
- { \__driver_pdf_object_write_stream:nnnn { } {#1} #2 }
-\cs_new_protected:Npn \__driver_pdf_object_write_stream:nnnn #1#2#3#4
- {
- \__driver_pdf:x
- {
- #1 stream ~ \driver_pdf_object_ref:n {#2} ~
- ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
-
- }
- }
-\bool_new:N \g__driver_landscape_bool
-\AtBeginDocument
- {
- \cs_if_exist:NT \landscape
- {
- \tl_put_right:Nn \landscape
- { \bool_gset_true:N \g__driver_landscape_bool }
- \tl_put_left:Nn \endlandscape
- { \bool_gset_false:N \g__driver_landscape_bool }
- }
- }
-\int_new:N \g__driver_pdf_annotation_int
-\cs_new_protected:Npn \driver_pdf_annotation:nnnn #1#2#3#4
- {
- \bool_if:NTF \g__driver_landscape_bool
- {
- \box_move_up:nn {#2}
- {
- \vbox:n
- {
- \__driver_pdf_annotation:nnnn
- { #2 + #3 } {#1} { 0pt } {#4}
- }
- }
- }
- { \__driver_pdf_annotation:nnnn {#1} {#2} {#3} {#4} }
- }
-\cs_new_protected:Npn \__driver_pdf_annotation:nnnn #1#2#3#4
- {
- \int_gincr:N \g__driver_pdf_object_int
- \int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int
- \__driver_pdf:x
- {
- ann ~ @driver.obj \int_use:N \g__driver_pdf_object_int \c_space_tl
- width ~ \dim_eval:n {#1} ~
- height ~ \dim_eval:n {#2} ~
- depth ~ \dim_eval:n {#3} ~
- << #4 >>
- }
- }
-\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
- { \__driver_pdf_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
-\cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
- { \__driver_pdf_link_begin:n {#1#2} }
-\cs_new_protected:Npn \__driver_pdf_link_begin:n #1
- {
- \__driver_pdf:n
- {
- bann
- <<
- /Type /Annot
- #1
- >>
- }
- }
-\cs_new_protected:Npn \driver_pdf_link_end:
- { \__driver_pdf:n { eann } }
-\cs_new:Npn \driver_pdf_link_last: { }
-\cs_new_protected:Npn \driver_pdf_link_margin:n #1
- { \__driver_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
-\cs_new_protected:Npn \driver_pdf_destination:nn #1#2
- {
- \__driver_pdf:x
- {
- dest ~ ( \exp_not:n {#1} )
- [
- @thispage
- \str_case:nnF {#2}
- {
- { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
- { fit } { /Fit }
- { fitb } { /FitB }
- { fitbh } { /FitBH }
- { fitbv } { /FitBV ~ @xpos }
- { fith } { /FitH ~ @ypos }
- { fitv } { /FitV ~ @xpos }
- }
- { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
- ]
- }
- }
-\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2
- {
- \group_begin:
- \hbox_set:Nn \l__driver_internal_box {#2}
- \box_move_down:nn { \box_dp:N \l__driver_internal_box }
- {
- \hbox:n
- {
- \__driver_pdf:n { obj ~ @driver_#1_llx ~ @xpos }
- \__driver_pdf:n { obj ~ @driver_#1_lly ~ @ypos }
- }
- }
- \box_use:N \l__driver_internal_box
- \box_move_up:nn { \box_ht:N \l__driver_internal_box }
- {
- \hbox:n
- {
- \__driver_pdf:n
- {
- dest ~ (#1)
- [
- @thispage
- /FitR ~
- @driver_#1_llx ~ @driver_#1_lly ~
- @xpos ~ @ypos
- ]
- }
- }
- }
- \group_end:
- }
-\cs_new_protected:Npn \driver_pdf_compresslevel:n #1
- { \__driver_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
-\cs_new_protected:Npn \driver_pdf_compress_objects:n #1
- {
- \str_if_eq:nnF {#1} { true }
- { \__driver_literal:n { dvipdfmx:config~C~0x40 } }
- }
-\cs_new_protected:Npn \driver_pdf_version_major:n #1
- {
- \cs_gset:Npx \driver_pdf_version_major: { \int_eval:n {#1} }
- \__driver_literal:x { pdf:majorversion \driver_pdf_version_major: }
- }
-\cs_new_protected:Npn \driver_pdf_version_minor:n #1
- {
- \cs_gset:Npx \driver_pdf_version_minor: { \int_eval:n {#1} }
- \__driver_literal:x { pdf:minorversion \driver_pdf_version_minor: }
- }
-\cs_new:Npn \driver_pdf_version_major: { 1 }
-\cs_new:Npn \driver_pdf_version_minor: { 5 }
-%%
-%%
-%% End of file `l3xdvipdfmx.def'.