[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.