diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/l3dvips.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/l3kernel/l3dvips.def | 174 |
1 files changed, 137 insertions, 37 deletions
diff --git a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def index bc9cdcd2874..feb19384f46 100644 --- a/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def +++ b/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def @@ -39,8 +39,13 @@ \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:Npx \__driver_postscript_header:n #1 + { + \cs_if_exist:NTF \AtBeginDvi + { \exp_not:N \AtBeginDvi } + { \use:n } + { \__driver_literal:n { ! #1 } } + } \cs_new_protected:Npn \__driver_align_currentpoint_begin: { \__driver_literal:n { ps::[begin] } @@ -413,23 +418,31 @@ %% File: l3drivers-pdf.dtx \tl_const:Nn \c__driver_pdf_AR_fix_tl { /Ff ~ 65537 /FT /Btn /Subtype /Widget } +\box_new:N \l__driver_pdf_tmp_box +\cs_new_protected:Npn \__driver_pdfmark:n #1 + { \__driver_postscript:n { mark #1 ~ pdfmark } } +\cs_generate_variant:Nn \__driver_pdfmark:n { x } +\cs_new_protected:Npn \driver_pdf_catalog_gput:nn #1#2 + { \__driver_pdfmark:n { { Catalog } << /#1 ~ #2 >> /PUT } } +\cs_new_protected:Npn \driver_pdf_info_gput:nn #1#2 + { \__driver_pdfmark:n { /#1 ~ #2 /DOCINFO } } \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 } + { c__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 } } } + { { driver.obj \int_use:c { c__driver_pdf_object_ \tl_to_str:n {#1} _int } } } \cs_new_protected:Npn \driver_pdf_object_write:nn #1#2 { - \__driver_postscript:x + \__driver_pdfmark:x { - mark /_objdef ~ \driver_pdf_object_ref:n {#1} + /_objdef ~ \driver_pdf_object_ref:n {#1} /type \str_case_e:nn { \prop_item:Nn \g__driver_pdf_object_prop {#1} } @@ -439,7 +452,7 @@ { fstream } { /stream } { stream } { /stream } } - /OBJ ~ pdfmark + /OBJ } \use:c { __driver_pdf_object_write_ \prop_item:Nn \g__driver_pdf_object_prop {#1} :nn } @@ -447,18 +460,18 @@ } \cs_new_protected:Npn \__driver_pdf_object_write_array:nn #1#2 { - \__driver_postscript:x + \__driver_pdfmark:x { - mark ~ \driver_pdf_object_ref:n {#1} - [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL ~ pdfmark + \driver_pdf_object_ref:n {#1} + [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL } } \cs_new_protected:Npn \__driver_pdf_object_write_dict:nn #1#2 { - \__driver_postscript:x + \__driver_pdfmark:x { - mark ~ \driver_pdf_object_ref:n {#1} - << \exp_not:n {#2} >> /PUT ~ pdfmark + \driver_pdf_object_ref:n {#1} + << \exp_not:n {#2} >> /PUT } } \cs_new_protected:Npn \__driver_pdf_object_write_stream:nn #1#2 @@ -486,6 +499,7 @@ \__driver_postscript_header:n { /driver.cvs { 65534 ~ string ~ cvs } def + /driver.dvi.pt { 72.27 ~ mul ~ Resolution ~ div } def /driver.pt.dvi { 72.27 ~ div ~ Resolution ~ mul } def /driver.rect.ht { dup ~ 1 ~ get ~ neg ~ exch ~ 3 ~ get ~ add } def } @@ -497,23 +511,23 @@ } \__driver_postscript_header:n { - /driver.annotation.border + /driver.rect { /Rect [ driver.llx ~ driver.lly ~ driver.urx ~ driver.ury ] } def - /driver.annotation.ll + /driver.save.ll { currentpoint /driver.lly ~ exch ~ def /driver.llx ~ exch ~ def } def - /driver.annotation.ur + /driver.save.ur { currentpoint /driver.ury ~ exch ~ def /driver.urx ~ exch ~ def } def - /driver.link.ll + /driver.save.linkll { currentpoint ~ driver.linkmargin ~ add ~ @@ -523,7 +537,7 @@ /driver.llx ~ exch ~ def } def - /driver.link.ur + /driver.save.linkur { currentpoint ~ driver.linkmargin ~ sub ~ @@ -536,6 +550,44 @@ } \__driver_postscript_header:n { + /driver.dest.anchor + { + currentpoint ~ exch ~ + driver.dvi.pt ~ 72 ~ add ~ + /driver.dest.x ~ exch ~ def ~ + driver.dvi.pt ~ + vsize ~ 72 ~ sub ~ exch ~ sub ~ + /driver.dest.y ~ exch ~ def + } + def + /driver.dest.point + { driver.dest.x ~ driver.dest.y } def + /driver.dest2device + { + /driver.dest.y ~ exch ~ def + /driver.dest.x ~ exch ~ def ~ + matrix ~ currentmatrix ~ + matrix ~ defaultmatrix ~ + matrix ~ invertmatrix ~ + matrix ~ concatmatrix ~ + cvx ~ exec + /driver.dev.y ~ exch ~ def + /driver.dev.x ~ exch ~ def + /driver.tmpd ~ exch ~ def + /driver.tmpc ~ exch ~ def + /driver.tmpb ~ exch ~ def + /driver.tmpa ~ exch ~ def ~ + driver.dest.x ~ driver.tmpa ~ mul ~ + driver.dest.y ~ driver.tmpc ~ mul ~ add ~ + driver.dev.x ~ add ~ + driver.dest.x ~ driver.tmpb ~ mul ~ + driver.dest.y ~ driver.tmpd ~ mul ~ add ~ + driver.dev.y ~ add + } + def + } +\__driver_postscript_header:n + { /driver.bordertracking ~ false ~ def /driver.bordertracking.begin { @@ -640,7 +692,7 @@ currentpoint ~ driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or { - driver.link.ll + driver.save.linkll /driver.lly ~ driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~ driver.bordertracking.begin @@ -661,7 +713,7 @@ currentpoint ~ driver.originy ~ ne ~ exch ~ driver.originx ~ ne ~ or { - driver.link.ll + driver.save.linkll /driver.lly ~ driver.lly ~ driver.outerbox ~ 1 ~ get ~ sub ~ def ~ driver.bordertracking.begin @@ -838,37 +890,36 @@ \__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 + \__driver_pdfmark:x { - mark - /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } - driver.annotation.border ~ - #4 ~ - /ANN ~ pdfmark + + /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } + driver.rect ~ + #4 ~ + /ANN } } \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 { \__driver_postscript:n { driver.save.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 } + \__driver_postscript:n { driver.save.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 + \__driver_pdfmark:x { - mark - /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } - driver.annotation.border ~ - \c__driver_pdf_AR_fix_tl - /ANN ~ pdfmark + /_objdef { driver.obj \int_use:N \g__driver_pdf_object_int } + driver.rect ~ + \c__driver_pdf_AR_fix_tl + /ANN } } \cs_new:Npn \driver_pdf_annotation_last: @@ -933,20 +984,20 @@ { \evensidemargin } } \box_move_down:nn { \box_dp:N \l__driver_pdf_content_box } - { \hbox:n { \__driver_postscript:n { driver.link.ll } } } + { \hbox:n { \__driver_postscript:n { driver.save.linkll } } } \__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:n { driver.save.linkur } } } \__driver_postscript:x { mark \g__driver_pdf_link_dict_tl /Subtype /Link ~ - driver.annotation.border + driver.rect /ANN ~ driver.pdfmark } \__driver_pdf_link_sf_restore: @@ -1044,6 +1095,55 @@ /driver.linkmargin { \dim_to_decimal:n {#1} ~ driver.pt.dvi } def } } +\cs_new_protected:Npn \driver_pdf_destination:nn #1#2 + { + \__driver_postscript:n { driver.dest.anchor } + \__driver_pdfmark:x + { + /View + [ + \str_case:nnF {#2} + { + { xyz } { /XYZ ~ driver.dest.point ~ null } + { fit } { /Fit } + { fitb } { /FitB } + { fitbh } { /FitBH ~ driver.dest.y } + { fitbv } { /FitBV ~ driver.dest.x } + { fith } { /FitH ~ driver.dest.y } + { fitv } { /FitV ~ driver.dest.x } + } + { + /XYZ ~ driver.dest.point ~ \fp_eval:n { (#2) / 100 } + } + ] + /Dest ( \exp_not:n {#1} ) cvn + /DEST + } + } +\cs_new_protected:Npn \driver_pdf_destination_rectangle:nn #1#2 + { + \group_begin: + \hbox_set:Nn \l__driver_pdf_tmp_box {#2} + \box_move_down:nn + { \box_dp:N \l__driver_pdf_tmp_box } + { \hbox:n { \__driver_postscript:n { driver.save.ll } } } + \box_use:N \l__driver_pdf_tmp_box + \box_move_up:nn + { \box_ht:N \l__driver_pdf_tmp_box } + { \hbox:n { \__driver_postscript:n { driver.save.ur } } } + \__driver_pdfmark:n + { + /View + [ + /FitR ~ + driver.llx ~ driver.lly ~ driver.dest2device ~ + driver.urx ~ driver.ury ~ driver.dest2device + ] + /Dest ( #1 ) cvn + /DEST + } + \group_end: + } \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: { } |