summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/media9
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-08-05 03:01:02 +0000
committerNorbert Preining <norbert@preining.info>2022-08-05 03:01:02 +0000
commit572dc806dd00d29ab418ec6deaa36762d1d59ae6 (patch)
tree0e2e600cc1d97a77661ee9976baa119ea8206854 /macros/latex/contrib/media9
parent6cb109095c2e8fd355cda8b1996dee2f9e12d8a0 (diff)
CTAN sync 202208050301
Diffstat (limited to 'macros/latex/contrib/media9')
-rw-r--r--macros/latex/contrib/media9/ChangeLog5
-rw-r--r--macros/latex/contrib/media9/doc/media9.pdfbin3747996 -> 3660318 bytes
-rw-r--r--macros/latex/contrib/media9/doc/media9.tex15
-rw-r--r--macros/latex/contrib/media9/media9.sty94
-rw-r--r--macros/latex/contrib/media9/pdfbase.sty323
5 files changed, 263 insertions, 174 deletions
diff --git a/macros/latex/contrib/media9/ChangeLog b/macros/latex/contrib/media9/ChangeLog
index 455df93cc4..a0a11296e1 100644
--- a/macros/latex/contrib/media9/ChangeLog
+++ b/macros/latex/contrib/media9/ChangeLog
@@ -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
diff --git a/macros/latex/contrib/media9/doc/media9.pdf b/macros/latex/contrib/media9/doc/media9.pdf
index 9f4ede4536..2b85529903 100644
--- a/macros/latex/contrib/media9/doc/media9.pdf
+++ b/macros/latex/contrib/media9/doc/media9.pdf
Binary files differ
diff --git a/macros/latex/contrib/media9/doc/media9.tex b/macros/latex/contrib/media9/doc/media9.tex
index d7acd9d0e3..a593d7bfe9 100644
--- a/macros/latex/contrib/media9/doc/media9.tex
+++ b/macros/latex/contrib/media9/doc/media9.tex
@@ -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},
diff --git a/macros/latex/contrib/media9/media9.sty b/macros/latex/contrib/media9/media9.sty
index 2c4db16dc2..c1e00febb4 100644
--- a/macros/latex/contrib/media9/media9.sty
+++ b/macros/latex/contrib/media9/media9.sty
@@ -39,26 +39,25 @@
%
% The Current Maintainer of this work is A. Grahn.
-\RequirePackage{l3keys2e}
+\def\g@mix@date@tl{2022/08/04}
+\def\g@mix@version@tl{1.25}
-\def\g@mix@date@tl{2022/03/18}
-\def\g@mix@version@tl{1.24}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
{acrobat-9/X~compatible~media}
\tl_gset_eq:NN\g_mix_date_tl\g@mix@date@tl
\tl_gset_eq:NN\g_mix_version_tl\g@mix@version@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,
+
+ luatex.code:n = {},
+ luatex.value_forbidden:n = true,
- dvipdfmx .choice:,
- dvipdfmx / true .code:n = {
- \bool_gset_true:N\g_mix_dvipdfmx_bool
+ 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,26 +2446,25 @@
%
% The Current Maintainer of this work is A. Grahn.
-\RequirePackage{l3keys2e}
+\def\g@mix@date@tl{2022/08/04}
+\def\g@mix@version@tl{1.25}
-\def\g@mix@date@tl{2022/03/18}
-\def\g@mix@version@tl{1.24}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
{acrobat-9/X compatible media}
\tl_gset_eq:NN\g_mix_date_tl\g@mix@date@tl
\tl_gset_eq:NN\g_mix_version_tl\g@mix@version@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,
+
+ luatex.code:n = {},
+ luatex.value_forbidden:n = true,
- dvipdfmx .choice:,
- dvipdfmx / true .code:n = {
- \bool_gset_true:N\g_mix_dvipdfmx_bool
+ 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
diff --git a/macros/latex/contrib/media9/pdfbase.sty b/macros/latex/contrib/media9/pdfbase.sty
index a5cc1dcb44..67ff708ad5 100644
--- a/macros/latex/contrib/media9/pdfbase.sty
+++ b/macros/latex/contrib/media9/pdfbase.sty
@@ -156,15 +156,95 @@
%
% The Current Maintainer of this work is A. Grahn.
-\RequirePackage{l3keys2e}
+\def\g@pbs@date@tl{2022/08/04}
+\def\g@pbs@version@tl{0.55}
-\def\g@pbs@date@tl{2022/03/18}
-\def\g@pbs@version@tl{0.54}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@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@seq@push@cx#1#2{
+\cs_new_protected_nopar:Npn\pbs@seq@push@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@newkey[2]{}
@@ -198,65 +279,14 @@
\iow_now:Nx\@mainaux{
\token_to_str:N\providecommand\token_to_str:N\pbs@seq@push@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}
-}
-
-\cs_new_nopar:Nn\pbs_insert_properties_entry:{}
+\cs_new_protected_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@props@\int_use:N\g_pbs_page_int}{
\seq_use:cn{pbs@props@\int_use:N\g_pbs_page_int}{~}}}
@@ -677,7 +707,7 @@
/Properties~<</rm@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@pbs@date@tl{2022/08/04}
+\def\g@pbs@version@tl{0.55}
-\def\g@pbs@date@tl{2022/03/18}
-\def\g@pbs@version@tl{0.54}
-
-\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@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@seq@push@cx#1#2{
+\cs_new_protected_nopar:Npn\pbs@seq@push@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@newkey[2]{}
@@ -1555,66 +1662,14 @@
\iow_now:Nx\@mainaux{
\token_to_str:N\providecommand\token_to_str:N\pbs@seq@push@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)