[latex3-commits] [git/LaTeX3-latex3-latex3] master: PDF Annotation basics (982908d)

Joseph Wright joseph.wright at morningstar2.co.uk
Wed Apr 10 21:03:59 CEST 2019


Repository : https://github.com/latex3/latex3
On branch  : master
Link       : https://github.com/latex3/latex3/commit/982908d013080dbd4cc18299eebed26f06c5991a

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

commit 982908d013080dbd4cc18299eebed26f06c5991a
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date:   Wed Apr 10 19:49:34 2019 +0100

    PDF Annotation basics


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

982908d013080dbd4cc18299eebed26f06c5991a
 l3kernel/l3drivers-pdf.dtx              |  246 ++++++++++++++++++++++++++-----
 l3kernel/l3drivers.dtx                  |    9 ++
 l3kernel/testfiles/m3expl001.luatex.tlg |    4 +-
 l3kernel/testfiles/m3expl001.ptex.tlg   |   11 +-
 l3kernel/testfiles/m3expl001.tlg        |    4 +-
 l3kernel/testfiles/m3expl001.uptex.tlg  |   11 +-
 l3kernel/testfiles/m3expl001.xetex.tlg  |   11 +-
 l3kernel/testfiles/m3expl003.luatex.tlg |    4 +-
 l3kernel/testfiles/m3expl003.ptex.tlg   |   11 +-
 l3kernel/testfiles/m3expl003.tlg        |    4 +-
 l3kernel/testfiles/m3expl003.uptex.tlg  |   11 +-
 l3kernel/testfiles/m3expl003.xetex.tlg  |   11 +-
 12 files changed, 272 insertions(+), 65 deletions(-)

diff --git a/l3kernel/l3drivers-pdf.dtx b/l3kernel/l3drivers-pdf.dtx
index f4aad03..e15dd20 100644
--- a/l3kernel/l3drivers-pdf.dtx
+++ b/l3kernel/l3drivers-pdf.dtx
@@ -66,8 +66,6 @@
 %<*dvips>
 %    \end{macrocode}
 %
-% \subsubsection{Annotations}
-%
 % \subsubsection{Objects}
 %
 % \begin{variable}{\g_@@_pdf_object_int, \g_@@_pdf_object_prop}
@@ -164,6 +162,123 @@
 % \end{macro}
 % \end{macro}
 %
