[latex3-commits] [git/LaTeX3-latex3-pdfresources] reworking-annot: linkmargin, rearranging color code (9deaefd)

Ulrike Fischer fischer at troubleshooting-tex.de
Sun Jan 31 17:22:50 CET 2021


Repository : https://github.com/latex3/pdfresources
On branch  : reworking-annot
Link       : https://github.com/latex3/pdfresources/commit/9deaefd4a7b528f12f0574a111a94de5d0016a6e

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

commit 9deaefd4a7b528f12f0574a111a94de5d0016a6e
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Sun Jan 31 17:22:50 2021 +0100

    linkmargin, rearranging color code


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

9deaefd4a7b528f12f0574a111a94de5d0016a6e
 hyperref-generic.dtx            | 673 ++++++++++++++++++++++------------------
 info/key-list.tex               |   2 +
 testfiles/linkmargin.luatex.tpf | 275 ++++++++++++++++
 testfiles/linkmargin.pvt        |  19 ++
 testfiles/linkmargin.tpf        | 265 ++++++++++++++++
 testfiles/linkmargin.xetex.tpf  | 231 ++++++++++++++
 6 files changed, 1158 insertions(+), 307 deletions(-)

diff --git a/hyperref-generic.dtx b/hyperref-generic.dtx
index ca1afda..3926add 100644
--- a/hyperref-generic.dtx
+++ b/hyperref-generic.dtx
@@ -218,8 +218,8 @@
 %  \end{itemize}
 %
 %  \subsection{Changed behaviour}
-%   \begin{itemize}
-%   \item |colorlinks| will as before disable the |pdfborder|, but it is possible
+%   \begin{descriptions}
+%   \item[colorlinks] |colorlinks| will as before disable the |pdfborder|, but it is possible
 %    to use the key in the document at any time, or to reenable the border if wanted.
 %    Internally |colorlinks| \& friends will no longer define/undefine
 %    |\Hy at colorlink|, but instead use the hooks provided by the \pkg{l3pdfannot} package.
@@ -233,14 +233,19 @@
 %
 %    where |\mycolor| should expand to one of the other two syntax variants.
 %
-%   \item The option |frenchlinks| does nothing at all.
-%   \item As mentioned above the support for |citecolor| and |citebordercolor| etc
+%   \item[frenchlinks] The option |frenchlinks| does nothing at all.
+%   \item[cite colors] As mentioned above the support for |citecolor| and |citebordercolor| etc
 %   has been reduced. A package like \pkg{hyperref} can't keep track of such semantic
 %   contexts like cite, acronym, glossaries, special references and maintain keys for
 %   them. The keys are not completly dropped as this would affect packages like
 %   \pkg{natbib}, but they have been separated and are no longer affected by
 %   group keys like |allcolors|  but must be set individually instead.
 %
+%   \item[link margin] The driver sets a default link margin---this is identical
+%   to pdftex and luatex driver, but a change for the xetex and dvips driver.
+%   The (undocumentated) command \cs{setpdflinkmargin} does nothing.
+%   Use either the key |pdflinkmargin| or \cs{\pdfannot_link_margin:n} to change the margin.
+%   See also the description in section~\ref{sec:keydesc} and in the hyperref manual.
 %   \end{itemize}
 %
 %  \section{PDF strings}
@@ -545,6 +550,36 @@
 % the code for anchors/destination where nesting doesn't make sense.
 % It should not be changed.
 %
+% \DescribeHypkey{pdfborder}\DescribeHypkey{linkborder}\DescribeHypkey{urlborder}
+% \DescribeHypkey{runborder}\DescribeHypkey{menuborder}
+% This key set accept as value three numbers or three numbers and an array describing
+% a dash pattern, examples are |0 0 1| or |0 0 1 [3 2]|.
+% The first two numbers should according to the reference set round
+% corners, but PDF viewer seem to ignore it. The third number is the line width
+% of the border. Settings done with |pdfborderstyle| should take precedence.
+%
+% \DescribeHypkey{pdfborderstyle}\DescribeHypkey{linkborderstyle}
+% \DescribeHypkey{urlborderstyle}\DescribeHypkey{fileborderstyle}
+% \DescribeHypkey{runborderstyle}\DescribeHypkey{menuborderstyle}
+% The value of this key is the content of the |BS| dictionary.
+% As an example |/Type/Border /W 1  /S/U  /D[3 2]|
+%
+% \begin{tabular}{>{\ttfamily} lll}
+% Key & Values & comment / example\\\hline
+% /Type & |/Border| & optional \\
+% /W    & \meta{number} & Width of border line \\
+% /S    & |/S|      & solid (default)\\
+%       & |/D| &dash  pattern can be set with /D\\
+%       & |/B| & beveled\\
+%       & |/I| & inset\\
+%       & |/U| & underline\\
+% /D    & \meta{array of numbers} & dash pattern (lines/gaps) (default [3])
+% \end{tabular}
+%
+% \DescribeHypkey{pdflinkmargin}As described in the \pkg{hyperref} manual
+% the behaviour differs between the backends: with dvips it is possible to
+% change links locally, pdflatex and lualatex work by page, with dvipdfmx
+% the setting is global (and has to be done in the preamble).
 %^^A %% This is an adapted version of hluatex.def
 %^^A %% meant to test the use of the commands
 %^^A %% from pdfmanagement.sty
@@ -1820,10 +1855,296 @@
 
 %    \end{macrocode}
 %
