texlive[64047] Master/texmf-dist: media9 (4aug22)

commits+karl at tug.org commits+karl at tug.org
Thu Aug 4 22:33:16 CEST 2022


Revision: 64047
          http://tug.org/svn/texlive?view=revision&revision=64047
Author:   karl
Date:     2022-08-04 22:33:16 +0200 (Thu, 04 Aug 2022)
Log Message:
-----------
media9 (4aug22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/media9/ChangeLog
    trunk/Master/texmf-dist/doc/latex/media9/media9.pdf
    trunk/Master/texmf-dist/source/latex/media9/media9.tex
    trunk/Master/texmf-dist/tex/latex/media9/media9.sty
    trunk/Master/texmf-dist/tex/latex/media9/pdfbase.sty

Modified: trunk/Master/texmf-dist/doc/latex/media9/ChangeLog
===================================================================
--- trunk/Master/texmf-dist/doc/latex/media9/ChangeLog	2022-08-04 20:33:00 UTC (rev 64046)
+++ trunk/Master/texmf-dist/doc/latex/media9/ChangeLog	2022-08-04 20:33:16 UTC (rev 64047)
@@ -1,3 +1,8 @@
+2022-08-04
+	* v1.25 : media9.sty
+	* v0.55 : pdfbase.sty
+	* fix : pkg option processing acc. to new LaTeX format 22-06-01
+
 2022-03-18
 	* v1.24 : media9.sty
 	* v0.54 : pdfbase.sty

Modified: trunk/Master/texmf-dist/doc/latex/media9/media9.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/media9/media9.tex
===================================================================
--- trunk/Master/texmf-dist/source/latex/media9/media9.tex	2022-08-04 20:33:00 UTC (rev 64046)
+++ trunk/Master/texmf-dist/source/latex/media9/media9.tex	2022-08-04 20:33:16 UTC (rev 64047)
@@ -5,16 +5,15 @@
 % for the details of that license.
 %
 \listfiles
-%%%%%%% pdfmanagement-testphase %%%%%%
-\RequirePackage{pdfmanagement-testphase} % load the package
-\DeclareDocumentMetadata % activates the PDF management interface
+%%%%%%%% pdfmanagement-testphase %%%%%%
+\DocumentMetadata % activates the PDF management interface
 {
   %uncompress,
 }
-%%%%%% /pdfmanagement-testphase %%%%%%
+%%%%%%% /pdfmanagement-testphase %%%%%%
 \documentclass[a4paper]{article}
 \frenchspacing
-\usepackage[utf8]{inputenc}
+%\usepackage[utf8]{inputenc}
 \usepackage{textcomp}
 \usepackage[attachfiles]{media9}
 %\usepackage[draft]{media9}
@@ -25,8 +24,8 @@
 \usepackage[main=UKenglish,nil]{babel}
 \usepackage{graphicx}
 \usepackage{color}
-\usepackage[T1]{fontenc}
-%\usepackage{lmodern}
+%\usepackage[T1]{fontenc}
+%%\usepackage{lmodern}
 %\usepackage[scaled=0.85]{luximono}
   \usepackage[tt=false]{libertine} %override beramono (doesn't look like tt font)
   \usepackage[libertine]{newtxmath}
@@ -40,7 +39,7 @@
 \usepackage{hypcap}
 \def\keywords{embed flash movie LaTeX pdf 3d include sound swf mp3 video mp4 h.264 aac slideshow image gallery flv audio multimedia streamed media rtmp YouTube animation JavaScript pdfLaTeX dvips ps2pdf dvipdfmx XeLaTeX u3d prc Adobe Reader Foxit RichMedia annotation LuaLaTeX}
 \hypersetup{
-  bookmarksnumbered,linktocpage,breaklinks,
+  bookmarksnumbered,linktocpage,%breaklinks,
   pdftitle={The media9 Package},
   pdfsubject={Documentation},
   pdfauthor={Alexander Grahn},

Modified: trunk/Master/texmf-dist/tex/latex/media9/media9.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/media9/media9.sty	2022-08-04 20:33:00 UTC (rev 64046)
+++ trunk/Master/texmf-dist/tex/latex/media9/media9.sty	2022-08-04 20:33:16 UTC (rev 64047)
@@ -39,12 +39,10 @@
 %
 % The Current Maintainer of this work is A. Grahn.
 
-\RequirePackage{l3keys2e}
+\def\g at mix@date at tl{2022/08/04}
+\def\g at mix@version at tl{1.25}
 
-\def\g at mix@date at tl{2022/03/18}
-\def\g at mix@version at tl{1.24}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \ProvidesExplPackage{media9}{\g at mix@date at tl}{\g at mix@version at tl}
 {acrobat-9/X~compatible~media}
 
@@ -51,14 +49,15 @@
 \tl_gset_eq:NN\g_mix_date_tl\g at mix@date at tl
 \tl_gset_eq:NN\g_mix_version_tl\g at mix@version at tl
 
-%package options
+% package options
 
-%unknown package option error message
 \msg_set:nnnn{media9}{unknown~package~option}{Unknown~package~option~`#1'.}{
   Package option~'#1'~is~unknown;\\
   perhaps~it~is~spelled~incorrectly.
 }
 
+\msg_set:nnn{media9}{generic~msg}{#1\\#2}
+
 \bool_new:N\g_mix_pkgattach_bool
 \bool_new:N\g_mix_dvipdfmx_bool
 \bool_new:N\g_mix_pkgdraft_bool
@@ -112,15 +111,23 @@
 }
 
 \keys_define:nn{media9}{
-  xetex .code:n = {}, %dummy
+  pdftex.code:n = {},
+  pdftex.value_forbidden:n = true,
 
-  dvipdfmx .choice:,
-  dvipdfmx / true .code:n = {
-    \bool_gset_true:N\g_mix_dvipdfmx_bool
+  luatex.code:n = {},
+  luatex.value_forbidden:n = true,
+
+  xetex .code:n = {},
+  xetex .value_forbidden:n = true,
+
+  dvips.code:n = {},
+  dvips.value_forbidden:n = true,
+
+  dvipdfmx .code:n = {
     \PassOptionsToPackage{dvipdfmx}{pdfbase}
+    \PassOptionsToPackage{dvipdfmx}{ocgbase}
   },
-  dvipdfmx / false .code:n = {\bool_gset_false:N\g_mix_dvipdfmx_bool},
-  dvipdfmx .default:n = {true},
+  dvipdfmx .value_forbidden:n = true,
 
   bigfiles .choice:,
   bigfiles / true .code:n = {
@@ -290,11 +297,21 @@
     \msg_error:nnx{media9}{unknown~package~option}{\l_keys_key_tl}
   }
 }
-\ProcessKeysOptions{media9}
-\sys_if_engine_xetex:T{\bool_gset_true:N\g_mix_dvipdfmx_bool}
+\ProcessKeyOptions[media9]
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \RequirePackage{pdfbase}
+
+\bool_gset_eq:NN\g_mix_dvipdfmx_bool\g_pbs_dvipdfmx_bool
+
+\bool_if:NT\g_pbs_dvisvgm_bool{
+  \msg_error:nnnn{media9}{generic~msg}{
+    Package~`media9'~is~incompatible~with~the~`dvisvgm'~backend.
+  }{
+    Use~package~`media4svg'~instead.
+  }
+}
+
 %aliases for commands from pdfbase.sty
 \cs_set_eq:NN\mix_pdfobj:nnn   \pbs_pdfobj:nnn
 \cs_set_eq:NN\mix_pdfannot:nnnn\pbs_pdfannot:nnnn
@@ -2429,12 +2446,10 @@
 %
 % The Current Maintainer of this work is A. Grahn.
 
-\RequirePackage{l3keys2e}
+\def\g at mix@date at tl{2022/08/04}
+\def\g at mix@version at tl{1.25}
 
-\def\g at mix@date at tl{2022/03/18}
-\def\g at mix@version at tl{1.24}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \ProvidesExplPackage{media9}{\g at mix@date at tl}{\g at mix@version at tl}
 {acrobat-9/X compatible media}
 
@@ -2441,14 +2456,15 @@
 \tl_gset_eq:NN\g_mix_date_tl\g at mix@date at tl
 \tl_gset_eq:NN\g_mix_version_tl\g at mix@version at tl
 
-%package options
+% package options
 
-%unknown package option error message
 \msg_set:nnnn{media9}{unknown~package~option}{Unknown~package~option~`#1'.}{
   Package option~'#1'~is~unknown;\\
   perhaps~it~is~spelled~incorrectly.
 }
 
+\msg_set:nnn{media9}{generic~msg}{#1\\#2}
+
 \bool_new:N\g_mix_pkgattach_bool
 \bool_new:N\g_mix_dvipdfmx_bool
 \bool_new:N\g_mix_pkgdraft_bool
@@ -2502,15 +2518,23 @@
 }
 
 \keys_define:nn{media9}{
-  xetex .code:n = {}, %dummy
+  pdftex.code:n = {},
+  pdftex.value_forbidden:n = true,
 
-  dvipdfmx .choice:,
-  dvipdfmx / true .code:n = {
-    \bool_gset_true:N\g_mix_dvipdfmx_bool
+  luatex.code:n = {},
+  luatex.value_forbidden:n = true,
+
+  xetex .code:n = {},
+  xetex .value_forbidden:n = true,
+
+  dvips.code:n = {},
+  dvips.value_forbidden:n = true,
+
+  dvipdfmx .code:n = {
     \PassOptionsToPackage{dvipdfmx}{pdfbase}
+    \PassOptionsToPackage{dvipdfmx}{ocgbase}
   },
-  dvipdfmx / false .code:n = {\bool_gset_false:N\g_mix_dvipdfmx_bool},
-  dvipdfmx .default:n = {true},
+  dvipdfmx .value_forbidden:n = true,
 
   bigfiles .choice:,
   bigfiles / true .code:n = {
@@ -2680,11 +2704,21 @@
     \msg_error:nnx{media9}{unknown~package~option}{\l_keys_key_tl}
   }
 }
-\ProcessKeysOptions{media9}
-\sys_if_engine_xetex:T{\bool_gset_true:N\g_mix_dvipdfmx_bool}
+\ProcessKeyOptions[media9]
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \RequirePackage{pdfbase}
+
+\bool_gset_eq:NN\g_mix_dvipdfmx_bool\g_pbs_dvipdfmx_bool
+
+\bool_if:NT\g_pbs_dvisvgm_bool{
+  \msg_error:nnnn{media9}{generic~msg}{
+    Package~`media9'~is~incompatible~with~the~`dvisvgm'~backend.
+  }{
+    Use~package~`media4svg'~instead.
+  }
+}
+
 %aliases for commands from pdfbase.sty
 \cs_set_eq:NN\mix_pdfobj:nnn   \pbs_pdfobj:nnn
 \cs_set_eq:NN\mix_pdfannot:nnnn\pbs_pdfannot:nnnn

Modified: trunk/Master/texmf-dist/tex/latex/media9/pdfbase.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/media9/pdfbase.sty	2022-08-04 20:33:00 UTC (rev 64046)
+++ trunk/Master/texmf-dist/tex/latex/media9/pdfbase.sty	2022-08-04 20:33:16 UTC (rev 64047)
@@ -156,15 +156,95 @@
 %
 % The Current Maintainer of this work is A. Grahn.
 
-\RequirePackage{l3keys2e}
+\def\g at pbs@date at tl{2022/08/04}
+\def\g at pbs@version at tl{0.55}
 
-\def\g at pbs@date at tl{2022/03/18}
-\def\g at pbs@version at tl{0.54}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \ProvidesExplPackage{pdfbase}{\g at pbs@date at tl}{\g at pbs@version at tl}
 {driver~independent~access~to~low-level~PDF~features}
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% package options
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{
+  Package option~'#1'~is~unknown;\\
+  perhaps~it~is~spelled~incorrectly.
+}
+
+\bool_new:N\g_pbs_pkgbigfiles_bool
+\bool_new:N\g_pbs_dvipdfmx_bool
+\bool_new:N\g_pbs_dvisvgm_bool
+\str_new:N\g_pbs_backend_str
+
+\keys_define:nn{pdfbase}{
+  pdftex.code:n = {},
+  pdftex.value_forbidden:n = true,
+
+  luatex.code:n = {},
+  luatex.value_forbidden:n = true,
+
+  xetex.code:n = {},
+  xetex.value_forbidden:n = true,
+
+  dvips.code:n = {},
+  dvips.value_forbidden:n = true,
+
+  dvipdfmx .code:n = {
+    \str_gset:Nn\g_pbs_backend_str{dvipdfmx}
+  },
+  dvipdfmx .value_forbidden:n = true,
+
+  dvisvgm .code:n = {
+    \str_gset:Nn\g_pbs_backend_str{dvisvgm}
+  },
+  dvisvgm .value_forbidden:n = true,
+
+  bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool,
+
+  unknown .code:n = {
+    \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl}
+  }
+}
+\ProcessKeyOptions[pdfbase]
+
+% ensure that backend code is loaded
+% possible values for \c_sys_backend_str: pdftex, luatex, xetex, dvips, dvipdfmx, dvisvgm
+\cs_if_exist:NF\c_sys_backend_str{\sys_load_backend:n{}}
+
+\sys_if_output_pdf:TF{ % this excludes dvipdfmx, dvisvgm
+  \bool_gset_false:N\g_pbs_dvipdfmx_bool
+  \bool_gset_false:N\g_pbs_dvisvgm_bool
+}{
+  \str_case_e:nnF{\g_pbs_backend_str}{ % pdfbase options have precedence
+    {dvipdfmx}{
+      \bool_gset_true:N\g_pbs_dvipdfmx_bool
+      \bool_gset_false:N\g_pbs_dvisvgm_bool
+    }  
+    {dvisvgm}{
+      \bool_gset_false:N\g_pbs_dvipdfmx_bool
+      \bool_gset_true:N\g_pbs_dvisvgm_bool
+    }  
+  }{ % otherwise let the L3 backend code decide
+    \str_case_e:nn{\c_sys_backend_str}{
+      {dvisvgm}{
+        \bool_gset_false:N\g_pbs_dvipdfmx_bool
+        \bool_gset_true:N\g_pbs_dvisvgm_bool
+      }
+      {dvipdfmx}{
+        \bool_gset_true:N\g_pbs_dvipdfmx_bool
+        \bool_gset_false:N\g_pbs_dvisvgm_bool
+      }
+    }
+  }
+}
+
+\sys_if_engine_xetex:T{
+  \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 \int_new:N\g_pbs_page_int %abs. page counter
 
 %creating global definitions
@@ -172,8 +252,7 @@
 
 \msg_set:nnn{pdfbase}{rerun}{Rerun~to~get~internal~references~right!}
 
-%LaTeX2e wrapper
-\cs_new_nopar:Npn\pbs at seq@push at cx#1#2{
+\cs_new_protected_nopar:Npn\pbs at seq@push at cx#1#2{
   \seq_if_exist:cF{#1}{\seq_new:c{#1}}
   \seq_gput_right:cx{#1}{#2}
 }
@@ -191,6 +270,8 @@
 \seq_new:N\g_pbs_bop_seq
 \seq_new:N\g_pbs_eop_seq
 
+\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env
+\bool_new:N\g_pbs_ocgbase_loaded_bool
 \AtBeginDocument{
   \iow_now:Nx\@mainaux{
     \token_to_str:N\providecommand\token_to_str:N\pbs at newkey[2]{}
@@ -198,66 +279,15 @@
   \iow_now:Nx\@mainaux{
     \token_to_str:N\providecommand\token_to_str:N\pbs at seq@push at cx[2]{}
   }
-}
-
-%%%%%%%%%%%%%%%%%
-%package options
-%%%%%%%%%%%%%%%%%
-%unknown package option error message
-\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{
-  Package option~'#1'~is~unknown;\\
-  perhaps~it~is~spelled~incorrectly.
-}
-
-\bool_new:N\g_pbs_pkgbigfiles_bool
-\bool_new:N\g_pbs_dvipdfmx_bool
-\bool_new:N\g_pbs_dvisvgm_bool
-\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env
-\AtBeginDocument{
   \cs_if_exist:NT\landscape{%
     \tl_put_right:Nn\landscape{\bool_gset_true:N\g_pbs_lscape_bool}
     \tl_put_left:Nn\endlandscape{\bool_gset_false:N\g_pbs_lscape_bool}
   }
+  \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{}
 }
 
-\keys_define:nn{pdfbase}{
-  xetex .code:n = {}, %dummy, we use engine test instead
+\cs_new_protected_nopar:Nn\pbs_insert_properties_entry:{}
 
-  dvipdfmx .choice:,
-  dvipdfmx / true .code:n = {
-    \bool_gset_true:N\g_pbs_dvipdfmx_bool
-    \bool_gset_false:N\g_pbs_dvisvgm_bool
-  },
-  dvipdfmx / false .code:n = {\bool_gset_false:N\g_pbs_dvipdfmx_bool},
-  dvipdfmx .default:n = {true},
-
-  dvisvgm .choice:,
-  dvisvgm / true .code:n = {
-    \bool_gset_true:N\g_pbs_dvisvgm_bool
-    \bool_gset_false:N\g_pbs_dvipdfmx_bool
-  },
-  dvisvgm / false .code:n = {\bool_gset_false:N\g_pbs_dvisvgm_bool},
-  dvisvgm .default:n = {true},
-
-  bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool,
-
-  unknown .code:n = {
-    \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl}
-  }
-}
-\ProcessKeysOptions{pdfbase}
-
-\sys_if_output_pdf:T{
-  \bool_gset_false:N\g_pbs_dvipdfmx_bool
-  \bool_gset_false:N\g_pbs_dvisvgm_bool
-}
-
-\sys_if_engine_xetex:T{
-  \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool}
-}
-
-\cs_new_nopar:Nn\pbs_insert_properties_entry:{}
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %commands for creating PDF objects, annots etc.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -281,7 +311,7 @@
     \cs_set_protected:Npn\pdflastobj{\numexpr\pdffeedback~lastobj\relax}
     \cs_set_protected:Npn\pdflastannot{\numexpr\pdffeedback~lastannot\relax}
     \cs_set:Npn\pdfpageref{\pdffeedback~pageref}
-    \cs_set:Npx\pdfpageresources{\pdfvariable~pageresources}
+    \cs_set_protected:Npx\pdfpageresources{\pdfvariable~pageresources}
     \cs_set_eq:NN\pdfximage\saveimageresource
     \cs_set_eq:NN\pdfrefximage\useimageresource
     \cs_set_eq:NN\pdflastximage\lastsavedimageresourceindex
@@ -462,7 +492,7 @@
   \cs_new_protected_nopar:Nn\pbs_pdfemc:{\pdfliteral~page~{EMC}}
 
   %inserts /Properties <<...>> entry into page resources
-  \cs_gset:Nn\pbs_insert_properties_entry:{
+  \cs_gset_protected:Nn\pbs_insert_properties_entry:{
     \pbs_zap_properties: %purge those from previous page
     \tl_set:Nx\l_tmpa_tl{\seq_if_exist:cT{pbs at props@\int_use:N\g_pbs_page_int}{
       \seq_use:cn{pbs at props@\int_use:N\g_pbs_page_int}{~}}}
@@ -677,7 +707,7 @@
         /Properties~<</rm at oc\int_use:N\g_pbs_oc_int\space#2>>>>}
       \int_gincr:N\g_pbs_oc_int
     }
-    \cs_new_nopar:Nn\pbs_pdfemc:{\special{pdf:code~EMC}}
+    \cs_new_protected_nopar:Nn\pbs_pdfemc:{\special{pdf:code~EMC}}
   }{
     \bool_if:NTF\g_pbs_dvisvgm_bool{
       \tl_gset:Nx\g_pbs_hash_tl{\token_to_str:N#}
@@ -1242,7 +1272,7 @@
           }
         }
       }
-      \cs_new_nopar:Nn\pbs_pdfemc:{\pbs_special:n{~mark~/EMC~pdfmark}}
+      \cs_new_protected_nopar:Nn\pbs_pdfemc:{\pbs_special:n{~mark~/EMC~pdfmark}}
     }
   }
 }
@@ -1275,7 +1305,7 @@
 %modify output routine for output box insertions
 \bool_new:N\l_pbs_is_vertical_bool
 \cs_set_eq:NN\pbs_outputpage_orig:\@outputpage
-\cs_set_nopar:Npn\@outputpage{
+\cs_set_protected_nopar:Npn\@outputpage{
   \int_gincr:N\g_pbs_page_int
   \box_if_vertical:cTF{@outputbox}{
     \bool_set_true:N\l_pbs_is_vertical_bool
@@ -1295,10 +1325,6 @@
   \pbs_outputpage_orig:
 }
 
-\bool_new:N\g_pbs_ocgbase_loaded_bool
-\AtBeginDocument{
-  \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{}
-}
 \AddToHook{shipout/foreground}{
   %insert /Properties into current page's resources
   \put(0,0){\pbs_insert_properties_entry:}
@@ -1513,15 +1539,95 @@
 %
 % The Current Maintainer of this work is A. Grahn.
 
-\RequirePackage{l3keys2e}
+\def\g at pbs@date at tl{2022/08/04}
+\def\g at pbs@version at tl{0.55}
 
-\def\g at pbs@date at tl{2022/03/18}
-\def\g at pbs@version at tl{0.54}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
 \ProvidesExplPackage{pdfbase}{\g at pbs@date at tl}{\g at pbs@version at tl}
 {driver independent access to low-level PDF features}
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% package options
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{
+  Package option~'#1'~is~unknown;\\
+  perhaps~it~is~spelled~incorrectly.
+}
+
+\bool_new:N\g_pbs_pkgbigfiles_bool
+\bool_new:N\g_pbs_dvipdfmx_bool
+\bool_new:N\g_pbs_dvisvgm_bool
+\str_new:N\g_pbs_backend_str
+
+\keys_define:nn{pdfbase}{
+  pdftex.code:n = {},
+  pdftex.value_forbidden:n = true,
+
+  luatex.code:n = {},
+  luatex.value_forbidden:n = true,
+
+  xetex.code:n = {},
+  xetex.value_forbidden:n = true,
+
+  dvips.code:n = {},
+  dvips.value_forbidden:n = true,
+
+  dvipdfmx .code:n = {
+    \str_gset:Nn\g_pbs_backend_str{dvipdfmx}
+  },
+  dvipdfmx .value_forbidden:n = true,
+
+  dvisvgm .code:n = {
+    \str_gset:Nn\g_pbs_backend_str{dvisvgm}
+  },
+  dvisvgm .value_forbidden:n = true,
+
+  bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool,
+
+  unknown .code:n = {
+    \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl}
+  }
+}
+\ProcessKeyOptions[pdfbase]
+
+% ensure that backend code is loaded
+% possible values for \c_sys_backend_str: pdftex, luatex, xetex, dvips, dvipdfmx, dvisvgm
+\cs_if_exist:NF\c_sys_backend_str{\sys_load_backend:n{}}
+
+\sys_if_output_pdf:TF{ % this excludes dvipdfmx, dvisvgm
+  \bool_gset_false:N\g_pbs_dvipdfmx_bool
+  \bool_gset_false:N\g_pbs_dvisvgm_bool
+}{
+  \str_case_e:nnF{\g_pbs_backend_str}{ % pdfbase options have precedence
+    {dvipdfmx}{
+      \bool_gset_true:N\g_pbs_dvipdfmx_bool
+      \bool_gset_false:N\g_pbs_dvisvgm_bool
+    }  
+    {dvisvgm}{
+      \bool_gset_false:N\g_pbs_dvipdfmx_bool
+      \bool_gset_true:N\g_pbs_dvisvgm_bool
+    }  
+  }{ % otherwise let the L3 backend code decide
+    \str_case_e:nn{\c_sys_backend_str}{
+      {dvisvgm}{
+        \bool_gset_false:N\g_pbs_dvipdfmx_bool
+        \bool_gset_true:N\g_pbs_dvisvgm_bool
+      }
+      {dvipdfmx}{
+        \bool_gset_true:N\g_pbs_dvipdfmx_bool
+        \bool_gset_false:N\g_pbs_dvisvgm_bool
+      }
+    }
+  }
+}
+
+\sys_if_engine_xetex:T{
+  \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
 \int_new:N\g_pbs_page_int %abs. page counter
 
 %creating global definitions
@@ -1529,8 +1635,7 @@
 
 \msg_set:nnn{pdfbase}{rerun}{Rerun~to~get~internal~references~right!}
 
-%LaTeX2e wrapper
-\cs_new_nopar:Npn\pbs at seq@push at cx#1#2{
+\cs_new_protected_nopar:Npn\pbs at seq@push at cx#1#2{
   \seq_if_exist:cF{#1}{\seq_new:c{#1}}
   \seq_gput_right:cx{#1}{#2}
 }
@@ -1548,6 +1653,8 @@
 \seq_new:N\g_pbs_bop_seq
 \seq_new:N\g_pbs_eop_seq
 
+\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env
+\bool_new:N\g_pbs_ocgbase_loaded_bool
 \AtBeginDocument{
   \iow_now:Nx\@mainaux{
     \token_to_str:N\providecommand\token_to_str:N\pbs at newkey[2]{}
@@ -1555,66 +1662,14 @@
   \iow_now:Nx\@mainaux{
     \token_to_str:N\providecommand\token_to_str:N\pbs at seq@push at cx[2]{}
   }
-}
-
-%%%%%%%%%%%%%%%%%
-%package options
-%%%%%%%%%%%%%%%%%
-%unknown package option error message
-\msg_gset:nnnn{pdfbase}{unknown~package~option}{Unknown~package~option~`#1'.}{
-  Package option~'#1'~is~unknown;\\
-  perhaps~it~is~spelled~incorrectly.
-}
-
-\bool_new:N\g_pbs_pkgbigfiles_bool
-\bool_new:N\g_pbs_dvipdfmx_bool
-\bool_new:N\g_pbs_dvisvgm_bool
-\bool_new:N\g_pbs_lscape_bool %if we are inside landscape env
-\AtBeginDocument{
   \cs_if_exist:NT\landscape{%
     \tl_put_right:Nn\landscape{\bool_gset_true:N\g_pbs_lscape_bool}
     \tl_put_left:Nn\endlandscape{\bool_gset_false:N\g_pbs_lscape_bool}
   }
+  \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{}
 }
 
-\keys_define:nn{pdfbase}{
-  xetex .code:n = {}, %dummy, we use engine test instead
-
-  dvipdfmx .choice:,
-  dvipdfmx / true .code:n = {
-    \bool_gset_true:N\g_pbs_dvipdfmx_bool
-    \bool_gset_false:N\g_pbs_dvisvgm_bool
-  },
-  dvipdfmx / false .code:n = {\bool_gset_false:N\g_pbs_dvipdfmx_bool},
-  dvipdfmx .default:n = {true},
-
-  dvisvgm .choice:,
-  dvisvgm / true .code:n = {
-    \bool_gset_true:N\g_pbs_dvisvgm_bool
-    \bool_gset_false:N\g_pbs_dvipdfmx_bool
-  },
-  dvisvgm / false .code:n = {\bool_gset_false:N\g_pbs_dvisvgm_bool},
-  dvisvgm .default:n = {true},
-
-  bigfiles .bool_gset:N = \g_pbs_pkgbigfiles_bool,
-
-  unknown .code:n = {
-    \msg_error:nnx{pdfbase}{unknown~package~option}{\l_keys_key_tl}
-  }
-}
-\ProcessKeysOptions{pdfbase}
-
-\sys_if_output_pdf:T{
-  \bool_gset_false:N\g_pbs_dvipdfmx_bool
-  \bool_gset_false:N\g_pbs_dvisvgm_bool
-}
-
-\sys_if_engine_xetex:T{
-  \bool_if:NF\g_pbs_dvisvgm_bool{\bool_gset_true:N\g_pbs_dvipdfmx_bool}
-}
-
-% writing to core objects in the PDF, using the new
-% pdfmanagement interface
+% writing to core objects in the PDF, using the new pdfmanagement interface
 \cs_new_protected_nopar:Nn\pbs_appendtofields:n{
   \pdfmanagement_add:nnx{Catalog/AcroForm}{Fields}{#1}
 }
@@ -1629,7 +1684,6 @@
   }{
     !\int_compare_p:n{\luatexversion<95}
   }{
-    \cs_set:Npx\pdfpageresources{\pdfvariable~pageresources}
     \cs_set_protected:Npn\pdfobj{\pdfextension~obj~}
     \cs_set_protected:Npn\pdfrefobj{\pdfextension~refobj~}
     \cs_set_protected:Npn\pdfannot{\pdfextension~annot~}
@@ -1641,6 +1695,7 @@
     \cs_set_protected:Npn\pdflastobj{\numexpr\pdffeedback~lastobj\relax}
     \cs_set_protected:Npn\pdflastannot{\numexpr\pdffeedback~lastannot\relax}
     \cs_set:Npn\pdfpageref{\pdffeedback~pageref}
+    \cs_set_protected:Npx\pdfpageresources{\pdfvariable~pageresources}
     \cs_set_eq:NN\pdfximage\saveimageresource
     \cs_set_eq:NN\pdfrefximage\useimageresource
     \cs_set_eq:NN\pdflastximage\lastsavedimageresourceindex
@@ -2558,7 +2613,7 @@
 %modify output routine for output box insertions
 \bool_new:N\l_pbs_is_vertical_bool
 \cs_set_eq:NN\pbs_outputpage_orig:\@outputpage
-\cs_set_nopar:Npn\@outputpage{
+\cs_set_protected_nopar:Npn\@outputpage{
   \int_gincr:N\g_pbs_page_int
   \box_if_vertical:cTF{@outputbox}{
     \bool_set_true:N\l_pbs_is_vertical_bool
@@ -2578,10 +2633,6 @@
   \pbs_outputpage_orig:
 }
 
-\bool_new:N\g_pbs_ocgbase_loaded_bool
-\AtBeginDocument{
-  \@ifpackageloaded{ocgbase}{\bool_gset_true:N\g_pbs_ocgbase_loaded_bool}{}
-}
 \AddToHook{shipout/background}{
   % workaround for curious AR bug (pdf annot or link placed on
   % OCG remains active although OCG is hidden)



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