summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx113
1 files changed, 76 insertions, 37 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
index 8a5ed3e49b9..b3518625b18 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-05-03}
+% \date{Released 2019-05-05}
%
% \maketitle
%
@@ -854,6 +854,33 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_@@_breaklink_obj_tl, \l_@@_breaklink_pdfmark_tl}
+% Swappable content for link breaking.
+% \begin{macrocode}
+\tl_new:N \l_@@_breaklink_obj_tl
+\tl_set:Nn \l_@@_breaklink_obj_tl
+ { /_objdef ~ { driver.obj \int_use:N \g_@@_pdf_link_int } }
+\tl_new:N \l_@@_breaklink_pdfmark_tl
+\tl_set:Nn \l_@@_breaklink_pdfmark_tl { pdfmark }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_breaklink_postscript:n, \@@_breaklink_postscript:x}
+% To allow dropping material unless link breaking is active.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_breaklink_postscript:n #1 { }
+\cs_generate_variant:Nn \@@_breaklink_postscript:n { x }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_breaklink_usebox:N}
+% Swappable box unpacking or use.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_breaklink_usebox:N \box_use:N
+% \end{macrocode}
+% \end{macro}
+%
+%
% \begin{macro}{\driver_pdf_link_begin_goto:nnw, \driver_pdf_link_begin_user:nnw}
% \begin{macro}{\@@_pdf_link:nw, \@@_pdf_link_aux:nw}
% \begin{macro}{\driver_pdf_link_end:, \@@_pdf_link_end:}
@@ -893,7 +920,7 @@
% approach and |\tex_savepos:D|. That plus format mode are still to re-examine.
% \begin{macrocode}
\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
- { \@@_pdf_link_begin:nw { #1 /A << /S /GoTo /D ( #2 ) >> } }
+ { \@@_pdf_link_begin:nw { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
\cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
{ \@@_pdf_link_begin:nw {#1#2} }
\cs_new_protected:Npn \@@_pdf_link_begin:nw #1
@@ -906,17 +933,7 @@
\bool_gset_true:N \g_@@_pdf_link_bool
\@@_pdf_annotation:nnnn { 3pt } { 3pt } { 0pt } { }
\@@_postscript:n
- { /driver.link.dict ( /Subtype /Link #1 ) def }
- \int_gincr:N \g_@@_pdf_object_int
- \int_gset_eq:NN \g_@@_pdf_link_int \g_@@_pdf_object_int
- \@@_postscript:x
- {
- /driver.link.obj
- {
- { driver.obj \int_use:N \g_@@_pdf_link_int \c_space_tl driver.cvs }
- }
- def
- }
+ { /driver.link.dict ( #1 ) def }
\tl_gset:Nn \g_@@_pdf_link_dict_tl {#1}
\@@_pdf_link_sf_save:
\mode_if_math:TF
@@ -953,20 +970,31 @@
}
\box_move_down:nn { \box_dp:N \l_@@_pdf_content_box }
{ \hbox:n { \@@_postscript:n { driver.save.linkll } } }
- \@@_postscript:n { driver.bordertracking.begin }
- \hbox_unpack:N \l_@@_pdf_content_box
- \@@_postscript:n { driver.bordertracking.end }
+ \@@_breaklink_postscript:n { driver.bordertracking.begin }
+ \@@_breaklink_usebox:N \l_@@_pdf_content_box
+ \@@_breaklink_postscript:n { driver.bordertracking.end }
\box_move_up:nn { \box_ht:N \l_@@_pdf_content_box }
{
\hbox:n
{ \@@_postscript:n { driver.save.linkur } }
}
+ \int_gincr:N \g_@@_pdf_object_int
+ \int_gset_eq:NN \g_@@_pdf_link_int \g_@@_pdf_object_int
+ \@@_breaklink_postscript:x
+ {
+ /driver.link.obj
+ {
+ { driver.obj \int_use:N \g_@@_pdf_link_int \c_space_tl driver.cvs }
+ }
+ def
+ }
\@@_postscript:x
{
mark
- \g_@@_pdf_link_dict_tl /Subtype /Link ~
+ \l_@@_breaklink_obj_tl
+ \g_@@_pdf_link_dict_tl \c_space_tl
driver.rect
- /ANN ~ driver.pdfmark
+ /ANN ~ \l_@@_breaklink_pdfmark_tl
}
\@@_pdf_link_sf_restore:
\bool_gset_false:N \g_@@_pdf_link_bool
@@ -1050,27 +1078,39 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@startcolumn, \@makecol}
+% \begin{macro}{\@makecol@hook}
% Hooks to allow link breaking: something will be needed in format mode
-% at some stage.
+% at some stage. At present this code is disabled as there is an open
+% question about the name of the hook: to be resolved at the \LaTeXe{}
+% end.
% \begin{macrocode}
%<*package>
-\tl_gput_left:Nn \@startcolumn
- {
- \@@_postscript:n
- {
- driver.globaldict /driver.brokenlink.rect ~ known
- { driver.bordertracking.continue }
- if
- }
- }
-\tl_gput_left:Nn \@makecol
+\use_none:n
{
- \vbox_set:Nn \@cclv
+ \cs_if_exist:NT \@makecol@hook
{
- \vbox_unpack_drop:N \@cclv
- \@@_postscript:n
- { driver.bordertracking.endpage }
+ \tl_put_right:Nn \@makecol@hook
+ {
+ \box_if_empty:NF \@cclv
+ {
+ \vbox_set:Nn \@cclv
+ {
+ \@@_postscript:n
+ {
+ driver.globaldict /driver.brokenlink.rect ~ known
+ { driver.bordertracking.continue }
+ if
+ }
+ \vbox_unpack_drop:N \@cclv
+ \@@_postscript:n
+ { driver.bordertracking.endpage }
+ }
+ }
+ }
+ \tl_clear:N \l_@@_breaklink_obj_tl
+ \tl_set:Nn \l_@@_breaklink_pdfmark_tl { driver.pdfmark }
+ \cs_set_eq:NN \@@_breaklink_postscript:n \@@_postscript:n
+ \cs_set_eq:NN \@@_breaklink_usebox:N \hbox_unpack:N
}
}
%</package>
@@ -1251,7 +1291,7 @@
\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
{ \@@_pdf_link_begin:nnnw {#1} { goto~name } {#2} }
\cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
- { \@@_pdf_link_begin:nnnw {#1} { user } { /Subtype /Link #2 } }
+ { \@@_pdf_link_begin:nnnw {#1} { user } {#2} }
\cs_new_protected:Npx \@@_pdf_link_begin:nnnw #1#2#3
{
\@@_pdf_AR_fix:
@@ -1734,7 +1774,7 @@
% All created using the same internals.
% \begin{macrocode}
\cs_new_protected:Npn \driver_pdf_link_begin_goto:nnw #1#2
- { \@@_pdf_link_begin:n { #1 /A << /S /GoTo /D ( #2 ) >> } }
+ { \@@_pdf_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
\cs_new_protected:Npn \driver_pdf_link_begin_user:nnw #1#2
{ \@@_pdf_link_begin:n {#1#2} }
\cs_new_protected:Npn \@@_pdf_link_begin:n #1
@@ -1745,7 +1785,6 @@
bann
<<
/Type /Annot
- /Subtype /Link
#1
>>
}