diff options
author | Karl Berry <karl@freefriends.org> | 2019-05-06 21:05:39 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-05-06 21:05:39 +0000 |
commit | 193cab8a30e478915acdb6f30960653d0b54f61a (patch) | |
tree | 756f0ff0955ee3e7bc432be2f111acf1037d3e14 /Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx | |
parent | e72ea92bdfffdb77681710ed4098d42eb1b48126 (diff) |
l3kernel (6may19)
git-svn-id: svn://tug.org/texlive/trunk@51024 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3drivers-pdf.dtx | 113 |
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 >> } |