[latex3-commits] [latex3/pdfresources] develop: add support to suppress nested links (eea396e)

github at latex-project.org github at latex-project.org
Fri Nov 24 16:53:08 CET 2023


Repository : https://github.com/latex3/pdfresources
On branch  : develop
Link       : https://github.com/latex3/pdfresources/commit/eea396e1b99db0981f93d7e524f0304890ca0d5e

>---------------------------------------------------------------

commit eea396e1b99db0981f93d7e524f0304890ca0d5e
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Fri Nov 24 16:53:08 2023 +0100

    add support to suppress nested links


>---------------------------------------------------------------

eea396e1b99db0981f93d7e524f0304890ca0d5e
 CHANGELOG.md                      |   1 +
 hyperref-generic.dtx              | 380 ++++++++++++++++++++++++--------------
 testfiles-pdftex/nested-links.lvt |  24 +++
 testfiles-pdftex/nested-links.tlg | 244 ++++++++++++++++++++++++
 4 files changed, 507 insertions(+), 142 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index a9557c5..f0b246c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ this project uses date-based 'snapshot' version identifiers.
 
 ### Added
  - 2023-11-20: l3pdfmeta.dtx: support for PDF declarations in XMP metadata, issue #58
+ - hyperref-generic.dtx: nested-links key to suppress nested links.
  
 ## [2023-11-17]
 Version: 2023-11-17, 0.96c
diff --git a/hyperref-generic.dtx b/hyperref-generic.dtx
index c03d57a..3e98775 100644
--- a/hyperref-generic.dtx
+++ b/hyperref-generic.dtx
@@ -615,6 +615,14 @@
 %  the link type, so the link is for example no longer colored. It also removes the
 %  implicit grouping of the content.
 %
+%  \DescribeHypkey{nested-links}%
+%  
+%  Links are sometimes nested. E.g. if a section heading contains a reference
+%  it can lead to nested links in the table of contents or if |\nameref| is used. 
+%  That is not forbidden and normally work as expected: If the link area overlap 
+%  normally the inner link is \enquote{on top} and chosen at a click. 
+%  But it is not always actually wanted, so with the |nested-links| (a boolean key)
+%  it is possible to disable such nested links. 
 %  
 %  \section{Draftmode}
 %  pdftex and other engines knows a
@@ -797,7 +805,7 @@
 %
 %\section{Assorted key descriptions}\label{sec:keydesc}
 %The following gives a few details to some keys that are perhaps not
-%completly described in the manual, or are a bit different in this driver.
+%completely described in the manual, or are a bit different in this driver.
 %The list is alphabetic.
 %
 % \DescribeHypkey{bookmarkstype} This key takes as value the extension of a list
@@ -1972,7 +1980,7 @@
   }
 %    \end{macrocode}
 % \end{macro}
-% \section {Core Hyperref Commands}
+% \section{Core Hyperref Commands}
 % Every \pkg{hyperref} has to define eight core command:
 % \begin{verbatim}
 % \hyper at anchor
@@ -1988,6 +1996,45 @@
 % This driver defines for consistency also
 % |\hyper at linklaunch| for Launch and |\hyper at linknamed| for Named.
 % 
