summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-08-04 20:33:16 +0000
committerKarl Berry <karl@freefriends.org>2022-08-04 20:33:16 +0000
commitdf866f6b2d273b1971fae4f638689b1afca486e7 (patch)
tree778cb1cec2c3b1137ef25babc56e42f1d6c327ad
parentb4ac4877ac1a847da96aaa6f10498b3ac1004091 (diff)
media9 (4aug22)
git-svn-id: svn://tug.org/texlive/trunk@64047 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/media9/ChangeLog5
-rw-r--r--Master/texmf-dist/doc/latex/media9/media9.pdfbin3747996 -> 3660318 bytes
-rw-r--r--Master/texmf-dist/source/latex/media9/media9.tex15
-rw-r--r--Master/texmf-dist/tex/latex/media9/media9.sty94
-rw-r--r--Master/texmf-dist/tex/latex/media9/pdfbase.sty323
5 files changed, 263 insertions, 174 deletions
diff --git a/Master/texmf-dist/doc/latex/media9/ChangeLog b/Master/texmf-dist/doc/latex/media9/ChangeLog
index 455df93cc4d..a0a11296e1b 100644
--- a/Master/texmf-dist/doc/latex/media9/ChangeLog
+++ b/Master/texmf-dist/doc/latex/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/Master/texmf-dist/doc/latex/media9/media9.pdf b/Master/texmf-dist/doc/latex/media9/media9.pdf
index 9f4ede45362..2b855299034 100644
--- a/Master/texmf-dist/doc/latex/media9/media9.pdf
+++ b/Master/texmf-dist/doc/latex/media9/media9.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/media9/media9.tex b/Master/texmf-dist/source/latex/media9/media9.tex
index d7acd9d0e36..a593d7bfe9c 100644
--- a/Master/texmf-dist/source/latex/media9/media9.tex
+++ b/Master/texmf-dist/source/latex/media9/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/Master/texmf-dist/tex/latex/media9/media9.sty b/Master/texmf-dist/tex/latex/media9/media9.sty
index 2c4db16dc2c..c1e00febb4e 100644
--- a/Master/texmf-dist/tex/latex/media9/media9.sty
+++ b/Master/texmf-dist/tex/latex/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/Master/texmf-dist/tex/latex/media9/pdfbase.sty b/Master/texmf-dist/tex/latex/media9/pdfbase.sty
index a5cc1dcb44e..67ff708ad51 100644
--- a/Master/texmf-dist/tex/latex/media9/pdfbase.sty
+++ b/Master/texmf-dist/tex/latex/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)