-% \section{Colorlinks}
+% \section{Color of links and borders}
+% \subsection{Functions to export and select colors}
+% We support two input syntax: color expressions and model with values.
+% \begin{function}{\@@_color_export:nnN,\@@_colormodel_export:nnnN}
+%   \begin{syntax}
+%    \cs{@@_color_export:nnN} \Arg{color} \Arg{export format} \meta{tlvar}\\
+%    \cs{@@_colormodel_export:nnnN} \Arg{color model}\Arg{value} \Arg{export format} \meta{tlvar}
+%   \end{syntax}
+%   This exports a color as space separated numbers as needed in in |/C|.
+%  \Arg{color} should have either the format |[model]{value}| or be a color expression.
+%  For examples: |[rgb]{1,0,.5}| or |red!50!blue|. The export format is either
+%  |space-sep-cmyk| or |space-sep-rgb|.
+% \end{function}
+%  \begin{macro}{\@@_color_export:nnN,\@@_colormodel_export:nnnN}
+%   Color keys need to parse color expressions. Two input types are supported:
+%  |color=[rgb]{1,0,.5}| and |color=red!50!blue|. The colors are exported
+%  to PDF syntax (space separated numbers).
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_color_export:nnN #1  #2  #3
+ {
+   \tl_if_head_eq_charcode:nNTF {#1}[ %]
+    {
+      \@@_colormodel_export:wnnN  #1 {#2} #3
+    }
+    {
+      \color_export:nnN {#1} {#2} #3
+    }
+ }
+
+\cs_new_protected:Npn \@@_colormodel_export:wnnN  [#1] #2 #3 #4
+  {
+     \color_export:nnnN {#1}{#2}{#3}#4
+  }
+
+\cs_generate_variant:Nn \@@_color_export:nnN {xVN}
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{function}{\@@_color_select:n}
+%   \begin{syntax}
+%    \cs{@@_color_select:nN} \Arg{color} \\
+%   \end{syntax}
+%  These commands select a (text) color.
+%  \Arg{color} should have either the format |[model]{value}| or be a color expression.
+%  For examples: |[rgb]{1,0,.5}| or |red!50!blue|
+% \end{function}
+%  \begin{macro}{\@@_color_select:n,\@@_colormodel_select_aux:wn}
+%   Color keys need to parse color expressions. Two input types are supported:
+%  |color=[rgb]{1,0,.5}| and |color=red!50!blue|.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_color_select:n #1
+ {
+   \tl_if_head_eq_charcode:nNTF {#1}[ %]
+    {
+      \@@_colormodel_select_aux:wn  #1
+    }
+    {
+      \color_select:n {#1}
+    }
+ }
+
+\cs_new_protected:Npn \@@_colormodel_select_aux:wn  [#1] #2
+  {
+     \color_select:nn {#1}{#2}
+  }
+
+\cs_generate_variant:Nn \@@_color_select:n {e}
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Textcolor of links}
+% colors are added in the hooks. This means that they can also be removed if needed.
+% They add a group---this isn't needed with hyperref code, but could be relevant
+% with low-level annotations.
+%    \begin{macrocode}
+\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+  {
+     \hook_gput_code:nnn
+       {pdfannot/link/#2/begin}
+       {hyp/color}
+       {
+         \bool_if:cT { l_@@_annot_color#1_bool }
+           {
+             \group_begin:
+             \@@_color_select:e { \tl_use:c {l_@@_annot_#1color_tl} }
+           }
+       }
+     \hook_gput_code:nnn
+       {pdfannot/link/#2/end}
+       {hyp/color}
+       {
+         \bool_if:cT { l_@@_annot_color#1_bool }
+           {
+             \group_end:
+           }
+       }
+  }
+%    \end{macrocode}
 %
+% \begin{hypkey}{colorlinks}
+% This key also resets the border and borderstyle.
+%    \begin{macrocode}
+\keys_define:nn { hyp / setup }
+  {
+    ,colorlinks .meta:n =
+      {
+        ,pdfborder={0~0~0}
+        ,pdfborderstyle=
+        ,colorurl  =#1
+        ,colorlink =#1
+        ,colorrun  =#1
+        ,colormenu =#1
+        ,colorfile =#1
+        }
+    ,colorlinks .default:n = {true}
+  }
+%    \end{macrocode}
+% \end{hypkey}
+% \begin{hypkey}{colorurl,colorlink,colorrun,colormenu,colorfile}
+% \begin{hypkey}{urlcolor,linkcolor,runcolor,menucolor,filecolor}
+% \begin{hypkey}{allcolor}
+%    \begin{macrocode}
+\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+  {
+     \keys_define:nn { hyp / setup }
+       {
+         ,color#1 .bool_set:c = { l_@@_annot_color#1_bool }
+         ,#1color .tl_set:c =   { l_@@_annot_#1color_tl }
+       }
+  }
+
+\keys_define:nn { hyp / setup }
+  {
+    ,allcolors .meta:n =
+      {
+        ,urlcolor=#1
+        ,linkcolor=#1
+        ,runcolor=#1
+        ,filecolor=#1
+        ,menucolor=#1
+      }
+    ,allcolors .value_required:n = true
+  }
+%    \end{macrocode}
+% \subsection{Style and color of borders}
+% \subsubsection{Border color}
+% The border color is set by link type.
+%    \begin{macrocode}
+\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+  {
+    \keys_define:nn { hyp / setup }
+      {
+        #1bordercolor .code:n =
+          {
+             \tl_if_empty:nTF { ##1 }
+               {
+                 \pdfannot_dict_remove:nn
+                  {link/#2}
+                  { C }
+               }
+               {
+                 \@@_color_export:xVN {##1}\g_@@_colormodel_str \l_@@_tmpa_tl
+                 \pdfannot_dict_put:nnx
+                   {link/#2}
+                   { C }
+                   { [\l_@@_tmpa_tl] }
+               }
+          }
+      }
+  }
+
+\keys_define:nn { hyp / setup }
+  {
+    ,allbordercolors .meta:n =
+      {
+        ,linkbordercolor=#1
+        ,urlbordercolor =#1
+        ,filebordercolor=#1
+        ,menubordercolor=#1
+        ,runbordercolor =#1
+      }
+    ,allbordercolors .value_required:n = true
+  }
+
+%    \end{macrocode}
 %
+% \subsubsection{Borderwidth and arc}
 %
+%    \begin{macrocode}
+\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+  {
+    \keys_define:nn { hyp / setup }
+      {
+        #1border .code:n =
+          {
+             \tl_if_empty:nTF { ##1 }
+               {
+                 \pdfannot_dict_remove:nn
+                  {link/#2}
+                  { Border }
+               }
+               {
+                 \pdfannot_dict_put:nnn
+                   {link/#2}
+                   { Border }
+                   { [##1] }
+               }
+          }
+      }
+  }
+\keys_define:nn { hyp / setup }
+  {
+    ,pdfborder  .code:n =
+      {
+        \tl_if_empty:nTF { #1 }
+         {
+           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+             {
+               \pdfannot_dict_remove:nn
+                  {link/##2}
+                  { Border }
+             }
+         }
+         {
+           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+             {
+               \pdfannot_dict_put:nnn
+                 {link/##2}
+                 { Border }
+                 { [#1] }
+             }
+         }
+      }
+    ,pdfborder .initial:n = {0~0~1},
+  }
+%    \end{macrocode}
+% \subsubection{Borderstyle}
+% This keys fill the extended /BS entry (a dictionary).
+% \begin{Hypkey}{pdfborderstyle,urlborderstyle,linkborderstyle,
+% runborderstyle,fileborderstyle,
+% menuborderstyle}
+%    \begin{macrocode}
+\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+  {
+    \keys_define:nn { hyp / setup }
+      {
+        #1borderstyle .code:n =
+          {
+             \tl_if_empty:nTF { ##1 }
+               {
+                 \pdfannot_dict_remove:nn
+                  {link/#2}
+                  { BS }
+               }
+               {
+                 \pdfannot_dict_put:nnn
+                   {link/#2}
+                   { BS }
+                   { <<##1>> }
+               }
+          }
+      }
+  }
+\keys_define:nn { hyp / setup }
+  {
+    ,pdfborderstyle  .code:n =
+      {
+        \tl_if_empty:nTF { #1 }
+         {
+           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+             {
+               \pdfannot_dict_remove:nn
+                  {link/##2}
+                  { BS }
+             }
+         }
+         {
+           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
+             {
+               \pdfannot_dict_put:nnn
+                 {link/##2}
+                 { BS }
+                 { <<#1>> }
+             }
+         }
+      }
+    ,pdfborderstyle .initial:n = {},
+  }
+%    \end{macrocode}
+% \end{Hypkey}
 % \subsection{ocgcolorlinks}
 % OCG colorlinks need objects and an entry in the catalog.
 % Perhaps the objects need public names to avoid that ocgx2 has to create
@@ -2017,56 +2338,12 @@
 %    \end{macrocode}
 % \end{Hypkey}
 %    \begin{macrocode}
-\cs_set_protected:Npn \setpdflinkmargin #1
+% The following keys are set currently only with the original setup,
+% but we don't want warnings
+\keys_define:nn { hyp / setup }
   {
-    \pdfannot_link_margin:n { #1 }
-  }
-
-\pdfannot_link_margin:n { 1pt }
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%these patterns are used in hyperref checks.
-%it is unclear if they are really useful and if a backend support is
-%needed.
-\str_case:VnF \c_sys_backend_str
- {
-   { pdfmode }
-   {
-     \def\HyPat at ObjRef
-      {
-       [0-9]*[1-9][0-9]*~0~R
-      }
-   }
-   { dvipdfmx }
-   {
-     \def\HyPat at ObjRef
-      {
-        @[^~]+
-      }
-   }
-   { xdvipdfmx }
-   {
-     \def\HyPat at ObjRef
-      {
-        @[^~]+
-      }
-   }
- }
- { %also set in hyperref sty, so probably not needed.
-   \def\HyPat at ObjRef/{.+}
- }
-
-%file links to pdfs. See test-filelinks.pdf for a few example.
-
-
-% The following keys are set currently only with the original setup,
-% but we don't want warnings
-\keys_define:nn { hyp / setup }
-  {
-    ,unicode     .code:n = {}
-    ,pdfencoding .code:n = {}
+    ,unicode     .code:n = {}
+    ,pdfencoding .code:n = {}
   }
 
 %pdfversion is disabled
@@ -2300,6 +2577,8 @@
                 \pdfmanagement_add:nnx {Catalog} { Lang } { (#1) }
               }
           }
+   ,pdflinkmargin .code:n = { \pdfannot_link_margin:n { #1 } }
+   ,pdflinkmargin .initial:n = {1pt} 
    ,pdfmenubar    .choice:
    ,pdfmenubar / true .code:n =
      {
@@ -2813,125 +3092,10 @@
       }
     ,pdfview .initial:n  = {xyz}
   }
-% styles and colors.
-% this needs some sorting.
-% should colorlinks reset the border?
-% which colors should be used?
-% should we use the generic hooks or make hyp specific hooks?
-% what about font changes?
-% hooks are global, is this the right thing to use here?
-% perhaps the hook should only take a tl and this is filled?
-\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-  {
-    \keys_define:nn { hyp / setup }
-      {
-        #1border .code:n =
-          {
-             \tl_if_empty:nTF { ##1 }
-               {
-                 \pdfannot_dict_remove:nn
-                  {link/#2}
-                  { Border }
-               }
-               {
-                 \pdfannot_dict_put:nnn
-                   {link/#2}
-                   { Border }
-                   { [##1] }
-               }
-          }
-      }
-  }
-\keys_define:nn { hyp / setup }
-  {
-    ,pdfborder  .code:n =
-      {
-        \tl_if_empty:nTF { #1 }
-         {
-           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-             {
-               \pdfannot_dict_remove:nn
-                  {link/##2}
-                  { Border }
-             }
-         }
-         {
-           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-             {
-               \pdfannot_dict_put:nnn
-                 {link/##2}
-                 { Border }
-                 { [#1] }
-             }
-         }
-      }
-    ,pdfborder .initial:n = {0~0~1},
-  }
-%    \end{macrocode}
-% \begin{function}{\@@_color_export:nnN,\@@_colormodel_export:nnnN}
-%   \begin{syntax}
-%    \cs{@@_color_export:nnN} \Arg{color} \Arg{export format} \meta{tlvar}\\
-%    \cs{@@_colormodel_export:nnnN} \Arg{color model}\Arg{value} \Arg{export format} \meta{tlvar}
-%   \end{syntax}
-%  \Arg{color} should have either the format |[model]{value}| or be a color expression.
-%  For examples: |[rgb]{1,0,.5}| or |red!50!blue|
-% \end{function}
-%  \begin{macro}{\@@_color_export:nnN,\@@_colormodel_export:nnnN}
-%   Color keys need to parse color expressions. Two input types are supported:
-%  |color=[rgb]{1,0,.5}| and |color=red!50!blue|. The colors are exported
-%  to PDF syntax (space separated numbers).
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_color_export:nnN #1  #2  #3
- {
-   \tl_if_head_eq_charcode:nNTF {#1}[ %]
-    {
-      \@@_colormodel_export:wnnN  #1 {#2} #3
-    }
-    {
-      \color_export:nnN {#1} {#2} #3
-    }
- }
 
-\cs_new_protected:Npn \@@_colormodel_export:wnnN  [#1] #2 #3 #4
-  {
-     \color_export:nnnN {#1}{#2}{#3}#4
-  }
 
-\cs_generate_variant:Nn \@@_color_export:nnN {xVN}
 %    \end{macrocode}
-% \end{macro}
-% \begin{function}{\@@_color_select:n,\@@_colormodel_select:nn}
-%   \begin{syntax}
-%    \cs{@@_color_select:nN} \Arg{color} \\
-%    \cs{@@_colormodel_select:nn} \Arg{color model}\Arg{values}
-%   \end{syntax}
-%  These commands select a color.
-%  \Arg{color} should have either the format |[model]{value}| or be a color expression.
-%  For examples: |[rgb]{1,0,.5}| or |red!50!blue|
-% \end{function}
-%  \begin{macro}{\@@_color_select:n,\@@_colormodel_select:nn}
-%   Color keys need to parse color expressions. Two input types are supported:
-%  |color=[rgb]{1,0,.5}| and |color=red!50!blue|.
-%    \begin{macrocode}
-\cs_new_protected:Npn \@@_color_select:n #1
- {
-   \tl_if_head_eq_charcode:nNTF {#1}[ %]
-    {
-      \@@_colormodel_select:wn  #1
-    }
-    {
-      \color_select:n {#1}
-    }
- }
-
-\cs_new_protected:Npn \@@_colormodel_select:wn  [#1] #2
-  {
-     \color_select:nn {#1}{#2}
-  }
 
-\cs_generate_variant:Nn \@@_color_select:n {e}
-%    \end{macrocode}
-% \end{macro}
 % \begin{hypkey}{colormodel}
 %    \begin{macrocode}
 \keys_define:nn { hyp / setup }
@@ -2944,77 +3108,8 @@
 %    \end{macrocode}
 % \end{hypkey}
 %    \begin{macrocode}
-\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-  {
-    \keys_define:nn { hyp / setup }
-      {
-        #1bordercolor .code:n =
-          {
-             \tl_if_empty:nTF { ##1 }
-               {
-                 \pdfannot_dict_remove:nn
-                  {link/#2}
-                  { C }
-               }
-               {
-                 \@@_color_export:xVN {##1}\g_@@_colormodel_str \l_@@_tmpa_tl
-                 \pdfannot_dict_put:nnx
-                   {link/#2}
-                   { C }
-                   { [\l_@@_tmpa_tl] }
-               }
-          }
-      }
-  }
 
 
-\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-  {
-    \keys_define:nn { hyp / setup }
-      {
-        #1borderstyle .code:n =
-          {
-             \tl_if_empty:nTF { ##1 }
-               {
-                 \pdfannot_dict_remove:nn
-                  {link/#2}
-                  { BS }
-               }
-               {
-                 \pdfannot_dict_put:nnn
-                   {link/#2}
-                   { BS }
-                   { <<##1>> }
-               }
-          }
-      }
-  }
-\keys_define:nn { hyp / setup }
-  {
-    ,pdfborderstyle  .code:n =
-      {
-        \tl_if_empty:nTF { #1 }
-         {
-           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-             {
-               \pdfannot_dict_remove:nn
-                  {link/##2}
-                  { BS }
-             }
-         }
-         {
-           \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-             {
-               \pdfannot_dict_put:nnn
-                 {link/##2}
-                 { BS }
-                 { <<#1>> }
-             }
-         }
-      }
-    ,pdfborderstyle .initial:n = {},
-  }
-
 \prop_map_inline:Nn \c_@@_map_hyp_annot_prop
   {
     \keys_define:nn { hyp / setup }
@@ -3078,76 +3173,7 @@
       }
   }
 
-%colorlinks unfinished ...
-\keys_define:nn { hyp / setup }
-  {
-    ,colorlinks .meta:n =
-      {
-        ,pdfborder={0~0~0}
-        ,pdfborderstyle={}
-        ,colorurl  =#1
-        ,colorlink =#1
-        ,colorrun  =#1
-        ,colormenu =#1
-        ,colorfile =#1
-        }
-    ,colorlinks .default:n = {true}
-  }
-
-
-% link text colors, we probably need to parse it, but for now it is only stored.
-\prop_map_inline:Nn \c_@@_map_hyp_annot_prop
-  {
-     \hook_gput_code:nnn
-       {pdfannot/link/#2/begin}
-       {hyp/color}
-       {
-         \bool_if:cT { l_@@_annot_color#1_bool }
-           {
-             \group_begin:
-             \@@_color_select:e { \tl_use:c {l_@@_annot_#1color_tl} }
-           }
-       }
-     \hook_gput_code:nnn
-       {pdfannot/link/#2/end}
-       {hyp/color}
-       {
-         \bool_if:cT { l_@@_annot_color#1_bool }
-           {
-             \group_end:
-           }
-       }
-
-     \keys_define:nn { hyp / setup }
-       {
-         ,color#1 .bool_set:c = { l_@@_annot_color#1_bool }
-         ,#1color .tl_set:c =   { l_@@_annot_#1color_tl }
-       }
-  }
-
-\keys_define:nn { hyp / setup }
-  {
-    ,allcolors .code:n =
-      {
-        \seq_map_inline:Nn \c_@@_annot_types_seq
-         {
-           \keys_set:nn { hyp / setup } { ##1color = #1 }
-         }
-      }
-    ,allcolors .value_required:n = true
-  }
 
-\keys_define:nn { hyp / setup }
-  {
-    ,allbordercolors .code:n =
-      {
-        \seq_map_inline:Nn \c_@@_annot_types_seq
-         {
-           \keys_set:nn { hyp / setup } { ##1bordercolor = #1 }
-         }
-      }
-    ,allbordercolors .value_required:n = true
-  }
 
 
 \keys_define:nn { hyp / setup }
@@ -4457,6 +4483,39 @@
          \Fld at additionalactions
        }%
    }
+
+ %these patterns are used in hyperref checks.
+%it is unclear if they are really useful and if a backend support is
+%needed.
+\str_case:VnF \c_sys_backend_str
+ {
+   { pdfmode }
+   {
+     \def\HyPat at ObjRef
+      {
+       [0-9]*[1-9][0-9]*~0~R
+      }
+   }
+   { dvipdfmx }
+   {
+     \def\HyPat at ObjRef
+      {
+        @[^~]+
+      }
+   }
+   { xdvipdfmx }
+   {
+     \def\HyPat at ObjRef
+      {
+        @[^~]+
+      }
+   }
+ }
+ { %also set in hyperref sty, so probably not needed.
+   \def\HyPat at ObjRef/{.+}
+ }
+
+
 \ExplSyntaxOff
 % UF: removed Hy at writebookmark
 %     \Hy at currentbookmarklevel{0}
diff --git a/info/key-list.tex b/info/key-list.tex
index 090c35b..5d8ab08 100644
--- a/info/key-list.tex
+++ b/info/key-list.tex
@@ -120,4 +120,6 @@ done & urlcolor           & \textit{magenta}       & color of URL links \\
 done & verbose            & \textit{false}         & be chatty \\
 -- & vtex               &                        & use \textsf{VTeX} backend\\
 -- & xetex              &                        & use \textsf{Xe\TeX} backend\\
+\textbf{Missing keys in docu}\\
+done & pdflinkmargin    &
 \end{longtable} 
\ No newline at end of file
diff --git a/testfiles/linkmargin.luatex.tpf b/testfiles/linkmargin.luatex.tpf
new file mode 100644
index 0000000..6b07163
--- /dev/null
+++ b/testfiles/linkmargin.luatex.tpf
@@ -0,0 +1,275 @@
+%PDF-1.5
+%ÌÕÁÔÅØÐÄÆ
+8 0 obj
+<< /Length 313 >>        
+stream
+/opacity1 gs
+/opacity1 gs
+/opacity1 gs
+0 g 0 G
+0 g 0 G
+0 g 0 G
+BT
+/F24 9.96264 Tf
+1 0 0 1 148.712 657.235 Tm [<003F0069006900540062002C0066006600720072007200580048001C0069003200740040>-50<00540060005100440032002B0069005800510060003B0066>]TJ
+0 g 0 G
+/F23 9.96264 Tf
+1 0 0 1 303.133 89.365 Tm [<0052>]TJ
+0 g 0 G
+ET
+endstream
+endobj
+5 0 obj
+<< /Type /Page /Contents 8 0 R /Resources 7 0 R /MediaBox [ 0 0 612 792 ] /Parent 13 0 R /Annots 14 0 R >>
+endobj
+14 0 obj
+[ 6 0 R ]
+endobj
+6 0 obj
+<< /Type /Annot /Border [0 0 1] /H /I /C [0.724708 0.4 0.717646]  /Rect [ 128.787 635.029 326.047 684.075 ]
+ /Subtype/Link/A<</Type /Action /S /URI /URI (https://www.latex-project.org/) >>
+ >>
+endobj
+9 0 obj
+<< /D [ 5 0 R /XYZ 132.768 705.06 null ] >>
+endobj
+10 0 obj
+<< /D [ 5 0 R /XYZ 133.768 667.198 null ] >>
+endobj
+7 0 obj
+<< /ExtGState 1 0 R /Font << /F24 11 0 R /F23 12 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+1 0 obj
+<< /opacity1 <</ca 1/CA 1>>  >>
+endobj
+19 0 obj
+<< /Length 464 >>        
+stream
+/opacity1 gs
+/opacity1 gs
+/opacity1 gs
+0 g 0 G
+0 g 0 G
+BT
+/F24 9.96264 Tf
+1 0 0 1 148.712 657.235 Tm [<003F0069006900540062002C0066006600720072007200580048001C0069003200740040>-50<00540060005100440032002B0069005800510060003B0066>]TJ
+1 0 0 1 148.712 633.325 Tm [<003F0069006900540062002C0066006600720072007200580048001C0069003200740040>-50<00540060005100440032002B0069005800510060003B0066>]TJ
+0 g 0 G
+/F23 9.96264 Tf
+1 0 0 1 303.133 89.365 Tm [<006B>]TJ
+0 g 0 G
+ET
+endstream
+endobj
+18 0 obj
+<< /Type /Page /Contents 19 0 R /Resources 17 0 R /MediaBox [ 0 0 612 792 ] /Parent 13 0 R /Annots 21 0 R >>
+endobj
+21 0 obj
+[ 15 0 R 16 0 R ]
+endobj
+15 0 obj
+<< /Type /Annot /Border [0 0 1] /H /I /C [0.724708 0.4 0.717646]  /Rect [ 144.727 650.969 310.107 668.134 ]
+ /Subtype/Link/A<</Type /Action /S /URI /URI (https://www.latex-project.org/) >>
+ >>
+endobj
+16 0 obj
+<< /Type /Annot /Border [0 0 1] /H /I /C [0.724708 0.4 0.717646]  /Rect [ 144.727 627.059 310.107 644.224 ]
+ /Subtype/Link/A<</Type /Action /S /URI /URI (https://www.latex-project.org/) >>
+ >>
+endobj
+20 0 obj
+<< /D [ 18 0 R /XYZ 132.768 705.06 null ] >>
+endobj
+17 0 obj
+<< /ExtGState 1 0 R /Font << /F24 11 0 R /F23 12 0 R >> /ProcSet [ /PDF /Text ] >>
+endobj
+22 0 obj
+[ 82 [ 500 ] 107 [ 500 ] ]
+endobj
+24 0 obj
+<< /Length 14 >>         
+[BINARY STREAM]
+endobj
+25 0 obj
+<< /Subtype /CIDFontType0C /Length 697 >>        
+[BINARY STREAM]
+endobj
+23 0 obj
+<< /Type /FontDescriptor /FontName /XMCSTM+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 25 0 R /CIDSet 24 0 R >>
+endobj
+26 0 obj
+<< /Length 706 >>        
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-XMCSTM-LMRoman10-Regular-0)
+%%Title: (TeX-XMCSTM-LMRoman10-Regular-0 TeX XMCSTM-LMRoman10-Regular 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (XMCSTM-LMRoman10-Regular)
+/Supplement 0
+>> def
+/CMapName /TeX-Identity-XMCSTM-LMRoman10-Regular def
+/CMapType 2 def
+1 begincodespacerange
+<0000> <FFFF>
+endcodespacerange
+0 beginbfrange
+endbfrange
+2 beginbfchar
+<0052> <0031>
+<006B> <0032>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+endstream
+endobj
+12 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /XMCSTM+LMRoman10-Regular /DescendantFonts [ 27 0 R ] /ToUnicode 26 0 R >>
+endobj
+27 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /XMCSTM+LMRoman10-Regular /FontDescriptor 23 0 R /W 22 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+endobj
+28 0 obj
+[ 28 [ 525 ] 43 [ 525 525 ] 50 [ 525 ] 59 [ 525 ] 63 [ 525 525 ] 68 [ 525 ] 72 [ 525 ] 81 [ 525 ] 84 [ 525 ] 88 [ 525 ] 96 [ 525 ] 98 [ 525 ] 102 [ 525 ] 105 [ 525 ] 114 [ 525 ] 116 [ 525 ] ]
+endobj
+30 0 obj
+<< /Length 15 >>         
+[BINARY STREAM]
+endobj
+31 0 obj
+<< /Subtype /CIDFontType0C /Length 2420 >>       
+[BINARY STREAM]
+endobj
+29 0 obj
+<< /Type /FontDescriptor /FontName /OGJFWH+LMMono10-Regular /Flags 4 /FontBBox [ -451 -316 731 1016 ] /Ascent 1016 /CapHeight 611 /Descent -316 /ItalicAngle 0 /StemV 175 /XHeight 431 /FontFile3 31 0 R /CIDSet 30 0 R >>
+endobj
+32 0 obj
+<< /Length 926 >>        
+stream
+%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OGJFWH-LMMono10-Regular-0)
+%%Title: (TeX-OGJFWH-LMMono10-Regular-0 TeX OGJFWH-LMMono10-Regular 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OGJFWH-LMMono10-Regular)
+/Supplement 0
+>> def
+/CMapName /TeX-Identity-OGJFWH-LMMono10-Regular def
+/CMapType 2 def
+1 begincodespacerange
+<0000> <FFFF>
+endcodespacerange
+0 beginbfrange
+endbfrange
+18 beginbfchar
+<001C> <0061>
+<002B> <0063>
+<002C> <003A>
+<0032> <0065>
+<003B> <0067>
+<003F> <0068>
+<0040> <002D>
+<0044> <006A>
+<0048> <006C>
+<0051> <006F>
+<0054> <0070>
+<0058> <002E>
+<0060> <0072>
+<0062> <0073>
+<0066> <002F>
+<0069> <0074>
+<0072> <0077>
+<0074> <0078>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+endstream
+endobj
+11 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /OGJFWH+LMMono10-Regular /DescendantFonts [ 33 0 R ] /ToUnicode 32 0 R >>
+endobj
+33 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /OGJFWH+LMMono10-Regular /FontDescriptor 29 0 R /W 28 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+endobj
+13 0 obj
+<< /Type /Pages  /Count 2 /Kids [ 5 0 R 18 0 R ] >>
+endobj
+34 0 obj
+<< /Names [ (Doc-Start) 10 0 R (page.1) 9 0 R (page.2) 20 0 R ] /Limits [ (Doc-Start) (page.2) ] >>
+endobj
+35 0 obj
+<< /Dests 34 0 R >>
+endobj
+36 0 obj
+<< /Type /Catalog /Pages 13 0 R /Names 35 0 R /PageMode /UseOutlines/OpenAction [5 0 R /Fit]/PageLabels <</Nums[0<</S/D>>]>> >>
+endobj
+37 0 obj
+<< /Producer (LuaTeX)/Creator <FEFF004C006100540065005800200077006900740068002000680079007000650072007200650066> /Trapped /False >>
+endobj
+xref
+0 38
+0000000002 65535 f 
+0000000966 00000 n 
+0000000003 00000 f 
+0000000004 00000 f 
+0000000000 00000 f 
+0000000392 00000 n 
+0000000540 00000 n 
+0000000868 00000 n 
+0000000020 00000 n 
+0000000748 00000 n 
+0000000807 00000 n 
+0000008536 00000 n 
+0000004174 00000 n 
+0000008888 00000 n 
+0000000514 00000 n 
+0000001696 00000 n 
+0000001905 00000 n 
+0000002175 00000 n 
+0000001537 00000 n 
+0000001013 00000 n 
+0000002114 00000 n 
+0000001662 00000 n 
+0000002274 00000 n 
+0000003172 00000 n 
+0000002317 00000 n 
+0000002391 00000 n 
+0000003408 00000 n 
+0000004328 00000 n 
+0000004528 00000 n 
+0000007315 00000 n 
+0000004736 00000 n 
+0000004811 00000 n 
+0000007550 00000 n 
+0000008689 00000 n 
+0000008956 00000 n 
+0000009072 00000 n 
+0000009108 00000 n 
+0000009252 00000 n 
+trailer
+<< /Size 38 /Root 36 0 R /Info 37 0 R >>
+startxref
+9400
+%%EOF
diff --git a/testfiles/linkmargin.pvt b/testfiles/linkmargin.pvt
new file mode 100644
index 0000000..5ac2513
--- /dev/null
+++ b/testfiles/linkmargin.pvt
@@ -0,0 +1,19 @@
+\input{regression-test}
+\RequirePackage{pdfmanagement}
+\DeclareDocumentMetadata { uncompress }
+\documentclass{article}
+\usepackage{xcolor}
+\usepackage[verbose]{hyperref}
+\hypersetup{pdflinkmargin=20pt}
+\begin{document}
+\url{https://www.latex-project.org/}
+
+\newpage
+\url{https://www.latex-project.org/}
+
+\bigskip
+\hypersetup{pdflinkmargin=4pt}
+
+\url{https://www.latex-project.org/}
+
+\end{document}
\ No newline at end of file
diff --git a/testfiles/linkmargin.tpf b/testfiles/linkmargin.tpf
new file mode 100644
index 0000000..e265be6
--- /dev/null
+++ b/testfiles/linkmargin.tpf
@@ -0,0 +1,265 @@
+%PDF-1.5
+%ÐÔÅØ
+8 0 obj
+<<
+/Length 203       
+>>
+stream
+/opacity1 gs
+/opacity1 gs
+/opacity1 gs
+0 g 0 G
+0 g 0 G
+0 g 0 G
+BT
+/F28 9.9626 Tf 148.712 657.235 Td [(https://www.latex-)-50(project.org/)]TJ
+0 g 0 G
+/F19 9.9626 Tf 154.421 -567.87 Td [(1)]TJ
+0 g 0 G
+ET
+endstream
+endobj
+5 0 obj
+<<
+/Type /Page
+/Contents 8 0 R
+/Resources 7 0 R
+/MediaBox [0 0 612 792]
+/Parent 13 0 R
+/Annots [ 6 0 R ]
+>>
+endobj
+6 0 obj
+<<
+/Type /Annot
+/Border [0 0 1] /H /I /C [0.724708 0.4 0.717646] 
+/Rect [128.787 635.096 326.046 684.079]
+/Subtype/Link/A<</Type /Action /S /URI /URI (https://www.latex-project.org/) >>
+>>
+endobj
+9 0 obj
+<<
+/D [5 0 R /XYZ 132.768 705.06 null]
+>>
+endobj
+10 0 obj
+<<
+/D [5 0 R /XYZ 133.768 667.198 null]
+>>
+endobj
+7 0 obj
+<<
+/ExtGState 1 0 R 
+/Font << /F28 11 0 R /F19 12 0 R >>
+/ProcSet [ /PDF /Text ]
+>>
+endobj
+1 0 obj
+<< /opacity1 <</ca 1/CA 1>>  >>
+endobj
+18 0 obj
+<<
+/Length 249       
+>>
+stream
+/opacity1 gs
+/opacity1 gs
+/opacity1 gs
+0 g 0 G
+0 g 0 G
+BT
+/F28 9.9626 Tf 148.712 657.235 Td [(https://www.latex-)-50(project.org/)]TJ 0 -23.91 Td [(https://www.latex-)-50(project.org/)]TJ
+0 g 0 G
+/F19 9.9626 Tf 154.421 -543.96 Td [(2)]TJ
+0 g 0 G
+ET
+endstream
+endobj
+17 0 obj
+<<
+/Type /Page
+/Contents 18 0 R
+/Resources 16 0 R
+/MediaBox [0 0 612 792]
+/Parent 13 0 R
+/Annots [ 14 0 R 15 0 R ]
+>>
+endobj
+14 0 obj
+<<
+/Type /Annot
+/Border [0 0 1] /H /I /C [0.724708 0.4 0.717646] 
+/Rect [144.727 651.036 310.106 668.139]
+/Subtype/Link/A<</Type /Action /S /URI /URI (https://www.latex-project.org/) >>
+>>
+endobj
+15 0 obj
+<<
+/Type /Annot
+/Border [0 0 1] /H /I /C [0.724708 0.4 0.717646] 
+/Rect [144.727 627.126 310.106 644.229]
+/Subtype/Link/A<</Type /Action /S /URI /URI (https://www.latex-project.org/) >>
+>>
+endobj
+19 0 obj
+<<
+/D [17 0 R /XYZ 132.768 705.06 null]
+>>
+endobj
+16 0 obj
+<<
+/ExtGState 1 0 R 
+/Font << /F28 11 0 R /F19 12 0 R >>
+/ProcSet [ /PDF /Text ]
+>>
+endobj
+20 0 obj
+[500 500]
+endobj
+21 0 obj
+[525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525]
+endobj
+22 0 obj
+<<
+/Length1 1381
+/Length2 6624
+/Length3 0
+/Length 8005      
+>>
+[BINARY STREAM]
+endobj
+23 0 obj
+<<
+/Type /FontDescriptor
+/FontName /ZHZPNY+CMR10
+/Flags 4
+/FontBBox [-40 -250 1009 750]
+/Ascent 694
+/CapHeight 683
+/Descent -194
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/CharSet (/one/two)
+/FontFile 22 0 R
+>>
+endobj
+24 0 obj
+<<
+/Length1 1636
+/Length2 9818
+/Length3 0
+/Length 11454     
+>>
+[BINARY STREAM]
+endobj
+25 0 obj
+<<
+/Type /FontDescriptor
+/FontName /RFBMIU+CMTT10
+/Flags 4
+/FontBBox [-4 -233 537 696]
+/Ascent 611
+/CapHeight 611
+/Descent -222
+/ItalicAngle 0
+/StemV 69
+/XHeight 431
+/CharSet (/a/c/colon/e/g/h/hyphen/j/l/o/p/period/r/s/slash/t/w/x)
+/FontFile 24 0 R
+>>
+endobj
+12 0 obj
+<<
+/Type /Font
+/Subtype /Type1
+/BaseFont /ZHZPNY+CMR10
+/FontDescriptor 23 0 R
+/FirstChar 49
+/LastChar 50
+/Widths 20 0 R
+>>
+endobj
+11 0 obj
+<<
+/Type /Font
+/Subtype /Type1
+/BaseFont /RFBMIU+CMTT10
+/FontDescriptor 25 0 R
+/FirstChar 45
+/LastChar 120
+/Widths 21 0 R
+>>
+endobj
+13 0 obj
+<<
+/Type /Pages
+/Count 2
+/Kids [5 0 R 17 0 R]
+>>
+endobj
+26 0 obj
+<<
+/Names [(Doc-Start) 10 0 R (page.1) 9 0 R (page.2) 19 0 R]
+/Limits [(Doc-Start) (page.2)]
+>>
+endobj
+27 0 obj
+<<
+/Dests 26 0 R
+>>
+endobj
+28 0 obj
+<<
+/Type /Catalog
+/Pages 13 0 R
+/Names 27 0 R
+/PageMode /UseOutlines/OpenAction [5 0 R /Fit]/PageLabels <</Nums[0<</S/D>>]>>
+>>
+endobj
+29 0 obj
+<<
+/Producer (pdfTeX)/Creator <FEFF004C006100540065005800200077006900740068002000680079007000650072007200650066>
+/Trapped /False
+>>
+endobj
+xref
+0 30
+0000000002 65535 f 
+0000000818 00000 n 
+0000000003 00000 f 
+0000000004 00000 f 
+0000000000 00000 f 
+0000000276 00000 n 
+0000000399 00000 n 
+0000000719 00000 n 
+0000000015 00000 n 
+0000000603 00000 n 
+0000000660 00000 n 
+0000022509 00000 n 
+0000022370 00000 n 
+0000022650 00000 n 
+0000001307 00000 n 
+0000001512 00000 n 
+0000001776 00000 n 
+0000001173 00000 n 
+0000000865 00000 n 
+0000001717 00000 n 
+0000001876 00000 n 
+0000001902 00000 n 
+0000002224 00000 n 
+0000010327 00000 n 
+0000010550 00000 n 
+0000022102 00000 n 
+0000022715 00000 n 
+0000022827 00000 n 
+0000022863 00000 n 
+0000023007 00000 n 
+trailer
+<< /Size 30
+/Root 28 0 R
+/Info 29 0 R
+ >>
+startxref
+23155
+%%EOF
diff --git a/testfiles/linkmargin.xetex.tpf b/testfiles/linkmargin.xetex.tpf
new file mode 100644
index 0000000..a86e2a7
--- /dev/null
+++ b/testfiles/linkmargin.xetex.tpf
@@ -0,0 +1,231 @@
+%PDF-1.5
+%äðíø
+10 0 obj
+<</Length 298>>
+stream
+ q 1 0 0 1 72 720 cm 0 G 0 g 0 g 0 G 0 G 0 g 0 G 0 g 0 G 0 g BT /F1 9.9626 Tf 76.712 -62.765 Td[<003f0069006900540062002c0066006600720072007200580048001c0069003200740040>-50<00540060005100440032002b0069005800510060003b0066>]TJ ET 0 G 0 g BT /F3 9.9626 Tf 231.133 -630.635 Td[<0052>]TJ ET 0 G 0 g Q
+endstream
+endobj
+11 0 obj
+<</ExtGState 4 0 R/Font<</F1 5 0 R/F3 8 0 R>>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>>
+endobj
+15 0 obj
+<</Length 459>>
+stream
+ q 1 0 0 1 72 720 cm 0 G 0 g 0 g 0 G 0 G 0 g 0 G 0 g BT /F1 9.9626 Tf 76.712 -62.765 Td[<003f0069006900540062002c0066006600720072007200580048001c0069003200740040>-50<00540060005100440032002b0069005800510060003b0066>]TJ ET BT /F1 9.9626 Tf 76.712 -86.675 Td[<003f0069006900540062002c0066006600720072007200580048001c0069003200740040>-50<00540060005100440032002b0069005800510060003b0066>]TJ ET 0 G 0 g BT /F3 9.9626 Tf 231.133 -630.635 Td[<006b>]TJ ET 0 G 0 g Q
+endstream
+endobj
+16 0 obj
+<</ExtGState 4 0 R/Font<</F1 5 0 R/F3 8 0 R>>/ProcSet[/PDF/Text/ImageC/ImageB/ImageI]>>
+endobj
+7 0 obj
+<</Type/Annot/Border[0 0 1]/H/I/C[.724708 .4 .717646]/Subtype/Link/A<</Type/Action/S/URI/URI(https://www.latex-project.org/)>>/Rect[128.787
+634.162 326.047 687.283]>>
+endobj
+13 0 obj
+<</Type/Annot/Border[0 0 1]/H/I/C[.724708 .4 .717646]/Subtype/Link/A<</Type/Action/S/URI/URI(https://www.latex-project.org/)>>/Rect[128.787
+634.162 326.047 687.283]>>
+endobj
+14 0 obj
+<</Type/Annot/Border[0 0 1]/H/I/C[.724708 .4 .717646]/Subtype/Link/A<</Type/Action/S/URI/URI(https://www.latex-project.org/)>>/Rect[128.787
+610.252 326.047 663.372]>>
+endobj
+4 0 obj
+<</opacity1<</ca 1/CA 1>>>>
+endobj
+20 0 obj
+<</Names[(Doc-Start)17 0 R(page.1)18 0 R(page.2)19 0 R]>>
+endobj
+17 0 obj
+[3 0 R/XYZ 133.77 667.2 null]
+endobj
+18 0 obj
+[3 0 R/XYZ 132.77 705.06 null]
+endobj
+19 0 obj
+[12 0 R/XYZ 132.77 705.06 null]
+endobj
+21 0 obj
+<</Dests 20 0 R>>
+endobj
+23 0 obj
+[7 0 R]
+endobj
+3 0 obj
+<</Resources 11 0 R/Type/Page/Parent 22 0 R/Contents[10 0 R]/Annots 23 0 R>>
+endobj
+24 0 obj
+[13 0 R 14 0 R]
+endobj
+12 0 obj
+<</Resources 16 0 R/Type/Page/Parent 22 0 R/Contents[15 0 R]/Annots 24 0 R>>
+endobj
+22 0 obj
+<</Type/Pages/Count 2/Kids[3 0 R 12 0 R]/MediaBox[0 0 612 792]>>
+endobj
+2 0 obj
+<</Creator<feff004c006100540065005800200077006900740068002000680079007000650072007200650066>/Producer(xdvipdfmx)/CreationDate(D:20160520090000-00'00')>>
+endobj
+1 0 obj
+<</PageMode/UseOutlines/OpenAction[3 0 R/Fit]/PageLabels<</Nums[0<</S/D>>]>>/Names
+21 0 R/Pages 22 0 R/Type/Catalog>>
+endobj
+25 0 obj
+<</Length 594>>
+stream
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CMapName /EXQIVM+LMMono10-Regular-UTF16 def
+/CMapType 2 def
+/CIDSystemInfo <<
+  /Registry (Adobe)
+  /Ordering (UCS)
+  /Supplement 0
+>> def
+1 begincodespacerange
+<0000> <FFFF>
+endcodespacerange
+18 beginbfchar
+<001C> <0061>
+<002B> <0063>
+<002C> <003A>
+<0032> <0065>
+<003B> <0067>
+<003F> <0068>
+<0040> <002D>
+<0044> <006A>
+<0048> <006C>
+<0051> <006F>
+<0054> <0070>
+<0058> <002E>
+<0060> <0072>
+<0062> <0073>
+<0066> <002F>
+<0069> <0074>
+<0072> <0077>
+<0074> <0078>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+endstream
+endobj
+26 0 obj
+<</Length 370>>
+stream
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CMapName /XUUPUX+LMRoman10-Regular-UTF16 def
+/CMapType 2 def
+/CIDSystemInfo <<
+  /Registry (Adobe)
+  /Ordering (UCS)
+  /Supplement 0
+>> def
+1 begincodespacerange
+<0000> <FFFF>
+endcodespacerange
+2 beginbfchar
+<0052> <0031>
+<006B> <0032>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+endstream
+endobj
+28 0 obj
+<</Subtype/CIDFontType0C/Length 2399>>
+[BINARY STREAM]
+endobj
+29 0 obj
+[28[525]43[525 525]50[525]59[525]63[525 525]68[525]72[525]81[525]84[525]88[525]96[525]98[525]102[525]105[525]114[525]116[525]]
+endobj
+30 0 obj
+<</Length 15>>
+[BINARY STREAM]
+endobj
+32 0 obj
+<</Subtype/CIDFontType0C/Length 676>>
+[BINARY STREAM]
+endobj
+33 0 obj
+[82[500]107[500]]
+endobj
+34 0 obj
+<</Length 14>>
+[BINARY STREAM]
+endobj
+6 0 obj
+<</Type/Font/Subtype/CIDFontType0/BaseFont/EXQIVM+LMMono10-Regular/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement
+0>>/FontDescriptor 27 0 R/DW 280/W 29 0 R>>
+endobj
+27 0 obj
+<</Type/FontDescriptor/Ascent 778/Descent -222/StemV 69/CapHeight 778/AvgWidth 500/FontBBox[-451
+-316 731 1016]/ItalicAngle 0/Flags 7/Style<</Panose<000000000509000000000000>>>/FontName/EXQIVM+LMMono10-Regular/FontFile3
+28 0 R/CIDSet 30 0 R>>
+endobj
+5 0 obj
+<</Type/Font/Subtype/Type0/BaseFont/EXQIVM+LMMono10-Regular-Identity-H/Encoding/Identity-H/DescendantFonts[6 0 R]/ToUnicode
+25 0 R>>
+endobj
+9 0 obj
+<</Type/Font/Subtype/CIDFontType0/BaseFont/XUUPUX+LMRoman10-Regular/CIDSystemInfo<</Registry(Adobe)/Ordering(Identity)/Supplement
+0>>/FontDescriptor 31 0 R/DW 280/W 33 0 R>>
+endobj
+31 0 obj
+<</Type/FontDescriptor/Ascent 806/Descent -194/StemV 69/CapHeight 806/AvgWidth 549/FontBBox[-430
+-290 1417 1127]/ItalicAngle 0/Flags 6/Style<</Panose<000000000500000000000000>>>/FontName/XUUPUX+LMRoman10-Regular/FontFile3
+32 0 R/CIDSet 34 0 R>>
+endobj
+8 0 obj
+<</Type/Font/Subtype/Type0/BaseFont/XUUPUX+LMRoman10-Regular-Identity-H/Encoding/Identity-H/DescendantFonts[9 0 R]/ToUnicode
+26 0 R>>
+endobj
+xref
+0 35
+0000000000 65535 f 
+0000002410 00000 n 
+0000002242 00000 n 
+0000001944 00000 n 
+0000001628 00000 n 
+0000007578 00000 n 
+0000007131 00000 n 
+0000001080 00000 n 
+0000008176 00000 n 
+0000007726 00000 n 
+0000000015 00000 n 
+0000000363 00000 n 
+0000002068 00000 n 
+0000001262 00000 n 
+0000001445 00000 n 
+0000000467 00000 n 
+0000000976 00000 n 
+0000001745 00000 n 
+0000001791 00000 n 
+0000001838 00000 n 
+0000001671 00000 n 
+0000001886 00000 n 
+0000002161 00000 n 
+0000001920 00000 n 
+0000002036 00000 n 
+0000002543 00000 n 
+0000003187 00000 n 
+0000007319 00000 n 
+0000003607 00000 n 
+0000006079 00000 n 
+0000006222 00000 n 
+0000007915 00000 n 
+0000006286 00000 n 
+0000007034 00000 n 
+0000007068 00000 n 
+trailer
+<</ID[<ID-STRING><ID-STRING>]/Root
+1 0 R/Info 2 0 R/Size 35>>
+startxref
+8325
+%%EOF





More information about the latex3-commits mailing list.