diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/pdfpc-movie/pdfpc-movie.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/pdfpc-movie/pdfpc-movie.dtx')
-rw-r--r-- | macros/latex/contrib/pdfpc-movie/pdfpc-movie.dtx | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/macros/latex/contrib/pdfpc-movie/pdfpc-movie.dtx b/macros/latex/contrib/pdfpc-movie/pdfpc-movie.dtx new file mode 100644 index 0000000000..de7c90e6b2 --- /dev/null +++ b/macros/latex/contrib/pdfpc-movie/pdfpc-movie.dtx @@ -0,0 +1,234 @@ +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%</package> +%\fi +%\iffalse +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2018 Sebastian Friedl +% +% This work is subject to the LaTeX Project Public License, Version 1.3c or -- at +% your option -- any later version of this license. +% This work consists of the files pdfpc-movie.dtx, pdfpc-movie.ins, pdfpc-movie-doc.dtx +% and the derived file pdfpc-movie.sty. +% +% This work has the LPPL maintenance status 'maintained'. +% Current maintainer of the work is Sebastian Friedl. +% +% ------------------------------------------------------------------------------------------- +% +% Provides a \pdfpcmovie command for hyperlinking movies in a way compatible to the +% PDF Presenter Console. +% +% ------------------------------------------------------------------------------------------- +% +% Please report bugs and other problems as well as suggestions for improvements +% to my email address (sfr682k@t-online.de). +% +% ------------------------------------------------------------------------------------------- +%\fi +% +% +% +% Identify the package and force \LaTeXe: +% \begin{macrocode} +\ProvidesPackage{pdfpc-movie}% + [2018/07/21 v1.0 pdfpc compatible hyperlinking of movies] +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% +% Require additional packages needed by \sty{pdfpc-movie}: +% \begin{macrocode} +\RequirePackage{etoolbox} +\AtEndPreamble{\RequirePackage{hyperref}} +\RequirePackage{pgfkeys} +% \end{macrocode} +% +% +% \subsubsection*{Variables and options} +% Define some internal boolean variables required to assemble the URL parameters: +% \begin{macrocode} +\newif\if@pdfpcmovie@autostart +\newif\if@pdfpcmovie@loop +\newif\if@pdfpcmovie@noprogress +% \end{macrocode} +% +% Define a counter for storing the number of non-processed options: +% \begin{macrocode} +\newcount\pdfpcmovie@remopts +% \end{macrocode} +% +% Define a box and some dimensions to override the poster material's size: +% \begin{macrocode} +\newbox\pdfpcmovie@posterbox +\newdimen\pdfpcmovie@posterwd +\newdimen\pdfpcmovie@posterht +\newdimen\pdfpcmovie@posterdp +% \end{macrocode} +% +% Define the keys available as optional arguments of the "\pdfpcmovie" command. +% Each key requiring additional URL parameters advances "\pdfpcmovie@remopts" by "1": +% \begin{macrocode} +\pgfkeys{% + /pdfpc-movie/width/.cd, .value required, + .code={\pdfpcmovie@posterwd=#1\relax}, + /pdfpc-movie/height/.cd, .value required, + .code={\pdfpcmovie@posterht=#1\relax}, + /pdfpc-movie/depth/.cd, .value required, + .code={\pdfpcmovie@posterdp=#1\relax}, + /pdfpc-movie/autostart/.cd, .value forbidden, + .code={% + \@pdfpcmovie@autostarttrue + \advance\pdfpcmovie@remopts 1\relax}, + /pdfpc-movie/loop/.cd, .value forbidden, + .code={% + \@pdfpcmovie@looptrue + \advance\pdfpcmovie@remopts 1\relax}, + /pdfpc-movie/noprogress/.cd, .value forbidden, + .code={% + \@pdfpcmovie@noprogresstrue + \advance\pdfpcmovie@remopts 1\relax}, + /pdfpc-movie/start/.cd, .value required, + .code={% + \def\pdfpcmovie@start{#1} + \advance\pdfpcmovie@remopts 1\relax}, + /pdfpc-movie/stop/.cd, .value required, + .code={% + \def\pdfpcmovie@stop{#1} + \advance\pdfpcmovie@remopts 1\relax}, +} +% \end{macrocode} +% +% +% +% \subsubsection*{The \texttt{\textbackslash pdfpcmovie} macro} +% \begin{macro}{\pdfpcmovie} +% First, "\def" is used to ensure that there is a "\pdfpcmovie" command to (re-)define: +% \begin{macrocode} +\def\pdfpcmovie{} +\renewcommand{\pdfpcmovie}[3][]{% +% \end{macrocode} +% +% Leave vertical mode to ensure correct placement of the movie box +% if "\pdfpcmovie" is used at the beginning of a paragraph: +% \begin{macrocode} + \leavevmode% +% \end{macrocode} +% +% Check whether the requested movie file is present. Emit a warning if it's not: +% \begin{macrocode} + \IfFileExists{\@currdir #3}{}{\PackageWarning{pdfpc-movie}{% + The movie file "#3" could not be found in the current + directory, where it must reside for viewing.}% + }% +% \end{macrocode} +% +% +% Create a box with the poster content and determine its size: +% \begin{macrocode} + \setbox\pdfpcmovie@posterbox=\hbox{#2}% +% \end{macrocode} +% +% Reset all variables to their default values. \\ +% After that, the optional argument containing all options gets processed: +% \begin{macrocode} + \@pdfpcmovie@autostartfalse% + \@pdfpcmovie@loopfalse% + \@pdfpcmovie@noprogressfalse% + \let\pdfpcmovie@start\@empty% + \let\pdfpcmovie@stop\@empty% + \pdfpcmovie@posterwd=\wd\pdfpcmovie@posterbox% + \pdfpcmovie@posterht=\ht\pdfpcmovie@posterbox% + \pdfpcmovie@posterdp=\dp\pdfpcmovie@posterbox% + % + \pdfpcmovie@remopts=0% + \pgfkeys{/pdfpc-movie/.cd, #1}% +% \end{macrocode} +% +% All hyperlink arguments appended to the file name are stored in the "\pdfpcmovie@params" variable. +% For every specified option, the respective hyperlink code is appended. \\ +% If there are non-processed arguments remaining, an "&" separator is appended: +% \begin{macrocode} + \ifnum\pdfpcmovie@remopts>0\def\pdfpcmovie@params{?}% + \else\def\pdfpcmovie@params{}% + \fi% + % + \if@pdfpcmovie@autostart% + \edef\pdfpcmovie@params{\pdfpcmovie@params autostart}% + \advance\pdfpcmovie@remopts -1\relax% + \ifnum\pdfpcmovie@remopts>0% + \edef\pdfpcmovie@params{\pdfpcmovie@params\&}% + \fi% + \fi% + % + \if@pdfpcmovie@loop% + \edef\pdfpcmovie@params{\pdfpcmovie@params loop}% + \advance\pdfpcmovie@remopts -1\relax% + \ifnum\pdfpcmovie@remopts>0% + \edef\pdfpcmovie@params{\pdfpcmovie@params\&}% + \fi% + \fi% + % + \if@pdfpcmovie@noprogress% + \edef\pdfpcmovie@params{\pdfpcmovie@params noprogress}% + \advance\pdfpcmovie@remopts -1\relax% + \ifnum\pdfpcmovie@remopts>0% + \edef\pdfpcmovie@params{\pdfpcmovie@params\&}% + \fi% + \fi% + % + \ifx\pdfpcmovie@start\@empty\else% + \edef\pdfpcmovie@params{\pdfpcmovie@params start=\pdfpcmovie@start}% + \advance\pdfpcmovie@remopts -1\relax% + \ifnum\pdfpcmovie@remopts>0% + \edef\pdfpcmovie@params{\pdfpcmovie@params\&}% + \fi% + \fi% + % + \ifx\pdfpcmovie@stop\@empty\else% + \edef\pdfpcmovie@params{\pdfpcmovie@params stop=\pdfpcmovie@stop}% + \advance\pdfpcmovie@remopts -1\relax% + \ifnum\pdfpcmovie@remopts>0% + \edef\pdfpcmovie@params{\pdfpcmovie@params\&}% + \fi% + \fi% + % + % + % +% \end{macrocode} +% +% Set the size of the poster material box \dots +% \begin{macrocode} + \wd\pdfpcmovie@posterbox=\pdfpcmovie@posterwd% + \ht\pdfpcmovie@posterbox=\pdfpcmovie@posterht% + \dp\pdfpcmovie@posterbox=\pdfpcmovie@posterdp% +% \end{macrocode} +% +% \dots\ and -- last but not least -- create the hyperlink: +% \begin{macrocode} + \href{run:#3\pdfpcmovie@params}{\box\pdfpcmovie@posterbox}% +} +% \end{macrocode} +% \end{macro} +% +% +% +% \subsubsection*{Famous last words} +% Enough code for this package. "\endinput". +% \begin{macrocode} +\endinput +% \end{macrocode} |