[latex3-commits] [git/LaTeX3-latex3-latex3] pdf_destination: Adjust PDF destination 'box' setup (df8cf15a6)
Joseph Wright
joseph.wright at morningstar2.co.uk
Wed Jan 27 16:54:07 CET 2021
Repository : https://github.com/latex3/latex3
On branch : pdf_destination
Link : https://github.com/latex3/latex3/commit/df8cf15a61a0fc31b560e25b2b09d6112f014fe3
>---------------------------------------------------------------
commit df8cf15a61a0fc31b560e25b2b09d6112f014fe3
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Wed Jan 27 15:54:07 2021 +0000
Adjust PDF destination 'box' setup
There's no real need for any 'content'.
>---------------------------------------------------------------
df8cf15a61a0fc31b560e25b2b09d6112f014fe3
l3backend/l3backend-pdf.dtx | 142 +++++++++++++++++---------------
l3experimental/l3pdf/l3pdf.dtx | 19 +----
l3kernel/testfiles/m3expl001.luatex.tlg | 2 +-
l3kernel/testfiles/m3expl001.ptex.tlg | 3 +-
l3kernel/testfiles/m3expl001.tlg | 2 +-
l3kernel/testfiles/m3expl001.uptex.tlg | 3 +-
l3kernel/testfiles/m3expl001.xetex.tlg | 3 +-
l3kernel/testfiles/m3expl003.luatex.tlg | 2 +-
l3kernel/testfiles/m3expl003.ptex.tlg | 3 +-
l3kernel/testfiles/m3expl003.tlg | 2 +-
l3kernel/testfiles/m3expl003.uptex.tlg | 3 +-
l3kernel/testfiles/m3expl003.xetex.tlg | 3 +-
12 files changed, 92 insertions(+), 95 deletions(-)
diff --git a/l3backend/l3backend-pdf.dtx b/l3backend/l3backend-pdf.dtx
index ec609350f..4349f714c 100644
--- a/l3backend/l3backend-pdf.dtx
+++ b/l3backend/l3backend-pdf.dtx
@@ -616,7 +616,8 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_backend_destination:nn, \@@_backend_destination_box:nn}
+% \begin{macro}{\@@_backend_destination:nn}
+% \begin{macro}{\@@_backend_destination:nnnn, \@@_backend_destination_aux:nnnn}
% Here, we need to turn the zoom into a scale. We also need to know where
% the current anchor point actually is: worked out in PostScript. For the
% rectangle version, we have a bit more PostScript: we need two points.
@@ -648,32 +649,36 @@
/DEST
}
}
-\cs_new_protected:Npn \@@_backend_destination_box:nn #1#2
- {
- \group_begin:
- \hbox_set:Nn \l_@@_internal_box {#2}
- \box_move_down:nn
- { \box_dp:N \l_@@_internal_box }
- { \hbox:n { \__kernel_backend_postscript:n { pdf.save.ll } } }
- \box_use:N \l_@@_internal_box
- \box_move_up:nn
- { \box_ht:N \l_@@_internal_box }
- { \hbox:n { \__kernel_backend_postscript:n { pdf.save.ur } } }
- \@@_backend_pdfmark:n
- {
- /View
- [
- /FitR ~
- pdf.llx ~ pdf.lly ~ pdf.dest2device ~
- pdf.urx ~ pdf.ury ~ pdf.dest2device
- ]
- /Dest ( #1 ) cvn
- /DEST
- }
- \group_end:
+\cs_new_protected:Npn \@@_backend_destination:nnnn #1#2#3#4
+ {
+ \exp_args:Ne \@@_backend_destination_aux:nnnn
+ { \dim_eval:n {#2} } {#1} {#3} {#4}
+ }
+\cs_new_protected:Npn \@@_backend_destination_aux:nnnn #1#2#3#4
+ {
+ \box_move_down:nn
+ {#4}
+ { \hbox:n { \__kernel_backend_postscript:n { pdf.save.ll } } }
+ \tex_kern:D #1 \scan_stop:
+ \box_move_up:nn
+ {#3}
+ { \hbox:n { \__kernel_backend_postscript:n { pdf.save.ur } } }
+ \tex_kern:D -#2 \scan_stop:
+ \@@_backend_pdfmark:n
+ {
+ /View
+ [
+ /FitR ~
+ pdf.llx ~ pdf.lly ~ pdf.dest2device ~
+ pdf.urx ~ pdf.ury ~ pdf.dest2device
+ ]
+ /Dest ( #2 ) cvn
+ /DEST
+ }
}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \subsubsection{Structure}
%
@@ -859,7 +864,8 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_backend_destination:nn, \@@_backend_destination_box:nn}
+% \begin{macro}{\@@_backend_destination:nn}
+% \begin{macro}{\@@_backend_destination:nnnn}
% A simple task: pass the data to the primitive. The |\scan_stop:| deals
% with the danger of an unterminated keyword. The zoom given here is a
% percentage, but we need to pass it as \emph{per mille}. The rectangle
@@ -888,26 +894,23 @@
{ xyz ~ zoom \fp_eval:n { #2 * 10 } }
\scan_stop:
}
-\cs_new_protected:Npn \@@_backend_destination_box:nn #1#2
+\cs_new_protected:Npn \@@_backend_destination:nnnn #1#2#3#4
{
- \group_begin:
- \hbox_set:Nn \l_@@_internal_box {#2}
%<*luatex>
- \tex_pdfextension:D dest ~
+ \tex_pdfextension:D dest ~
%</luatex>
%<*pdftex>
- \tex_pdfdest:D
+ \tex_pdfdest:D
%</pdftex>
- name {#1}
- fitr ~
- width \box_wd:N \l_@@_internal_box
- height \box_ht:N \l_@@_internal_box
- depth \box_dp:N \l_@@_internal_box
- \box_use:N \l_@@_internal_box
- \group_end:
+ name {#1}
+ fitr ~
+ width \dim_eval:n {#2} ~
+ height \dim_eval:n {#3} ~
+ depth \dim_eval:n {#4} \scan_stop:
}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \subsubsection{Catalogue entries}
%
@@ -1475,7 +1478,8 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_backend_destination:nn, \@@_backend_destination_box:nn}
+% \begin{macro}{\@@_backend_destination:nn}
+% \begin{macro}{\@@_backend_destination:nnnn,\@@_backend_destination_aux:nnnn}
% Here, we need to turn the zoom into a scale. The method for \texttt{FitR}
% is from Alexander Grahn: the idea is to avoid needing to do any calculations
% in \TeX{} by using the backend data for \texttt{@xpos} and \texttt{@ypos}.
@@ -1503,39 +1507,43 @@
]
}
}
-\cs_new_protected:Npn \@@_backend_destination_box:nn #1#2
+\cs_new_protected:Npn \@@_backend_destination:nnnn #1#2#3#4
{
- \group_begin:
- \hbox_set:Nn \l_@@_internal_box {#2}
- \box_move_down:nn { \box_dp:N \l_@@_internal_box }
- {
- \hbox:n
- {
- \@@_backend:n { obj ~ @pdf_ #1 _llx ~ @xpos }
- \@@_backend:n { obj ~ @pdf_ #1 _lly ~ @ypos }
- }
- }
- \box_use:N \l_@@_internal_box
- \box_move_up:nn { \box_ht:N \l_@@_internal_box }
- {
- \hbox:n
- {
- \@@_backend:n
- {
- dest ~ (#1)
- [
- @thispage
- /FitR ~
- @pdf_ #1 _llx ~ @pdf_ #1 _lly ~
- @xpos ~ @ypos
- ]
- }
- }
- }
- \group_end:
+ \exp_args:Ne \@@_backend_destination_aux:nnnn
+ { \dim_eval:n {#2} } {#1} {#3} {#4}
+ }
+\cs_new_protected:Npn \@@_backend_destination_aux:nnnn #1#2#3#4
+ {
+ \box_move_down:nn {#3}
+ {
+ \hbox:n
+ {
+ \@@_backend:n { obj ~ @pdf_ #2 _llx ~ @xpos }
+ \@@_backend:n { obj ~ @pdf_ #2 _lly ~ @ypos }
+ }
+ }
+ \tex_kern:D #1 \scan_stop:
+ \box_move_up:nn {#4}
+ {
+ \hbox:n
+ {
+ \@@_backend:n
+ {
+ dest ~ (#2)
+ [
+ @thispage
+ /FitR ~
+ @pdf_ #2 _llx ~ @pdf_ #1 _lly ~
+ @xpos ~ @ypos
+ ]
+ }
+ }
+ }
+ \tex_kern:D -#2 \scan_stop:
}
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \subsubsection{Structure}
%
diff --git a/l3experimental/l3pdf/l3pdf.dtx b/l3experimental/l3pdf/l3pdf.dtx
index ce40d3b12..f7df6908d 100644
--- a/l3experimental/l3pdf/l3pdf.dtx
+++ b/l3experimental/l3pdf/l3pdf.dtx
@@ -422,29 +422,12 @@
}
% \end{macrocode}
% \end{macro}
-% \begin{variable}{\l_@@_tmpa_box,\l_@@_tmpb_box}
-% \begin{macrocode}
-\box_new:N \l_@@_tmpa_box
-\box_new:N \l_@@_tmpb_box
-% \end{macrocode}
-% \end{variable}
%
% \begin{macro}{\pdf_destination:nnnn}
% \begin{macrocode}
\cs_new_protected:Npn \pdf_destination:nnnn #1 #2 #3 #4
{
- \hbox_set_to_wd:Nnn \l_@@_tmpa_box {#2} {}
- \box_set_ht:Nn \l_@@_tmpa_box {#3}
- \box_set_dp:Nn \l_@@_tmpa_box {#4}
- \hbox_set_to_wd:Nnn \l_@@_tmpb_box {0pt}
- {
- \@@_backend_destination_box:nn
- { #1 }
- { \box_use:N \l_@@_tmpa_box }
- }
- \box_set_dp:Nn \l_@@_tmpb_box {0pt}
- \box_set_ht:Nn \l_@@_tmpb_box {0pt}
- \box_use:N\l_@@_tmpb_box
+ \@@_backend_destination:nnnn {#1} {#2} {#3} {#4}
}
% \end{macrocode}
% \end{macro}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 11f55377e..0b202af55 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -120,7 +120,7 @@ Defining \__pdf_backend_link_end: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
Defining \__pdf_backend_catalog_gput:nn on line ...
Defining \__pdf_backend_info_gput:nn on line ...
Defining \g__pdf_backend_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 4d3d1ed8d..1d0bf3707 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -157,7 +157,8 @@ Defining \__pdf_backend_link_sf_restore: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
+Defining \__pdf_backend_destination_aux:nnnn on line ...
Defining \__pdf_backend_compresslevel:n on line ...
Defining \__pdf_backend_compress_objects:n on line ...
Defining \__pdf_backend_version_major_gset:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 764cd2ae4..cb7d83964 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -120,7 +120,7 @@ Defining \__pdf_backend_link_end: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
Defining \__pdf_backend_catalog_gput:nn on line ...
Defining \__pdf_backend_info_gput:nn on line ...
Defining \g__pdf_backend_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 4d3d1ed8d..1d0bf3707 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -157,7 +157,8 @@ Defining \__pdf_backend_link_sf_restore: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
+Defining \__pdf_backend_destination_aux:nnnn on line ...
Defining \__pdf_backend_compresslevel:n on line ...
Defining \__pdf_backend_compress_objects:n on line ...
Defining \__pdf_backend_version_major_gset:n on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index ce0a75368..a23a81c18 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -157,7 +157,8 @@ Defining \__pdf_backend_link_end: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
+Defining \__pdf_backend_destination_aux:nnnn on line ...
Defining \__pdf_backend_compresslevel:n on line ...
Defining \__pdf_backend_compress_objects:n on line ...
Defining \__pdf_backend_version_major_gset:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 11f55377e..0b202af55 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -120,7 +120,7 @@ Defining \__pdf_backend_link_end: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
Defining \__pdf_backend_catalog_gput:nn on line ...
Defining \__pdf_backend_info_gput:nn on line ...
Defining \g__pdf_backend_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index 4d3d1ed8d..1d0bf3707 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -157,7 +157,8 @@ Defining \__pdf_backend_link_sf_restore: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
+Defining \__pdf_backend_destination_aux:nnnn on line ...
Defining \__pdf_backend_compresslevel:n on line ...
Defining \__pdf_backend_compress_objects:n on line ...
Defining \__pdf_backend_version_major_gset:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 764cd2ae4..cb7d83964 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -120,7 +120,7 @@ Defining \__pdf_backend_link_end: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
Defining \__pdf_backend_catalog_gput:nn on line ...
Defining \__pdf_backend_info_gput:nn on line ...
Defining \g__pdf_backend_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 4d3d1ed8d..1d0bf3707 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -157,7 +157,8 @@ Defining \__pdf_backend_link_sf_restore: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
+Defining \__pdf_backend_destination_aux:nnnn on line ...
Defining \__pdf_backend_compresslevel:n on line ...
Defining \__pdf_backend_compress_objects:n on line ...
Defining \__pdf_backend_version_major_gset:n on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index ce0a75368..a23a81c18 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -157,7 +157,8 @@ Defining \__pdf_backend_link_end: on line ...
Defining \__pdf_backend_link_last: on line ...
Defining \__pdf_backend_link_margin:n on line ...
Defining \__pdf_backend_destination:nn on line ...
-Defining \__pdf_backend_destination_box:nn on line ...
+Defining \__pdf_backend_destination:nnnn on line ...
+Defining \__pdf_backend_destination_aux:nnnn on line ...
Defining \__pdf_backend_compresslevel:n on line ...
Defining \__pdf_backend_compress_objects:n on line ...
Defining \__pdf_backend_version_major_gset:n on line ...
More information about the latex3-commits
mailing list.