+% \subsubsection{Annotations}
+%
+% In \texttt{dvips}, annotations have to be constructed manually. As such,
+% we need the object code above for some definitions.
+%
+% \begin{variable}{\l_@@_tmp_box}
+%   A box for creating annotations.
+%    \begin{macrocode}
+\box_new:N \l_@@_tmp_box
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_pdf_annotation_int}
+%   Needed as objects which are not annotations could be created.
+%    \begin{macrocode}
+\int_new:N \g_@@_pdf_annotation_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\driver_pdf_annotation:nnnn}
+%   Annotations are objects, but we track them separately. Notably, they are
+%   not in the object data lists. Here, to get the co-ordinates of the
+%   annotation, we need to have the data collected at the PostScript level.
+%   That requires a bit of box trickery (effectively a \LaTeXe{} |picture|
+%   of zero size). Once the data is collected, use it to set up the annotation
+%   border.
+%    \begin{macrocode}
+\cs_new_protected:Npn \driver_annotation:nnnn #1#2#3#4
+  {
+    \int_gincr:N \g_@@_pdf_object_int
+    \int_gset_eq:NN \g_@@_pdf_annotation_int \g_@@_pdf_object_int
+    \group_begin:
+      \hbox_set_to_wd:Nnn \l_@@_tmp_box { 0pt }
+        {
+          \box_move_down:nn {#3}
+            {
+              \hbox_overlap_right:n
+                {
+                  \@@_literal:n
+                    {
+                      ps: currentpoint ~
+                      /l3lly ~ exch ~ def ~
+                      /l3llx ~ exch ~ def
+                    }
+                }
+            }
+          \box_move_up:nn {#2}
+            {
+              \hbox_overlap_right:n
+                {
+                  \tex_kern:D \dim_eval:n {#1} \scan_stop:
+                  \@@_literal:n
+                    {
+                      ps: currentpoint ~
+                      /l3ury ~ exch ~ def ~
+                      /l3urx ~ exch ~ def
+                    }
+                }
+            }
+        }
+      \box_resize_to_ht:Nn \l_@@_tmp_box { 0pt }
+      \box_use_drop:N \l_@@_tmp_box
+    \group_end:
+    \@@_literal_postscript:x
+      {
+        mark ~ /_objdef ~ \int_use:N \g_@@_pdf_object_int \c_space_tl
+        /Rect ~ [ l3llx ~ l3lly ~ l3urx ~ l3ury ]
+        #4
+        /ANN ~ pdfmark
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\driver_pdf_annotation_last:}
+%   Provide the last annotation we created: could get tricky of course if
+%   other packages are loaded.
+%    \begin{macrocode}
+\cs_new:Npn \driver_pdf_annotation_last:
+  { \int_use:N \g_@@_pdf_annotation_int }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\driver_pdf_link_goto:nnn, \driver_pdf_link_user:nnn}
+% \begin{macro}{\@@_pdf_link:nnnn}
+%   The approach here is based on \pkg{pdfbase}. It is likely to be revised
+%   using code or ideas from \pkg{breakurl} or \pkg{hypdvips}, as it does not
+%   allow breaking of links.
+%    \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_link_goto:nnn #1#2#3
+  { \@@_pdf_link_begin:nnnn {#1} { /GoTo } {#2} {#3} }
+\cs_new_protected:Npn \driver_pdf_link_user:nnn #1#2#3
+  { \@@_pdf_link_begin:nnnn {#1} { } {#2} {#3} }
+\cs_new_protected:Npn \@@_pdf_link_begin:nnnn #1#2#3#4
+  {
+    \group_begin:
+      \hbox_set:Nn \l_@@_tmp_box {#4}
+      \driver_annotation:nnnn
+        { \box_wd:N \l_@@_tmp_box }
+        { \box_ht:N \l_@@_tmp_box }
+        { \box_dp:N \l_@@_tmp_box }
+        { /Subtype /Link #1 #2 #3 }
+      \box_use_drop:N \l_@@_tmp_box
+    \group_end:
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\driver_pdf_link_last:}
+%    \begin{macrocode}
+\cs_new:Npn \driver_pdf_link_last:
+  {
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsubsection{Structure}
 %
 % \begin{macro}{\driver_pdf_compresslevel:n}
@@ -196,13 +311,43 @@
 %
 % \subsubsection{Annotations}
 %
+% \begin{macro}{\driver_pdf_annotation:nnnn}
+%   Simply pass the raw data through, just dealing with evaluation of dimensions.
+%    \begin{macrocode}
+\cs_new_protected:Npx \driver_annotation:nnnn #1#2#3#4
+  {
+    \cs_if_exist:NTF \tex_pdfextension:D
+      { \tex_pdfextension:D annot ~ }
+      { \tex_pdfannot:D }
+      width  ~ \exp_not:N \dim_eval:n {#1} ~
+      height ~ \exp_not:N \dim_eval:n {#2} ~
+      depth  ~ \exp_not:N \dim_eval:n {#3} ~
+      {#4}
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\driver_pdf_annotation_last:}
+%   A tiny amount of extra data gets added here.
+%    \begin{macrocode}
+\cs_new:Npx \driver_pdf_annotation_last:
+  {
+    \exp_not:N \tex_the:D 
+    \cs_if_exist:NTF \tex_pdffeedback:D
+      { \exp_not:N \tex_pdffeedback:D annot ~ }
+      { \exp_not:N \tex_pdflastannot:D }
+      0 ~ R
+  }
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\driver_pdf_link_goto:nnn, \driver_pdf_link_user:nnn}
 % \begin{macro}{\@@_pdf_link:nnnn}
 %   Links are all created using the same internals.
 %    \begin{macrocode}
 \cs_new_protected:Npn \driver_pdf_link_goto:nnn #1#2#3
   { \@@_pdf_link_begin:nnnn {#1} { goto~name } {#2} {#3} }
-\cs_new_protected:Npn \driver_pdf_link_user:nn #1#2#3
+\cs_new_protected:Npn \driver_pdf_link_user:nnn #1#2#3
   { \@@_pdf_link_begin:nnnn {#1} { user } {#2} {#3} }
 \cs_new_protected:Npx \@@_pdf_link_begin:nnnn #1#2#3#4
   {
@@ -376,40 +521,6 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% \subsubsection{Annotations}
-%
-% \begin{macro}{\driver_pdf_link_goto:nnn, \driver_pdf_link_user:nnn}
-% \begin{macro}{\@@_pdf_link_begin:nnnn}
-%    \begin{macrocode}
-\cs_new_protected:Npn \driver_pdf_link_goto:nnn #1#2#3
-  { \@@_pdf_startlink:nnn {#1} { /GoTo } {#2} {#3} }
-\cs_new_protected:Npn \driver_pdf_link_user:nnn #1#2#3
-  { \@@_pdf_startlink:nnn {#1} { } {#2} {#3} }
-\cs_new_protected:Npn \@@_pdf_link_begin:nnnn #1#2#3#4
-  {
-    \@@_pdf:n
-      {
-         bann
-         <<
-           /Type /Annot
-           /Subtype /Link
-           #1 ~ #2 ~ #3
-         >>
-      }
-    #4
-    \@@_pdf:n { eann }
-  }
-%    \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\driver_pdf_link_last:}
-%   Data not available.
-%    \begin{macrocode}
-\cs_new:Npn \driver_pdf_link_last: { }
-%    \end{macrocode}
-% \end{macro}
-%
 % \subsubsection{Objects}
 %
 % \begin{variable}{\g_@@_pdf_object_int, \g_@@_pdf_object_prop}
@@ -493,6 +604,67 @@
 % \end{macro}
 % \end{macro}
 %
+% \subsubsection{Annotations}
+%
+% \begin{variable}{\g_@@_pdf_annotation_int}
+%   Needed as objects which are not annotations could be created.
+%    \begin{macrocode}
+\int_new:N \g_@@_pdf_annotation_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\driver_pdf_annotation:nnnn}
+%   Annotations are objects, but we track them separately. Notably, they are
+%   not in the object data lists.
+%    \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_annotation:nnnn #1#2#3#4
+  {
+    \int_gincr:N \g_@@_pdf_object_int
+    \int_gset_eq:NN \g_@@_pdf_annotation_int \g_@@_pdf_object_int
+    \@@_pdf:x
+      {
+        ann ~ @l3obj \int_use:N \g_@@_pdf_object_int \c_space_tl
+        width  ~ \dim_eval:n {#1} ~
+        height ~ \dim_eval:n {#2} ~
+        depth  ~ \dim_eval:n {#3} ~
+        << #4 >>
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\driver_pdf_link_goto:nnn, \driver_pdf_link_user:nnn}
+% \begin{macro}{\@@_pdf_link_begin:nnnn}
+%    \begin{macrocode}
+\cs_new_protected:Npn \driver_pdf_link_goto:nnn #1#2#3
+  { \@@_pdf_startlink:nnn {#1} { /GoTo } {#2} {#3} }
+\cs_new_protected:Npn \driver_pdf_link_user:nnn #1#2#3
+  { \@@_pdf_startlink:nnn {#1} { } {#2} {#3} }
+\cs_new_protected:Npn \@@_pdf_link_begin:nnnn #1#2#3#4
+  {
+    \@@_pdf:n
+      {
+         bann
+         <<
+           /Type /Annot
+           /Subtype /Link
+           #1 ~ #2 ~ #3
+         >>
+      }
+    #4
+    \@@_pdf:n { eann }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\driver_pdf_link_last:}
+%   Data not available.
+%    \begin{macrocode}
+\cs_new:Npn \driver_pdf_link_last: { }
+%    \end{macrocode}
+% \end{macro}
+%
 % \subsubsection{Structure}
 %
 % \begin{macro}{\driver_pdf_compresslevel:n}
diff --git a/l3kernel/l3drivers.dtx b/l3kernel/l3drivers.dtx
index ba8716e..bf77e16 100644
--- a/l3kernel/l3drivers.dtx
+++ b/l3kernel/l3drivers.dtx
@@ -474,6 +474,15 @@
 % \subsection{PDF Annotations}
 %
 % \begin{function}[added = 2019-04-10]
+%   {\driver_pdf_annotation:nnnn}
+%   \begin{syntax}
+%     \cs{driver_pdf_annotation:nnnn} \Arg{width} \Arg{height} \Arg{depth} \Arg{dictionary}
+%   \end{syntax}
+%   Creates a generic PDF annotation of the given \meta{height}, \meta{width}
+%   and \meta{depth} and featuring the \meta{dictionary}.
+% \end{function}
+%
+% \begin{function}[added = 2019-04-10]
 %   {\driver_pdf_link_goto:nnn, \driver_pdf_link_user:nnn}
 %   \begin{syntax}
 %     \cs{driver_pdf_link_user:nnn} \Arg{attributes} \Arg{target} \Arg{content}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 63e2be6..4616541 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -6462,8 +6462,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
 Defining \__driver_image_include_jpg:n on line ...
 Defining \__driver_image_include_pdf:n on line ...
 Defining \__driver_image_include_png:n on line ...
+Defining \driver_annotation:nnnn on line ...
+Defining \driver_pdf_annotation_last: on line ...
 Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
 Defining \__driver_pdf_link_begin:nnnn on line ...
 Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index c0bb2df..0041b6a 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -6506,10 +6506,6 @@ Defining \__driver_image_include_auxii:xnn on line ..
 Defining \__driver_image_include_auxiii:nnn on line ...
 Defining \__driver_pdf:n on line ...
 Defining \__driver_pdf:x on line ...
-Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nnn on line ...
-Defining \__driver_pdf_link_begin:nnnn on line ...
-Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_int on line ...
 \g__driver_pdf_object_int=\count...
 Defining \g__driver_pdf_object_prop on line ...
@@ -6522,6 +6518,13 @@ Defining \__driver_pdf_object_write_dict:nn on line ..
 Defining \__driver_pdf_object_write_fstream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nnnn on line ...
+Defining \g__driver_pdf_annotation_int on line ...
+\g__driver_pdf_annotation_int=\count...
+Defining \driver_pdf_annotation:nnnn on line ...
+Defining \driver_pdf_link_goto:nnn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
+Defining \__driver_pdf_link_begin:nnnn on line ...
+Defining \driver_pdf_link_last: on line ...
 Defining \driver_pdf_compresslevel:n on line ...
 Defining \driver_pdf_objects_enable: on line ...
 Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index 1ac9e60..eab363c 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -6803,8 +6803,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
 Defining \__driver_image_include_jpg:n on line ...
 Defining \__driver_image_include_pdf:n on line ...
 Defining \__driver_image_include_png:n on line ...
+Defining \driver_annotation:nnnn on line ...
+Defining \driver_pdf_annotation_last: on line ...
 Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
 Defining \__driver_pdf_link_begin:nnnn on line ...
 Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 6836d15..3d1edaf 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -6803,10 +6803,6 @@ Defining \__driver_image_include_auxii:xnn on line ..
 Defining \__driver_image_include_auxiii:nnn on line ...
 Defining \__driver_pdf:n on line ...
 Defining \__driver_pdf:x on line ...
-Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nnn on line ...
-Defining \__driver_pdf_link_begin:nnnn on line ...
-Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_int on line ...
 \g__driver_pdf_object_int=\count...
 Defining \g__driver_pdf_object_prop on line ...
@@ -6819,6 +6815,13 @@ Defining \__driver_pdf_object_write_dict:nn on line ..
 Defining \__driver_pdf_object_write_fstream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nnnn on line ...
+Defining \g__driver_pdf_annotation_int on line ...
+\g__driver_pdf_annotation_int=\count...
+Defining \driver_pdf_annotation:nnnn on line ...
+Defining \driver_pdf_link_goto:nnn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
+Defining \__driver_pdf_link_begin:nnnn on line ...
+Defining \driver_pdf_link_last: on line ...
 Defining \driver_pdf_compresslevel:n on line ...
 Defining \driver_pdf_objects_enable: on line ...
 Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 5fcca35..5a94c49 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -6482,10 +6482,6 @@ Defining \__driver_image_getbb_pagebox:w on line ...
 Defining \__driver_image_include_pdf:n on line ...
 Defining \__driver_pdf:n on line ...
 Defining \__driver_pdf:x on line ...
-Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nnn on line ...
-Defining \__driver_pdf_link_begin:nnnn on line ...
-Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_int on line ...
 \g__driver_pdf_object_int=\count...
 Defining \g__driver_pdf_object_prop on line ...
@@ -6498,6 +6494,13 @@ Defining \__driver_pdf_object_write_dict:nn on line ..
 Defining \__driver_pdf_object_write_fstream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nnnn on line ...
+Defining \g__driver_pdf_annotation_int on line ...
+\g__driver_pdf_annotation_int=\count...
+Defining \driver_pdf_annotation:nnnn on line ...
+Defining \driver_pdf_link_goto:nnn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
+Defining \__driver_pdf_link_begin:nnnn on line ...
+Defining \driver_pdf_link_last: on line ...
 Defining \driver_pdf_compresslevel:n on line ...
 Defining \driver_pdf_objects_enable: on line ...
 Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 63e2be6..4616541 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -6462,8 +6462,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
 Defining \__driver_image_include_jpg:n on line ...
 Defining \__driver_image_include_pdf:n on line ...
 Defining \__driver_image_include_png:n on line ...
+Defining \driver_annotation:nnnn on line ...
+Defining \driver_pdf_annotation_last: on line ...
 Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
 Defining \__driver_pdf_link_begin:nnnn on line ...
 Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index c0bb2df..0041b6a 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -6506,10 +6506,6 @@ Defining \__driver_image_include_auxii:xnn on line ..
 Defining \__driver_image_include_auxiii:nnn on line ...
 Defining \__driver_pdf:n on line ...
 Defining \__driver_pdf:x on line ...
-Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nnn on line ...
-Defining \__driver_pdf_link_begin:nnnn on line ...
-Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_int on line ...
 \g__driver_pdf_object_int=\count...
 Defining \g__driver_pdf_object_prop on line ...
@@ -6522,6 +6518,13 @@ Defining \__driver_pdf_object_write_dict:nn on line ..
 Defining \__driver_pdf_object_write_fstream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nnnn on line ...
+Defining \g__driver_pdf_annotation_int on line ...
+\g__driver_pdf_annotation_int=\count...
+Defining \driver_pdf_annotation:nnnn on line ...
+Defining \driver_pdf_link_goto:nnn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
+Defining \__driver_pdf_link_begin:nnnn on line ...
+Defining \driver_pdf_link_last: on line ...
 Defining \driver_pdf_compresslevel:n on line ...
 Defining \driver_pdf_objects_enable: on line ...
 Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index 1ac9e60..eab363c 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -6803,8 +6803,10 @@ Defining \__driver_image_getbb_auxii:n on line ...
 Defining \__driver_image_include_jpg:n on line ...
 Defining \__driver_image_include_pdf:n on line ...
 Defining \__driver_image_include_png:n on line ...
+Defining \driver_annotation:nnnn on line ...
+Defining \driver_pdf_annotation_last: on line ...
 Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
 Defining \__driver_pdf_link_begin:nnnn on line ...
 Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_prop on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 6836d15..3d1edaf 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -6803,10 +6803,6 @@ Defining \__driver_image_include_auxii:xnn on line ..
 Defining \__driver_image_include_auxiii:nnn on line ...
 Defining \__driver_pdf:n on line ...
 Defining \__driver_pdf:x on line ...
-Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nnn on line ...
-Defining \__driver_pdf_link_begin:nnnn on line ...
-Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_int on line ...
 \g__driver_pdf_object_int=\count...
 Defining \g__driver_pdf_object_prop on line ...
@@ -6819,6 +6815,13 @@ Defining \__driver_pdf_object_write_dict:nn on line ..
 Defining \__driver_pdf_object_write_fstream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nnnn on line ...
+Defining \g__driver_pdf_annotation_int on line ...
+\g__driver_pdf_annotation_int=\count...
+Defining \driver_pdf_annotation:nnnn on line ...
+Defining \driver_pdf_link_goto:nnn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
+Defining \__driver_pdf_link_begin:nnnn on line ...
+Defining \driver_pdf_link_last: on line ...
 Defining \driver_pdf_compresslevel:n on line ...
 Defining \driver_pdf_objects_enable: on line ...
 Defining \driver_pdf_objects_disable: on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 5fcca35..5a94c49 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -6482,10 +6482,6 @@ Defining \__driver_image_getbb_pagebox:w on line ...
 Defining \__driver_image_include_pdf:n on line ...
 Defining \__driver_pdf:n on line ...
 Defining \__driver_pdf:x on line ...
-Defining \driver_pdf_link_goto:nnn on line ...
-Defining \driver_pdf_link_user:nnn on line ...
-Defining \__driver_pdf_link_begin:nnnn on line ...
-Defining \driver_pdf_link_last: on line ...
 Defining \g__driver_pdf_object_int on line ...
 \g__driver_pdf_object_int=\count...
 Defining \g__driver_pdf_object_prop on line ...
@@ -6498,6 +6494,13 @@ Defining \__driver_pdf_object_write_dict:nn on line ..
 Defining \__driver_pdf_object_write_fstream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nn on line ...
 Defining \__driver_pdf_object_write_stream:nnnn on line ...
+Defining \g__driver_pdf_annotation_int on line ...
+\g__driver_pdf_annotation_int=\count...
+Defining \driver_pdf_annotation:nnnn on line ...
+Defining \driver_pdf_link_goto:nnn on line ...
+Defining \driver_pdf_link_user:nnn on line ...
+Defining \__driver_pdf_link_begin:nnnn on line ...
+Defining \driver_pdf_link_last: on line ...
 Defining \driver_pdf_compresslevel:n on line ...
 Defining \driver_pdf_objects_enable: on line ...
 Defining \driver_pdf_objects_disable: on line ...





More information about the latex3-commits mailing list