texlive[72126] Master/texmf-dist: ocgx2 (28aug24)

commits+karl at tug.org commits+karl at tug.org
Wed Aug 28 23:05:54 CEST 2024


Revision: 72126
          https://tug.org/svn/texlive?view=revision&revision=72126
Author:   karl
Date:     2024-08-28 23:05:54 +0200 (Wed, 28 Aug 2024)
Log Message:
-----------
ocgx2 (28aug24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/ocgx2/ChangeLog
    trunk/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty
    trunk/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty

Modified: trunk/Master/texmf-dist/doc/latex/ocgx2/ChangeLog
===================================================================
--- trunk/Master/texmf-dist/doc/latex/ocgx2/ChangeLog	2024-08-28 21:05:45 UTC (rev 72125)
+++ trunk/Master/texmf-dist/doc/latex/ocgx2/ChangeLog	2024-08-28 21:05:54 UTC (rev 72126)
@@ -1,3 +1,8 @@
+2024-08-28
+	* v0.58: ocgx2.sty
+	* v0.23: ocgbase.sty
+	* fix: OCG hierarchy shown in the viewer's Layer tab
+
 2024-03-18
 	* v0.57: ocgx2.sty
 	* fix: fixed link border in pdfmanagement-testphase version

Modified: trunk/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty	2024-08-28 21:05:45 UTC (rev 72125)
+++ trunk/Master/texmf-dist/tex/latex/ocgx2/ocgbase.sty	2024-08-28 21:05:54 UTC (rev 72126)
@@ -100,8 +100,8 @@
 %
 % The Current Maintainer of this work is A. Grahn.
 
-\def\g at ocgbase@date at tl{2022/08/04}
-\def\g at ocgbase@version at tl{0.22}
+\def\g at ocgbase@date at tl{2024/08/28}
+\def\g at ocgbase@version at tl{0.23}
 
 \ProvidesExplPackage{ocgbase}{\g at ocgbase@date at tl}{\g at ocgbase@version at tl}
 {support package for ocgx2.sty}
@@ -167,10 +167,8 @@
     %global Order list
     \tl_new:N\l_ocgbase_ocgorderentry_tl
     \tl_new:N\l_ocgbase_ocgorder_tl
-    \tl_if_exist:cT{g_ocgbase_nd_0_chld_tl}{
-      \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{
-        \tl_use:c{g_ocgbase_nd_0_chld_tl}
-      }
+    \seq_if_empty:NF\g_ocgbase_order_root_seq{
+      \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{root}
     }
     \tl_if_empty:NF\l_ocgbase_ocgorder_tl{
       \pbs_pdfobj:nnn{}{array}{\l_ocgbase_ocgorder_tl}
@@ -228,99 +226,46 @@
 
 \cs_new_nopar:Nn\ocgbase_last_ocg:{\g_ocgbase_last_ocg_tl}
 
-\int_new:N\g_ocgbase_nd_int    %node id
-\seq_new:N\g_ocgbase_tree_nd_stack_seq    %stack with open ocg node id
-\seq_new:N\g_ocgbase_tree_ocg_stack_seq    %stack with open ocg obj number
-\seq_gpush:Nn\g_ocgbase_tree_nd_stack_seq{0}    %push root node
-\seq_gpush:Nn\g_ocgbase_tree_ocg_stack_seq{null}    %push root node
+\seq_new:N\g_ocgbase_open_ocg_seq  %stack with open ocg ref
+\seq_new:N\g_ocgbase_order_root_seq  %seq taking ocg ref /Order root
 
-%macro for starting OCG object (and nested children) insertion into Order
+%macro for starting OCG object (and nested children) insertion into order
 %hierarchy (shown as tree structure in the viewers `Layers' tab
 \cs_new_protected_nopar:Nn\ocgbase_tree_node_begin:n{ % #1: OCG obj
-  %get the parent node from stack
-  \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_prnt_tl
-  \tl_if_exist:cTF{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}{
-    %parent has >=1 children (i. e. my older siblings), traverse them
-    \tl_set:Nv\l__ocgbase_prev_sbl_tl{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}
-    \tl_set:Nx\l__ocgbase_cur_ocg_tl{#1}
-    \ocgbase_traverse_siblings:NN\l__ocgbase_prev_sbl_tl\l__ocgbase_cur_ocg_tl
-    \str_if_empty:NTF\l__ocgbase_cur_ocg_tl{
-      %I am the first child of my parent to refer to OCG #1
-      \int_gincr:N\g_ocgbase_nd_int
-      \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
-      %set myself as my next-older sibling's `next sibling'
-      \tl_gset:cV{
-        g_ocgbase_nd_\l__ocgbase_prev_sbl_tl _sbl_tl}\l__ocgbase_cur_nd_tl
-    }{
-      %there is already a sibling referring to OCG #1; no new node needs be
-      %created
-      \tl_set:NV\l__ocgbase_cur_nd_tl\l__ocgbase_prev_sbl_tl
-    }
-  }{
-    %I am the very first child of my parent
-    \int_gincr:N\g_ocgbase_nd_int
-    \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
-    %set myself as my parent's first child
-    \tl_gset:cV{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}\l__ocgbase_cur_nd_tl
+  % get parent (either currently open ocg or root)
+  \seq_get:NNF\g_ocgbase_open_ocg_seq\l__ocgbase_prnt_tl{
+    \tl_set:Nn\l__ocgbase_prnt_tl{root}
   }
-  %set the OCG I am referring to
-  \tl_gset:cx{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}{#1}
-  %push current node and its associated OCG obj on the stacks
-  \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
-  \seq_gpush:Nx\g_ocgbase_tree_ocg_stack_seq{#1}
+  %push current ocg ref on stack with open ocgs
+  \seq_gpush:Nx\g_ocgbase_open_ocg_seq{#1}
+  %create seq for current ocg if not yet existing and
+  %append ocg ref to its parent seq
+  \seq_if_exist:cF{g_ocgbase_order_#1_seq}{
+    \seq_new:c{g_ocgbase_order_#1_seq}
+    \seq_gput_right:cx{g_ocgbase_order_ \l__ocgbase_prnt_tl _seq}{#1}
+  }
 }
 
-%macro that ends insertion of OCG and sub-OCGs into Order tree
+%macro that ends insertion of current OCG into order tree
 \cs_new_protected:Nn\ocgbase_tree_node_end:{
-  \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l_tempa_tl
-  \seq_get:NN\g_ocgbase_tree_ocg_stack_seq\l_tempb_tl
-  \str_if_eq:eeT{
-    \cs_if_exist_use:c{g_ocgbase_nd_\l_tempa_tl _ocg_tl}
-  }{
-    \l_tempb_tl
-  }{
-    \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\g_trash_tl
-    \seq_gpop:NN\g_ocgbase_tree_ocg_stack_seq\g_trash_tl
-  }
+  %pop top ocg ref from stack with open ocgs
+  \seq_gpop:NN\g_ocgbase_open_ocg_seq\g_trash_tl
 }
 
-% helper macro (recursive); traverses siblings to find either
-% the node which refers to the same OCG (arg #2 remains un-modified), or
-% the last sibling inserted (arg #2 is cleared);
-% the node id of the sibling found is returned in arg #1
-\cs_new_protected:Nn\ocgbase_traverse_siblings:NN{
-  % #1: current node (in/out),  #2: OCG obj (in/out)
-  \str_if_eq:eeF{#2}{\tl_use:c{g_ocgbase_nd_#1_ocg_tl}}{
-    \tl_if_exist:cTF{g_ocgbase_nd_#1_sbl_tl}{
-      \tl_set:Nv#1{g_ocgbase_nd_#1_sbl_tl}
-      \ocgbase_traverse_siblings:NN#1#2
-    }{
-      \tl_clear:N#2
-    }
-  }
-}
-
+%macro that builds global ocg order from hierarchy and saves it into tl var
 \cs_new_protected_nopar:Nn\ocgbase_build_order:Nn{
   % (recursive macro)
   % #1: tl var to which the OCG order is written (output)
-  % #2: starting node id (input; usually `1')
-  \tl_set:Nx\l__ocgbase_cur_nd_tl{#2}
-  % first, append the OCG obj the current node is referring to
-  \tl_put_right:Nx#1{~\tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}}
-  % second, traverse the tree starting with the first child node
-  \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}{
-    \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
-    \tl_put_right:Nn#1{~[}
-    \ocgbase_build_order:Nn#1{
-      \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}}
-    \tl_put_right:Nn#1{~]}
-    \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
+  % #2: starting node (input; usually `root')
+  \seq_map_inline:cn{g_ocgbase_order_#2_seq}{
+    % first, append ocg ref to result tl var
+    \tl_put_right:Nx#1{~##1}
+    \seq_if_empty:cF{g_ocgbase_order_##1_seq}{
+      \tl_put_right:Nn#1{~[}
+      \ocgbase_build_order:Nn#1{##1}
+      \tl_put_right:Nn#1{~]}
+    }
   }
-  % third, traverse the tree starting with the next sibling node
-  \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}{
-    \ocgbase_build_order:Nn#1{
-      \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}}
-  }
 }
 
 %macro for appending an OCG object to the global `OFF' list
@@ -433,7 +378,7 @@
 %   \ocgbase at tree@node at end
 %     #1: OCG PDF object
 %     macro pair (begin and end) for inserting OCG object and its children
-%     into Order hierarchy (shown as tree structure in the viewers `Layers' tab
+%     into order hierarchy (shown as tree structure in the viewers `Layers' tab
 %
 %   --------
 %
@@ -479,8 +424,8 @@
 %
 % The Current Maintainer of this work is A. Grahn.
 
-\def\g at ocgbase@date at tl{2022/08/04}
-\def\g at ocgbase@version at tl{0.22}
+\def\g at ocgbase@date at tl{2024/08/28}
+\def\g at ocgbase@version at tl{0.23}
 
 \ProvidesExplPackage{ocgbase}{\g at ocgbase@date at tl}{\g at ocgbase@version at tl}
 {support package for ocgx2.sty}
@@ -535,25 +480,23 @@
 \AddToHook{shipout/lastpage}{
   \tl_if_empty:NF\g_ocgbase_ocgs_tl{
     %global OCG array
-    \pbs_pdfobj:nnn{}{array}{\g_ocgbase_ocgs_tl}
-    \tl_set:Nx\l_ocgbase_ocgarray_tl{\pbs_pdflastobj:}
+    \pdf_object_unnamed_write:ne{array}{\g_ocgbase_ocgs_tl}
+    \tl_set:Nx\l_ocgbase_ocgarray_tl{\pdf_object_ref_last:}
+    %global OFF list
     \tl_new:N\l_ocgbase_offocgentry_tl
-    %global OFF list
     \seq_if_empty:NF\g_ocgbase_offocgs_seq{
-      \pbs_pdfobj:nnn{}{array}{\seq_use:Nn\g_ocgbase_offocgs_seq{~}}
-      \tl_set:Nx\l_ocgbase_offocgentry_tl{/OFF~\pbs_pdflastobj:}
+      \pdf_object_unnamed_write:ne{array}{\seq_use:Nn\g_ocgbase_offocgs_seq{~}}
+      \tl_set:Nx\l_ocgbase_offocgentry_tl{/OFF~\pdf_object_ref_last:}
     }
     %global Order list
     \tl_new:N\l_ocgbase_ocgorderentry_tl
     \tl_new:N\l_ocgbase_ocgorder_tl
-    \tl_if_exist:cT{g_ocgbase_nd_0_chld_tl}{
-      \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{
-        \tl_use:c{g_ocgbase_nd_0_chld_tl}
-      }
+    \seq_if_empty:NF\g_ocgbase_order_root_seq{
+      \ocgbase_build_order:Nn\l_ocgbase_ocgorder_tl{root}
     }
     \tl_if_empty:NF\l_ocgbase_ocgorder_tl{
-      \pbs_pdfobj:nnn{}{array}{\l_ocgbase_ocgorder_tl}
-      \tl_set:Nx\l_ocgbase_ocgorderentry_tl{/Order~\pbs_pdflastobj:}
+      \pdf_object_unnamed_write:ne{array}{\l_ocgbase_ocgorder_tl}
+      \tl_set:Nx\l_ocgbase_ocgorderentry_tl{/Order~\pdf_object_ref_last:}
     }
     %generate RBGroups entry (radio button groups)
     \tl_new:N\l_ocgbase_rbtn_groups_tl
@@ -566,8 +509,8 @@
     }
     \tl_new:N\l_ocgbase_rbgroupsentry_tl
     \tl_if_empty:NF\l_ocgbase_rbtn_groups_tl{
-      \pbs_pdfobj:nnn{}{array}{\l_ocgbase_rbtn_groups_tl}
-      \tl_set:Nx\l_ocgbase_rbgroupsentry_tl{/RBGroups~\pbs_pdflastobj:}
+      \pdf_object_unnamed_write:ne{array}{\l_ocgbase_rbtn_groups_tl}
+      \tl_set:Nx\l_ocgbase_rbgroupsentry_tl{/RBGroups~\pdf_object_ref_last:}
     }
     \pdfmanagement_add:nnx{Catalog/OCProperties}{OCGs}{\g_ocgbase_ocgs_tl}
     \pdfmanagement_add:nnx{Catalog/OCProperties}{D}{<<
@@ -586,12 +529,10 @@
 }
 
 %macro for inserting new OCG object
-\cs_generate_variant:Nn\pdf_object_new:nn{xn}
-\cs_generate_variant:Nn\pdf_object_write:nn{xx}
 \int_new:N\g_ocgbase_int
 \cs_new_protected_nopar:Nn\ocgbase_new_ocg:nnn{
-  \pdf_object_new:xn{g_object_\int_use:N\g_ocgbase_int _pdf}{dict}
-  \pdf_object_write:xx{g_object_\int_use:N\g_ocgbase_int _pdf}{
+  \exp_args:Ne\pdf_object_new:n{g_object_\int_use:N\g_ocgbase_int _pdf}
+  \exp_args:Neee\pdf_object_write:nnn{g_object_ \int_use:N\g_ocgbase_int _pdf}{dict}{
     /Type/OCG/Name~(#1)~\str_if_eq:eeF{#2}{}{/Usage<<#2>>}
   }
   \tl_gput_right:Nx\g_ocgbase_ocgs_tl{~\pdf_object_ref_last:}
@@ -612,99 +553,46 @@
 
 \cs_new_nopar:Nn\ocgbase_last_ocg:{\g_ocgbase_last_ocg_tl}
 
-\int_new:N\g_ocgbase_nd_int    %node id
-\seq_new:N\g_ocgbase_tree_nd_stack_seq    %stack with open ocg node id
-\seq_new:N\g_ocgbase_tree_ocg_stack_seq    %stack with open ocg obj number
-\seq_gpush:Nn\g_ocgbase_tree_nd_stack_seq{0}    %push root node
-\seq_gpush:Nn\g_ocgbase_tree_ocg_stack_seq{null}    %push root node
+\seq_new:N\g_ocgbase_open_ocg_seq  %stack with open ocg ref
+\seq_new:N\g_ocgbase_order_root_seq  %seq taking ocg ref /Order root
 
-%macro for starting OCG object (and nested children) insertion into Order
+%macro for starting OCG object (and nested children) insertion into order
 %hierarchy (shown as tree structure in the viewers `Layers' tab
 \cs_new_protected_nopar:Nn\ocgbase_tree_node_begin:n{ % #1: OCG obj
-  %get the parent node from stack
-  \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_prnt_tl
-  \tl_if_exist:cTF{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}{
-    %parent has >=1 children (i. e. my older siblings), traverse them
-    \tl_set:Nv\l__ocgbase_prev_sbl_tl{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}
-    \tl_set:Nx\l__ocgbase_cur_ocg_tl{#1}
-    \ocgbase_traverse_siblings:NN\l__ocgbase_prev_sbl_tl\l__ocgbase_cur_ocg_tl
-    \str_if_empty:NTF\l__ocgbase_cur_ocg_tl{
-      %I am the first child of my parent to refer to OCG #1
-      \int_gincr:N\g_ocgbase_nd_int
-      \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
-      %set myself as my next-older sibling's `next sibling'
-      \tl_gset:cV{
-        g_ocgbase_nd_\l__ocgbase_prev_sbl_tl _sbl_tl}\l__ocgbase_cur_nd_tl
-    }{
-      %there is already a sibling referring to OCG #1; no new node needs be
-      %created
-      \tl_set:NV\l__ocgbase_cur_nd_tl\l__ocgbase_prev_sbl_tl
-    }
-  }{
-    %I am the very first child of my parent
-    \int_gincr:N\g_ocgbase_nd_int
-    \tl_set:Nx\l__ocgbase_cur_nd_tl{\int_use:N\g_ocgbase_nd_int}
-    %set myself as my parent's first child
-    \tl_gset:cV{g_ocgbase_nd_\l__ocgbase_prnt_tl _chld_tl}\l__ocgbase_cur_nd_tl
+  % get parent (either currently open ocg or root)
+  \seq_get:NNF\g_ocgbase_open_ocg_seq\l__ocgbase_prnt_tl{
+    \tl_set:Nn\l__ocgbase_prnt_tl{root}
   }
-  %set the OCG I am referring to
-  \tl_gset:cx{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}{#1}
-  %push current node and its associated OCG obj on the stacks
-  \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
-  \seq_gpush:Nx\g_ocgbase_tree_ocg_stack_seq{#1}
+  %push current ocg ref on stack with open ocgs
+  \seq_gpush:Nx\g_ocgbase_open_ocg_seq{#1}
+  %create seq for current ocg if not yet existing and
+  %append ocg ref to its parent seq
+  \seq_if_exist:cF{g_ocgbase_order_#1_seq}{
+    \seq_new:c{g_ocgbase_order_#1_seq}
+    \seq_gput_right:cx{g_ocgbase_order_ \l__ocgbase_prnt_tl _seq}{#1}
+  }
 }
 
-%macro that ends insertion of OCG and sub-OCGs into Order tree
+%macro that ends insertion of current OCG into order tree
 \cs_new_protected:Nn\ocgbase_tree_node_end:{
-  \seq_get:NN\g_ocgbase_tree_nd_stack_seq\l_tempa_tl
-  \seq_get:NN\g_ocgbase_tree_ocg_stack_seq\l_tempb_tl
-  \str_if_eq:eeT{
-    \cs_if_exist_use:c{g_ocgbase_nd_\l_tempa_tl _ocg_tl}
-  }{
-    \l_tempb_tl
-  }{
-    \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\g_trash_tl
-    \seq_gpop:NN\g_ocgbase_tree_ocg_stack_seq\g_trash_tl
-  }
+  %pop top ocg ref from stack with open ocgs
+  \seq_gpop:NN\g_ocgbase_open_ocg_seq\g_trash_tl
 }
 
-% helper macro (recursive); traverses siblings to find either
-% the node which refers to the same OCG (arg #2 remains un-modified), or
-% the last sibling inserted (arg #2 is cleared);
-% the node id of the sibling found is returned in arg #1
-\cs_new_protected:Nn\ocgbase_traverse_siblings:NN{
-  % #1: current node (in/out),  #2: OCG obj (in/out)
-  \str_if_eq:eeF{#2}{\tl_use:c{g_ocgbase_nd_#1_ocg_tl}}{
-    \tl_if_exist:cTF{g_ocgbase_nd_#1_sbl_tl}{
-      \tl_set:Nv#1{g_ocgbase_nd_#1_sbl_tl}
-      \ocgbase_traverse_siblings:NN#1#2
-    }{
-      \tl_clear:N#2
-    }
-  }
-}
-
+%macro that builds global ocg order from hierarchy and saves it into tl var
 \cs_new_protected_nopar:Nn\ocgbase_build_order:Nn{
   % (recursive macro)
   % #1: tl var to which the OCG order is written (output)
-  % #2: starting node id (input; usually `1')
-  \tl_set:Nx\l__ocgbase_cur_nd_tl{#2}
-  % first, append the OCG obj the current node is referring to
-  \tl_put_right:Nx#1{~\tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _ocg_tl}}
-  % second, traverse the tree starting with the first child node
-  \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}{
-    \seq_gpush:NV\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
-    \tl_put_right:Nn#1{~[}
-    \ocgbase_build_order:Nn#1{
-      \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _chld_tl}}
-    \tl_put_right:Nn#1{~]}
-    \seq_gpop:NN\g_ocgbase_tree_nd_stack_seq\l__ocgbase_cur_nd_tl
+  % #2: starting node (input; usually `root')
+  \seq_map_inline:cn{g_ocgbase_order_#2_seq}{
+    % first, append ocg ref to result tl var
+    \tl_put_right:Nx#1{~##1}
+    \seq_if_empty:cF{g_ocgbase_order_##1_seq}{
+      \tl_put_right:Nn#1{~[}
+      \ocgbase_build_order:Nn#1{##1}
+      \tl_put_right:Nn#1{~]}
+    }
   }
-  % third, traverse the tree starting with the next sibling node
-  \tl_if_exist:cT{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}{
-    \ocgbase_build_order:Nn#1{
-      \tl_use:c{g_ocgbase_nd_\l__ocgbase_cur_nd_tl _sbl_tl}}
-  }
 }
 
 %macro for appending an OCG object to the global `OFF' list
@@ -740,7 +628,7 @@
 
 % OC-marked content
 \cs_new_protected_nopar:Nn\ocgbase_oc_bdc:n{\pbs_pdfbdc:nn{OC}{#1}}
-\cs_new_protected_nopar:Nn\ocgbase_oc_emc:{\pbs_pdfemc:}
+\cs_new_eq:NN\ocgbase_oc_emc:\pbs_pdfemc:
 
 %stack of PDF obj references of currently open OCGs
 \seq_new:N\g_ocgbase_open_stack_seq

Modified: trunk/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty	2024-08-28 21:05:45 UTC (rev 72125)
+++ trunk/Master/texmf-dist/tex/latex/ocgx2/ocgx2.sty	2024-08-28 21:05:54 UTC (rev 72126)
@@ -43,8 +43,8 @@
   %
   % The Current Maintainer of this work is A. Grahn.
 
-  \def\g at ocgxii@date at tl{2024/03/18}
-  \def\g at ocgxii@version at tl{0.57}
+  \def\g at ocgxii@date at tl{2024/08/28}
+  \def\g at ocgxii@version at tl{0.58}
 
   \ProvidesExplPackage{ocgx2}{\g at ocgxii@date at tl}{\g at ocgxii@version at tl}
   {ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx}
@@ -1579,8 +1579,8 @@
 %
 % The Current Maintainer of this work is A. Grahn.
 
-\def\g at ocgxii@date at tl{2024/03/18}
-\def\g at ocgxii@version at tl{0.57}
+\def\g at ocgxii@date at tl{2024/08/28}
+\def\g at ocgxii@version at tl{0.58}
 
 \ProvidesExplPackage{ocgx2}{\g at ocgxii@date at tl}{\g at ocgxii@version at tl}
 {ports `ocgx' functionality to dvips+ps2pdf, xelatex and dvipdfmx}
@@ -1810,8 +1810,8 @@
       \cs_set_eq:NN\And   \ocgxii_protected_dummy_cs:n
       \cs_set_eq:NN\Or    \ocgxii_protected_dummy_cs:n
       \ocgxii_ocmd_read_visbility:xN{#2}\l_ocgxii_ocmd_visibility_tl
-      \pdf_object_new:xn{g_object_\int_use:N\g_ocgbase_int _pdf}{dict}
-      \pdf_object_write:xx{g_object_\int_use:N\g_ocgbase_int _pdf}{
+      \exp_args:Ne\pdf_object_new:n{g_object_\int_use:N\g_ocgbase_int _pdf}
+      \exp_args:Neee\pdf_object_write:nnn{g_object_\int_use:N\g_ocgbase_int _pdf}{dict}{
         /Type/OCMD\l_ocgxii_ocmd_visibility_tl
       }
       \tl_gset:cx{g_pbs_objname_\pdf_object_ref_last: _tl}{



More information about the tex-live-commits mailing list.