%% %% This is file `l3backend-testphase-dvips.def', %% generated with the docstrip utility. %% %% The original source files were: %% %% l3backend-testphase.dtx (with options: `drivers,dvips') %% %% Copyright (C) 2019-2021 The LaTeX 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 "LaTeX PDF management testphase bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% %% File: l3backend-testphase.dtx \ProvidesExplFile {l3backend-testphase-dvips.def}{2024-08-17}{} {LaTeX~PDF~management~testphase~bundle~backend~support: dvips} \cs_generate_variant:Nn \__kernel_backend_postscript:n { e } \cs_generate_variant:Nn \__pdf_backend_pdfmark:n { e } \bool_if:NT \l__pdfmanagement_delayed_shipout_bool { \cs_new_protected:Npn \__kernel_backend_shipout_literal:e #1 { \tex_special:D~shipout { #1} } } \cs_new_protected:Npn \__pdf_backend_record_abspage:n #1 { \@bsphack \property_record:nn{#1}{abspage} \@esphack } \cs_new:Npn \__pdf_backend_ref_abspage:n #1 { \property_ref:nn{#1}{abspage} } \cs_generate_variant:Nn \__pdf_backend_record_abspage:n {e} \cs_generate_variant:Nn \__pdf_backend_ref_abspage:n {e} \prop_new:N \g__pdf_tmpa_prop \tl_new:N \l__pdf_tmpa_tl \box_new:N \l__pdf_backend_tmpa_box \box_new:N \l__pdf_backend_tmpb_box \int_new:N \g__pdf_backend_resourceid_int \int_new:N \g__pdf_backend_name_int \int_new:N \g__pdf_backend_page_int \cs_new:Npn \__kernel_pdf_name_from_unicode_e:n #1 { ~ ( \text_expand:n { #1 } ) ~ cvn } \tl_gput_right:Nn\@kernel@after@shipout@lastpage { \g__kernel_pdfmanagement_end_run_code_tl } \tl_if_exist:NTF \@kernel@after@shipout@background { \g@addto@macro \@kernel@before@shipout@background{\relax} \g@addto@macro \@kernel@after@shipout@background { \g__kernel_pdfmanagement_thispage_shipout_code_tl } } { \hook_gput_code:nnn{shipout/background}{pdf} { \g__kernel_pdfmanagement_thispage_shipout_code_tl } } \cs_new_protected:Npx \__pdf_backend_Pages_primitive:n #1 { \tex_special:D{ps:~[#1~/PAGES~pdfmark} %] } \cs_new_protected:Npn \__pdf_backend_Page_primitive:n #1 { \tex_special:D{ps:~[{ThisPage}<<#1>>~/PUT~pdfmark} %] } % the command to store default values. % Uses a prop with pdflatex + dvi, % sets a lua table with lualatex \cs_new_protected:Npn \__pdf_backend_Page_gput:nn #1 #2 { \pdfdict_gput:nnn {g__pdf_Core/Page}{ #1 }{ #2 } } % the command to remove a default value. % Uses a prop with pdflatex + dvi, % changes a lua table with lualatex \cs_new_protected:Npn \__pdf_backend_Page_gremove:n #1 { \pdfdict_gremove:nn {g__pdf_Core/Page}{ #1 } } % the command used in the document. % direct call of the primitive special with dvips/dvipdfmx % \latelua: fill a page related table with lualatex, merge it with the page % table and push it directly % write to aux and store in prop with pdflatex \cs_new_protected:Npn \__pdf_backend_ThisPage_gput:nn #1 #2 { \__pdf_backend_Page_primitive:n { /#1~#2 } } %the code to push the values, used in shipout %merges the two props and then fills the register in pdflatex %merges the two tables (the one is probably still empty) %and then fills (in lua) in luatex %issues the values stored in the global prop with dvi \cs_new_protected:Npn \__pdf_backend_ThisPage_gpush:n #1 { \__pdf_backend_Page_primitive:e { \pdfdict_use:n { g__pdf_Core/Page} } } \cs_generate_variant:Nn \__pdf_backend_Page_primitive:n { e } \clist_const:Nn \c__pdf_backend_PageResources_clist { ExtGState, ColorSpace, Pattern, Shading, } \cs_new_protected:Npn \__pdf_backend_PageResources:n #1 {} \cs_new_protected:Npn \__pdf_backend_PageResources_gput:nnn #1 #2 #3 { %only for the show command TEST!! \pdfdict_gput:nnn {g__pdf_Core/Page/Resources/#1} { #2 }{ #3 } } \cs_new_protected:Npn \__pdf_backend_PageResources_obj_gpush: {} \bool_new:N \l__pdf_backend_xform_bool \cs_set_protected:Npn \__pdf_backend_bdc:nn #1 #2 % #1 eg. Span, #2: dict_content { \__pdf_backend_pdfmark:n{/#1~<<#2>>~/BDC} } \bool_if:NT\l__pdfmanagement_delayed_shipout_bool { \cs_new_protected:Npn \__pdf_backend_bdc_shipout:ee #1 #2 % #1 eg. Span, #2: dict_content { \__kernel_backend_shipout_literal:e {ps: SDict ~ begin ~ mark /#1~<<#2>>~/BDC ~ pdfmark ~ end } } } \cs_set_protected:Npn \__pdf_backend_bdcobject:nn #1 #2 % #1 eg. Span, #2: object name { \__pdf_backend_pdfmark:e{/#1~\pdf_object_ref:n{#2}~/BDC} } \cs_set_protected:Npn \__pdf_backend_bdcobject:n #1 % #1 eg. Span, { \__pdf_backend_pdfmark:e{/#1~\__pdf_backend_object_last:~/BDC} } \cs_set_protected:Npn \__pdf_backend_emc: { \__pdf_backend_pdfmark:n{/EMC} % } \cs_set_protected:Npn \__pdf_backend_bmc:n #1 { \__pdf_backend_pdfmark:n{/#1~/BMC} % } \cs_new_protected:Npn \__pdf_backend_PageResources_gpush:n #1 {} \cs_new_protected:Npn \__pdf_backend_Names_gpush:nn #1 #2 {} \cs_new_protected:Npn \__pdf_backend_NamesEmbeddedFiles_add:nn #1 #2 { \__pdf_backend_pdfmark:e { /Name~#1~ /FS~#2~ /EMBED } } \cs_new_protected:Npn \__pdf_backend_link_off:{} \cs_new_protected:Npn \__pdf_backend_link_on: {} \tl_new:N \l__pdf_backend_xform_tmpwd_tl \tl_new:N \l__pdf_backend_xform_tmpdp_tl \tl_new:N \l__pdf_backend_xform_tmpht_tl \cs_new_protected:Npn\__pdf_backend_xform_new:nnnn #1 #2 #3 #4 % #1 name, #2 attribute, #4 content { \int_gincr:N \g__pdf_backend_object_int \int_const:cn { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } \hbox_set:Nn \l__pdf_backend_tmpa_box { \bool_set_true:N \l__pdf_backend_xform_bool \prop_gclear:c {\__kernel_pdfdict_name:n { g__pdf_Core/Xform/Resources/Properties }} #4 } %store the dimensions \tl_const:ce { c__pdf_backend_xform_wd_ \tl_to_str:n {#1} _tl } { \tex_the:D \box_wd:N \l__pdf_backend_tmpa_box } \tl_const:ce { c__pdf_backend_xform_ht_ \tl_to_str:n {#1} _tl } { \tex_the:D \box_ht:N \l__pdf_backend_tmpa_box } \tl_const:ce { c__pdf_backend_xform_dp_ \tl_to_str:n {#1} _tl } { \tex_the:D \box_dp:N \l__pdf_backend_tmpa_box } %store content dimensions in DPI units (Dots) (code from issue 25) \tl_set:Ne\l__pdf_backend_xform_tmpwd_tl { \dim_to_decimal_in_sp:n{ \box_wd:N \l__pdf_backend_tmpa_box }~ 65536~div~72.27~div~DVImag~mul~Resolution~mul~ } \tl_set:Ne\l__pdf_backend_xform_tmpht_tl { \dim_to_decimal_in_sp:n{ \box_ht:N \l__pdf_backend_tmpa_box }~ 65536~div~72.27~div~DVImag~mul~VResolution~mul~ } \tl_set:Ne\l__pdf_backend_xform_tmpdp_tl { \dim_to_decimal_in_sp:n{ \box_dp:N \l__pdf_backend_tmpa_box }~ 65536~div~72.27~div~DVImag~mul~VResolution~mul~ } % mirror the box %\box_scale:Nnn \l__pdf_backend_tmpa_box {1} {-1} \hbox_set:Nn\l__pdf_backend_tmpb_box { \__kernel_backend_postscript:e { gsave~currentpoint~ initclip~ % restore default clipping path (page device/whole page) clippath~pathbbox~newpath~pop~pop~ \tl_use:N\l__pdf_backend_xform_tmpdp_tl~add~translate~ mark~ /_objdef~{ pdf.obj \int_use:N\g__pdf_backend_object_int }\c_space_tl~ /BBox[ 0~ \tl_use:N\l__pdf_backend_xform_tmpht_tl~ \tl_use:N\l__pdf_backend_xform_tmpwd_tl~ \tl_use:N\l__pdf_backend_xform_tmpdp_tl~ neg ] \str_if_eq:eeF{#1}{} { product~(Distiller)~search~{pop~pop~pop~#2}{pop}ifelse~ } /BP~pdfmark~1~-1~scale~neg~exch~neg~exch~translate } \box_use_drop:N\l__pdf_backend_tmpa_box \__kernel_backend_postscript:n { mark ~ /EP~pdfmark ~ grestore } \str_if_eq:eeF{#1}{} { \__kernel_backend_postscript:e { product~(Ghostscript)~search~ { pop~pop~pop~ mark~ { pdf.obj \int_use:c{c__pdf_backend_xform_ \tl_to_str:n {#1} _int} } ~<<#2>>~/PUT~pdfmark }{pop}ifelse } } } \box_set_dp:Nn \l__pdf_backend_tmpb_box { \c_zero_dim } \box_set_ht:Nn \l__pdf_backend_tmpb_box { \c_zero_dim } \box_set_wd:Nn \l__pdf_backend_tmpb_box { \c_zero_dim } \hook_gput_code:nnn {begindocument/end}{pdfxform} { \mode_leave_vertical: \box_use:N\l__pdf_backend_tmpb_box } } \cs_new_protected:Npn \__pdf_backend_xform_use:n #1 { \hbox_set:Nn \l__pdf_backend_tmpa_box { \__kernel_backend_postscript:e { gsave~currentpoint~translate~1~-1~scale~ mark~{ pdf.obj \int_use:c{c__pdf_backend_xform_ \tl_to_str:n {#1} _int }}~ /SP~pdfmark ~ grestore } } \box_set_wd:Nn \l__pdf_backend_tmpa_box { \pdfxform_wd:n { #1 } } \box_set_ht:Nn \l__pdf_backend_tmpa_box { \pdfxform_ht:n { #1 } } \box_set_dp:Nn \l__pdf_backend_tmpa_box { \pdfxform_dp:n { #1 } } \box_use_drop:N \l__pdf_backend_tmpa_box } \cs_new:Npn \__pdf_backend_xform_ref:n #1 { { pdf.obj \int_use:c{c__pdf_backend_xform_ \tl_to_str:n {#1} _int} } } %% all \prg_new_conditional:Npnn \__pdf_backend_xform_if_exist:n #1 { p , T , F , TF } { \int_if_exist:cTF { c__pdf_backend_xform_ \tl_to_str:n {#1} _int } { \prg_return_true: } { \prg_return_false:} } \prg_new_eq_conditional:NNn \pdfxform_if_exist:n\__pdf_backend_xform_if_exist:n { TF , T , F , p } \tl_new:N \l_pdf_current_structure_destination_tl \cs_new_protected:Npn \pdf_activate_structure_destination: { \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_structure_destination:nn \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_structure_destination:nnnn \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw } \cs_new_protected:Npn \pdf_activate_indexed_structure_destination: { \cs_gset_eq:NN \__pdf_backend_destination:nn \__pdf_backend_indexed_structure_destination:nn \cs_gset_eq:NN \__pdf_backend_destination:nnnn \__pdf_backend_indexed_structure_destination:nnnn \cs_gset_eq:NN \__pdf_backend_link_begin_goto:nnw \__pdf_backend_link_begin_structure_goto:nnw } \cs_set_eq:NN \__pdf_backend_structure_destination:nn \__pdf_backend_destination:nn \cs_set_eq:NN \__pdf_backend_structure_destination:nnnn \__pdf_backend_destination:nnnn \cs_set_eq:NN \__pdf_backend_link_begin_structure_goto:nnw \__pdf_backend_link_begin_goto:nnw \cs_set_eq:NN \__pdf_backend_indexed_structure_destination:nn \__pdf_backend_destination:nn \cs_set_eq:NN \__pdf_backend_indexed_structure_destination:nnnn \__pdf_backend_destination:nnnn \cs_new_protected:Npn \__pdf_backend_set_regression_data: { \sys_gset_rand_seed:n{1000} \pdfmanagement_add:nnn{Info}{Creator}{(TeX)} \AddToHook{begindocument}{\pdfmanagement_add:nnn{Info}{Producer}{(pdfTeX+dvips)}} \__kernel_backend_literal:e{!~<>~setpagedevice} \__kernel_backend_literal:e{!~<>~setpagedevice} \str_if_exist:NTF\c_sys_timestamp_str { \pdfmanagement_add:nne{Info}{CreationDate}{(\c_sys_timestamp_str)} \pdfmanagement_add:nne{Info}{ModDate}{(\c_sys_timestamp_str)} } { \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} } \str_if_exist:NF\c_sys_timestamp_str { \pdfmanagement_add:nnn{Info}{CreationDate}{(D:20010101205959-00'00')} \pdfmanagement_add:nnn{Info}{ModDate}{(D:20010101205959-00'00')} \AddToDocumentProperties[document]{creationdate}{D:20010101205959-00'00'} \AddToDocumentProperties[document]{moddate}{D:20010101205959-00'00'} \AddToDocumentProperties[hyperref]{pdfmetadate}{D:20010101205959-00'00'} \AddToDocumentProperties[hyperref]{pdfdate}{D:20010101205959-00'00'} } \AddToDocumentProperties[hyperref]{pdfinstanceid}{uuid:0a57c455-157a-4141-8c19-6237d832fc80} \AddToDocumentProperties[hyperref]{pdfproducer}{\c_sys_engine_exec_str-NN.NN.NN} } \cs_new_protected:Npn \__pdf_backend_metadata_stream:n #1 { \pdf_object_unnamed_write:nn {stream}{{/Type~/Metadata~/Subtype~/XML}{#1}} } \cs_new_protected:Npn \__pdf_backend_omit_charset:n #1 {} %#1 number \cs_new_protected:Npn \__pdf_backend_omit_info:n #1 {} %#1 number \cs_new_protected:Npn \__pdf_backend_omit_cidset:n #1 {} %#1 number %% %% %% End of file `l3backend-testphase-dvips.def'.