[latex3-commits] [git/LaTeX3-latex3-pdfresources] reworking-annot: start reworking color and pdfborder code (9494ddf)

Ulrike Fischer fischer at troubleshooting-tex.de
Tue Jan 12 23:57:22 CET 2021


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

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

commit 9494ddf32d34b625af418c14df4af3c691ef95f7
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Tue Jan 12 23:57:22 2021 +0100

    start reworking color and pdfborder code


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

9494ddf32d34b625af418c14df4af3c691ef95f7
 hyperref-generic.dtx | 138 ++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 97 insertions(+), 41 deletions(-)

diff --git a/hyperref-generic.dtx b/hyperref-generic.dtx
index 1297d78..d725488 100644
--- a/hyperref-generic.dtx
+++ b/hyperref-generic.dtx
@@ -301,7 +301,7 @@
 %^^A %%  \l_@@_dest_pdfremotestartview_tl ,
 %^^A
 %^^A %% Constants
-%^^A %% *\c_@@_map_linktypes_prop
+%^^A %% *\c_@@_map_annot_hyp_prop
 %^^A %% *\c_@@_dest_undefined_tl
 %^^A %% Temp variables
 %^^A %% \l_@@_tmpa_seq
@@ -650,11 +650,14 @@
 %    \end{macrocode}
 % \end{variable}
 % \begin{variable}
-%   { \c_@@_map_linktypes_prop }
+%   {
+%     \c_@@_map_annot_hyp_prop,
+%     \c_@@_map_hyp_annot_prop,
+%   }
 %  This constants holds the link types managed by hyperref
-%  along with a mapping from annot names to hyperref names.
+%  along with a mapping from annot names to hyperref names and back.
 %    \begin{macrocode}
-\prop_const_from_keyval:Nn \c_@@_map_linktypes_prop
+\prop_const_from_keyval:Nn \c_@@_map_annot_hyp_prop
   {
     URI   = url,
     GoTo  = link,
@@ -662,6 +665,15 @@
     Named = menu,
     Launch= run
   }
+\prop_const_from_keyval:Nn \c_@@_map_hyp_annot_prop
+  {
+    url   = URI,
+    link  = GoTo,
+    file  = GoToR,
+    menu  = Named,
+    run   = Launch
+  }
+
 %    \end{macrocode}
 % \end{variable}
 % \subsection{Variables}
@@ -924,10 +936,10 @@
 % \hyper at anchorstart
 % \hyper at anchorend
 % \hyper at link
-% \hyper at linkfile
-% \hyper at linkurl
 % \hyper at linkstart
 % \hyper at linkend
+% \hyper at linkfile
+% \hyper at linkurl
 % \end{verbatim}
 % \subsection{ Anchors / destinations}
 % The first three commands are needed for \enquote{anchors}. At first
@@ -1002,7 +1014,39 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsection{Links}
+% \subsection{GoTo Links}
+% The next three commands are for links inside the document, to destinations (GoTo links).
+%
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_link_goto_begin:nw #1
+  {
+    \mode_leave_vertical:
+    \protected at edef \l_@@_dest_name_tmpa_tl { #1 }
+    \tl_if_empty:NTF \l_@@_dest_name_tmpa_tl
+      {
+        \msg_warning:nnx
+          { hyp }
+          { empty-destination-name }
+          { \c_@@_dest_undefined_tl }
+        \tl_set_eq:NN \l_@@_dest_name_tmpa_tl \c_@@_dest_undefined_tl
+      }
+      {
+        \@@_text_pdfstring:xoN
+          { \exp_args:No \HyperDestNameFilter { \l_@@_dest_name_tmpa_tl } }
+          { \l_@@_text_enc_dest_tl }
+          \l_@@_dest_name_tmpa_tl
+      }
+    \exp_args:No
+      \pdfannot_link_goto_begin:nw  { \l_@@_dest_name_tmpa_tl }
+        \Hy at colorlink\@linkcolor
+  }
+
+\cs_new_protected:Npn \@@_link_goto_end:
+  {
+    \Hy at endcolorlink
+    \pdfannot_link_goto_end:
+  }
+%    \end{macrocode}
 %
 % variants of hyperref commands to get attributes in the prop
 % these are (temporary) commands to fill various attributes (color, border style) in
@@ -1065,13 +1109,13 @@
   {
     \seq_map_inline:Nn \c_pdfannot_link_types_seq
       {
-        \tl_if_exist:cTF { @\prop_item:Nn\c__hyp_map_linktypes_prop{##1}bordercolor }
+        \tl_if_exist:cTF { @\prop_item:Nn\c__hyp_map_annot_hyp_prop{##1}bordercolor }
           {
            \exp_args:Nnnx
              \pdfannot_dict_put:nnn
               {link/##1}
               { C }
-              { [\tl_use:c {@\prop_item:Nn\c__hyp_map_linktypes_prop{##1}bordercolor}] }
+              { [\tl_use:c {@\prop_item:Nn\c__hyp_map_annot_hyp_prop{##1}bordercolor}] }
           }
           {
             \pdfannot_dict_remove:nn {link/##1} { C }
@@ -1234,38 +1278,6 @@
 
 
 
-\cs_new_protected:Npn \__hyp_link_goto_begin:nw #1
-  {
-    \mode_leave_vertical:
-    \protected at edef \l_@@_dest_name_tmpa_tl { #1 }
-    \tl_if_empty:NTF \l_@@_dest_name_tmpa_tl
-      {
-        \msg_warning:nnx
-          { hyp }
-          { empty-destination-name }
-          { \c_@@_dest_undefined_tl }
-        \tl_set_eq:NN \l_@@_dest_name_tmpa_tl \c_@@_dest_undefined_tl
-      }
-      { %I hope this is right ...
-%        \__hyp_pstringdef:Nx \l_@@_dest_name_tmpa_tl
-%          {
-%            \exp_args:No \HyperDestNameFilter { \l_@@_dest_name_tmpa_tl }
-%          }
-       \@@_text_pdfstring:xoN
-         { \exp_args:No \HyperDestNameFilter { \l_@@_dest_name_tmpa_tl } }
-         { \l_@@_text_enc_dest_tl }
-         \l_@@_dest_name_tmpa_tl
-      }
-    \exp_args:No
-      \pdfannot_link_goto_begin:nw  { \l_@@_dest_name_tmpa_tl }
-        \Hy at colorlink\@linkcolor
-  }
-
-\cs_new_protected:Npn \__hyp_link_goto_end:
-  {
-    \Hy at endcolorlink
-    \pdfannot_link_goto_end:
-  }
 
 
 
@@ -2105,12 +2117,56 @@
 % 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_set:Nn \@pdfborder {#1}
+        \tl_if_empty:nTF { #1}
+          {
+            \seq_map_inline:Nn\c_pdfannot_link_types_seq
+              {
+                \exp_args:Nnnx
+                \pdfannot_dict_remove:nn
+                  {link/##1}
+                  { Border }
+              }
+          }
+          {
+            \seq_map_inline:Nn\c_pdfannot_link_types_seq
+              {
+                \exp_args:Nnnx
+                \pdfannot_dict_put:nnn
+                  {link/##1}
+                  { Border }
+                  { [#1] }
+              }
+          }
       }
+  }
+\keys_define:nn { hyp / setup }
+  {
     ,pdfborder .initial:n = {0~0~1},
     ,pdfborderstyle .code:n =
       {





More information about the latex3-commits mailing list.