summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/beamer/multimedia
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:52:02 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:52:02 +0000
commitb1daf7130666bef14cdb98d88b3c107da38becec (patch)
tree08f591f90145354f39d714eadee16c99557b7109 /Master/texmf-dist/tex/latex/beamer/multimedia
parent47773c8fa98e5885b1d789b205b39fb924707e6e (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')
-rw-r--r--Master/texmf-dist/tex/latex/beamer/multimedia/multimedia.sty304
-rw-r--r--Master/texmf-dist/tex/latex/beamer/multimedia/multimediasymbols.sty42
-rw-r--r--Master/texmf-dist/tex/latex/beamer/multimedia/xmpmulti.sty178
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
+}%