diff options
author | Karl Berry <karl@freefriends.org> | 2022-10-12 20:11:05 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-10-12 20:11:05 +0000 |
commit | 4c784b3c3cb5536743cd89fa1557b763f379824f (patch) | |
tree | 74a380bf945c51c4d8f8c9c9d559f4633d1b9a20 /Master/texmf-dist/tex/latex | |
parent | 1d6906471eb88c119dc3a48f9a44e9cd345e2f41 (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')
-rw-r--r-- | Master/texmf-dist/tex/latex/media4svg/media4svg.sty | 54 |
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:{&} +\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{ |