summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-05-02 22:51:31 +0000
committerKarl Berry <karl@freefriends.org>2019-05-02 22:51:31 +0000
commit4de7376b42147ed2246d7320e079bdebd84d9503 (patch)
treec84b6bf2943a50ce3651f54a5fd83a3918e8905e /Master/texmf-dist/tex/latex
parentfc9aebc5bf923b3e26bd4157f786523ff49d2cbe (diff)
l3kernel (22apr19)
git-svn-id: svn://tug.org/texlive/trunk@50950 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.lua2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/expl3.sty2
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def383
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def666
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def80
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def438
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def469
9 files changed, 1486 insertions, 558 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
index 715c3637b3d..0710918dfaf 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3-code.tex
@@ -63,7 +63,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: expl3.dtx
-\def\ExplFileDate{2019-04-06}%
+\def\ExplFileDate{2019-04-21}%
\begingroup
\def\next{\endgroup}%
\expandafter\ifx\csname PackageError\endcsname\relax
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex b/Master/texmf-dist/tex/latex/l3kernel/expl3-generic.tex
index 2865a66e848..81c56d71765 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-04-06}%
+\def\ExplFileDate{2019-04-21}%
\let\ExplLoaderFileDate\ExplFileDate
\begingroup
\def\tempa{LaTeX2e}%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
index 06b3edd8384..48b4a266506 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
+++ b/Master/texmf-dist/tex/latex/l3kernel/expl3.lua
@@ -6,7 +6,7 @@
--
-- l3luatex.dtx (with options: `package,lua')
--
--- Copyright (C) 1990-2017 The LaTeX3 Project
+-- 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
diff --git a/Master/texmf-dist/tex/latex/l3kernel/expl3.sty b/Master/texmf-dist/tex/latex/l3kernel/expl3.sty
index 4a7c73d8299..d084dafa2fe 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-04-06}%
+\def\ExplFileDate{2019-04-21}%
\let\ExplLoaderFileDate\ExplFileDate
\ProvidesPackage{expl3}
[%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
index 95b580d4e66..7071cac3a1f 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
@@ -5,6 +5,12 @@
%% 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-image.dtx (with options: `package,dvipdfmx')
+%% l3drivers-pdf.dtx (with options: `package,dvipdfmx')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
%%
@@ -19,6 +25,7 @@
%% 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}
@@ -26,6 +33,14 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\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
{
@@ -77,13 +92,7 @@
\cs_generate_variant:Nn \__driver_color_select:n { x }
\cs_new_protected:Npn \__driver_color_reset:
{ \__driver_literal:n { color~pop } }
-\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-box.dtx
\cs_new_protected:Npn \driver_box_use_clip:N #1
{
\__driver_scope_begin:
@@ -126,141 +135,7 @@
\hbox_overlap_right:n { \box_use:N #1 }
\__driver_scope_end:
}
-\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
-\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
- {
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \image_extract_bb:n {#1}
- }
-\cs_new_eq:NN \__driver_image_getbb_png:n \__driver_image_getbb_jpg:n
-\cs_new_protected:Npn \__driver_image_getbb_pdf:n #1
- {
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \image_extract_bb:n {#1}
- }
-\int_new:N \g__driver_image_int
-\cs_new_protected:Npn \__driver_image_include_eps:n #1
- {
- \__driver_literal:n { PSfile = #1 }
- }
-\cs_new_protected:Npn \__driver_image_include_jpg:n #1
- { \__driver_image_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
-\cs_new_protected:Npn \__driver_image_include_pdf:n #1
- { \__driver_image_include_auxi:nn {#1} { epdf } }
-\cs_new_protected:Npn \__driver_image_include_auxi:nn #1#2
- {
- \__driver_image_include_auxii:xnn
- {
- \tl_if_empty:NF \l_image_pagebox_tl
- { : \l_image_pagebox_tl }
- \int_compare:nNnT \l_image_page_int > 1
- { :P \int_use:N \l_image_page_int }
- \tl_if_empty:NF \l_image_decode_tl
- { :D \l_image_decodearray_tl }
- \bool_if:NT \l_image_interpolate_bool
- { :I }
- }
- {#1} {#2}
- }
-\cs_new_protected:Npn \__driver_image_include_auxii:nnn #1#2#3
- {
- \int_if_exist:cTF { c__driver_image_ #2#1 _int }
- {
- \__driver_literal:x
- { pdf:usexobj~@image \int_use:c { c__driver_image_ #2#1 _int } }
- }
- { \__driver_image_include_auxiii:nn {#2} {#1} {#3} }
- }
-\cs_generate_variant:Nn \__driver_image_include_auxii:nnn { x }
-\cs_new_protected:Npn \__driver_image_include_auxiii:nnn #1#2#3
- {
- \int_gincr:N \g__driver_image_int
- \int_const:cn { c__driver_image_ #1#2 _int } { \g__driver_image_int }
- \__driver_literal:x
- {
- pdf:#3~
- @image \int_use:c { c__driver_image_ #1#2 _int }
- \int_compare:nNnT \l_image_page_int > 1
- { page ~ \int_use:N \l_image_page_int \c_space_tl }
- \tl_if_empty:NF \l_image_pagebox_tl
- {
- pagebox ~ \l_image_pagebox_tl \c_space_tl
- bbox ~
- \dim_to_decimal_in_bp:n \l_image_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_ury_dim \c_space_tl
- }
- (#1)
- \bool_lazy_or:nnT
- { \l_image_interpolate_bool }
- { ! \tl_if_empty_p:N \l_image_decodearray_tl }
- {
- <<
- \tl_if_empty:NF \l_image_decode_tl
- { /Decode~[ \l_image_decodearray_tl ] }
- \bool_if:NT \l_image_interpolate_bool
- { /Interpolate~true> }
- >>
- }
- }
- }
-\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
- { @l3obj \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_literal:x
- {
- pdf:obj ~ \driver_pdf_object_ref:n {#1} ~
- [ ~ \exp_not:n {#2} ~ ]
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2
- {
- \__driver_literal:x
- {
- pdf: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_literal:x
- {
- pdf: #1 stream ~ \driver_pdf_object_ref:n {#2} ~
- ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
-
- }
- }
-\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_objects_enable: { }
-\cs_new_protected:Npn \driver_pdf_objects_disable:
- { \__driver_literal:n { dvipdfmx:config~C~0x40 } }
+%% 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:
@@ -476,6 +351,230 @@
\__driver_literal:n { pdf:etrans }
\__driver_scope_end:
}
+%% File: l3drivers-image.dtx
+\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
+\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
+ {
+ \int_zero:N \l_image_page_int
+ \tl_clear:N \l_image_pagebox_tl
+ \image_extract_bb:n {#1}
+ }
+\cs_new_eq:NN \__driver_image_getbb_png:n \__driver_image_getbb_jpg:n
+\cs_new_protected:Npn \__driver_image_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_image_decode_tl
+ \bool_set_false:N \l_image_interpolate_bool
+ \image_extract_bb:n {#1}
+ }
+\int_new:N \g__driver_image_int
+\cs_new_protected:Npn \__driver_image_include_eps:n #1
+ {
+ \__driver_literal:n { PSfile = #1 }
+ }
+\cs_new_protected:Npn \__driver_image_include_jpg:n #1
+ { \__driver_image_include_auxi:nn {#1} { image } }
+\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
+\cs_new_protected:Npn \__driver_image_include_pdf:n #1
+ { \__driver_image_include_auxi:nn {#1} { epdf } }
+\cs_new_protected:Npn \__driver_image_include_auxi:nn #1#2
+ {
+ \__driver_image_include_auxii:xnn
+ {
+ \tl_if_empty:NF \l_image_pagebox_tl
+ { : \l_image_pagebox_tl }
+ \int_compare:nNnT \l_image_page_int > 1
+ { :P \int_use:N \l_image_page_int }
+ \tl_if_empty:NF \l_image_decode_tl
+ { :D \l_image_decodearray_tl }
+ \bool_if:NT \l_image_interpolate_bool
+ { :I }
+ }
+ {#1} {#2}
+ }
+\cs_new_protected:Npn \__driver_image_include_auxii:nnn #1#2#3
+ {
+ \int_if_exist:cTF { c__driver_image_ #2#1 _int }
+ {
+ \__driver_literal:x
+ { pdf:usexobj~@image \int_use:c { c__driver_image_ #2#1 _int } }
+ }
+ { \__driver_image_include_auxiii:nn {#2} {#1} {#3} }
+ }
+\cs_generate_variant:Nn \__driver_image_include_auxii:nnn { x }
+\cs_new_protected:Npn \__driver_image_include_auxiii:nnn #1#2#3
+ {
+ \int_gincr:N \g__driver_image_int
+ \int_const:cn { c__driver_image_ #1#2 _int } { \g__driver_image_int }
+ \__driver_literal:x
+ {
+ pdf:#3~
+ @image \int_use:c { c__driver_image_ #1#2 _int }
+ \int_compare:nNnT \l_image_page_int > 1
+ { page ~ \int_use:N \l_image_page_int \c_space_tl }
+ \tl_if_empty:NF \l_image_pagebox_tl
+ {
+ pagebox ~ \l_image_pagebox_tl \c_space_tl
+ bbox ~
+ \dim_to_decimal_in_bp:n \l_image_llx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_image_lly_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_image_urx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_image_ury_dim \c_space_tl
+ }
+ (#1)
+ \bool_lazy_or:nnT
+ { \l_image_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_image_decodearray_tl }
+ {
+ <<
+ \tl_if_empty:NF \l_image_decode_tl
+ { /Decode~[ \l_image_decodearray_tl ] }
+ \bool_if:NT \l_image_interpolate_bool
+ { /Interpolate~true> }
+ >>
+ }
+ }
+ }
+%% File: l3drivers-pdf.dtx
+\tl_const:Nn \c__driver_pdf_AR_fix_tl
+ { /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\cs_new_protected:Npx \__driver_pdf:n #1
+ { \__driver_literal:n { pdf: #1 } }
+\cs_generate_variant:Nn \__driver_pdf:n { x }
+\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 }
+ }
+ }
+\cs_new_protected:Npx \__driver_pdf_AR_fix:
+ {
+ \__driver_pdf:n
+ {
+ ann ~ width ~ 3pt ~ height ~ 3pt ~ depth ~ 0pt
+ << \c__driver_pdf_AR_fix_tl >>
+ }
+ }
+\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
+ {
+ \__driver_pdf_AR_fix:
+ \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 /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_AR_fix:
+ \__driver_pdf:n
+ {
+ bann
+ <<
+ /Type /Annot
+ /Subtype /Link
+ #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 { }
+\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_objects_enable: { }
+\cs_new_protected:Npn \driver_pdf_objects_disable:
+ { \__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
index db72b671eff..bc9cdcd2874 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
@@ -5,6 +5,12 @@
%% 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-image.dtx (with options: `package,dvips')
+%% l3drivers-pdf.dtx (with options: `package,dvips')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
%%
@@ -19,6 +25,7 @@
%% 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}
@@ -26,6 +33,30 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\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:Npn \__driver_postscript_header:n #1
+ { \__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
{
@@ -72,30 +103,13 @@
\cs_new_protected:Npn \__driver_color_select:n #1
{
\__driver_literal:n { color~push~ #1 }
- \__driver_literal_postscript:n { /l3fc~{ }~def }
+ \__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 } }
-\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_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-box.dtx
\cs_new_protected:Npn \driver_box_use_clip:N #1
{
\__driver_scope_begin:
@@ -149,16 +163,14 @@
\hbox_overlap_right:n { \box_use:N #1 }
\__driver_scope_end:
}
-\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
-\cs_new_protected:Npn \__driver_image_include_eps:n #1
- { \__driver_literal:n { PSfile = #1 } }
+%% 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_draw_literal:n { /l3fc~{ }~def }
+ \__driver_darw_literal:n { SDict ~ begin ~ /driver.fc ~ { } ~ def ~ end }
}
\cs_new_protected:Npn \driver_draw_end:
{
@@ -233,7 +245,7 @@
\cs_new_protected:Npn \driver_draw_fill:
{
\__driver_draw_literal:n { gsave }
- \__driver_draw_literal:n { l3fc }
+ \__driver_draw_literal:n { driver.fc }
\__driver_draw_literal:x
{
\bool_if:NT \g__driver_draw_eor_bool { eo }
@@ -254,7 +266,7 @@
\cs_new_protected:Npn \driver_draw_fillstroke:
{
\__driver_draw_literal:n { gsave }
- \__driver_draw_literal:n { l3fc }
+ \__driver_draw_literal:n { driver.fc }
\__driver_draw_literal:x
{
\bool_if:NT \g__driver_draw_eor_bool { eo }
@@ -354,7 +366,7 @@
{ rgb ~ \fp_eval:n {#1} ~ \fp_eval:n {#2} ~ \fp_eval:n {#3} }
}
\cs_new_protected:Npn \__driver_draw_color_fill:n #1
- { \__driver_draw_literal:n { /l3fc ~ { #1 } ~ def } }
+ { \__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
{
@@ -394,6 +406,13 @@
\__driver_draw_literal:n { [begin] }
\__driver_draw_literal:n { @beginspecial }
}
+%% File: l3drivers-image.dtx
+\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
+\cs_new_protected:Npn \__driver_image_include_eps:n #1
+ { \__driver_literal:n { PSfile = #1 } }
+%% File: l3drivers-pdf.dtx
+\tl_const:Nn \c__driver_pdf_AR_fix_tl
+ { /Ff ~ 65537 /FT /Btn /Subtype /Widget }
\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
@@ -405,12 +424,12 @@
\prop_gput:Nnn \g__driver_pdf_object_prop {#1} {#2}
}
\cs_new:Npn \driver_pdf_object_ref:n #1
- { { l3obj \int_use:c { g__driver_pdf_object_ \tl_to_str:n {#1} _int } } }
+ { { 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
{
- \__driver_literal_postscript:x
+ \__driver_postscript:x
{
- mark ~ /_objdef ~ \driver_pdf_object_ref:n {#1} ~
+ mark /_objdef ~ \driver_pdf_object_ref:n {#1}
/type
\str_case_e:nn
{ \prop_item:Nn \g__driver_pdf_object_prop {#1} }
@@ -428,18 +447,18 @@
}
\cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2
{
- \__driver_literal_postscript:x
+ \__driver_postscript:x
{
- mark ~ \driver_pdf_object_ref:n {#1} ~
+ mark ~ \driver_pdf_object_ref:n {#1}
[ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL ~ pdfmark
}
}
\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2
{
- \__driver_literal_postscript:x
+ \__driver_postscript:x
{
- mark ~ \driver_pdf_object_ref:n {#1} ~
- << ~ \exp_not:n {#2} ~ >> ~ /PUT ~ pdfmark
+ mark ~ \driver_pdf_object_ref:n {#1}
+ << \exp_not:n {#2} >> /PUT ~ pdfmark
}
}
\cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2
@@ -451,16 +470,587 @@
}
\cs_new_protected:Npn \__driver_pdf_object_write_stream:nnn #1#2#3
{
- \__driver_literal_postscript:n
+ \__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.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.annotation.border
+ { /Rect [ driver.llx ~ driver.lly ~ driver.urx ~ driver.ury ] } def
+ /driver.annotation.ll
+ {
+ currentpoint
+ /driver.lly ~ exch ~ def
+ /driver.llx ~ exch ~ def
+ }
+ def
+ /driver.annotation.ur
+ {
+ currentpoint
+ /driver.ury ~ exch ~ def
+ /driver.urx ~ exch ~ def
+ }
+ def
+ /driver.link.ll
+ {
+ currentpoint ~
+ driver.linkmargin ~ add ~
+ driver.linkdp.pad ~ add
+ /driver.lly ~ exch ~ def ~
+ driver.linkmargin ~ sub
+ /driver.llx ~ exch ~ def
+ }
+ def
+ /driver.link.ur
+ {
+ 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.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.link.ll
+ /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.link.ll
+ /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 ~ 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 }
+ { driver.pdfmark.obj }
+ ifelse
+ }
+ { driver.pdfmark.obj }
+ ifelse ~
+ 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
+ /driver.pdfmark.obj
+ { /_objdef ~ exch ~ driver.link.obj ~ exch } 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_postscript:x
+ {
+ mark
+ /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
+ driver.annotation.border ~
+ #4 ~
+ /ANN ~ pdfmark
+ }
+ }
+\cs_new_protected:Npn \__driver_pdf_annotation:nnnn #1#2#3#4
+ {
+ \box_move_down:nn {#3}
+ { \hbox:n { \__driver_postscript:n { driver.annotation.ll } } }
+ \hbox:n {#4}
+ \box_move_up:nn {#2}
+ {
+ \hbox:n
+ {
+ \tex_kern:D \dim_eval:n {#1} \scan_stop:
+ \__driver_postscript:n { driver.annotation.ur }
+ }
+ }
+ \int_gincr:N \g__driver_pdf_object_int
+ \int_gset_eq:NN \g__driver_pdf_annotation_int \g__driver_pdf_object_int
+ \__driver_postscript:x
+ {
+ mark
+ /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int }
+ driver.annotation.border ~
+ \c__driver_pdf_AR_fix_tl
+ /ANN ~ pdfmark
+ }
+ }
+\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
+\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
+ { \__driver_pdf_link_begin:nw { #1 /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_pdf_annotation:nnnn { 3pt } { 3pt } { 0pt } { }
+ \__driver_postscript:n
+ { /driver.link.dict ( /Subtype /Link #1 ) def }
+ \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
+ {
+ /driver.link.obj
+ {
+ { driver.obj \int_use:N \g__driver_pdf_link_int \c_space_tl driver.cvs }
+ }
+ 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.link.ll } } }
+ \__driver_postscript:n { driver.bordertracking.begin }
+ \hbox_unpack:N \l__driver_pdf_content_box
+ \__driver_postscript:n { driver.bordertracking.end }
+ \box_move_up:nn { \box_ht:N \l__driver_pdf_content_box }
+ {
+ \hbox:n
+ { \__driver_postscript:n { driver.link.ur } }
+ }
+ \__driver_postscript:x
+ {
+ mark
+ \g__driver_pdf_link_dict_tl /Subtype /Link ~
+ driver.annotation.border
+ /ANN ~ driver.pdfmark
+ }
+ \__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 }
+ }
+ }
+\tl_gput_left:Nn \@startcolumn
+ {
+ \__driver_postscript:n
+ {
+ driver.globaldict /driver.brokenlink.rect ~ known
+ { driver.bordertracking.continue }
+ if
+ }
+ }
+\tl_gput_left:Nn \@makecol
+ {
+ \vbox_set:Nn \@cclv
+ {
+ \vbox_unpack_drop:N \@cclv
+ \__driver_postscript:n
+ { driver.bordertracking.endpage }
+ }
+ }
+\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
{
- [nobreak] ~
- mark ~ #1 ~ ( #3 ) ~ /PUT ~ pdfmark ~
- mark ~ #1 ~ << #2 >> ~ /PUT ~ pdfmark
+ /driver.linkmargin { \dim_to_decimal:n {#1} ~ driver.pt.dvi } def
}
}
\cs_new_protected:Npn \driver_pdf_compresslevel:n #1 { }
\cs_new_protected:Npn \driver_pdf_objects_enable: { }
\cs_new_protected:Npn \driver_pdf_objects_disable: { }
+\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
index 010d500238d..8594ca95919 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvisvgm.def
@@ -5,6 +5,12 @@
%% 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-image.dtx (with options: `package,dvisvgm')
+%% l3drivers-pdf.dtx (with options: `package,dvisvgm')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
%%
@@ -19,6 +25,7 @@
%% 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}
@@ -26,6 +33,17 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\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
{
@@ -77,16 +95,7 @@
\cs_generate_variant:Nn \__driver_color_select:n { x }
\cs_new_protected:Npn \__driver_color_reset:
{ \__driver_literal:n { color~pop } }
-\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-box.dtx
\cs_new_protected:Npn \driver_box_use_clip:N #1
{
\int_gincr:N \g__driver_clip_path_int
@@ -171,27 +180,7 @@
\hbox_overlap_right:n { \box_use:N #1 }
\__driver_scope_end:
}
-\cs_new_eq:NN \__driver_image_getbb_png:n \image_extract_bb:n
-\cs_new_eq:NN \__driver_image_getbb_jpg:n \image_extract_bb:n
-\cs_new_protected:Npn \__driver_image_include_png:n #1
- {
- \__driver_literal:x
- {
- dvisvgm:img~
- \dim_to_decimal:n { \l_image_ury_dim } ~
- \dim_to_decimal:n { \l_image_ury_dim } ~
- \__driver_image_include_bitmap_quote:w #1 " " \q_stop
- }
- }
-\cs_new_eq:NN \__driver_image_include_jpg:n \__driver_image_include_png:n
-\cs_new:Npn \__driver_image_include_bitmap_quote:w #1 " #2 " #3 \q_stop
- { #1#2 }
-\cs_new_protected:Npn \driver_pdf_object_new:n #1 { }
-\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_objects_enable: { }
-\cs_new_protected:Npn \driver_pdf_objects_disable: { }
+%% 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:
@@ -461,6 +450,35 @@
\__driver_literal_svg:n { </g> }
\__driver_scope_end:
}
+%% File: l3drivers-image.dtx
+\cs_new_eq:NN \__driver_image_getbb_png:n \image_extract_bb:n
+\cs_new_eq:NN \__driver_image_getbb_jpg:n \image_extract_bb:n
+\cs_new_protected:Npn \__driver_image_include_png:n #1
+ {
+ \__driver_literal:x
+ {
+ dvisvgm:img~
+ \dim_to_decimal:n { \l_image_ury_dim } ~
+ \dim_to_decimal:n { \l_image_ury_dim } ~
+ \__driver_image_include_bitmap_quote:w #1 " #1 " \q_stop
+ }
+ }
+\cs_new_eq:NN \__driver_image_include_jpg:n \__driver_image_include_png:n
+\cs_new:Npn \__driver_image_include_bitmap_quote:w #1 " #2 " #3 \q_stop
+ { " #2 " }
+%% File: l3drivers-pdf.dtx
+\tl_const:Nn \c__driver_pdf_AR_fix_tl
+ { /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\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_objects_enable: { }
+\cs_new_protected:Npn \driver_pdf_objects_disable: { }
+\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
index 8ce7bcf5e52..1f1d6f61676 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3pdfmode.def
@@ -5,6 +5,12 @@
%% 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-image.dtx (with options: `package,pdfmode')
+%% l3drivers-pdf.dtx (with options: `package,pdfmode')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
%%
@@ -19,6 +25,7 @@
%% 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}
@@ -26,6 +33,35 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\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
{
@@ -113,34 +149,7 @@
{ \tex_pdfcolorstack:D }
\exp_not:N \l__driver_color_stack_int pop \scan_stop:
}
-\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-box.dtx
\cs_new_protected:Npn \driver_box_use_clip:N #1
{
\__driver_scope_begin:
@@ -196,6 +205,154 @@
\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-image.dtx
\tl_new:N \l__driver_image_attr_tl
\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
{
@@ -264,6 +421,70 @@
}
\cs_new_eq:NN \__driver_image_include_pdf:n \__driver_image_include_jpg:n
\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
+%% File: l3drivers-pdf.dtx
+\tl_const:Nn \c__driver_pdf_AR_fix_tl
+ { /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\cs_new_protected:Npx \__driver_pdf_AR_fix:
+ {
+ \cs_if_exist:NTF \tex_pdfextension:D
+ { \tex_pdfextension:D annot ~ }
+ { \tex_pdfannot:D }
+ width ~ 3pt ~ height ~ 3pt ~ depth ~ 0pt
+ { \c__driver_pdf_AR_fix_tl }
+ }
+\cs_new_protected:Npx \driver_pdf_annotation:nnnn #1#2#3#4
+ {
+ \__driver_pdf_AR_fix:
+ \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 } { /Subtype /Link #2 } }
+\cs_new_protected:Npx \__driver_pdf_link_begin:nnnw #1#2#3
+ {
+ \__driver_pdf_AR_fix:
+ \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:
+ }
\prop_new:N \g__driver_pdf_object_prop
\group_begin:
\cs_set_protected:Npn \__driver_tmp:w #1#2
@@ -337,151 +558,52 @@
{ \tex_pdfvariable:D objcompresslevel }
#1 \scan_stop:
}
-\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
+\cs_new_protected:Npx \driver_pdf_version_major_gset:n #1
{
- \__driver_draw_literal:x
+ \cs_if_exist:NTF \tex_pdfvariable:D
{
- \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
+ \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_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_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:Npn \__driver_draw_dash:n #1
- { ~ \dim_to_decimal_in_bp:n {#1} }
-\cs_new_protected:Npn \driver_draw_linewidth:n #1
+\cs_new_protected:Npx \driver_pdf_version_minor_gset:n #1
{
- \__driver_draw_literal:x
- { \dim_to_decimal_in_bp:n {#1} ~ w }
+ \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_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
+\cs_new:Npx \driver_pdf_version_major:
{
- \__driver_color_fill_select:x
+ \cs_if_exist:NTF \tex_pdfvariable:D
{
- \fp_eval:n {#1} ~ \fp_eval:n {#2} ~
- \fp_eval:n {#3} ~ \fp_eval:n {#4} ~
- k
+ \int_compare:nNnTF \tex_luatexversion:D > { 106 }
+ { \exp_not:N \tex_the:D \tex_pdfvariable:D majorversion }
+ { 1 }
}
- }
-\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_if_exist:NTF \tex_pdfmajorversion:D
+ { \exp_not:N \tex_the:D \tex_pdfmajorversion:D }
+ { 1 }
}
}
-\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
+\cs_new:Npx \driver_pdf_version_minor:
{
- \__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:
+ \exp_not:N \tex_the:D
+ \cs_if_exist:NTF \tex_pdfminorversion:D
+ { \exp_not:N \tex_pdfminorversion:D }
+ { \tex_pdfvariable:D minorversion }
}
%%
%%
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
index 069f8ff0696..17fd5e7aff5 100644
--- a/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
+++ b/Master/texmf-dist/tex/latex/l3kernel/l3xdvipdfmx.def
@@ -5,6 +5,12 @@
%% 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-image.dtx (with options: `package,xdvipdfmx')
+%% l3drivers-pdf.dtx (with options: `package,xdvipdfmx')
%%
%% Copyright (C) 1990-2019 The LaTeX3 Project
%%
@@ -19,6 +25,7 @@
%% 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}
@@ -26,6 +33,14 @@
\cs_new_protected:Npn \__driver_literal:n #1
{ \__driver_literal:e { \exp_not:n {#1} } }
\cs_generate_variant:Nn \__driver_literal:n { x }
+\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
{
@@ -77,13 +92,7 @@
\cs_generate_variant:Nn \__driver_color_select:n { x }
\cs_new_protected:Npn \__driver_color_reset:
{ \__driver_literal:n { color~pop } }
-\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-box.dtx
\cs_new_protected:Npn \driver_box_use_clip:N #1
{
\__driver_scope_begin:
@@ -126,184 +135,7 @@
\hbox_overlap_right:n { \box_use:N #1 }
\__driver_scope_end:
}
-\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
-\int_new:N \g__driver_image_int
-\cs_new_protected:Npn \__driver_image_include_eps:n #1
- {
- \__driver_literal:n { PSfile = #1 }
- }
-\cs_new_protected:Npn \__driver_image_include_jpg:n #1
- { \__driver_image_include_auxi:nn {#1} { image } }
-\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
-\cs_new_protected:Npn \__driver_image_include_auxi:nn #1#2
- {
- \__driver_image_include_auxii:xnn
- {
- \tl_if_empty:NF \l_image_pagebox_tl
- { : \l_image_pagebox_tl }
- \int_compare:nNnT \l_image_page_int > 1
- { :P \int_use:N \l_image_page_int }
- \tl_if_empty:NF \l_image_decode_tl
- { :D \l_image_decodearray_tl }
- \bool_if:NT \l_image_interpolate_bool
- { :I }
- }
- {#1} {#2}
- }
-\cs_new_protected:Npn \__driver_image_include_auxii:nnn #1#2#3
- {
- \int_if_exist:cTF { c__driver_image_ #2#1 _int }
- {
- \__driver_literal:x
- { pdf:usexobj~@image \int_use:c { c__driver_image_ #2#1 _int } }
- }
- { \__driver_image_include_auxiii:nn {#2} {#1} {#3} }
- }
-\cs_generate_variant:Nn \__driver_image_include_auxii:nnn { x }
-\cs_new_protected:Npn \__driver_image_include_auxiii:nnn #1#2#3
- {
- \int_gincr:N \g__driver_image_int
- \int_const:cn { c__driver_image_ #1#2 _int } { \g__driver_image_int }
- \__driver_literal:x
- {
- pdf:#3~
- @image \int_use:c { c__driver_image_ #1#2 _int }
- \int_compare:nNnT \l_image_page_int > 1
- { page ~ \int_use:N \l_image_page_int \c_space_tl }
- \tl_if_empty:NF \l_image_pagebox_tl
- {
- pagebox ~ \l_image_pagebox_tl \c_space_tl
- bbox ~
- \dim_to_decimal_in_bp:n \l_image_llx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_lly_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_urx_dim \c_space_tl
- \dim_to_decimal_in_bp:n \l_image_ury_dim \c_space_tl
- }
- (#1)
- \bool_lazy_or:nnT
- { \l_image_interpolate_bool }
- { ! \tl_if_empty_p:N \l_image_decodearray_tl }
- {
- <<
- \tl_if_empty:NF \l_image_decode_tl
- { /Decode~[ \l_image_decodearray_tl ] }
- \bool_if:NT \l_image_interpolate_bool
- { /Interpolate~true> }
- >>
- }
- }
- }
-\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
- { @l3obj \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_literal:x
- {
- pdf:obj ~ \driver_pdf_object_ref:n {#1} ~
- [ ~ \exp_not:n {#2} ~ ]
- }
- }
-\cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2
- {
- \__driver_literal:x
- {
- pdf: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_literal:x
- {
- pdf: #1 stream ~ \driver_pdf_object_ref:n {#2} ~
- ( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
-
- }
- }
-\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_objects_enable: { }
-\cs_new_protected:Npn \driver_pdf_objects_disable:
- { \__driver_literal:n { dvipdfmx:config~C~0x40 } }
-\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
- {
- \int_zero:N \l_image_page_int
- \tl_clear:N \l_image_pagebox_tl
- \__driver_image_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
- }
-\cs_new_eq:NN \__driver_image_getbb_png:n \__driver_image_getbb_jpg:n
-\cs_new_protected:Npn \__driver_image_getbb_pdf:n #1
- {
- \tl_clear:N \l_image_decode_tl
- \bool_set_false:N \l_image_interpolate_bool
- \__driver_image_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
- }
-\cs_new_protected:Npn \__driver_image_getbb_auxi:nN #1#2
- {
- \int_compare:nNnTF \l_image_page_int > 1
- { \__driver_image_getbb_auxii:VnN \l_image_page_int {#1} #2 }
- { \__driver_image_getbb_auxiii:nNnn {#1} #2 }
- }
-\cs_new_protected:Npn \__driver_image_getbb_auxii:nnN #1#2#3
- { \__driver_image_getbb_aux:nNnn {#2} #3 { :P #1 } { page #1 } }
-\cs_generate_variant:Nn \__driver_image_getbb_auxii:nnN { V }
-\cs_new_protected:Npn \__driver_image_getbb_auxiii:nNnn #1#2#3#4
- {
- \tl_if_empty:NTF \l_image_pagebox_tl
- { \__driver_image_getbb_auxiv:VnNnn \l_image_pagebox_tl }
- { \__driver_image_getbb_auxv:nNnn }
- {#1} #2 {#3} {#4}
- }
-\cs_new_protected:Npn \__driver_image_getbb_auxiv:nnNnn #1#2#3#4#5
- {
- \use:x
- {
- \__driver_image_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
- { #5 ~ \__driver_image_getbb_pagebox:w #1 }
- }
- }
-\cs_generate_variant:Nn \__driver_image_getbb_auxiv:nnNnn { V }
-\cs_new_protected:Npn \__driver_image_getbb_auxv:nNnn #1#2#3#4
- {
- \image_bb_restore:nF {#1#3}
- { \__driver_image_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
- }
-\cs_new_protected:Npn \__driver_image_getbb_auxvi:nNnn #1#2#3#4
- {
- \hbox_set:Nn \l__driver_tmp_box { #2 #1 ~ #4 }
- \dim_set:Nn \l_image_utx_dim { \box_wd:N \l__driver_tmp_box }
- \dim_set:Nn \l_image_ury_dim { \box_ht:N \l__driver_tmp_box }
- \image_bb_save:n {#1#3}
- }
-\cs_new:Npn \__driver_image_getbb_pagebox:w #1 box {#1}
-\cs_new_protected:Npn \__driver_image_include_pdf:n #1
- {
- \tex_XeTeXpdffile:D "#1" ~
- \int_compare:nNnT \l_image_page_int > 0
- { page~ \int_use:N \l_image_page_int }
- \__driver_image_getbb_auxiv:VnNnn \l_image_pagebox_tl
- }
+%% 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:
@@ -519,6 +351,273 @@
\__driver_literal:n { pdf:etrans }
\__driver_scope_end:
}
+%% File: l3drivers-image.dtx
+\cs_new_eq:NN \__driver_image_getbb_eps:n \image_read_bb:n
+\int_new:N \g__driver_image_int
+\cs_new_protected:Npn \__driver_image_include_eps:n #1
+ {
+ \__driver_literal:n { PSfile = #1 }
+ }
+\cs_new_protected:Npn \__driver_image_include_jpg:n #1
+ { \__driver_image_include_auxi:nn {#1} { image } }
+\cs_new_eq:NN \__driver_image_include_png:n \__driver_image_include_jpg:n
+\cs_new_protected:Npn \__driver_image_include_auxi:nn #1#2
+ {
+ \__driver_image_include_auxii:xnn
+ {
+ \tl_if_empty:NF \l_image_pagebox_tl
+ { : \l_image_pagebox_tl }
+ \int_compare:nNnT \l_image_page_int > 1
+ { :P \int_use:N \l_image_page_int }
+ \tl_if_empty:NF \l_image_decode_tl
+ { :D \l_image_decodearray_tl }
+ \bool_if:NT \l_image_interpolate_bool
+ { :I }
+ }
+ {#1} {#2}
+ }
+\cs_new_protected:Npn \__driver_image_include_auxii:nnn #1#2#3
+ {
+ \int_if_exist:cTF { c__driver_image_ #2#1 _int }
+ {
+ \__driver_literal:x
+ { pdf:usexobj~@image \int_use:c { c__driver_image_ #2#1 _int } }
+ }
+ { \__driver_image_include_auxiii:nn {#2} {#1} {#3} }
+ }
+\cs_generate_variant:Nn \__driver_image_include_auxii:nnn { x }
+\cs_new_protected:Npn \__driver_image_include_auxiii:nnn #1#2#3
+ {
+ \int_gincr:N \g__driver_image_int
+ \int_const:cn { c__driver_image_ #1#2 _int } { \g__driver_image_int }
+ \__driver_literal:x
+ {
+ pdf:#3~
+ @image \int_use:c { c__driver_image_ #1#2 _int }
+ \int_compare:nNnT \l_image_page_int > 1
+ { page ~ \int_use:N \l_image_page_int \c_space_tl }
+ \tl_if_empty:NF \l_image_pagebox_tl
+ {
+ pagebox ~ \l_image_pagebox_tl \c_space_tl
+ bbox ~
+ \dim_to_decimal_in_bp:n \l_image_llx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_image_lly_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_image_urx_dim \c_space_tl
+ \dim_to_decimal_in_bp:n \l_image_ury_dim \c_space_tl
+ }
+ (#1)
+ \bool_lazy_or:nnT
+ { \l_image_interpolate_bool }
+ { ! \tl_if_empty_p:N \l_image_decodearray_tl }
+ {
+ <<
+ \tl_if_empty:NF \l_image_decode_tl
+ { /Decode~[ \l_image_decodearray_tl ] }
+ \bool_if:NT \l_image_interpolate_bool
+ { /Interpolate~true> }
+ >>
+ }
+ }
+ }
+\cs_new_protected:Npn \__driver_image_getbb_jpg:n #1
+ {
+ \int_zero:N \l_image_page_int
+ \tl_clear:N \l_image_pagebox_tl
+ \__driver_image_getbb_auxi:nN {#1} \tex_XeTeXpicfile:D
+ }
+\cs_new_eq:NN \__driver_image_getbb_png:n \__driver_image_getbb_jpg:n
+\cs_new_protected:Npn \__driver_image_getbb_pdf:n #1
+ {
+ \tl_clear:N \l_image_decode_tl
+ \bool_set_false:N \l_image_interpolate_bool
+ \__driver_image_getbb_auxi:nN {#1} \tex_XeTeXpdffile:D
+ }
+\cs_new_protected:Npn \__driver_image_getbb_auxi:nN #1#2
+ {
+ \int_compare:nNnTF \l_image_page_int > 1
+ { \__driver_image_getbb_auxii:VnN \l_image_page_int {#1} #2 }
+ { \__driver_image_getbb_auxiii:nNnn {#1} #2 }
+ }
+\cs_new_protected:Npn \__driver_image_getbb_auxii:nnN #1#2#3
+ { \__driver_image_getbb_aux:nNnn {#2} #3 { :P #1 } { page #1 } }
+\cs_generate_variant:Nn \__driver_image_getbb_auxii:nnN { V }
+\cs_new_protected:Npn \__driver_image_getbb_auxiii:nNnn #1#2#3#4
+ {
+ \tl_if_empty:NTF \l_image_pagebox_tl
+ { \__driver_image_getbb_auxiv:VnNnn \l_image_pagebox_tl }
+ { \__driver_image_getbb_auxv:nNnn }
+ {#1} #2 {#3} {#4}
+ }
+\cs_new_protected:Npn \__driver_image_getbb_auxiv:nnNnn #1#2#3#4#5
+ {
+ \use:x
+ {
+ \__driver_image_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
+ { #5 ~ \__driver_image_getbb_pagebox:w #1 }
+ }
+ }
+\cs_generate_variant:Nn \__driver_image_getbb_auxiv:nnNnn { V }
+\cs_new_protected:Npn \__driver_image_getbb_auxv:nNnn #1#2#3#4
+ {
+ \image_bb_restore:nF {#1#3}
+ { \__driver_image_getbb_auxvi:nNnn {#1} #2 {#3} {#4} }
+ }
+\cs_new_protected:Npn \__driver_image_getbb_auxvi:nNnn #1#2#3#4
+ {
+ \hbox_set:Nn \l__driver_tmp_box { #2 #1 ~ #4 }
+ \dim_set:Nn \l_image_utx_dim { \box_wd:N \l__driver_tmp_box }
+ \dim_set:Nn \l_image_ury_dim { \box_ht:N \l__driver_tmp_box }
+ \image_bb_save:n {#1#3}
+ }
+\cs_new:Npn \__driver_image_getbb_pagebox:w #1 box {#1}
+\cs_new_protected:Npn \__driver_image_include_pdf:n #1
+ {
+ \tex_XeTeXpdffile:D "#1" ~
+ \int_compare:nNnT \l_image_page_int > 0
+ { page~ \int_use:N \l_image_page_int }
+ \__driver_image_getbb_auxiv:VnNnn \l_image_pagebox_tl
+ }
+%% File: l3drivers-pdf.dtx
+\tl_const:Nn \c__driver_pdf_AR_fix_tl
+ { /Ff ~ 65537 /FT /Btn /Subtype /Widget }
+\cs_new_protected:Npx \__driver_pdf:n #1
+ { \__driver_literal:n { pdf: #1 } }
+\cs_generate_variant:Nn \__driver_pdf:n { x }
+\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 }
+ }
+ }
+\cs_new_protected:Npx \__driver_pdf_AR_fix:
+ {
+ \__driver_pdf:n
+ {
+ ann ~ width ~ 3pt ~ height ~ 3pt ~ depth ~ 0pt
+ << \c__driver_pdf_AR_fix_tl >>
+ }
+ }
+\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
+ {
+ \__driver_pdf_AR_fix:
+ \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 /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_AR_fix:
+ \__driver_pdf:n
+ {
+ bann
+ <<
+ /Type /Annot
+ /Subtype /Link
+ #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 { }
+\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_objects_enable: { }
+\cs_new_protected:Npn \driver_pdf_objects_disable:
+ { \__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'.