Current File : //usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-dvips.def |
%%
%% 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'.