diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def | 383 |
1 files changed, 241 insertions, 142 deletions
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'. |