%% %% This is file `l3backend-dvips.def', %% generated with the docstrip utility. %% %% The original source files were: %% %% l3backend-basics.dtx (with options: `package,dvips') %% l3backend-color.dtx (with options: `package,dvips') %% l3backend-box.dtx (with options: `package,dvips') %% l3backend-draw.dtx (with options: `package,dvips') %% l3backend-graphics.dtx (with options: `package,dvips') %% l3backend-pdf.dtx (with options: `package,dvips') %% l3backend-opacity.dtx (with options: `package,dvips') %% %% Copyright (C) 1990-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 "l3backend bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% %% File: l3backend-basics.dtx \ProvidesExplFile {l3backend-dvips.def}{2021-03-18}{} {L3 backend support: dvips} \cs_if_exist:NTF \__kernel_dependency_version_check:nn { \__kernel_dependency_version_check:nn {2020-09-01} {l3backend-dvips.def} } { \cs_if_exist_use:cF { @latex@error } { \errmessage } { Mismatched~LaTeX~support~files~detected. \MessageBreak Loading~aborted! } { \use:c { @ehd } } \tex_endinput:D } \cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D \cs_new_protected:Npn \__kernel_backend_literal:n #1 { \__kernel_backend_literal:e { \exp_not:n {#1} } } \cs_generate_variant:Nn \__kernel_backend_literal:n { x } \cs_new_protected:Npn \__kernel_backend_literal_postscript:n #1 { \__kernel_backend_literal:n { ps:: #1 } } \cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { x } \cs_new_protected:Npn \__kernel_backend_postscript:n #1 { \__kernel_backend_literal:n { ps: SDict ~ begin ~ #1 ~ end } } \cs_generate_variant:Nn \__kernel_backend_postscript:n { x } \bool_if:NT \g__kernel_backend_header_bool { \cs_if_exist:NTF \AtBeginDvi { \AtBeginDvi } { \use:n } { \__kernel_backend_literal:n { header = l3backend-dvips.pro } } } \cs_new_protected:Npn \__kernel_backend_align_begin: { \__kernel_backend_literal:n { ps::[begin] } \__kernel_backend_literal_postscript:n { currentpoint } \__kernel_backend_literal_postscript:n { currentpoint~translate } } \cs_new_protected:Npn \__kernel_backend_align_end: { \__kernel_backend_literal_postscript:n { neg~exch~neg~exch~translate } \__kernel_backend_literal:n { ps::[end] } } \cs_new_protected:Npn \__kernel_backend_scope_begin: { \__kernel_backend_literal:n { ps:gsave } } \cs_new_protected:Npn \__kernel_backend_scope_end: { \__kernel_backend_literal:n { ps:grestore } } %% File: l3backend-color.dtx \cs_new_protected:Npn \__color_backend_pickup:N #1 { } \cs_if_exist:cT { ver@color.sty } { \cs_set_protected:Npn \__color_backend_pickup:N #1 { \exp_args:NV \tl_if_head_is_space:nTF \current@color { \tl_set:Nx #1 { { \exp_after:wN \use:n \current@color } { 1 } } } { \exp_last_unbraced:Nx \__color_backend_pickup:w { \current@color } \s__color_stop #1 } } \cs_new_protected:Npn \__color_backend_pickup:w #1 ~ #2 \s__color_stop #3 { \tl_set:Nn #3 { {#1} {#2} } } } \cs_new_protected:Npn \__color_backend_select_cmyk:n #1 { \__color_backend_select:n { cmyk ~ #1 } } \cs_new_protected:Npn \__color_backend_select_gray:n #1 { \__color_backend_select:n { gray ~ #1 } } \cs_new_protected:Npn \__color_backend_select_rgb:n #1 { \__color_backend_select:n { rgb ~ #1 } } \cs_new_protected:Npn \__color_backend_select:n #1 { \__kernel_backend_literal:n { color~push~ #1 } \__kernel_backend_postscript:n { /color.sc ~ { } ~ def } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_reset: { \__kernel_backend_literal:n { color~pop } } \cs_new_protected:Npn \__color_backend_select_separation:nn #1#2 { \__color_backend_select:n { separation ~ #1 ~ #2 } } \cs_new_eq:NN \__color_backend_select_devicen:nn \__color_backend_select_separation:nn \cs_new_protected:Npx \__color_backend_separation_init:nnnnn #1#2#3#4#5 { \bool_if:NT \g__kernel_backend_header_bool { \cs_if_exist:NTF \AtBeginDvi { \exp_not:N \AtBeginDvi } { \use:n } { \exp_not:N \__color_backend_separation_init_aux:nnnnn {#1} {#2} {#3} {#4} {#5} } } } \cs_generate_variant:Nn \__color_backend_separation_init:nnnnn { nxx } \cs_new_protected:Npn \__color_backend_separation_init_aux:nnnnn #1#2#3#4#5 { \__kernel_backend_literal:e { ! TeXDict ~ begin ~ /color \int_use:N \g__color_model_int { [ ~ /Separation ~ ( \str_convert_pdfname:n {#1} ) ~ [ ~ #2 ~ ] ~ { \cs_if_exist_use:cF { __color_backend_separation_init_ #2 :nnn } { \__color_backend_separation_init:nnn } {#3} {#4} {#5} } ] ~ setcolorspace } ~ def ~ end } } \cs_new:cpn { __color_backend_separation_init_ /DeviceCMYK :nnn } #1#2#3 { \__color_backend_separation_init_Device:Nn 4 {#3} } \cs_new:cpn { __color_backend_separation_init_ /DeviceGray :nnn } #1#2#3 { \__color_backend_separation_init_Device:Nn 1 {#3} } \cs_new:cpn { __color_backend_separation_init_ /DeviceRGB :nnn } #1#2#3 { \__color_backend_separation_init_Device:Nn 2 {#3} } \cs_new:Npn \__color_backend_separation_init_Device:Nn #1#2 { #2 ~ \prg_replicate:nn {#1} { #1 ~ index ~ mul ~ #1 ~ 1 ~ roll ~ } \int_eval:n { #1 + 1 } ~ -1 ~ roll ~ pop } \cs_new:Npn \__color_backend_separation_init:nnn #1#2#3 { \exp_args:Ne \__color_backend_separation_init:nnnn { \__color_backend_separation_init_count:n {#2} } {#1} {#2} {#3} } \cs_new:Npn \__color_backend_separation_init_count:n #1 { \int_eval:n { 0 \__color_backend_separation_init_count:w #1 ~ \s__color_stop } } \cs_new:Npn \__color_backend_separation_init_count:w #1 ~ #2 \s__color_stop { +1 \tl_if_blank:nF {#2} { \__color_backend_separation_init_count:w #2 \s__color_stop } } \cs_new:Npn \__color_backend_separation_init:nnnn #1#2#3#4 { \__color_backend_separation_init:w #3 ~ \s__color_stop #4 ~ \s__color_stop \prg_replicate:nn {#1} { pop ~ 1 ~ index ~ neg ~ 1 ~ index ~ add ~ \int_eval:n { 3 * #1 } ~ index ~ mul ~ 2 ~ index ~ add ~ \int_eval:n { 3 * #1 } ~ #1 ~ roll ~ } \int_step_function:nnnN {#1} { -1 } { 1 } \__color_backend_separation_init:n \int_eval:n { 4 * #1 + 1 } ~ #1 ~ roll ~ \prg_replicate:nn { 3 * #1 + 1 } { pop ~ } \tl_if_blank:nF {#2} { \__color_backend_separation_init:nw {#1} #2 ~ \s__color_stop } } \cs_new:Npn \__color_backend_separation_init:w #1 ~ #2 \s__color_stop #3 ~ #4 \s__color_stop { #1 ~ #3 ~ 0 ~ \tl_if_blank:nF {#2} { \__color_backend_separation_init:w #2 \s__color_stop #4 \s__color_stop } } \cs_new:Npn \__color_backend_separation_init:n #1 { \int_eval:n { #1 * 2 } ~ index ~ } \cs_new:Npn \__color_backend_separation_init:nw #1#2 ~ #3 ~ #4 \s__color_stop { #2 ~ #3 ~ 2 ~ index ~ 2 ~ index ~ lt ~ { ~ pop ~ exch ~ pop ~ } ~ { ~ 2 ~ index ~ 1 ~ index ~ gt ~ { ~ exch ~ pop ~ exch ~ pop ~ } ~ { ~ pop ~ pop ~ } ~ ifelse ~ } ifelse ~ #1 ~ 1 ~ roll ~ \tl_if_blank:nF {#4} { \__color_backend_separation_init:nw {#1} #4 \s__color_stop } } \cs_new_protected:Npn \__color_backend_separation_init_CIELAB:nnn #1#2#3 { \__color_backend_separation_init:nxxnn {#2} { /CIEBasedABC ~ << ~ /RangeABC ~ [ ~ \c__color_model_range_CIELAB_tl \c_space_tl ] ~ /DecodeABC ~ [ ~ { ~ 16 ~ add ~ 116 ~ div ~ } ~ bind ~ { ~ 500 ~ div ~ } ~ bind ~ { ~ 200 ~ div ~ } ~ bind ~ ] ~ /MatrixABC ~ [ ~ 1 ~ 1 ~ 1 ~ 1 ~ 0 ~ 0 ~ 0 ~ 0 ~ -1 ~ ] ~ /DecodeLMN ~ [ ~ { ~ dup ~ 6 ~ 29 ~ div ~ ge ~ { ~ dup ~ dup ~ mul ~ mul ~ ~ } ~ { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~ ifelse ~ 0.9505 ~ mul ~ } ~ bind ~ { ~ dup ~ 6 ~ 29 ~ div ~ ge ~ { ~ dup ~ dup ~ mul ~ mul ~ } ~ { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~ ifelse ~ } ~ bind ~ { ~ dup ~ 6 ~ 29 ~ div ~ ge ~ { ~ dup ~ dup ~ mul ~ mul ~ } ~ { ~ 4 ~ 29 ~ div ~ sub ~ 108 ~ 841 ~ div ~ mul ~ } ~ ifelse ~ 1.0890 ~ mul ~ } ~ bind ] ~ /WhitePoint ~ [ ~ \tl_use:c { c__color_model_whitepoint_CIELAB_ #1 _tl } ~ ] ~ >> } { \c__color_model_range_CIELAB_tl } { 100 ~ 0 ~ 0 } {#3} } \cs_new_protected:Npn \__color_backend_devicen_init:nnn #1#2#3 { \__kernel_backend_literal:e { ! TeXDict ~ begin ~ /color \int_use:N \g__color_model_int { [ ~ /DeviceN ~ [ ~ #1 ~ ] ~ #2 ~ { ~ #3 ~ } ~ ] ~ setcolorspace } ~ def ~ end } } \cs_new_protected:Npn \__color_backend_fill_cmyk:n #1 { \__color_backend_fill:n { cmyk ~ #1 } } \cs_new_protected:Npn \__color_backend_fill_gray:n #1 { \__color_backend_fill:n { gray ~ #1 } } \cs_new_protected:Npn \__color_backend_fill_rgb:n #1 { \__color_backend_fill:n { rgb ~ #1 } } \cs_new_protected:Npn \__color_backend_fill:n #1 { \__kernel_backend_literal:n { color~push~ #1 } \group_insert_after:N \__color_backend_reset: } \cs_new_protected:Npn \__color_backend_stroke_cmyk:n #1 { \__kernel_backend_postscript:n { /color.sc { #1 ~ setcmykcolor } def } } \cs_new_protected:Npn \__color_backend_stroke_gray:n #1 { \__kernel_backend_postscript:n { /color.sc { #1 ~ setgray } def } } \cs_new_protected:Npn \__color_backend_stroke_rgb:n #1 { \__kernel_backend_postscript:n { /color.sc { #1 ~ setrgbcolor } def } } \cs_new_protected:Npn \__color_backend_fill_separation:nn #1#2 { \__color_backend_fill:n { separation ~ #1 ~ #2 } } \cs_new_protected:Npn \__color_backend_stroke_separation:nn #1#2 { \__kernel_backend_postscript:n { /color.sc { separation ~ #1 ~ #2 } def } } \cs_new_eq:NN \__color_backend_fill_devicen:nn \__color_backend_fill_separation:nn \cs_new_eq:NN \__color_backend_stroke_devicen:nn \__color_backend_stroke_separation:nn %% File: l3backend-box.dtx \cs_new_protected:Npn \__box_backend_clip:N #1 { \__kernel_backend_scope_begin: \__kernel_backend_align_begin: \__kernel_backend_literal_postscript:n { matrix~currentmatrix } \__kernel_backend_literal_postscript:n { Resolution~72~div~VResolution~72~div~scale } \__kernel_backend_literal_postscript:n { DVImag~dup~scale } \__kernel_backend_literal_postscript:x { 0 ~ \dim_to_decimal_in_bp:n { \box_dp:N #1 } ~ \dim_to_decimal_in_bp:n { \box_wd:N #1 } ~ \dim_to_decimal_in_bp:n { -\box_ht:N #1 - \box_dp:N #1 } ~ rectclip } \__kernel_backend_literal_postscript:n { setmatrix } \__kernel_backend_align_end: \hbox_overlap_right:n { \box_use:N #1 } \__kernel_backend_scope_end: \skip_horizontal:n { \box_wd:N #1 } } \cs_new_protected:Npn \__box_backend_rotate:Nn #1#2 { \exp_args:NNf \__box_backend_rotate_aux:Nn #1 { \fp_eval:n {#2} } } \cs_new_protected:Npn \__box_backend_rotate_aux:Nn #1#2 { \__kernel_backend_scope_begin: \__kernel_backend_align_begin: \__kernel_backend_literal_postscript:x { \fp_compare:nNnTF {#2} = \c_zero_fp { 0 } { \fp_eval:n { round ( -(#2) , 5 ) } } ~ rotate } \__kernel_backend_align_end: \box_use:N #1 \__kernel_backend_scope_end: } \cs_new_protected:Npn \__box_backend_scale:Nnn #1#2#3 { \__kernel_backend_scope_begin: \__kernel_backend_align_begin: \__kernel_backend_literal_postscript:x { \fp_eval:n { round ( #2 , 5 ) } ~ \fp_eval:n { round ( #3 , 5 ) } ~ scale } \__kernel_backend_align_end: \hbox_overlap_right:n { \box_use:N #1 } \__kernel_backend_scope_end: } %% File: l3backend-draw.dtx \cs_new_eq:NN \__draw_backend_literal:n \__kernel_backend_literal_postscript:n \cs_generate_variant:Nn \__draw_backend_literal:n { x } \cs_new_protected:Npn \__draw_backend_begin: { \__kernel_backend_literal:n { ps::[begin] } \__draw_backend_literal:n { @beginspecial } } \cs_new_protected:Npn \__draw_backend_end: { \__draw_backend_literal:n { @endspecial } \__kernel_backend_literal:n { ps::[end] } } \cs_new_protected:Npn \__draw_backend_scope_begin: { \__draw_backend_literal:n { save } } \cs_new_protected:Npn \__draw_backend_scope_end: { \__draw_backend_literal:n { restore } } \cs_new_protected:Npn \__draw_backend_moveto:nn #1#2 { \__draw_backend_literal:x { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ moveto } } \cs_new_protected:Npn \__draw_backend_lineto:nn #1#2 { \__draw_backend_literal:x { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ lineto } } \cs_new_protected:Npn \__draw_backend_rectangle:nnnn #1#2#3#4 { \__draw_backend_literal:x { \dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ moveto~dup~0~rlineto~exch~0~exch~rlineto~neg~0~rlineto~closepath } } \cs_new_protected:Npn \__draw_backend_curveto:nnnnnn #1#2#3#4#5#6 { \__draw_backend_literal:x { \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ \dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#5} ~ \dim_to_decimal_in_bp:n {#6} ~ curveto } } \cs_new_protected:Npn \__draw_backend_evenodd_rule: { \bool_gset_true:N \g__draw_draw_eor_bool } \cs_new_protected:Npn \__draw_backend_nonzero_rule: { \bool_gset_false:N \g__draw_draw_eor_bool } \bool_new:N \g__draw_draw_eor_bool \cs_new_protected:Npn \__draw_backend_closepath: { \__draw_backend_literal:n { closepath } } \cs_new_protected:Npn \__draw_backend_stroke: { \__draw_backend_literal:n { gsave } \__draw_backend_literal:n { color.sc } \__draw_backend_literal:n { stroke } \__draw_backend_literal:n { grestore } \bool_if:NT \g__draw_draw_clip_bool { \__draw_backend_literal:x { \bool_if:NT \g__draw_draw_eor_bool { eo } clip } } \__draw_backend_literal:n { newpath } \bool_gset_false:N \g__draw_draw_clip_bool } \cs_new_protected:Npn \__draw_backend_closestroke: { \__draw_backend_closepath: \__draw_backend_stroke: } \cs_new_protected:Npn \__draw_backend_fill: { \__draw_backend_literal:x { \bool_if:NT \g__draw_draw_eor_bool { eo } fill } \bool_if:NT \g__draw_draw_clip_bool { \__draw_backend_literal:x { \bool_if:NT \g__draw_draw_eor_bool { eo } clip } } \__draw_backend_literal:n { newpath } \bool_gset_false:N \g__draw_draw_clip_bool } \cs_new_protected:Npn \__draw_backend_fillstroke: { \__draw_backend_literal:x { \bool_if:NT \g__draw_draw_eor_bool { eo } fill } \__draw_backend_literal:n { gsave } \__draw_backend_literal:n { color.sc } \__draw_backend_literal:n { stroke } \__draw_backend_literal:n { grestore } \bool_if:NT \g__draw_draw_clip_bool { \__draw_backend_literal:x { \bool_if:NT \g__draw_draw_eor_bool { eo } clip } } \__draw_backend_literal:n { newpath } \bool_gset_false:N \g__draw_draw_clip_bool } \cs_new_protected:Npn \__draw_backend_clip: { \bool_gset_true:N \g__draw_draw_clip_bool } \bool_new:N \g__draw_draw_clip_bool \cs_new_protected:Npn \__draw_backend_discardpath: { \bool_if:NT \g__draw_draw_clip_bool { \__draw_backend_literal:x { \bool_if:NT \g__draw_draw_eor_bool { eo } clip } } \__draw_backend_literal:n { newpath } \bool_gset_false:N \g__draw_draw_clip_bool } \cs_new_protected:Npn \__draw_backend_dash_pattern:nn #1#2 { \__draw_backend_literal:x { [ \exp_args:Nf \use:n { \clist_map_function:nN {#1} \__draw_backend_dash:n } ] ~ \dim_to_decimal_in_bp:n {#2} ~ setdash } } \cs_new:Npn \__draw_backend_dash:n #1 { ~ \dim_to_decimal_in_bp:n {#1} } \cs_new_protected:Npn \__draw_backend_linewidth:n #1 { \__draw_backend_literal:x { \dim_to_decimal_in_bp:n {#1} ~ setlinewidth } } \cs_new_protected:Npn \__draw_backend_miterlimit:n #1 { \__draw_backend_literal:n { #1 ~ setmiterlimit } } \cs_new_protected:Npn \__draw_backend_cap_butt: { \__draw_backend_literal:n { 0 ~ setlinecap } } \cs_new_protected:Npn \__draw_backend_cap_round: { \__draw_backend_literal:n { 1 ~ setlinecap } } \cs_new_protected:Npn \__draw_backend_cap_rectangle: { \__draw_backend_literal:n { 2 ~ setlinecap } } \cs_new_protected:Npn \__draw_backend_join_miter: { \__draw_backend_literal:n { 0 ~ setlinejoin } } \cs_new_protected:Npn \__draw_backend_join_round: { \__draw_backend_literal:n { 1 ~ setlinejoin } } \cs_new_protected:Npn \__draw_backend_join_bevel: { \__draw_backend_literal:n { 2 ~ setlinejoin } } \cs_new_protected:Npn \__draw_backend_cm:nnnn #1#2#3#4 { \__draw_backend_literal:n { [ #1 ~ #2 ~ #3 ~ #4 ~ 0 ~ 0 ] ~ concat } } \cs_new_protected:Npn \__draw_backend_box_use:Nnnnn #1#2#3#4#5 { \__draw_backend_literal:n { @endspecial } \__draw_backend_literal:n { [end] } \__draw_backend_literal:n { [begin] } \__draw_backend_literal:n { save } \__draw_backend_literal:n { currentpoint } \__draw_backend_literal:n { currentpoint~translate } \__draw_backend_cm:nnnn { 1 } { 0 } { 0 } { -1 } \__draw_backend_cm:nnnn {#2} {#3} {#4} {#5} \__draw_backend_cm:nnnn { 1 } { 0 } { 0 } { -1 } \__draw_backend_literal:n { neg~exch~neg~exch~translate } \__draw_backend_literal:n { [end] } \hbox_overlap_right:n { \box_use:N #1 } \__draw_backend_literal:n { [begin] } \__draw_backend_literal:n { restore } \__draw_backend_literal:n { [end] } \__draw_backend_literal:n { [begin] } \__draw_backend_literal:n { @beginspecial } } %% File: l3backend-graphics.dtx \cs_new_eq:NN \__graphics_backend_getbb_eps:n \graphics_read_bb:n \cs_new_protected:Npn \__graphics_backend_include_eps:n #1 { \__kernel_backend_literal:x { PSfile = #1 \c_space_tl llx = \dim_to_decimal_in_bp:n \l_graphics_llx_dim \c_space_tl lly = \dim_to_decimal_in_bp:n \l_graphics_lly_dim \c_space_tl urx = \dim_to_decimal_in_bp:n \l_graphics_urx_dim \c_space_tl ury = \dim_to_decimal_in_bp:n \l_graphics_ury_dim } } %% File: l3backend-pdf.dtx \box_new:N \l__pdf_internal_box \cs_new_protected:Npn \__pdf_backend_pdfmark:n #1 { \__kernel_backend_postscript:n { mark #1 ~ pdfmark } } \cs_generate_variant:Nn \__pdf_backend_pdfmark:n { x } \cs_new_protected:Npn \__pdf_backend_catalog_gput:nn #1#2 { \__pdf_backend_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } } \cs_new_protected:Npn \__pdf_backend_info_gput:nn #1#2 { \__pdf_backend_pdfmark:n { /#1 ~ #2 /DOCINFO } } \int_new:N \g__pdf_backend_object_int \prop_new:N \g__pdf_backend_object_prop \cs_new_protected:Npn \__pdf_backend_object_new:nn #1#2 { \int_gincr:N \g__pdf_backend_object_int \int_const:cn { c__pdf_backend_object_ \tl_to_str:n {#1} _int } { \g__pdf_backend_object_int } \prop_gput:Nnn \g__pdf_backend_object_prop {#1} {#2} } \cs_new:Npn \__pdf_backend_object_ref:n #1 { { pdf.obj \int_use:c { c__pdf_backend_object_ \tl_to_str:n {#1} _int } } } \cs_new_protected:Npn \__pdf_backend_object_write:nn #1#2 { \__pdf_backend_pdfmark:x { /_objdef ~ \__pdf_backend_object_ref:n {#1} /type \str_case_e:nn { \prop_item:Nn \g__pdf_backend_object_prop {#1} } { { array } { /array } { dict } { /dict } { fstream } { /stream } { stream } { /stream } } /OBJ } \use:c { __pdf_backend_object_write_ \prop_item:Nn \g__pdf_backend_object_prop {#1} :nn } { \__pdf_backend_object_ref:n {#1} } {#2} } \cs_generate_variant:Nn \__pdf_backend_object_write:nn { nx } \cs_new_protected:Npn \__pdf_backend_object_write_array:nn #1#2 { \__pdf_backend_pdfmark:x { #1 ~0~ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL } } \cs_new_protected:Npn \__pdf_backend_object_write_dict:nn #1#2 { \__pdf_backend_pdfmark:x { #1 << \exp_not:n {#2} >> /PUT } } \cs_new_protected:Npn \__pdf_backend_object_write_fstream:nn #1#2 { \exp_args:Nx \__pdf_backend_object_write_fstream:nnn {#1} #2 } \cs_new_protected:Npn \__pdf_backend_object_write_fstream:nnn #1#2#3 { \__kernel_backend_postscript:n { SDict ~ begin ~ mark ~ #1 ~ << #2 >> /PUT ~ pdfmark ~ mark ~ #1 ~ ( #3 )~ ( r )~ file ~ /PUT ~ pdfmark ~ end } } \cs_new_protected:Npn \__pdf_backend_object_write_stream:nn #1#2 { \exp_args:Nx \__pdf_backend_object_write_stream:nnn {#1} #2 } \cs_new_protected:Npn \__pdf_backend_object_write_stream:nnn #1#2#3 { \__kernel_backend_postscript:n { mark ~ #1 ~ ( #3 ) /PUT ~ pdfmark ~ mark ~ #1 ~ << #2 >> /PUT ~ pdfmark } } \cs_new_protected:Npn \__pdf_backend_object_now:nn #1#2 { \int_gincr:N \g__pdf_backend_object_int \__pdf_backend_pdfmark:x { /_objdef ~ { pdf.obj \int_use:N \g__pdf_backend_object_int } /type \str_case:nn {#1} { { array } { /array } { dict } { /dict } { fstream } { /stream } { stream } { /stream } } /OBJ } \exp_args:Nnx \use:c { __pdf_backend_object_write_ #1 :nn } { { pdf.obj \int_use:N \g__pdf_backend_object_int } } {#2} } \cs_generate_variant:Nn \__pdf_backend_object_now:nn { nx } \cs_new:Npn \__pdf_backend_object_last: { { pdf.obj \int_use:N \g__pdf_backend_object_int } } \cs_new:Npn \__pdf_backend_pageobject_ref:n #1 { { Page #1 } } \box_new:N \l__pdf_backend_content_box \box_new:N \l__pdf_backend_model_box \int_new:N \g__pdf_backend_annotation_int \cs_new_protected:Npn \__pdf_backend_annotation:nnnn #1#2#3#4 { \exp_args:Nf \__pdf_backend_annotation_aux:nnnn { \dim_eval:n {#1} } {#2} {#3} {#4} } \cs_new_protected:Npn \__pdf_backend_annotation_aux:nnnn #1#2#3#4 { \box_move_down:nn {#3} { \hbox:n { \__kernel_backend_postscript:n { pdf.save.ll } } } \box_move_up:nn {#2} { \hbox:n { \__kernel_kern:n {#1} \__kernel_backend_postscript:n { pdf.save.ur } \__kernel_kern:n { -#1 } } } \int_gincr:N \g__pdf_backend_object_int \int_gset_eq:NN \g__pdf_backend_annotation_int \g__pdf_backend_object_int \__pdf_backend_pdfmark:x { /_objdef { pdf.obj \int_use:N \g__pdf_backend_object_int } pdf.rect #4 ~ /ANN } } \cs_new:Npn \__pdf_backend_annotation_last: { { pdf.obj \int_use:N \g__pdf_backend_annotation_int } } \int_new:N \g__pdf_backend_link_int \tl_new:N \g__pdf_backend_link_dict_tl \int_new:N \g__pdf_backend_link_sf_int \bool_new:N \g__pdf_backend_link_math_bool \bool_new:N \g__pdf_backend_link_bool \tl_new:N \l__pdf_breaklink_pdfmark_tl \tl_set:Nn \l__pdf_breaklink_pdfmark_tl { pdfmark } \cs_new_protected:Npn \__pdf_breaklink_postscript:n #1 { } \cs_new_eq:NN \__pdf_breaklink_usebox:N \box_use:N \cs_new_protected:Npn \__pdf_backend_link_begin_goto:nnw #1#2 { \__pdf_backend_link_begin:nw { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } } \cs_new_protected:Npn \__pdf_backend_link_begin_user:nnw #1#2 { \__pdf_backend_link_begin:nw {#1#2} } \cs_new_protected:Npn \__pdf_backend_link_begin:nw #1 { \bool_if:NF \g__pdf_backend_link_bool { \__pdf_backend_link_begin_aux:nw {#1} } } \cs_new_protected:Npn \__pdf_backend_link_begin_aux:nw #1 { \bool_gset_true:N \g__pdf_backend_link_bool \__kernel_backend_postscript:n { /pdf.link.dict ( #1 ) def } \tl_gset:Nn \g__pdf_backend_link_dict_tl {#1} \__pdf_backend_link_sf_save: \mode_if_math:TF { \bool_gset_true:N \g__pdf_backend_link_math_bool } { \bool_gset_false:N \g__pdf_backend_link_math_bool } \hbox_set:Nw \l__pdf_backend_content_box \__pdf_backend_link_sf_restore: \bool_if:NT \g__pdf_backend_link_math_bool { \c_math_toggle_token } } \cs_new_protected:Npn \__pdf_backend_link_end: { \bool_if:NT \g__pdf_backend_link_bool { \__pdf_backend_link_end_aux: } } \cs_new_protected:Npn \__pdf_backend_link_end_aux: { \bool_if:NT \g__pdf_backend_link_math_bool { \c_math_toggle_token } \__pdf_backend_link_sf_save: \hbox_set_end: \__pdf_backend_link_minima: \hbox_set:Nn \l__pdf_backend_model_box { Gg } \exp_args:Nx \__pdf_backend_link_outerbox:n { \int_if_odd:nTF { \value { page } } { \oddsidemargin } { \evensidemargin } } \box_move_down:nn { \box_dp:N \l__pdf_backend_content_box } { \hbox:n { \__kernel_backend_postscript:n { pdf.save.linkll } } } \__pdf_breaklink_postscript:n { pdf.bordertracking.begin } \__pdf_breaklink_usebox:N \l__pdf_backend_content_box \__pdf_breaklink_postscript:n { pdf.bordertracking.end } \box_move_up:nn { \box_ht:N \l__pdf_backend_content_box } { \hbox:n { \__kernel_backend_postscript:n { pdf.save.linkur } } } \int_gincr:N \g__pdf_backend_object_int \int_gset_eq:NN \g__pdf_backend_link_int \g__pdf_backend_object_int \__kernel_backend_postscript:x { mark /_objdef { pdf.obj \int_use:N \g__pdf_backend_link_int } \g__pdf_backend_link_dict_tl \c_space_tl pdf.rect /ANN ~ \l__pdf_breaklink_pdfmark_tl } \__pdf_backend_link_sf_restore: \bool_gset_false:N \g__pdf_backend_link_bool } \cs_new_protected:Npn \__pdf_backend_link_minima: { \hbox_set:Nn \l__pdf_backend_model_box { Gg } \__kernel_backend_postscript:x { /pdf.linkdp.pad ~ \dim_to_decimal:n { \dim_max:nn { \box_dp:N \l__pdf_backend_model_box - \box_dp:N \l__pdf_backend_content_box } { 0pt } } ~ pdf.pt.dvi ~ def /pdf.linkht.pad ~ \dim_to_decimal:n { \dim_max:nn { \box_ht:N \l__pdf_backend_model_box - \box_ht:N \l__pdf_backend_content_box } { 0pt } } ~ pdf.pt.dvi ~ def } } \cs_new_protected:Npn \__pdf_backend_link_outerbox:n #1 { \__kernel_backend_postscript:x { /pdf.outerbox [ \dim_to_decimal:n {#1} ~ \dim_to_decimal:n { -\box_dp:N \l__pdf_backend_model_box } ~ \dim_to_decimal:n { #1 + \textwidth } ~ \dim_to_decimal:n { \box_ht:N \l__pdf_backend_model_box } ] [ exch { pdf.pt.dvi } forall ] def /pdf.baselineskip ~ \dim_to_decimal:n { \tex_baselineskip:D } ~ dup ~ 0 ~ gt { pdf.pt.dvi ~ def } { pop ~ pop } ifelse } } \cs_new_protected:Npn \__pdf_backend_link_sf_save: { \int_gset:Nn \g__pdf_backend_link_sf_int { \mode_if_horizontal:TF { \tex_spacefactor:D } { 0 } } } \cs_new_protected:Npn \__pdf_backend_link_sf_restore: { \mode_if_horizontal:T { \int_compare:nNnT \g__pdf_backend_link_sf_int > { 0 } { \int_set_eq:NN \tex_spacefactor:D \g__pdf_backend_link_sf_int } } } \use_none:n { \cs_if_exist:NT \@makecol@hook { \tl_put_right:Nn \@makecol@hook { \box_if_empty:NF \@cclv { \vbox_set:Nn \@cclv { \__kernel_backend_postscript:n { pdf.globaldict /pdf.brokenlink.rect ~ known { pdf.bordertracking.continue } if } \vbox_unpack_drop:N \@cclv \__kernel_backend_postscript:n { pdf.bordertracking.endpage } } } } \tl_set:Nn \l__pdf_breaklink_pdfmark_tl { pdf.pdfmark } \cs_set_eq:NN \__pdf_breaklink_postscript:n \__kernel_backend_postscript:n \cs_set_eq:NN \__pdf_breaklink_usebox:N \hbox_unpack:N } } \cs_new:Npn \__pdf_backend_link_last: { { pdf.obj \int_use:N \g__pdf_backend_link_int } } \cs_new_protected:Npn \__pdf_backend_link_margin:n #1 { \__kernel_backend_postscript:x { /pdf.linkmargin { \dim_to_decimal:n {#1} ~ pdf.pt.dvi } def } } \cs_new_protected:Npn \__pdf_backend_destination:nn #1#2 { \__kernel_backend_postscript:n { pdf.dest.anchor } \__pdf_backend_pdfmark:x { /View [ \str_case:nnF {#2} { { xyz } { /XYZ ~ pdf.dest.point ~ null } { fit } { /Fit } { fitb } { /FitB } { fitbh } { /FitBH ~ pdf.dest.y } { fitbv } { /FitBV ~ pdf.dest.x } { fith } { /FitH ~ pdf.dest.y } { fitv } { /FitV ~ pdf.dest.x } { fitr } { /Fit } } { /XYZ ~ pdf.dest.point ~ \fp_eval:n { (#2) / 100 } } ] /Dest ( \exp_not:n {#1} ) cvn /DEST } } \cs_new_protected:Npn \__pdf_backend_destination:nnnn #1#2#3#4 { \exp_args:Ne \__pdf_backend_destination_aux:nnnn { \dim_eval:n {#2} } {#1} {#3} {#4} } \cs_new_protected:Npn \__pdf_backend_destination_aux:nnnn #1#2#3#4 { \vbox_to_zero:n { \__kernel_kern:n {#4} \hbox:n { \__kernel_backend_postscript:n { pdf.save.ll } } \tex_vss:D } \__kernel_kern:n {#1} \vbox_to_zero:n { \__kernel_kern:n { -#3 } \hbox:n { \__kernel_backend_postscript:n { pdf.save.ur } } \tex_vss:D } \__kernel_kern:n { -#1 } \__pdf_backend_pdfmark:n { /View [ /FitR ~ pdf.llx ~ pdf.lly ~ pdf.dest2device ~ pdf.urx ~ pdf.ury ~ pdf.dest2device ] /Dest ( #2 ) cvn /DEST } } \cs_new_protected:Npn \__pdf_backend_compresslevel:n #1 { \int_compare:nNnT {#1} = 0 { \__kernel_backend_literal_postscript:n { /setdistillerparams ~ where { pop << /CompressPages ~ false >> setdistillerparams } if } } } \cs_new_protected:Npn \__pdf_backend_compress_objects:n #1 { \bool_if:nF {#1} { \__kernel_backend_literal_postscript:n { /setdistillerparams ~ where { pop << /CompressStreams ~ false >> setdistillerparams } if } } } \cs_new_protected:Npn \__pdf_backend_version_major_gset:n #1 { } \cs_new_protected:Npn \__pdf_backend_version_minor_gset:n #1 { } \cs_new:Npn \__pdf_backend_version_major: { -1 } \cs_new:Npn \__pdf_backend_version_minor: { -1 } \cs_new_protected:Npn \__pdf_backend_bdc:nn #1#2 { \__pdf_backend_pdfmark:n { /#1 ~ #2 /BDC } } \cs_new_protected:Npn \__pdf_backend_emc: { \__pdf_backend_pdfmark:n { /EMC } } %% File: l3backend-opacity.dtx \cs_new_protected:Npn \__opacity_backend_select:n #1 { \exp_args:Nx \__opacity_backend_select_aux:n { \fp_eval:n { min(max(0,#1),1) } } } \cs_new_protected:Npn \__opacity_backend_select_aux:n #1 { \__kernel_backend_postscript:n { #1 ~ .setfillconstantalpha ~ #1 ~ .setstrokeconstantalpha } } \cs_new_protected:Npn \__opacity_backend_fill:n #1 { \__opacity_backend:xn { \fp_eval:n { min(max(0,#1),1) } } { fill } } \cs_new_protected:Npn \__opacity_backend_stroke:n #1 { \__opacity_backend:xn { \fp_eval:n { min(max(0,#1),1) } } { stroke } } \cs_new_protected:Npn \__opacity_backend:nn #1#2 { \__kernel_backend_postscript:n { #1 ~ .set #2 constantalpha } } \cs_generate_variant:Nn \__opacity_backend:nn { x } %% %% %% End of file `l3backend-dvips.def'.