From 1bd2e747b7bc84d8bce808fd2f909c10f9d490ce Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Mon, 3 Aug 2020 12:24:04 +0900
Subject: add ltx4yt as replacement for yt4pdf

---
 texmf-dist/tex/latex/ltx4yt/ltx4yt.sty | 172 +++++++++++++++++++++++++++++++++
 1 file changed, 172 insertions(+)
 create mode 100644 texmf-dist/tex/latex/ltx4yt/ltx4yt.sty

(limited to 'texmf-dist/tex/latex/ltx4yt/ltx4yt.sty')

diff --git a/texmf-dist/tex/latex/ltx4yt/ltx4yt.sty b/texmf-dist/tex/latex/ltx4yt/ltx4yt.sty
new file mode 100644
index 00000000..685ed1dc
--- /dev/null
+++ b/texmf-dist/tex/latex/ltx4yt/ltx4yt.sty
@@ -0,0 +1,172 @@
+%%
+%% This is file `ltx4yt.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% ltx4yt.dtx  (with options: `copyright,package')
+%% 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% ltx4yt.sty package,                                  %%
+%% Copyright (C) 2020                                   %%
+%%   dpstory@uakron.edu                                 %%
+%%                                                      %%
+%% This program can redistributed and/or modified under %%
+%% the terms of the LaTeX Project Public License        %%
+%% Distributed from CTAN archives in directory          %%
+%% macros/latex/base/lppl.txt; either version 1 of the  %%
+%% License, or (at your option) any later version.      %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NeedsTeXFormat{LaTeX2e}[1997/12/01]
+\ProvidesPackage{ltx4yt}
+ [2020/07/30 v0.7 ltx4yt: Play YouTube videos in the default browser (dps)]
+\RequirePackage{xkeyval}
+\DeclareOption{usepopup}{\def\lo@dpu{\InputIfFileExists{ytpu.def}
+  {\PackageInfo{ltx4yt}{Loading ytpu.def}}
+  {\PackageInfo{ltx4yt}{Can't find ytpu.def}}}}
+\DeclareOption{!usepopup}{}
+\let\lo@dpu\relax
+\AtEndOfPackage{\lo@dpu}
+\ProcessOptions
+\RequirePackage{xcolor}
+\RequirePackage{eforms}
+\ifx\lo@dpu\relax\else
+\def\YT@rpPU{\RequirePackage{popupmenu}[2020/07/26]}\expandafter
+\YT@rpPU\fi
+\newcommand{\ytvIdPresets}[1]{\def\yt@vIdPresets{#1}}
+\definecolor{webbrown}{rgb}{.6,0,0} % from the web package
+\ytvIdPresets{\linktxtcolor{webbrown}}
+\providecommand{\URI}[1]{/S/URI/URI(#1)}
+\def\ytNF{false}
+\def\ytURL{https://www.youtube.com}
+\newcommand{\ytvId}{\@ifstar{\def\yt@ask{*}\yt@@vId}
+  {\let\yt@ask\@empty\yt@@vId}}
+\newcommand{\yt@@vId}[3][]{%
+  \ifx\yt@ask\@empty
+    \def\yt@lnk@hash{embed/#2}\else
+    \def\yt@lnk@hash{watch?v=#2}\fi
+  \setLink[\presets{\yt@vIdPresets}#1
+    \A{\URI{\ytURL/\yt@lnk@hash}}]{#3}%
+}
+\newcommand{\ytvIdML}{\@ifstar{\def\yt@ask{*}\yt@@vIdML}
+  {\let\yt@ask\@empty\yt@@vIdML}}
+\newcommand{\yt@@vIdML}[3][]{%
+  \ifx\yt@ask\@empty
+    \def\yt@lnk@hash{embed/#2}\else
+    \def\yt@lnk@hash{watch?v=#2}\fi
+  \mlsetLink[\presets{\yt@vIdPresets}#1
+    \A{\URI{\ytURL/\yt@lnk@hash}}]{#3}%
+}
+\newif\ifytwatch \ytwatchfalse
+\def\yt@@parse{\let\ytspec\@empty\yt@parse}
+\def\yt@parse{\@ifnextchar\@nil{\@gobble}{\yt@parsei}}
+\def\yt@parsei{\@ifnextchar\watchId{% check for \watchId
+  \ytwatchtrue\yt@parse@watch}{\yt@parseii}}
+\def\yt@parse@watch\watchId#1{\g@addto@macro
+  \ytspec{\watchId{#1}}\yt@parse}
+\def\yt@parseii{\@ifnextchar\embedId{% check for \embedId
+  \yt@parse@embedId}{\yt@parseiii}}
+\def\yt@parse@embedId\embedId#1{\g@addto@macro
+  \ytspec{\embedId{#1}}\yt@parse}
+\def\yt@parseiii{\@ifnextchar\embed{% check for \embed
+  \yt@parse@embed}{\yt@parseiv}}
+\def\yt@parse@embed\embed#1{\g@addto@macro
+  \ytspec{\embed{#1}}\yt@parse}
+\def\yt@parseiv{\@ifnextchar\params{% check for \params
+  \yt@parse@params}{\yt@parsev}}
+\def\yt@parse@params\params#1{\ifytwatch
+  \g@addto@macro\ytspec{&#1}\else
+  \g@addto@macro\ytspec{?#1}\fi
+  \yt@parse}
+\def\yt@parsev#1\@nil{\g@addto@macro\ytspec{#1}}
+\newcommand{\ytLink}[3][]{\begingroup
+  \def\embedId##1{embed/##1}%
+  \def\params##1{##1}\def\embed##1{embed?##1}%
+  \def\watchId##1{watch?v=##1}\def\channel##1{c/##1}%
+  \def\user##1{user/##1}%
+  \yt@@parse#2\@nil % returns arg in \ytspec
+  \def\URLArg{\ytURL/\ytspec}%
+  \setLink[\presets{\yt@vIdPresets}#1\A{\URI{\URLArg}}
+  ]{#3}\endgroup
+}
+\newcommand{\ytLinkML}[3][]{\begingroup
+  \def\embedId##1{embed/##1}%
+  \def\params##1{##1}\def\embed##1{embed?##1}%
+  \def\watchId##1{watch?v=##1}\def\channel##1{c/##1}%
+  \def\user##1{user/##1}%
+  \yt@@parse#2\@nil % returns arg in \ytspec
+  \def\URLArg{\ytURL/\ytspec}%
+  \mlsetLink[\presets{\yt@vIdPresets}#1
+    \A{\URI{\URLArg}}
+  ]{#3}\endgroup
+}
+\newcommand{\ytComboList}[4][]{%
+  \comboBox[\Ff{\FfCommitOnSelChange}\DV{\yt@pl@def}\V{\yt@pl@def}
+    \presets{\yt@ComboListPresets}#1]{ytSelect#2}
+  {#3}{#4}{*\yt@pl@pl}% 2020/07/22 v0.4
+}
+\newcommand{\ytStrPLAY}{PLAY}
+\newcommand{\ytComboBtn}[4][]{%
+  \pushButton[\TU{Click to play}\CA{\ytStrPLAY}
+    \presets{\yt@ComboBtnPresets}#1
+    \A{\JS{var f=this.getField("ytSelect#2");\r
+    var ytID=f.value;\r
+    var i=f.currentValueIndices;\r
+    var ytFV=f.getItemAt(i,false);\r
+    var i=ytFV.indexOf("*");\r
+    if ( i == -1 )\r\t
+      app.launchURL("\ytURL/embed/"+ytID,\ytNF);\r
+    else\r\t
+      app.launchURL("\ytURL/watch?v="+ytID,\ytNF);
+  }}]{ytSelectBtn#2}{#3}{#4}%
+}
+\newcommand{\ytPlayList}{\begingroup\@makeother\_\@makeother\'
+    \ytPlayList@i}
+\def\ytPlayList@i#1#2{\gdef\yt@pl@def{#1}\xdef\yt@pl@pl{#2}\endgroup}
+\newcommand{\ytComboListPresets}[1]{\def\yt@ComboListPresets{#1}}
+\let\yt@ComboListPresets\@empty
+\newcommand{\ytComboBtnPresets}[1]{\def\yt@ComboBtnPresets{#1}}
+\let\yt@ComboBtnPresets\@empty
+\newcommand{\ytIdTitle}[2]{[(#2)(#1)]}
+\newcommand{\declarePlayList}[1]{\bgroup
+  \Hy@unicodefalse
+  \let\pl@yList\@empty
+  \ifpdfmarkup
+    \def\Esc{\eqbs}\else\def\Esc{}\fi
+  \def\cs##1{\eqbs\eqbs##1}\relax
+  \@makeother\_\@makeother\-
+  \yt@declarePlayList{#1}%
+}
+\def\yt@declarePlayList#1#2{%
+  \yt@declarePlayList@i#2\@nil\relax\relax
+  \toks@=\expandafter{\pl@yList}\relax
+  \xdef#1{\pl@yList}\egroup
+}
+\def\yt@declarePlayList@i{\@ifnextchar\@nil
+  {\expandafter\@gobbletwo\@gobble}
+  {\yt@declarePlayList@ii}%
+}
+\def\yt@declarePlayList@ii\ytIdTitle#1#2{%
+  \pdfstringdef\yt@PLTitle{#1}%
+  \edef\y{[(#2)(\yt@PLTitle)]}%
+  \expandafter\g@addto@macro\expandafter
+    \pl@yList\expandafter{\y}%
+  \yt@declarePlayList@i
+}
+\newcommand{\ytInputQuery}[3][]{%
+  \textField[\TU{Enter a query text string}#1]{ytSearchTxt}{#2}{#3}}
+\newcommand{\ytSearch}[3][]{%
+  \pushButton[\CA{Search}#1\AAmouseup{%
+    var f=this.getField("ytSearchTxt");\r
+    var v=f.value;\r
+    if ( v.replace(/\string\s/g,"") != "" )\r\t
+      app.launchURL("\ytURL/embed?listType=search&list="+v);}
+  ]{ytSearchBtn}{#2}{#3}}
+\newcommand{\ytClearQuery}[3][]{%
+  \pushButton[\CA{Clear}#1
+    \AAmouseup{this.resetForm("ytSearchTxt");}
+  ]{ytSearchClr}{#2}{#3}%
+}
+\endinput
+%%
+%% End of file `ltx4yt.sty'.
-- 
cgit v1.2.3