+% \subsection{Link level}
+% Links can be nested. Inner links need perhaps special handling, e.g.
+% to deactivate the link, or to change the border, or in the case of 
+% tagging to add some additional structure to handle the parent-child rules.
+% We therefore add a global counter which is increased at the begin of 
+% link and decreased at the end. 
+% \begin{macro}{g_@@_linknestlevel_int}
+%    \begin{macrocode}
+\int_new:N \g_@@_linknestlevel_int
+%    \end{macrocode}
+% \end{macro}
+% 
+%    \begin{macrocode}
+\prg_new_conditional:Npnn \@@_if_outer_link: {TF}
+ {
+   \int_compare:nNnTF { \g_@@_linknestlevel_int } > {1}
+     { \prg_return_false:  }
+     { \prg_return_true: }
+ }
+%    \end{macrocode}
+
+%    \begin{macrocode}
+\cs_new:Npn \@@_check_link_nesting:TF #1 #2
+ {
+   \use_i:nn {#1}{#2}
+ }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\keys_define:nn { hyp / setup }
+  { 
+    nested-links .choice:,
+    nested-links / true .code:n = 
+     { \cs_set_eq:NN \@@_check_link_nesting:TF \use_i:nn },
+    nested-links / false .code:n = 
+     { \cs_set_eq:NN \@@_check_link_nesting:TF \@@_if_outer_link:TF },  
+    nested-links .default:n = {true}
+  }
+%    \end{macrocode}
 % \subsection{ Anchors / destinations}
 % The first three commands are needed for \enquote{anchors}. At first
 % the internal commands to create a destination. It uses
@@ -2157,27 +2204,41 @@
   {
     \bool_if:NTF \l_@@_annot_GoTo_bool
       {
-        \Hy at VerboseLinkStart{#1}{#2}
-        \group_begin:
-        \tl_set:Nn \l_hyp_current_dest_name_tl {#2}
-        \hook_use:n {hyp/link/#1}
-        \@@_link_goto_begin:nw {#2}#3\Hy at xspace@end
-        \@@_link_goto_end:
-        \group_end:
-        \Hy at VerboseLinkStop
+        \int_gincr:N\g_@@_linknestlevel_int
+        \@@_check_link_nesting:TF
+          {
+            \Hy at VerboseLinkStart{#1}{#2}
+            \group_begin:
+            \tl_set:Nn \l_hyp_current_dest_name_tl {#2}
+            \hook_use:n {hyp/link/#1}
+            \@@_link_goto_begin:nw {#2}#3\Hy at xspace@end
+            \@@_link_goto_end:
+            \group_end:
+            \Hy at VerboseLinkStop
+          } 
+          {
+            \group_begin: #3\group_end:
+          }
+        \int_gdecr:N\g_@@_linknestlevel_int
       }
       {{\let\protect\relax#3}}
   }
-
 \cs_new_protected:Npn \hyper at linkstart #1 #2 %#1 context, #2=destination name
   {
     \bool_if:NT \l_@@_annot_GoTo_bool
       {
-        \Hy at VerboseLinkStart{#1}{#2}% only for debug
-        \group_begin:
-        \tl_set:Nn \l_hyp_current_dest_name_tl {#2}
-        \hook_use:n {hyp/link/#1}
-        \@@_link_goto_begin:nw {#2}
+        \int_gincr:N\g_@@_linknestlevel_int
+        \@@_check_link_nesting:TF
+          {
+            \Hy at VerboseLinkStart{#1}{#2}% only for debug
+            \group_begin:
+            \tl_set:Nn \l_hyp_current_dest_name_tl {#2}
+            \hook_use:n {hyp/link/#1}
+            \@@_link_goto_begin:nw {#2}
+          } 
+          {
+            \group_begin:          
+          } 
       }
   }
 
@@ -2185,9 +2246,16 @@
   {
     \bool_if:NT \l_@@_annot_GoTo_bool
       {
-        \@@_link_goto_end:
-        \group_end:
-        \Hy at VerboseLinkStop
+        \@@_check_link_nesting:TF
+          {
+            \@@_link_goto_end:
+            \group_end:
+            \Hy at VerboseLinkStop
+          }
+          {
+            \group_end:
+          }  
+        \int_gdecr:N\g_@@_linknestlevel_int
       }
   }
 %    \end{macrocode}
@@ -2203,31 +2271,39 @@
   {
     \bool_if:NTF \l_@@_annot_URI_bool
       {
-        \group_begin:
-         \@@_text_pdfstring:eoN
-           { #2}
-           { \l_@@_text_enc_uri_print_tl }
-           \l_@@_uri_tmpa_tl
-         \pdfdict_put:nno{l_hyp/annot/A/URI}{URI}{\l_@@_uri_tmpa_tl}
-         \bool_if:NT \l_@@_href_url_ismap_bool
-           {
-            \pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true}
-           }
-         \cs_set_eq:NN \# \c_hash_str
-         \cs_set_eq:NN \% \c_percent_str
-         \Hy at safe@activestrue
-         \mode_leave_vertical:
-         \pdfannot_dict_put:nne {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
-         \pdfannot_link:nen { URI }
-           {
+        \int_gincr:N\g_@@_linknestlevel_int
+        \@@_check_link_nesting:TF
+          {
+           \group_begin:
+            \@@_text_pdfstring:eoN
+              { #2}
+              { \l_@@_text_enc_uri_print_tl }
+              \l_@@_uri_tmpa_tl
+            \pdfdict_put:nno{l_hyp/annot/A/URI}{URI}{\l_@@_uri_tmpa_tl}
+            \bool_if:NT \l_@@_href_url_ismap_bool
+              {
+               \pdfdict_put:nnn{l_hyp/annot/A/URI}{IsMap}{true}
+              }
+            \cs_set_eq:NN \# \c_hash_str
+            \cs_set_eq:NN \% \c_percent_str
+            \Hy at safe@activestrue
+            \mode_leave_vertical:
+            \pdfannot_dict_put:nne {link/URI}{A}{<<\pdfdict_use:n {l_hyp/annot/A/URI}>>}
+            \pdfannot_link:nen { URI }
+              {
+              }
+              {
+                \let\protect\relax
+                #1
+                \Hy at xspace@end
+                \Hy at VerboseLinkStop %where is the start??
+              }
+            \group_end:
            } 
            {
-             \let\protect\relax
-             #1
-             \Hy at xspace@end
-             \Hy at VerboseLinkStop %where is the start??
+             \group_begin: #1 \group_end:
            }
-         \group_end:
+         \int_gdecr:N\g_@@_linknestlevel_int
       }
       {{\let\protect\relax#1}}
   }
@@ -2244,57 +2320,65 @@
   {
    \bool_if:NTF \l_@@_annot_GoToR_bool
      {
-        \group_begin:
-        \tl_set:Ne \l_@@_filename_tmpa_tl { \text_expand:n { #2 } }
-        \exp_args:Ne
-          \pdf_object_if_exist:nF { @@_file_\tl_to_str:N \l_@@_filename_tmpa_tl }
-            {
-              \pdfdict_put:nne { l_pdffile/Filespec}{Subtype}{\pdf_name_from_unicode_e:n {application/pdf}}
-              \pdffile_embed_file:noe
-                {}
-                {\l_@@_filename_tmpa_tl }
-                {@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl }
-            }
-        \pdfdict_put:nne
-           {l_hyp/annot/A/GoToR}
-           {F}
-           {\pdf_object_ref:e {@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl}}
-        \@@_text_pdfstring:nnN
-          { #3 }
-          { \l_@@_text_enc_dest_print_tl }
-          \l_@@_dest_name_tmpa_tl
-        \tl_if_blank:eTF {#3}
+        \int_gincr:N\g_@@_linknestlevel_int
+        \@@_check_link_nesting:TF
           {
-            \pdfdict_put:nne {l_hyp/annot/A/GoToR}{D}
+            \group_begin:
+            \tl_set:Ne \l_@@_filename_tmpa_tl { \text_expand:n { #2 } }
+            \exp_args:Ne
+              \pdf_object_if_exist:nF { @@_file_\tl_to_str:N \l_@@_filename_tmpa_tl }
+                {
+                  \pdfdict_put:nne { l_pdffile/Filespec}{Subtype}{\pdf_name_from_unicode_e:n {application/pdf}}
+                  \pdffile_embed_file:noe
+                    {}
+                    {\l_@@_filename_tmpa_tl }
+                    {@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl }
+                }
+            \pdfdict_put:nne
+               {l_hyp/annot/A/GoToR}
+               {F}
+               {\pdf_object_ref:e {@@_file_\tl_to_str:N \l_@@_filename_tmpa_tl}}
+            \@@_text_pdfstring:nnN
+              { #3 }
+              { \l_@@_text_enc_dest_print_tl }
+              \l_@@_dest_name_tmpa_tl
+            \tl_if_blank:eTF {#3}
               {
-               [
-                 \int_eval:n
-                  { \int_max:nn {0}{ 0\l_@@_href_pdf_page_tl - 1 }}
-                 /\l_@@_dest_pdfremotestartview_tl
-               ]
+                \pdfdict_put:nne {l_hyp/annot/A/GoToR}{D}
+                  {
+                   [
+                     \int_eval:n
+                      { \int_max:nn {0}{ 0\l_@@_href_pdf_page_tl - 1 }}
+                     /\l_@@_dest_pdfremotestartview_tl
+                   ]
+                  }
               }
-          }
-          {
-            \pdfdict_put:nno {l_hyp/annot/A/GoToR}{D}{\l_@@_dest_name_tmpa_tl}
-          }
-        \mode_leave_vertical:
+              {
+                \pdfdict_put:nno {l_hyp/annot/A/GoToR}{D}{\l_@@_dest_name_tmpa_tl}
+              }
+            \mode_leave_vertical:
 %    \end{macrocode}
 % We use an extra object here, as ghostscript doesn't like the
 % object reference in the dict
 % \url{https://chat.stackexchange.com/transcript/message/57361080#57361080}
 %    \begin{macrocode}
-        \pdf_object_unnamed_write:ne{dict}{\pdfdict_use:n {l_hyp/annot/A/GoToR}}
-        \pdfannot_dict_put:nne {link/GoToR}{A}{\pdf_object_ref_last:}
-        \pdfannot_link:nnn %expansion??
-          { GoToR }
-          {
+            \pdf_object_unnamed_write:ne{dict}{\pdfdict_use:n {l_hyp/annot/A/GoToR}}
+            \pdfannot_dict_put:nne {link/GoToR}{A}{\pdf_object_ref_last:}
+            \pdfannot_link:nnn %expansion??
+              { GoToR }
+              {
+              }
+              {
+               \let\protect\relax
+                #1\Hy at xspace@end
+                \Hy at VerboseLinkStop %where is the start??
+              }
+            \group_end:
           }  
           {
-           \let\protect\relax
-            #1\Hy at xspace@end
-            \Hy at VerboseLinkStop %where is the start??
+            \group_begin: #1 \group_end:
           }
-        \group_end:
+        \int_gdecr:N\g_@@_linknestlevel_int
      }
      {{\let\protect\relax#1}}
   }
@@ -2312,47 +2396,53 @@
   {
    \bool_if:NTF \l_@@_annot_Launch_bool
      {
-        \group_begin:
-          \@@_text_pdfstring:nnN
-            { #1 }
-            { \l_@@_text_enc_file_print_tl }
-            \l_@@_filename_tmpa_tl
-          \pdfdict_put:nno {l_hyp/annot/A/Launch}{F}{\l_@@_filename_tmpa_tl}
-          \@@_text_pdfstring:noN
-            { #3 }
-            { \l_@@_text_enc_para_print_tl }
-            \l_@@_para_tmpa_tl
-          \bool_if:nTF
-            {
-              \str_if_eq_p:Vn \l_@@_para_tmpa_tl {()}
-              ||
-              \pdf_version_compare_p:Nn > {1.9}
-            }
-            {
-              \pdfdict_remove:nn {l_hyp/annot/A/Launch}{Win}
-            }
-            {
-              \pdfdict_put:nne 
-                {l_hyp/annot/A/Launch}
-                {Win}
-                {<</P \l_@@_para_tmpa_tl /F \l_@@_filename_tmpa_tl >>}
-            }
-          \mode_leave_vertical:
-          \pdfannot_dict_put:nne {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>}
-          \pdfannot_link:nen
-            { Launch }
-            {
-  %            /A
-%              <<
-%                \pdfdict_use:n {l_hyp/annot/A/Launch}
-%              >>
-            }
-            {
-              \let\protect\relax
-              #2\Hy at xspace@end
-              \Hy at VerboseLinkStop %where is the start??
-            }
-        \group_end:
+        \int_gincr:N\g_@@_linknestlevel_int
+        \@@_check_link_nesting:TF
+          {
+           \group_begin:
+             \@@_text_pdfstring:nnN
+               { #1 }
+               { \l_@@_text_enc_file_print_tl }
+               \l_@@_filename_tmpa_tl
+             \pdfdict_put:nno {l_hyp/annot/A/Launch}{F}{\l_@@_filename_tmpa_tl}
+             \@@_text_pdfstring:noN
+               { #3 }
+               { \l_@@_text_enc_para_print_tl }
+               \l_@@_para_tmpa_tl
+             \bool_if:nTF
+               {
+                 \str_if_eq_p:Vn \l_@@_para_tmpa_tl {()}
+                 ||
+                 \pdf_version_compare_p:Nn > {1.9}
+               }
+               {
+                 \pdfdict_remove:nn {l_hyp/annot/A/Launch}{Win}
+               }
+               {
+                 \pdfdict_put:nne 
+                   {l_hyp/annot/A/Launch}
+                   {Win}
+                   {<</P \l_@@_para_tmpa_tl /F \l_@@_filename_tmpa_tl >>}
+               }
+             \mode_leave_vertical:
+             \pdfannot_dict_put:nne {link/Launch}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Launch}>>}
+             \pdfannot_link:nen
+               { Launch }
+               {
+     %            /A
+   %              <<
+   %                \pdfdict_use:n {l_hyp/annot/A/Launch}
+   %              >>
+               }
+               {
+                 \let\protect\relax
+                 #2\Hy at xspace@end
+                 \Hy at VerboseLinkStop %where is the start??
+               }
+           \group_end:
+          }
+          { \group_begin: #2 \group_end: }
+        \int_gdecr:N\g_@@_linknestlevel_int
       }
       {{\let\protect\relax#2}}
   }
@@ -2380,31 +2470,37 @@
   {
     \bool_if:NTF \l_@@_annot_Named_bool
       {
-         \group_begin:
-         \pdfmeta_standard_verify:nnTF {named_actions}{#1}
-           {
-             \mode_leave_vertical:
-             \pdfdict_put:nne {l_hyp/annot/A/Named}{N}
-               {\pdf_name_from_unicode_e:n{#1}}
-             \pdfannot_dict_put:nne {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>}
-             \pdfannot_link:nnn { Named }
+         \int_gincr:N\g_@@_linknestlevel_int
+         \@@_check_link_nesting:TF
+          {
+            \group_begin:
+            \pdfmeta_standard_verify:nnTF {named_actions}{#1}
               {
-%                /A
-%                  <<
-%                    \pdfdict_use:n { l_hyp/annot/A/Named }
-%                  >>
+                \mode_leave_vertical:
+                \pdfdict_put:nne {l_hyp/annot/A/Named}{N}
+                  {\pdf_name_from_unicode_e:n{#1}}
+                \pdfannot_dict_put:nne {link/Named}{A}{<<\pdfdict_use:n {l_hyp/annot/A/Named}>>}
+                \pdfannot_link:nnn { Named }
+                 {
+   %                /A
+   %                  <<
+   %                    \pdfdict_use:n { l_hyp/annot/A/Named }
+   %                  >>
+                 }
+                 {
+                   #2
+                   \Hy at xspace@end
+                   \Hy at VerboseLinkStop
+                 }
               }
               {
+                \msg_warning:nnn { hyp } { pdfa-no-named-action }{#1}
                 #2
-                \Hy at xspace@end
-                \Hy at VerboseLinkStop
               }
-           }
-           {
-             \msg_warning:nnn { hyp } { pdfa-no-named-action }{#1}
-             #2
-           }
-        \group_end:
+           \group_end:
+          } 
+          { \group_begin: #2 \group_end: }
+        \int_gdecr:N\g_@@_linknestlevel_int
       }
       {{\let\protect\relax#2}}
   }
diff --git a/testfiles-pdftex/nested-links.lvt b/testfiles-pdftex/nested-links.lvt
new file mode 100644
index 0000000..41f48a1
--- /dev/null
+++ b/testfiles-pdftex/nested-links.lvt
@@ -0,0 +1,24 @@
+\ExplSyntaxOn
+\debug_on:n { check-declarations , deprecation }
+\msg_redirect_module:nnn { pdf } { none } { warning }
+\ExplSyntaxOff
+\DocumentMetadata{}
+\input{regression-test}
+\documentclass{article}
+\usepackage{hyperref}
+\begin{document}
+\START\showoutput
+\hypersetup{nested-links=false}
+\tableofcontents
+\section{abc}\label{a}
+\section{abc \ref{a}}\label{b}
+
+
+\nameref{b}
+
+{\hypersetup{nested-links}
+
+\nameref{b}}
+
+\nameref{b}
+\end{document}
\ No newline at end of file
diff --git a/testfiles-pdftex/nested-links.tlg b/testfiles-pdftex/nested-links.tlg
new file mode 100644
index 0000000..6f8defa
--- /dev/null
+++ b/testfiles-pdftex/nested-links.tlg
@@ -0,0 +1,244 @@
+This is a generated file for the l3build validation system.
+Don't change this file in any respect.
+(nested-links.toc)
+\tf at toc=\write...
+Completed box being shipped out [1]
+\vbox(633.0+0.0)x407.0
+.\hbox(0.0+0.0)x0.0
+.\hbox(0.0+0.0)x0.0
+..\kern -72.26999
+..\vbox(0.0+0.0)x0.0, glue set 72.26999fil
+...\kern -72.26999
+...\hbox(0.0+0.0)x0.0
+....\glue 0.0 plus 1.0fil minus 1.0fil
+...\glue 0.0 plus 1.0fil minus 1.0fil
+.\vbox(0.0+0.0)x0.0, glue set - 14.99626fil
+..\kern 0.0
+..\kern 16.0
+..\kern -1.00374
+..\hbox(0.0+0.0)x0.0, glue set - 60.99626fil
+...\kern 0.0
+...\kern 62.0
+...\kern -1.00374
+...\pdfdest name{page.1} xyz
+...\penalty 10000
+...\glue 0.0 plus 1.0fil minus 1.0fil
+..\glue 0.0 plus 1.0fil minus 1.0fil
+.\glue(\lineskip) 0.0
+.\vbox(633.0+0.0)x407.0
+..\glue 16.0
+..\vbox(617.0+0.0)x345.0, shifted 62.0
+...\vbox(12.0+0.0)x345.0, glue set 12.0fil
+....\glue 0.0 plus 1.0fil
+....\hbox(0.0+0.0)x345.0
+.....\hbox(0.0+0.0)x345.0
+...\glue 25.0
+...\glue(\lineskip) 0.0
+...\vbox(550.0+0.0)x345.0, glue set 389.0835fil
+....\write-{}
+....\pdfdest name{Doc-Start} xyz
+....\glue(\topskip) 0.12001
+....\hbox(9.87999+0.0)x345.0, glue set 281.71843fil
+.....\hbox(0.0+0.0)x0.0
+......\glue 0.0
+.....\hbox(0.0+0.0)x0.0
+......\kern 0.0
+......\penalty 10000
+......\hbox(0.0+0.0)x0.0
+.......\hbox(0.0+0.0)x0.0, shifted -18.0
+........\pdfdest name{section*.1} xyz
+........\penalty 10000
+......\glue 0.0 plus 1.0fil minus 1.0fil
+.....\OT1/cmr/bx/n/14.4 C
+.....\OT1/cmr/bx/n/14.4 o
+.....\OT1/cmr/bx/n/14.4 n
+.....\kern-0.45001
+.....\OT1/cmr/bx/n/14.4 t
+.....\OT1/cmr/bx/n/14.4 e
+.....\OT1/cmr/bx/n/14.4 n
+.....\kern-0.45001
+.....\OT1/cmr/bx/n/14.4 t
+.....\OT1/cmr/bx/n/14.4 s
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\penalty 10000
+....\glue 9.90276 plus 0.86108
+....\glue -9.90276 plus -0.86108
+....\glue 10.00002 plus 1.0
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 5.05556
+....\hbox(6.94444+0.0)x345.0, glue set 294.76544fil
+.....\glue(\leftskip) 15.00002
+.....\glue -15.00002
+.....\pdfstartlink(*+*)x* attr{/Border [0 0 1] /H /I /C [0.701176 0.4 0.414118] } action goto name{section.1}
+.....\hbox(6.44444+0.0)x15.00002, glue set 9.25005fil
+......\OT1/cmr/bx/n/10 1
+......\glue 0.0 plus 1.0fil
+.....\OT1/cmr/bx/n/10 a
+.....\OT1/cmr/bx/n/10 b
+.....\kern0.31944
+.....\OT1/cmr/bx/n/10 c
+.....\pdfendlink
+.....\penalty 10000
+.....\glue 0.0 plus 1.0fil
+.....\penalty 10000
+.....\hbox(6.44444+0.0)x17.82494, glue set 12.07497fil
+......\glue 0.0 plus 1.0fil minus 1.0fil
+......\OT1/cmr/bx/n/10 1
+......\kern -1.0
+......\kern 1.0
+.....\penalty 10000
+.....\glue(\parfillskip) -15.50005
+.....\glue(\rightskip) 15.50005
+....\penalty -300
+....\glue 10.00002 plus 1.0
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 5.05556
+....\hbox(6.94444+0.0)x345.0, glue set 285.18216fil
+.....\glue(\leftskip) 15.00002
+.....\hbox(0.0+0.0)x0.0
+.....\glue -15.00002
+.....\pdfstartlink(*+*)x* attr{/Border [0 0 1] /H /I /C [0.701176 0.4 0.414118] } action goto name{section.2}
+.....\hbox(6.44444+0.0)x15.00002, glue set 9.25005fil
+......\OT1/cmr/bx/n/10 2
+......\glue 0.0 plus 1.0fil
+.....\OT1/cmr/bx/n/10 a
+.....\OT1/cmr/bx/n/10 b
+.....\kern0.31944
+.....\OT1/cmr/bx/n/10 c
+.....\glue 3.83331 plus 1.91666 minus 1.27777
+.....\OT1/cmr/bx/n/10 1
+.....\pdfendlink
+.....\penalty 10000
+.....\glue 0.0 plus 1.0fil
+.....\penalty 10000
+.....\hbox(6.44444+0.0)x17.82494, glue set 12.07497fil
+......\glue 0.0 plus 1.0fil minus 1.0fil
+......\OT1/cmr/bx/n/10 1
+......\kern -1.0
+......\kern 1.0
+.....\penalty 10000
+.....\glue(\parfillskip) -15.50005
+.....\glue(\rightskip) 15.50005
+....\penalty -300
+....\glue 15.0694 plus 4.30554 minus 0.86108
+....\pdfdest name{section.1} xyz
+....\penalty 10000
+....\glue -15.0694 plus -4.30554 minus -0.86108
+....\glue 15.0694 plus 4.30554 minus 0.86108
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 8.00002
+....\hbox(9.99998+0.0)x345.0, glue set 296.17506fil
+.....\hbox(9.27998+0.0)x24.29997
+......\glue 0.0
+......\OT1/cmr/bx/n/14.4 1
+......\glue 16.19998
+.....\OT1/cmr/bx/n/14.4 a
+.....\OT1/cmr/bx/n/14.4 b
+.....\kern0.45
+.....\OT1/cmr/bx/n/14.4 c
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\write1{\@writefile{toc}{\protect \contentsline {section}{\protect \numberline {1}abc}{\thepage }{section.1}\protected at file@percent }}
+....\penalty 10000
+....\glue 9.90276 plus 0.86108
+....\write1{\newlabel{a}{{1}{\thepage }{abc}{section.1}{}}}
+....\penalty 10000
+....\penalty 10000
+....\pdfdest name{section.2} xyz
+....\penalty 10000
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 8.00002
+....\hbox(9.99998+0.0)x345.0, glue set 282.67508fil
+.....\hbox(9.27998+0.0)x24.29997
+......\glue 0.0
+......\OT1/cmr/bx/n/14.4 2
+......\glue 16.19998
+.....\OT1/cmr/bx/n/14.4 a
+.....\OT1/cmr/bx/n/14.4 b
+.....\kern0.45
+.....\OT1/cmr/bx/n/14.4 c
+.....\glue 5.4 plus 2.7 minus 1.79999
+.....\pdfstartlink(*+*)x* attr{/Border [0 0 1] /H /I /C [0.701176 0.4 0.414118] } action goto name{section.1}
+.....\OT1/cmr/bx/n/14.4 1
+.....\pdfendlink
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\write1{\@writefile{toc}{\protect \contentsline {section}{\protect \numberline {2}abc \ref {a}}{\thepage }{section.2}\protected at file@percent }}
+....\penalty 10000
+....\penalty 10000
+....\glue 9.90276 plus 0.86108
+....\write1{\newlabel{b}{{2}{\thepage }{abc \ref {a}}{section.2}{}}}
+....\penalty 10000
+....\penalty 10000
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 5.05556
+....\hbox(6.94444+0.0)x345.0, glue set 321.38884fil
+.....\pdfstartlink(*+*)x* attr{/Border [0 0 1] /H /I /C [0.701176 0.4 0.414118] } action goto name{section.2}
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 b
+.....\kern0.27779
+.....\OT1/cmr/m/n/10 c
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 1
+.....\pdfendlink
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 5.05556
+....\hbox(6.94444+0.0)x345.0, glue set 306.38884fil
+.....\hbox(0.0+0.0)x15.0
+.....\pdfstartlink(*+*)x* attr{/Border [0 0 1] /H /I /C [0.701176 0.4 0.414118] } action goto name{section.2}
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 b
+.....\kern0.27779
+.....\OT1/cmr/m/n/10 c
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\pdfstartlink(*+*)x* attr{/Border [0 0 1] /H /I /C [0.701176 0.4 0.414118] } action goto name{section.1}
+.....\OT1/cmr/m/n/10 1
+.....\pdfendlink
+.....\pdfendlink
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\glue(\parskip) 0.0 plus 1.0
+....\glue(\parskip) 0.0
+....\glue(\baselineskip) 5.05556
+....\hbox(6.94444+0.0)x345.0, glue set 306.38884fil
+.....\hbox(0.0+0.0)x15.0
+.....\pdfstartlink(*+*)x* attr{/Border [0 0 1] /H /I /C [0.701176 0.4 0.414118] } action goto name{section.2}
+.....\OT1/cmr/m/n/10 a
+.....\OT1/cmr/m/n/10 b
+.....\kern0.27779
+.....\OT1/cmr/m/n/10 c
+.....\glue 3.33333 plus 1.66666 minus 1.11111
+.....\OT1/cmr/m/n/10 1
+.....\pdfendlink
+.....\penalty 10000
+.....\glue(\parfillskip) 0.0 plus 1.0fil
+.....\glue(\rightskip) 0.0
+....\glue 0.0 plus 1.0fil
+....\glue 0.0
+....\glue 0.0 plus 0.0001fil
+...\glue(\baselineskip) 23.55556
+...\hbox(6.44444+0.0)x345.0
+....\hbox(6.44444+0.0)x345.0, glue set 170.0fil
+.....\glue 0.0 plus 1.0fil
+.....\OT1/cmr/m/n/10 1
+.....\glue 0.0 plus 1.0fil
+.\kern 0.0
+.\kern 0.0
+.\kern -633.0
+.\hbox(0.0+0.0)x0.0
+.\kern 633.0
+(nested-links.aux)





More information about the latex3-commits mailing list.