summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/beamer/multimedia/xmpmulti.sty
blob: 921249576a13a435ebee82dba56e6638940f3d18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
% $Header: /Users/joseph/Library/texmf/tex/latex/beamer/base/multimedia/xmpmulti.sty,v 14743c450e2c 2010/06/17 09:25:56 rivanvx $

% 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
}%