summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/l3kernel/l3dvips.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/l3kernel/l3dvips.def')
-rw-r--r--Master/texmf-dist/tex/latex/l3kernel/l3dvips.def174
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: { }