diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:52:02 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:52:02 +0000 |
commit | b1daf7130666bef14cdb98d88b3c107da38becec (patch) | |
tree | 08f591f90145354f39d714eadee16c99557b7109 /Master/texmf-dist/tex/latex/beamer/multimedia | |
parent | 47773c8fa98e5885b1d789b205b39fb924707e6e (diff) |
beamer
git-svn-id: svn://tug.org/texlive/trunk@699 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/beamer/multimedia')
3 files changed, 524 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/beamer/multimedia/multimedia.sty b/Master/texmf-dist/tex/latex/beamer/multimedia/multimedia.sty new file mode 100644 index 00000000000..83cdc0f6934 --- /dev/null +++ b/Master/texmf-dist/tex/latex/beamer/multimedia/multimedia.sty @@ -0,0 +1,304 @@ +% $Header: /cvsroot/latex-beamer/latex-beamer/extensions/multimedia/multimedia.sty,v 1.3 2004/10/07 20:53:07 tantau Exp $ + +\ProvidesPackage{multimedia}[2004/04/10 ver 0.01] +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +% Copyright 2003 by Till Tantau <tantau@users.sourceforge.net>. +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + + +\RequirePackage{keyval}[1997/11/10] + +\ifx\pdfoutput\@undefined + \newcount\pdfoutput\pdfoutput=0 +\fi + +\ifnum\pdfoutput=0 + \let\mm@psorpdf\@firstoftwo + \PassOptionsToPackage{pdfmark}{hyperref} + \define@key{PDF}{Movie}{\pdf@addtoks{#1}{Movie}} + \define@key{PDF}{T}{\pdf@addtoks{#1}{T}} + \define@key{PDF}{Annotations}{\pdf@addtoks{#1}{A}} +\else + \let\mm@psorpdf\@secondoftwo +\fi + +\define@key{multimedia}{automute}[true]{\csname mm@autostop#1\endcsname} +\define@key{multimedia}{autostart}[true]{\csname mm@autostart#1\endcsname} +\define@key{multimedia}{bitspersample}{\def\mm@b{/B #1}} +\define@key{multimedia}{borderwidth}{{\@tempdima=#1\relax\@tempdima=0.99626401\@tempdima\xdef\mm@bw{\strip@pt\@tempdima}}} +\define@key{multimedia}{channels}{\def\mm@c{/C #1}} +\define@key{multimedia}{depth}{\@tempdimc=#1\relax} +\define@key{multimedia}{duration}{\mm@convert#1{\mm@duration}{/Duration}}% +\define@key{multimedia}{encoding}{\def\mm@e{/E /#1}} +\define@key{multimedia}{externalviewer}[]{\mm@externaltrue} +\define@key{multimedia}{height}{\@tempdimb=#1\relax} +\define@key{multimedia}{inlinesound}[true]{\csname mm@inline#1\endcsname} +\define@key{multimedia}{label}{\def\mm@label{#1}} +\define@key{multimedia}{loop}[]{\def\mm@playmode{/Mode /Repeat}\def\mm@repeat{/Repeat true}} +\define@key{multimedia}{mixsound}[true]{\def\mm@mix{/Mix #1}} +\define@key{multimedia}{once}[]{\def\mm@playmode{/Mode /Once}} +\define@key{multimedia}{palindrome}[]{\def\mm@playmode{/Mode /Palindrome}} +\define@key{multimedia}{pause}[]{\def\mm@do{/Operation /Pause}} +\define@key{multimedia}{play}[]{\def\mm@do{/Operation /Play}} +\define@key{multimedia}{poster}[true]{\def\mm@poster{/Poster #1}} +\define@key{multimedia}{repeat}[]{\def\mm@playmode{/Mode /Repeat}\def\mm@repeat{/Repeat true}} +\define@key{multimedia}{resume}[]{\def\mm@do{/Operation /Resume}} +\define@key{multimedia}{samplingrate}{\def\mm@r{/R #1}} +\define@key{multimedia}{showcontrols}[true]{\def\mm@controls{/ShowControls #1}} +\define@key{multimedia}{start}{\mm@convert#1{\mm@start}{/Start}}% +\define@key{multimedia}{stop}[]{\def\mm@do{/Operation /Stop}} +\define@key{multimedia}{width}{\@tempdima=#1\relax} + +\def\mm@convert#1s{\mm@@convert{#1}} +\def\mm@@convert#1#2#3{% + {\@tempdima=#1pt% + \@tempcnta=\@tempdima% + \divide\@tempcnta by 512% + \xdef#2{#3 [\the\@tempcnta\space 128]}}} + +\newif\ifmm@autostart +\newif\ifmm@autostop +\newif\ifmm@external +\newif\ifmm@inline +\newcount\mm@movie + +\newcommand\movie[3][]{% + \leavevmode% + % Sanity check + \IfFileExists{\@currdir #3}{}{% + \PackageWarning{multimedia}{The movie file ``#3'' could not be + found in the current directory, where it must reside for + viewing.}% + }% + {% + % Calculate size of the poster + \setbox\@tempboxa=\hbox{#2}% + \@tempdima=\wd\@tempboxa% + \@tempdimb=\ht\@tempboxa% + \@tempdimc=\dp\@tempboxa% + \global\advance\mm@movie by1\relax% + \edef\mm@label{mmdefaultlabel\the\mm@movie}% + \def\mm@playmode{}% + \def\mm@duration{}% + \def\mm@start{}% + \def\mm@poster{}% + \def\mm@controls{}% + \mm@autostartfalse% + \mm@externalfalse% + \def\mm@bw{0}% + \setkeys{multimedia}{#1}% + \wd\@tempboxa=\@tempdima% + \ht\@tempboxa=\@tempdimb% + \dp\@tempboxa=\@tempdimc% + \ifmm@external% + \href{run:#3}{\box\@tempboxa}% + \else% + \mm@psorpdf{% + \pdfmark[{\box\@tempboxa}]{% + pdfmark=/ANN,% + Subtype=/Movie,% + Movie=<< /F (#3) \mm@poster\space >>,% + Annotations=<< \mm@start\space \mm@duration\space \mm@playmode\space \mm@controls\space>>,% + T=(\mm@label), + Border={0 0 \mm@bw}}% + }{% + \pdfannot width \@tempdima height \@tempdimb depth \@tempdimc + { + /Subtype /Movie + /T (\mm@label) + /Border [0 0 \mm@bw] + /Movie << /F (#3) \mm@poster\space >> + /A << \mm@start\space \mm@duration\space \mm@playmode\space \mm@controls\space >> + }% + }% + \mm@psorpdf{}{\box\@tempboxa}% + \ifmm@autostart% + \mm@psorpdf% + {% + \pdfmark{pdfmark=/PUT,% + Raw={{ThisPage} << /AA << /O << /S /Movie + /T (\mm@label) /Operation /Play >> >> >>}% + }}% + {% + \pdfobj {<< /S /Movie /T (\mm@label) /Operation /Play >>}% + \pdfrefobj\pdflastobj% + \xdef\mm@pdfpageadditionalaction{/O \the\pdflastobj\space 0 R }% + }% + \fi% + \fi% + }% +} + + +\newcommand\hyperlinkmovie[3][]{% + \leavevmode% + {\def\mm@playmode{}\def\mm@start{}\def\mm@duration{}\def\mm@do{}\def\mm@controls{}% + \setkeys{multimedia}{#1}% + \mm@psorpdf{% + \pdfmark[{#3}]{% + Color=\@linkbordercolor,% + linktype={link},% + AcroHighlight=\@pdfhighlight,% + Border=\@pdfborder,% + pdfmark=/ANN,% + Subtype=/Link,% + Annotations=<< /S /Movie /T (#2) \mm@controls\space + \mm@do\space \mm@start\space \mm@duration\space \mm@playmode\space + >>% + }}% + {% + \pdfstartlink + attr{% + /Border [\@pdfborder] + /H \@pdfhighlight\space + /C [\@menubordercolor]% + }% + user{ + /Subtype /Link + /A << + /S /Movie /T (#2) \mm@controls\space + \mm@do\space \mm@start\space \mm@duration\space \mm@playmode\space + >> + }% + #3\pdfendlink}% + }% +} + + +\newcommand\sound[3][]{% + \mm@psorpdf{\movie[#1]{#2}{#3}}% no way of defining a stream object... + {% + \leavevmode% + % Sanity check + \IfFileExists{\@currdir #3}{}{% + \PackageWarning{multimedia}{The movie file ``#3'' could not be + found in the current directory, where it must reside for + viewing.}% + }% + {% + % Calculate size of the poster + \setbox\@tempboxa=\hbox{#2}% + \@tempdima=\wd\@tempboxa% + \@tempdimb=\ht\@tempboxa% + \@tempdimc=\dp\@tempboxa% + \def\mm@label{mmdefaultlabel}% + \def\mm@playmode{}% + \def\mm@duration{}% + \def\mm@start{}% + \def\mm@repeat{}% + \def\mm@mix{/Mix false}% + \setkeys{multimedia}{samplingrate=44100,channels=1,bitspersample=16,encoding=muLaw}% + \mm@autostartfalse% + \mm@autostopfalse% + \mm@externalfalse% + \mm@inlinefalse% + \def\mm@bw{0}% + \setkeys{multimedia}{#1}% + \wd\@tempboxa=\@tempdima% + \ht\@tempboxa=\@tempdimb% + \dp\@tempboxa=\@tempdimc% + \ifmm@external% + \href{run:#3}{\box\@tempboxa}% + \else% + \ifmm@inline% + \pdfobj stream + attr {\mm@r\space \mm@c\space \mm@b\space \mm@e\space} + file {#3}% + \pdfrefobj \pdflastobj% + \else + \pdfobj stream + attr {\mm@r\space \mm@c\space \mm@b\space \mm@e\space /F (#3)} + {}% + \pdfrefobj \pdflastobj% + \fi% + \expandafter\xdef\csname mms@\mm@label\endcsname{\the\pdflastobj}% + \def\@temp{#2}\ifx\@temp\@empty\else\hyperlinksound[#1]{\mm@label}{\box\@tempboxa}\fi% + \ifmm@autostart% + \pdfobj {<< /S /Sound /Sound \the\pdflastobj\space 0 R \mm@mix\space >>}% + \pdfrefobj\pdflastobj% + \xdef\mm@pdfpageadditionalaction{/O \the\pdflastobj\space 0 R }% + \fi% + \ifmm@autostop% + \pdfobj {<< /S /Sound /Sound \mms@mute\space 0 R >>}% + \pdfrefobj\pdflastobj% + \xdef\mm@pdfpageadditionalaction{% + \ifx\mm@pdfpageadditionalaction\relax\else\mm@pdfpageadditionalaction\fi\space /C \the\pdflastobj\space 0 R }% + \fi% + \fi% + }% + }% +} + +\mm@psorpdf{}{% + \pdfobj stream attr {/R 22050} {}% + \pdfrefobj \pdflastobj% + \edef\mms@mute{\the\pdflastobj} +} + +\newcommand\hyperlinkmute[1]{\mm@psorpdf{#1}{\hyperlinksound{mute}{#1}}} + +\newcommand\hyperlinksound[3][]{% + \mm@psorpdf{\hyperlinkmovie[#1]{#2}{#3}}% + {% + \@ifundefined{mms@#2}% + {\PackageError{multimedia}{Sound labeled ``#2'' not defined}{}} + {% + \leavevmode% + \def\mm@mix{/Mix false}% + \def\mm@repeat{/Repeat false}% + \setkeys{multimedia}{#1}% + \pdfstartlink + attr{% + /Border [\@pdfborder] + /H \@pdfhighlight\space + /C [\@menubordercolor]% + }% + user{ + /Subtype /Link + /A << /S /Sound /Sound \csname mms@#2\endcsname\space 0 R \mm@mix\space \mm@repeat\space >> + }% + #3\pdfendlink}% + }% +} + + +% Copyright Notice: The following code is based on code from hyperref.sty +\def\mm@pageadditionalaction{% + \ifx\mm@pdfpageadditionalaction\relax + \else + \expandafter\mm@RemoveAAPageAttr\the\pdfpageattr^^J/AA{}>>\END + \ifx\mm@pdfpageadditionalaction\@empty + \else + \edef\@processme{% + \global\pdfpageattr{% + \the\pdfpageattr + ^^J/AA << \mm@pdfpageadditionalaction\space >>% + }% + }% + \@processme + \fi + \global\let\mm@pdfpageadditionalaction=\@empty% not on next page + \fi +} +\gdef\mm@RemoveAAPageAttr#1^^J/AA#2#3>>#4\END{% + \ifx\\#2\\% + \global\pdfpageattr{#1}% + \else + \mm@RemoveAAPageAttr#1#4\END + \fi +} +\let\mm@pdfpageadditionalaction=\relax + +% This is *not* the way to do it, but it'll have to do for now: +\let\mm@orighyper@pagetransition=\hyper@pagetransition +\AtBeginDocument{\def\hyper@pagetransition{\mm@orighyper@pagetransition\mm@pageadditionalaction}} + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "~/texmf/tex/latex/beamer/test/test.tex" +%%% End: diff --git a/Master/texmf-dist/tex/latex/beamer/multimedia/multimediasymbols.sty b/Master/texmf-dist/tex/latex/beamer/multimedia/multimediasymbols.sty new file mode 100644 index 00000000000..44657bcea24 --- /dev/null +++ b/Master/texmf-dist/tex/latex/beamer/multimedia/multimediasymbols.sty @@ -0,0 +1,42 @@ +\ProvidesPackage{multimediasymbols}[2004/04/10 ver 0.01] +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +% Copyright 2003 by Till Tantau <tantau@users.sourceforge.net>. +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{keyval} +\RequirePackage{pgf} + +\define@key{multimediasym}{fill}[]{\def\mm@action{\pgfusepath{fill,stroke}}} + +\newcommand\speakersymbol[1][]{% + \def\mm@action{}% + \setkeys{multimediasym}{#1}% + \begin{pgfpicture}{-.1ex}{0pt}{2.1ex}{1.5ex} + \pgfsetroundjoin + \pgfsetroundcap + \pgfpathmoveto{\pgfpoint{0cm}{.5\pgfex}} + \pgfpathlineto{\pgfpoint{.5\pgfex}{.5\pgfex}} + \pgfpathlineto{\pgfpoint{\pgfex}{0pt}} + \pgfpathlineto{\pgfpoint{\pgfex}{1.5\pgfex}} + \pgfpathlineto{\pgfpoint{.5\pgfex}{\pgfex}} + \pgfpathlineto{\pgfpoint{0pt}{\pgfex}} + \pgfpathclose + \mm@action + \pgfpathmoveto{\pgfpoint{1.25\pgfex}{.5\pgfex}} + \pgfpathcurveto{\pgfpoint{1.4\pgfex}{.6\pgfex}}{\pgfpoint{1.4\pgfex}{.9\pgfex}}{\pgfpoint{1.25\pgfex}{1\pgfex}} + \pgfpathmoveto{\pgfpoint{1.5\pgfex}{.25\pgfex}} + \pgfpathcurveto{\pgfpoint{1.7\pgfex}{.5\pgfex}}{\pgfpoint{1.7\pgfex}{1\pgfex}}{\pgfpoint{1.5\pgfex}{1.25\pgfex}} + \pgfpathmoveto{\pgfpoint{1.75\pgfex}{0pt}} + \pgfpathcurveto{\pgfpoint{2\pgfex}{.25\pgfex}}{\pgfpoint{2\pgfex}{1.25\pgfex}}{\pgfpoint{1.75\pgfex}{1.5\pgfex}} + \pgfusepath{stroke} + \end{pgfpicture}} + + + +%%% Local Variables: +%%% mode: latex +%%% TeX-master: "~/texmf/tex/latex/beamer/test/test.tex" +%%% End: diff --git a/Master/texmf-dist/tex/latex/beamer/multimedia/xmpmulti.sty b/Master/texmf-dist/tex/latex/beamer/multimedia/xmpmulti.sty new file mode 100644 index 00000000000..e70a6bb29cf --- /dev/null +++ b/Master/texmf-dist/tex/latex/beamer/multimedia/xmpmulti.sty @@ -0,0 +1,178 @@ +% $Header: /cvsroot/latex-beamer/latex-beamer/extensions/multimedia/xmpmulti.sty,v 1.2 2004/10/07 20:53:07 tantau Exp $ + +% Copyright 2000 by Klaus Guntermann +% Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>. +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +% +% Copyright notices: Large parts of this file are identical to the +% file mpmulti.sty from the ppower4 distribution. Unfortunately, no +% clear copyright notice is given in the original file nor is even the +% author indicated. The author appears to be Klaus Guntermann and the +% license appears to be GPL, at least the whole package is distributed +% under GPL, so I assume that also applies to the individual +% files. +% + +% +% This file does the same as the original mpmulti.sty. The only +% differences are that a) the package pause is not loaded (it's +% provided automatically by beamer and it should be loaded ``by hand'' +% when using ppower4) and b) a default overlay specification can be +% given (as in \multiinclude[<+->][...]{...}), which will be the +% argument to an actionenv that is put around each image. +% + + +%% mpmulti.sty 09 Sep 2002 +%%------------------------------------------------------------ +%% History: +%% Initial version 14 Apr 2000 +%% Introduced keyword parameters 12 Jun 2000 +%% Introduced new parameters (start,format), changed the +%% global code to take several file counting strings (eg +%% bla-*.mps, foo-*.jpg, etc.), added compatibility with +%% \graphicspath (Jean-Christophe Dubacq) 06 Dec 2001 +%% Generalized the format option, added the end +%% handling and documented extended features in here +%% 09 Sep 2002 +%% +%% Purpose: +%% include multiple metapost pictures and overlay them, +%% inserting a transition effect between them +%% +%% Synopsis: +%% +%% \multiinclude[defaultoverlayspecification]% +%% [pause=transitioncommand, +%% graphics={option for includegraphics}, +%% format=filenameformat, +%% start=number, +%% end=number]{basefilename} +%% +%% Include all metapost generated graphics found in +%% files with the basename "filename", which +%% have a number attached or in the extension. +%% Insert the transitioncommand between the files (defaults +%% to \pause). +%% Further options allow to specify additional specifications +%% for includegraphics, can change the number to start with +%% (default 0) or the number to end with (default 1000000). +%% By default the filenames are as created by mpost in the format +%% "filename.n", where "n" represents the number. +%% The option format with the values like "mps", "png" or "jpg" this +%% can be changed to "filename-n.format", e.g. "example-0.mps" +%% instead of "example.0". +%% Complaints are only written, if the first file is not found. +%% Otherwise including will silently stop. +%% +%% If a defaultoverlayspecification is given, each image is +%% surrounded by an actionenv environment (defined by the beamer +%% class) with this option as argument. An example usage might be +%% +%% \multiinclude[<alert@+| +->][graphics={height=4cm}]{myimage} +%% +%% Requires: +%% The keyval package for options processing. +%% +%% +%\RequirePackage{pause} +\RequirePackage{keyval} +%% +%% The command should process the optional arguments. +%% +\def\multiinclude{% + \def\@mpm@pause{\pause}\def\@mpm@ospec{}\def\@mpm@endospec{}% + \@ifnextchar [\@mpmulti{\@@@mpmulti[]}} +%% +\newif\if@mpm@groptions\@mpm@groptionsfalse +%% We describe the keys and their default values +\define@key{mpm}{format}[\@mpm@defaultformat]{% + \global\def\@mpm@format##1{##1-\the\@mpm@count.#1}} +\define@key{mpm}{start}[0]{\global\def\@mpm@start{#1}\relax} +\define@key{mpm}{end}[1000000]{\global\def\@mpm@end{#1}\relax} +\define@key{mpm}{pause}[\pause]{\global\def\@mpm@pause{#1}\relax} +\define@key{mpm}{graphics}{\@mpm@groptionstrue + \global\def\@mpm@graphics{\string#1}} +\def\@mpm@defaultformat#1{#1.\the\@mpm@count} +\let\@mpm@format=\@mpm@defaultformat +%% +%% We need a local counter +%% +\newcount\@mpm@count +%% +%% Implement the basic functionality. +%% Try to include the first file unconditionally. +%% This will produce an error message, if no such file can be found. +%% Afterwards we are going to check for more files and stop, when we +%% do not find another file. As long as we find files, these are +%% overlapped to the previous parts. +%% +\def\@mpmulti[{\@ifnextchar<{\@@mpmulti[}{\@@@mpmulti[}} +\def\@@mpmulti[#1]{% + \def\@mpm@pause{\relax}% + \def\@mpm@ospec{\begin{actionenv}#1}% + \def\@mpm@endospec{\end{actionenv}}% + \@ifnextchar[{\@@@mpmulti}{\@@@mpmulti[]}} +\def\@@@mpmulti[#1]#2{% + %% reset the options + \global\def\@mpm@graphics{}% + \global\def\@mpm@start{0}% + \global\def\@mpm@end{1000000}% + %% get the arguments + \setkeys{mpm}{#1}% + %% Insert the first part of the figure + %% and make sure we look also in other places according to path. + \let\@mpm@oldinp@th\input@path\let\input@path\Ginput@path + \@mpm@count=\@mpm@start + \@mpm@ospec% + \if@mpm@groptions% + \edef\@mpm@do@include{\noexpand\includegraphics[\@mpm@graphics]{\@mpm@format{#2}}}% + \@mpm@do@include% + \else% + \includegraphics{\@mpm@format{#2}}% + \fi% + \@mpm@endospec% + \def\@mpmdoit{% Do it by conditional tail recursion. + %% Select the next filename and advance counter + \edef\@mpmfilename{\@mpm@format{#2}}% + %% If the file exists, + \IfFileExists{\@mpmfilename}{% + %% insert the user defined transition (or the default), + \@mpm@pause + %% then process the next part and set up to try again. + \llap{% + \@mpm@ospec% + \if@mpm@groptions + \edef\@mpm@do@include{\noexpand + \includegraphics[\@mpm@graphics]{\@mpmfilename}}% + \@mpm@do@include + \else + \includegraphics{\@mpmfilename}% + \fi% + \@mpm@endospec% + }% + \ifnum\@mpm@count<\@mpm@end\relax + \advance\@mpm@count by 1\relax + \let\@mpmnext\@mpmdoit + \else + \let\@mpmnext\relax + \fi + }{% + %% If no more files exist, set up to stop. + \let\@mpmnext\relax + }% + %% Whatever we had to do (without nesting all the IfFileExists) + \@mpmnext + }% + %% Finally we must start it once, if there is more than one file + %% supposed to be available. + \ifnum\@mpm@count<\@mpm@end\relax + \advance\@mpm@count by 1\relax % start counting + \@mpmdoit % and run the show + \fi + %% and reset the input path after all + \let\input@path\@mpm@oldinp@th +}% |