summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/media4svg
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-10-12 20:11:05 +0000
committerKarl Berry <karl@freefriends.org>2022-10-12 20:11:05 +0000
commit4c784b3c3cb5536743cd89fa1557b763f379824f (patch)
tree74a380bf945c51c4d8f8c9c9d559f4633d1b9a20 /Master/texmf-dist/tex/latex/media4svg
parent1d6906471eb88c119dc3a48f9a44e9cd345e2f41 (diff)
media4svg (12oct22)
git-svn-id: svn://tug.org/texlive/trunk@64686 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/media4svg')
-rw-r--r--Master/texmf-dist/tex/latex/media4svg/media4svg.sty54
1 files changed, 43 insertions, 11 deletions
diff --git a/Master/texmf-dist/tex/latex/media4svg/media4svg.sty b/Master/texmf-dist/tex/latex/media4svg/media4svg.sty
index 0045fd684e0..8f49799251f 100644
--- a/Master/texmf-dist/tex/latex/media4svg/media4svg.sty
+++ b/Master/texmf-dist/tex/latex/media4svg/media4svg.sty
@@ -23,8 +23,8 @@
%
% The Current Maintainer of this work is A. Grahn.
-\def\g@msvg@date@tl{2022/09/27}
-\def\g@msvg@version@tl{0.12}
+\def\g@msvg@date@tl{2022/10/12}
+\def\g@msvg@version@tl{0.13}
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage{media4svg}{\g@msvg@date@tl}{\g@msvg@version@tl}
@@ -44,12 +44,15 @@
\cs_new_nopar:Nn\msvg_percent:{%}
\char_set_catcode_other:N\&
\cs_new_nopar:Nn\msvg_amp:{&amp;}
+\char_set_catcode_other:N\#
+\cs_new_nopar:Nn\msvg_hashtag:{#}
\group_end:
\bool_new:N\g_msvg_pkgdraft_bool
\bool_new:N\g_msvg_pkgembed_bool
\bool_gset_true:N\g_msvg_pkgembed_bool
\bool_new:N\g_msvg_pkgyt_bool
+\bool_new:N\g_msvg_pkgvmo_bool
\int_new:N\g_msvg_pkgresizeflag_int% resizing flag according to options given
\tl_gset:Nn\g_msvg_pkgwdarg_tl{\width}
\tl_gset:Nn\g_msvg_pkghtarg_tl{\height}
@@ -57,15 +60,17 @@
\bool_new:N\g_msvg_pkgiso_bool
\tl_gset:Nn\g_msvg_pkgscalearg_tl{1.0}
\tl_new:N\g_msvg_pkgcontrols_tl
-\tl_gset:Nx\g_msvg_pkgcontrolsyt_tl{\msvg_amp: controls=0}
+\tl_gset:Nx\g_msvg_pkgcontrolsyt_tl{\msvg_amp: controls=1}
\tl_new:N\g_msvg_pkgautoplay_tl
\tl_new:N\g_msvg_pkgautoplayyt_tl
\tl_new:N\g_msvg_pkgloop_tl
\tl_new:N\g_msvg_pkgloopyt_tl
\tl_new:N\g_msvg_pkgtime_tl
\tl_new:N\g_msvg_pkgtimeyt_tl
+\tl_new:N\g_msvg_pkgtimevmo_tl
\tl_new:N\g_msvg_pkgmuted_tl
\tl_new:N\g_msvg_pkgmutedyt_tl
+\tl_new:N\g_msvg_pkgmutedvmo_tl
\tl_gset:Nn\g_msvg_pkgmtype_tl{audio/mpeg}
\keys_define:nn{media4svg}{
@@ -115,16 +120,19 @@
muted / true .code:n = {
\tl_gset:Nn\g_msvg_pkgmuted_tl{muted=''~}
\tl_gset:Nn\g_msvg_pkgmutedyt_tl{\msvg_amp: mute=1}
+ \tl_gset:Nn\g_msvg_pkgmutedvmo_tl{\msvg_amp: muted=1}
},
muted / false .code:n = {
\tl_gclear:N\g_msvg_pkgmuted_tl
\tl_gclear:N\g_msvg_pkgmutedyt_tl
+ \tl_gclear:N\g_msvg_pkgmutedvmo_tl
},
muted .default:n = {true},
time .code:n = {
\tl_gset:Nn\g_msvg_pkgtime_tl{currentTime='#1'~}
\tl_gset:Nn\g_msvg_pkgtimeyt_tl{\msvg_amp: start=#1}
+ \tl_gset:Nn\g_msvg_pkgtimevmo_tl{\msvg_hashtag: t=#1}
},
time .value_required:n = {true},
@@ -136,6 +144,8 @@
youtube .bool_gset:N = \g_msvg_pkgyt_bool,
+ vimeo .bool_gset:N = \g_msvg_pkgvmo_bool,
+
width .code:n = {
\tl_gset:Nn\g_msvg_pkgwdarg_tl{#1}
\tl_if_exist:NF\l_msvg_pkgwd_tl{
@@ -215,6 +225,10 @@
\bool_gset_false:N\g_msvg_embed_bool
\seq_set_split:NnV\l_msvg_ytids_seq{,}\l_msvg_media_arg_tl
}
+ \bool_if:NT\g_msvg_vmo_bool{
+ \bool_gset_false:N\g_msvg_embed_bool
+ \seq_set_split:NnV\l_msvg_ytids_seq{,}\l_msvg_media_arg_tl
+ }
\sbox\l_msvg_poster_box{#2}
\msvg_scale:n{\l_msvg_poster_box}
\special{dvisvgm:bbox~\g_msvg_wd_tl~\g_msvg_ht_tl~\g_msvg_dp_tl~transform}
@@ -249,7 +263,7 @@
\special{dvisvgm:raw
\bool_if:nT{
\tl_if_blank_p:V\g_msvg_controls_tl&&
- !\bool_if_p:N\g_msvg_yt_bool
+ !\bool_if_p:N\g_msvg_yt_bool&&!\bool_if_p:N\g_msvg_vmo_bool
}{
% In Chrome, with controls disabled, <video> cannot get the focus, which is
% necessary for keyboard interaction. As a fix, we insert a zero-size <svg>
@@ -321,7 +335,7 @@
style='cursor:~pointer;'~
\bool_if:nT{
\tl_if_blank_p:V\g_msvg_controls_tl&&
- !\bool_if_p:N\g_msvg_yt_bool
+ !\bool_if_p:N\g_msvg_yt_bool&&!\bool_if_p:N\g_msvg_vmo_bool
}{
ontouchstart='
event.preventDefault();event.stopPropagation();
@@ -334,21 +348,29 @@
'
}
>
- \bool_if:NTF\g_msvg_yt_bool{
+ \bool_if:nTF{\bool_if_p:N\g_msvg_yt_bool||\bool_if_p:N\g_msvg_vmo_bool}{
<g~xmlns='http://www.w3.org/1999/xhtml'>
<iframe~
+ width='100\msvg_percent:'~height='100\msvg_percent:'~
+ frameborder='0'~
+ allow='fullscreen;autoplay;clipboard-write;encrypted-media;gyroscope;accelerometer'~
+ \bool_if:NTF\g_msvg_yt_bool{
title='YouTube~video~player'~
- width='100\msvg_percent:'~height='100\msvg_percent:'~
- allow='fullscreen;autoplay;clipboard-write;encrypted-media;gyroscope;accelerometer'~
- frameborder='0'~
src='https://www.youtube-nocookie.com/embed/\seq_item:Nn\l_msvg_ytids_seq{1}?
modestbranding=1\msvg_amp: rel=0
\int_compare:nNnT{\seq_count:N\l_msvg_ytids_seq}>{1}{
\msvg_amp: playlist=\seq_use:Nn\l_msvg_ytids_seq{,}
}
\g_msvg_controlsyt_tl\g_msvg_autoplayyt_tl\g_msvg_loopyt_tl
- \g_msvg_mutedyt_tl\g_msvg_timeyt_tl
- '/>
+ \g_msvg_mutedyt_tl\g_msvg_timeyt_tl'
+ }{
+ title='Vimeo~video~player'~
+ src='https://player.vimeo.com/video/\seq_item:Nn\l_msvg_ytids_seq{1}?
+ autopause=0\msvg_amp: dnt=1 //do not track
+ \g_msvg_controlsyt_tl\g_msvg_autoplayyt_tl\g_msvg_loopyt_tl
+ \g_msvg_mutedvmo_tl\g_msvg_timevmo_tl'
+ }
+ />
</g>
}{
<video~
@@ -689,8 +711,10 @@
\bool_gset_eq:NN\g_msvg_embed_bool\g_msvg_pkgembed_bool
\tl_gset_eq:NN\g_msvg_time_tl\g_msvg_pkgtime_tl
\tl_gset_eq:NN\g_msvg_timeyt_tl\g_msvg_pkgtimeyt_tl
+ \tl_gset_eq:NN\g_msvg_timevmo_tl\g_msvg_pkgtimevmo_tl
\tl_gset_eq:NN\g_msvg_muted_tl\g_msvg_pkgmuted_tl
\tl_gset_eq:NN\g_msvg_mutedyt_tl\g_msvg_pkgmutedyt_tl
+ \tl_gset_eq:NN\g_msvg_mutedvmo_tl\g_msvg_pkgmutedvmo_tl
\tl_set_eq:NN\l_msvg_wd_tl\l_msvg_pkgwd_tl
\tl_set_eq:NN\l_msvg_ht_tl\l_msvg_pkght_tl
\tl_set_eq:NN\l_msvg_tt_tl\l_msvg_pkgtt_tl
@@ -701,6 +725,8 @@
\tl_gset_eq:NN\g_msvg_scalearg_tl\g_msvg_pkgscalearg_tl
\int_gset_eq:NN\g_msvg_resizeflag_int\g_msvg_pkgresizeflag_int
\box_clear:N\l_msvg_poster_box
+ \bool_gset_eq:NN\g_msvg_yt_bool\g_msvg_pkgyt_bool
+ \bool_gset_eq:NN\g_msvg_vmo_bool\g_msvg_pkgvmo_bool
}
%document command options
@@ -716,6 +742,7 @@
\bool_new:N\g_msvg_iso_bool
\bool_new:N\g_msvg_embed_bool
\bool_new:N\g_msvg_yt_bool
+\bool_new:N\g_msvg_vmo_bool
\keys_define:nn{media4svg/user}{
%user override automatic id
@@ -775,16 +802,19 @@
muted / true .code:n = {
\tl_gset:Nn\g_msvg_muted_tl{muted=''~}
\tl_gset:Nn\g_msvg_mutedyt_tl{\msvg_amp: mute=1}
+ \tl_gset:Nn\g_msvg_mutedvmo_tl{\msvg_amp: muted=1}
},
muted / false .code:n = {
\tl_gclear:N\g_msvg_muted_tl
\tl_gclear:N\g_msvg_mutedyt_tl
+ \tl_gclear:N\g_msvg_mutedvmo_tl
},
muted .default:n = {true},
time .code:n = {
\tl_gset:Nn\g_msvg_time_tl{currentTime='#1'~}
\tl_gset:Nn\g_msvg_timeyt_tl{\msvg_amp: start=#1}
+ \tl_gset:Nn\g_msvg_timevmo_tl{\msvg_hashtag: t=#1}
},
time .value_required:n = {true},
@@ -796,6 +826,8 @@
youtube .bool_gset:N = \g_msvg_yt_bool,
+ vimeo .bool_gset:N = \g_msvg_vmo_bool,
+
width .code:n = {
\tl_gset:Nn\g_msvg_wdarg_tl{#1}
\tl_if_exist:NF\l_msvg_wd_tl{