1 %============================================================================== |
|
2 % Prosper -- (prosper.cls) Class file |
|
3 % A LaTeX class for creating slides |
|
4 % Author: Frederic Goualard (Frederic.Goualard@cwi.nl) |
|
5 % Centrum voor Wiskunde en Informatica |
|
6 % Amsterdam, The Netherlands |
|
7 % |
|
8 % Copyright (c) 2000 Frederic Goualard |
|
9 % All rights reserved. |
|
10 % |
|
11 % Permission is hereby granted, without written agreement and without |
|
12 % license or royalty fees, to use, copy, modify, and distribute this |
|
13 % software and its documentation for any purpose, provided that the |
|
14 % above copyright notice and the following two paragraphs appear in |
|
15 % all copies of this software. |
|
16 % |
|
17 % IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, |
|
18 % SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF |
|
19 % THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR HAS BEEN ADVISED |
|
20 % OF THE POSSIBILITY OF SUCH DAMAGE. |
|
21 % |
|
22 % THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, |
|
23 % INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY |
|
24 % AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS |
|
25 % ON AN "AS IS" BASIS, AND THE AUTHOR HAS NO OBLIGATION TO |
|
26 % PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
|
27 % |
|
28 %============================================================================== |
|
29 |
|
30 \def\Prosper@Version{1.1} |
|
31 \NeedsTeXFormat{LaTeX2e}[1995/12/01] |
|
32 \ProvidesClass{prosper}[2001/01/23, v. \Prosper@Version] |
|
33 \typeout{(c) 2000 Frederic Goualard, CWI, The Netherlands} |
|
34 \typeout{ } |
|
35 |
|
36 \newif\ifDVItoPS |
|
37 \DeclareOption{ps}{\global\DVItoPStrue} |
|
38 \DeclareOption{pdf}{\global\DVItoPSfalse} |
|
39 |
|
40 \newif\ifisDraft |
|
41 \DeclareOption{draft}{\global\isDrafttrue% |
|
42 \PassOptionsToClass{draft}{seminar}} |
|
43 \DeclareOption{final}{\global\isDraftfalse% |
|
44 \PassOptionsToClass{final}{seminar}} |
|
45 |
|
46 \newif\ifinColor |
|
47 \DeclareOption{slideColor}{\global\inColortrue} |
|
48 \DeclareOption{slideBW}{\global\inColorfalse} |
|
49 |
|
50 \newif\ifallPages |
|
51 \DeclareOption{total}{\global\allPagestrue} |
|
52 \DeclareOption{nototal}{\global\allPagesfalse} |
|
53 |
|
54 \newif\ifcolorBG |
|
55 \DeclareOption{nocolorBG}{\global\colorBGfalse} |
|
56 \DeclareOption{colorBG}{\global\colorBGtrue} |
|
57 |
|
58 \newif\ifAccumulate |
|
59 \DeclareOption{accumulate}{\global\Accumulatetrue} |
|
60 \DeclareOption{noaccumulate}{\global\Accumulatefalse} |
|
61 |
|
62 \newif\if@distiller |
|
63 \@distillerfalse |
|
64 \DeclareOption{distiller}{\global\@distillertrue} |
|
65 |
|
66 \DeclareOption{YandY}{\gdef\@pdf@driver{dvipsone}} |
|
67 \DeclareOption{ps2pdf}{\gdef\@pdf@driver{ps2pdf}} |
|
68 |
|
69 %% Default style file = default |
|
70 \def\Style@chosen{default} |
|
71 \DeclareOption*{\global\let\Style@chosen=\CurrentOption} |
|
72 |
|
73 \ExecuteOptions{final,slideBW,total,nocolorBG,noaccumulate,ps,ps2pdf} |
|
74 \ProcessOptions\relax |
|
75 |
|
76 \LoadClass[portrait,semlayer,semcolor,leqno]{seminar} |
|
77 \RequirePackage{graphicx} |
|
78 \RequirePackage[\@pdf@driver,bookmarks,% |
|
79 a4paper,% |
|
80 % pdfmenubar=false,% |
|
81 pdfhighlight=/I,% |
|
82 % pdftoolbar=false,% |
|
83 pdffitwindow=true,% |
|
84 pdfcenterwindow=true,% |
|
85 % pdfwindowui=false,% |
|
86 menucolor=menucolor,% |
|
87 % pdfview=Fit,% |
|
88 pdfstartview=Fit]{hyperref} |
|
89 \RequirePackage{ifthen} |
|
90 |
|
91 \rotateheaderstrue |
|
92 \slidewidth=222mm |
|
93 \slideheight=150mm |
|
94 \renewcommand{\slideleftmargin}{0.01in} |
|
95 |
|
96 |
|
97 % Add a bookmark for each master slide |
|
98 \def\@addBookmarkOnSlide#1{% |
|
99 \def\Hy@temp{#1} |
|
100 \pdfmark{pdfmark=/OUT, |
|
101 Raw={/Page \thetrueSlideCounter /View [ /XYZ null null null ] |
|
102 /Title (\expandafter\strip@prefix\meaning\Hy@temp)} |
|
103 } |
|
104 } |
|
105 |
|
106 %% Some code to be added when creating a PDF file |
|
107 \def\Cropping@Box{0 0 595 890} % By default: cropping to a4 paper dimensions |
|
108 \ifDVItoPS |
|
109 \else |
|
110 \AtEndOfClass{% |
|
111 \hypersetup{pdfpagescrop=\Cropping@Box} |
|
112 } |
|
113 \if@distiller |
|
114 \else |
|
115 \AtBeginDvi{% |
|
116 \pdfmark{pdfmark=/PAGES, |
|
117 Raw={/Rotate 90}} |
|
118 } |
|
119 \fi |
|
120 \fi |
|
121 \newcommand{\PDFCroppingBox}[1]{% |
|
122 \gdef\Cropping@Box{#1} |
|
123 } |
|
124 |
|
125 %% PDFtransition |
|
126 %% Transition from one page to another. |
|
127 %% Possible values: |
|
128 %% (Split, Blinds, Box, Wipe, Dissolve, Glitter, R) |
|
129 \def\Split{} \def\Blinds{} \def\Box{} \def\Wipe{} \def\Dissolve{} |
|
130 \def\Glitter{} \def\R{} \def\Replace{} |
|
131 \newcommand{\PDFtransition}[1]{% |
|
132 \@ifundefined{#1} |
|
133 {% |
|
134 \ClassError{prosper}{Undefined transition #1}{% |
|
135 Possible values: Split, Blinds, Box, Wipe, Dissolve, Glitter, R}} |
|
136 {% |
|
137 \hypersetup{pdfpagetransition={#1}} |
|
138 } |
|
139 } |
|
140 |
|
141 %% Default transition between pages (for values, see \PDFtransition) |
|
142 \def\@defaultTransition{R} |
|
143 \newcommand{\DefaultTransition}[1]{\gdef\@defaultTransition{#1}} |
|
144 |
|
145 |
|
146 \newcommand{\@cartouche}{.} |
|
147 %% \slideCaption : Definition of caption to appear on every slide. |
|
148 \newcommand{\slideCaption}[1]{\gdef\@cartouche{#1}} |
|
149 |
|
150 %%----------------------------------------------------------------------------- |
|
151 %% Definitions for fonts and colors |
|
152 %% #1: font and color if slide in color |
|
153 %% #2: font and color if slide in BW |
|
154 \def\@fontTitleColor{\ClassError{prosper}{% |
|
155 no font specified for title in color}{Use macro \string\FontTitle}} |
|
156 \def\@fontTitleBW{\ClassError{prosper}{% |
|
157 no font specified for title in B\string&W}{Use macro \string\FontTitle}} |
|
158 \def\@fontSubtitleColor{\@fontTitleColor\fontsize{16pt}{16pt}\selectfont\itshape} |
|
159 \def\@fontSubtitleBW{\@fontTitleBW\fontsize{14pt}{16pt}\selectfont\itshape} |
|
160 \def\@fontTextColor{\ClassError{prosper}{% |
|
161 no font specified for texte in color}{Use macro \string\FontText}} |
|
162 \def\@fontTextBW{\ClassError{prosper}{% |
|
163 no font specified for text in B\string&W}{Use macro \string\FontText}} |
|
164 \def\@colorFoot{\black} |
|
165 \newcommand{\FontTitle}[2]{ |
|
166 \gdef\@fontTitleColor{#1} |
|
167 \gdef\@fontTitleBW{#2}} |
|
168 \newcommand{\FontSubtitle}[2]{ |
|
169 \gdef\@fontSubtitleColor{#1} |
|
170 \gdef\@fontSubtitleBW{#2}} |
|
171 \newcommand{\FontText}[2]{ |
|
172 \gdef\@fontTextColor{#1} |
|
173 \gdef\@fontTextBW{#2}} |
|
174 \newcommand{\ColorFoot}[1]{\gdef\@colorFoot{#1}} |
|
175 |
|
176 \newcommand{\fontTitle}[1]{% |
|
177 {\ifinColor\@fontTitleColor\else\@fontTitleBW\fi #1}} |
|
178 \newcommand{\fontText}[1]{% |
|
179 {\ifinColor\@fontTextColor\else\@fontTextBW\fi #1}} |
|
180 %%- End of definitions for fonts and colors ----------------------------------- |
|
181 |
|
182 % Width of the text area |
|
183 \newlength{\slideWidth} |
|
184 |
|
185 \def\@titleSpacing{\vspace*{10pt}} |
|
186 \newcommand{\titleSpacing}[1]{\gdef\@titleSpacing{#1}} |
|
187 |
|
188 %% Redefinition of the slide environment |
|
189 \newcounter{trueSlideCounter} |
|
190 \def\thetrueslideCounter{\arabic{trueSlideCounter}} |
|
191 \let\slide@seminar=\slide |
|
192 \let\endslide@seminar=\endslide |
|
193 \let\slide=\relax |
|
194 \let\endslide=\relax |
|
195 \newenvironment{SlideNormal}[2][\@defaultTransition]{% |
|
196 \StepCounter{trueSlideCounter} |
|
197 \PDFtransition{#1}% |
|
198 \begin{slide@seminar} |
|
199 \ifx#2@ |
|
200 \else |
|
201 \@addBookmarkOnSlide{#2} |
|
202 \slidetitle{#2} |
|
203 \fi |
|
204 \begin{posit@Box} |
|
205 \begin{minipage}{\slideWidth} |
|
206 \begin{raggedright} |
|
207 \@DefMyItem |
|
208 \ifinColor\@fontTextColor\else\@fontTextBW\fi |
|
209 }{% |
|
210 \end{raggedright} |
|
211 \end{minipage}\end{posit@Box}\end{slide@seminar}} |
|
212 % Slides in overlays |
|
213 \newenvironment{SlideOverlay}[2][\@defaultTransition]{% |
|
214 \ifDVItoPS |
|
215 \begin{slide@seminar} |
|
216 \slidetitle{#2} |
|
217 \begin{posit@Box} |
|
218 \begin{minipage}{\slideWidth} |
|
219 \begin{raggedright} |
|
220 \@DefMyItem |
|
221 \ifinColor\@fontTextColor\else\@fontTextBW\fi |
|
222 \else %% DVI -> PDF |
|
223 \StepCounter{trueSlideCounter} |
|
224 \PDFtransition{#1}% |
|
225 \begin{slide@seminar} |
|
226 \ifx#2@ |
|
227 \else |
|
228 \@ifundefined{@okForBookmark}{% |
|
229 \gdef\@okForBookmark{} |
|
230 \@addBookmarkOnSlide{#2} |
|
231 }{\relax} |
|
232 \slidetitle{#2} |
|
233 \fi |
|
234 \begin{posit@Box} |
|
235 \begin{minipage}{\slideWidth} |
|
236 \begin{raggedright} |
|
237 \@DefMyItem |
|
238 \ifinColor\@fontTextColor\else\@fontTextBW\fi |
|
239 \fi |
|
240 }{% |
|
241 \ifDVItoPS |
|
242 \end{raggedright} |
|
243 \end{minipage}\end{posit@Box}\end{slide@seminar}% |
|
244 \else %% DVI -> PDF |
|
245 \end{raggedright} |
|
246 \end{minipage}\end{posit@Box}\end{slide@seminar} |
|
247 \addtocounter{slide}{-1}% |
|
248 \fi |
|
249 } |
|
250 \let\slide=\SlideNormal |
|
251 \let\endslide=\endSlideNormal |
|
252 |
|
253 \newcommand{\NewSlideStyle}[4][11cm]{% |
|
254 \setlength{\slideWidth}{#1} |
|
255 \global\pslongbox{posit@Box}{\rput[#2](#3)} |
|
256 \newslideframe{the#4}{\csname #4\endcsname{##1}} |
|
257 \slidepagestyle{GenericPageStyle} |
|
258 \slideframe{the#4} |
|
259 } |
|
260 |
|
261 |
|
262 % Definition of the bullet for itemize env. |
|
263 \def\@prosperItemi{{\scriptsize\green% |
|
264 \raisebox{2pt}{\ensuremath{\bullet}}}} |
|
265 \def\@prosperItemii{{\scriptsize\green% |
|
266 \raisebox{2pt}{\ensuremath{\bullet}}}} |
|
267 \def\@prosperItemiii{{\scriptsize\green% |
|
268 \raisebox{2pt}{\ensuremath{\bullet}}}} |
|
269 \newcommand{\myitem}[2]{% |
|
270 \ifnum#1=1 |
|
271 \gdef\@prosperItemi{#2} |
|
272 \else |
|
273 \ifnum#1=2 |
|
274 \gdef\@prosperItemii{#2} |
|
275 \else |
|
276 \ifnum#1=3 |
|
277 \gdef\@prosperItemiii{#2} |
|
278 \else |
|
279 \ClassError{prosper}{Undefined item level}{Available levels: 1,2,3} |
|
280 \fi |
|
281 \fi |
|
282 \fi |
|
283 } |
|
284 |
|
285 \def\@DefMyItem{% |
|
286 \global\let\labelitemi=\@prosperItemi |
|
287 \global\let\labelitemii=\@prosperItemii |
|
288 \global\let\labelitemiii=\@prosperItemiii |
|
289 } |
|
290 |
|
291 %% displaying of a logo (to be defined in every style) |
|
292 \newcommand{\LogoPosition}[1]{\gdef\@PosLogo{#1}} |
|
293 \def\@PosLogo{\ClassError{prosper}{no default position for positioning the logo given}{Use macro \string\LogoPosition\space in the style file}} |
|
294 \gdef\@thelogo{.} |
|
295 \newcommand{\Logo}{% |
|
296 \@ifnextchar({\Logo@one}{\Logo@two} |
|
297 } |
|
298 \def\Logo@one(#1)#2{% |
|
299 \gdef\@PosLogo{#1} |
|
300 \gdef\@thelogo{#2} |
|
301 } |
|
302 \def\Logo@two#1{% |
|
303 \gdef\@thelogo{#1} |
|
304 } |
|
305 |
|
306 \newcommand{\PutLogo}{% |
|
307 \if\@thelogo.\else\rput[lb](\@PosLogo){\@thelogo}\fi |
|
308 } |
|
309 |
|
310 \expandafter\ifx\csname realpageref\endcsname\relax% |
|
311 \gdef\realpageref#1{\expandafter\real@setref |
|
312 \csname r@#1\endcsname\@secondoffive{#1}} |
|
313 \else |
|
314 \relax |
|
315 \fi |
|
316 |
|
317 \newpagestyle{GenericPageStyle}{\hfill }{\hfill% |
|
318 \ifisDraft |
|
319 {\@colorFoot\tiny \textbf{\jobname.tex}~--~\@Title~--~\@Author~--~\number\day/\number\month/\number\year~--~\timenow~--~p.\thepage\ifallPages/\realpageref{last@page}\fi} |
|
320 \else |
|
321 \ifshowVersion |
|
322 {\@colorFoot\tiny \textbf{\jobname.tex}~--~\@Title~--~\@Author~--~\number\day/\number\month/\number\year~--~\timenow~--~p.\thepage\ifallPages/\realpageref{last@page}\fi} |
|
323 \else |
|
324 {\@colorFoot\tiny \@cartouche~--~p.\thepage\ifallPages/\realpageref{last@page}\fi} |
|
325 \fi\fi |
|
326 } |
|
327 |
|
328 \IfFileExists{PPR\Style@chosen.sty}{% |
|
329 \RequirePackage{PPR\Style@chosen} |
|
330 }{\ClassError{prosper}{unknown Prosper style file: PPR\Style@chosen.sty}{% |
|
331 Sorry, no additional help}} |
|
332 |
|
333 |
|
334 \def\nobabel{% |
|
335 \let\labelitemi\@ltiORI% |
|
336 \let\labelitemii\@ltiiORI% |
|
337 \let\labelitemiii\@ltiiiORI% |
|
338 \let\labelitemiv\@ltivORI} |
|
339 |
|
340 % A new itemize environment that does not attempt to justify sentences |
|
341 \let\Itemize=\itemize |
|
342 \let\endItemize=\enditemize |
|
343 \renewenvironment{itemize}{\begin{Itemize}\begin{raggedright}}{% |
|
344 \end{raggedright}\end{Itemize}} |
|
345 |
|
346 % itemstep : itemize environment with step-by-step displaying |
|
347 % Warning: no nesting allowed |
|
348 \newcounter{item@step} |
|
349 \newenvironment{itemstep}{% |
|
350 \let\old@item=\item |
|
351 \begin{itemize}% |
|
352 |
|
353 \def\item{\StepCounter{item@step}% |
|
354 \FromSlide{\theitem@step}\old@item} |
|
355 }{\end{itemize}\setcounter{item@step}{0}} |
|
356 |
|
357 %% Displaying the version caption |
|
358 \newif\ifshowVersion |
|
359 \showVersionfalse |
|
360 \newcommand{\displayVersion}{\global\showVersiontrue} |
|
361 |
|
362 \newcommand{\timenow}{% |
|
363 \@tempcnta=\time \divide\@tempcnta by 60 \number\@tempcnta:\multiply |
|
364 \@tempcnta by 60 \@tempcntb=\time \advance\@tempcntb by -\@tempcnta |
|
365 \ifnum\@tempcntb <10 0\number\@tempcntb\else\number\@tempcntb\fi} |
|
366 |
|
367 \newcommand{\lastpage@putlabel}{\addtocounter{page}{-1}% |
|
368 \immediate\write\@auxout{\string |
|
369 \newlabel{last@page}{{}{\theslide}{\relax }{}{}}}% |
|
370 \addtocounter{page}{1}} |
|
371 \AtEndDocument{\ifallPages\clearpage\lastpage@putlabel\fi} |
|
372 |
|
373 \newcommand{\@Subtitle}{.} |
|
374 \newcommand{\subtitle}[1]{\gdef\@Subtitle{#1}} |
|
375 \renewcommand{\title}[1]{\gdef\@Title{#1}% |
|
376 \if\@cartouche.\gdef\@cartouche{#1}\fi} |
|
377 \renewcommand{\author}[1]{\gdef\@Author{#1}} |
|
378 |
|
379 \newcommand{\@email}{.} |
|
380 \newcommand{\email}[1]{\gdef\@email{#1}} |
|
381 |
|
382 %\newcommand{\@institution}{.} |
|
383 \newcommand{\institution}[1]{\gdef\@institution{#1}} |
|
384 |
|
385 \renewcommand{\maketitle}{ |
|
386 %% Tests whether the 'french' style from B. Gaulle is loaded |
|
387 \expandafter\ifx\csname frenchTeXmods\endcsname\relax% |
|
388 \else |
|
389 \PackageWarning{prosper}{This page intentionnally left blank to overcome an incompatibility bug between B. Gaulle 'french' package and the seminar class.} |
|
390 \begin{center} |
|
391 {\black\small |
|
392 \textsf{prosper} class: page intentionnally left blank to overcome an incompatibility bug between B. Gaulle 'french' package and the seminar class.} |
|
393 \end{center} |
|
394 \clearpage \setcounter{page}{0} |
|
395 \fi |
|
396 \begin{slide}{@} |
|
397 \ptsize{10} |
|
398 \begin{center} |
|
399 \@titleSpacing |
|
400 \normalfont |
|
401 {\ifinColor\@fontTitleColor\else\@fontTitleBW\fi\@Title} |
|
402 \if\@Subtitle.\else |
|
403 |
|
404 {\ifinColor\@fontSubtitleColor\else\@fontSubtitleBW\fi\@Subtitle} |
|
405 \fi |
|
406 |
|
407 \vskip.5em |
|
408 \@Author |
|
409 |
|
410 \if\@email.\else |
|
411 \vskip-5pt |
|
412 {\fontsize{7}{7}\selectfont\texttt{\@email}} |
|
413 \fi |
|
414 \expandafter\ifx\csname @institution\endcsname\relax % |
|
415 \else |
|
416 \vskip.8em |
|
417 \@institution |
|
418 \fi |
|
419 \vfill |
|
420 \end{center} |
|
421 \end{slide} |
|
422 } |
|
423 |
|
424 %% Overlays environment |
|
425 \newcounter{overlay@page} |
|
426 \newenvironment{Overlays}{% |
|
427 \global\let\slide\SlideOverlay |
|
428 \global\let\endslide\endSlideOverlay |
|
429 \setcounter{overlay@page}{\value{slide}}}{% |
|
430 \global\let\slide\SlideNormal |
|
431 \global\let\endslide\endSlideNormal |
|
432 \global\let\@okForBookmark\relax |
|
433 \setcounter{slide}{\value{overlay@page}}\StepCounter{slide}} |
|
434 |
|
435 % overlays environment |
|
436 % Parameter: # of slides in the overlay |
|
437 % slide 0 is the one for PostScript file |
|
438 \newbox\theoverlays |
|
439 \newcounter{overlaysCount} |
|
440 \newcounter{limitOverlays} |
|
441 |
|
442 % fromSlide, onlySlide, untilSlide |
|
443 % Masks or not the parameter. |
|
444 % The stared version does not advance the position pointer and does not |
|
445 % interpret its argument (to be used for graphics and commands containing |
|
446 % PStricks links) |
|
447 \long\def\fromSlide{% |
|
448 \@ifnextchar *\fromSlide@E\fromSlide@NE |
|
449 } |
|
450 \long\def\fromSlide@NE#1#2{% |
|
451 \ifDVItoPS |
|
452 \ifAccumulate |
|
453 #2 |
|
454 \fi |
|
455 \else |
|
456 \ifnum#1>\value{overlaysCount} |
|
457 {\overlay{1}#2} |
|
458 \else |
|
459 #2 |
|
460 \fi |
|
461 \fi |
|
462 } |
|
463 |
|
464 \long\def\fromSlide@E*#1#2{% |
|
465 \ifDVItoPS |
|
466 \ifAccumulate |
|
467 #2 |
|
468 \fi |
|
469 \else |
|
470 \ifnum#1>\value{overlaysCount} |
|
471 \relax |
|
472 \else |
|
473 #2 |
|
474 \fi |
|
475 \fi |
|
476 } |
|
477 |
|
478 \long\def\untilSlide{% |
|
479 \@ifnextchar *\untilSlide@E\untilSlide@NE |
|
480 } |
|
481 \long\def\untilSlide@NE#1#2{% |
|
482 \ifDVItoPS |
|
483 \ifAccumulate |
|
484 #2 |
|
485 \fi |
|
486 \else |
|
487 \ifnum#1<\value{overlaysCount} |
|
488 {\overlay{1}#2} |
|
489 \else |
|
490 #2 |
|
491 \fi |
|
492 \fi |
|
493 } |
|
494 \long\def\untilSlide@E*#1#2{% |
|
495 \ifDVItoPS |
|
496 \ifAccumulate |
|
497 #2 |
|
498 \fi |
|
499 \else |
|
500 \ifnum#1<\value{overlaysCount} |
|
501 \relax |
|
502 \else |
|
503 #2 |
|
504 \fi |
|
505 \fi |
|
506 } |
|
507 |
|
508 \long\def\onlySlide{% |
|
509 \@ifnextchar *\onlySlide@E\onlySlide@NE |
|
510 } |
|
511 \long\def\onlySlide@NE#1#2{% |
|
512 \ifDVItoPS |
|
513 \ifAccumulate |
|
514 #2 |
|
515 \fi |
|
516 \else |
|
517 \ifnum#1=\value{overlaysCount} |
|
518 #2 |
|
519 \else |
|
520 {\overlay{1}#2} |
|
521 \fi |
|
522 \fi |
|
523 } |
|
524 \long\def\onlySlide@E*#1#2{% |
|
525 \ifDVItoPS |
|
526 \ifAccumulate |
|
527 #2 |
|
528 \fi |
|
529 \else |
|
530 \ifnum#1=\value{overlaysCount} |
|
531 #2 |
|
532 \fi |
|
533 \fi |
|
534 } |
|
535 |
|
536 |
|
537 % FromSlide, OnlySlide, UntilSlide |
|
538 % Masks or not the following material. Advances the position pointer |
|
539 \newcommand{\FromSlide}[1]{% |
|
540 \ifDVItoPS |
|
541 \else |
|
542 \ifnum#1>\value{overlaysCount} |
|
543 \overlay{1} |
|
544 \fi |
|
545 \fi |
|
546 } |
|
547 \newcommand{\UntilSlide}[1]{% |
|
548 \ifDVItoPS |
|
549 \else |
|
550 \ifnum#1<\value{overlaysCount} |
|
551 \overlay{1} |
|
552 \fi |
|
553 \fi |
|
554 } |
|
555 \newcommand{\OnlySlide}[1]{% |
|
556 \ifDVItoPS |
|
557 \else |
|
558 \ifnum#1=\value{overlaysCount} |
|
559 \else |
|
560 \overlay{1} |
|
561 \fi |
|
562 \fi |
|
563 } |
|
564 |
|
565 % Overlays. Parameter to state the number of slides composing the overlay |
|
566 %\def\stepcounter#1{% |
|
567 % \ifInOverlays |
|
568 % \ifnum\value{overlayscount}<2 |
|
569 % \else |
|
570 % \addtocounter{#1}\@ne |
|
571 % \fi |
|
572 % \else |
|
573 % \addtocounter{#1}\@ne |
|
574 % \fi |
|
575 % \begingroup |
|
576 % \let\@elt\@stpelt |
|
577 % \csname cl@#1\endcsname |
|
578 % \endgroup |
|
579 %} |
|
580 |
|
581 \newif\ifInOverlays |
|
582 \InOverlaysfalse |
|
583 \long\def\overlays#1#2{% |
|
584 \global\InOverlaystrue |
|
585 \aftergroup\InOverlaysfalse |
|
586 \setcounter{limitOverlays}{#1} |
|
587 \setcounter{overlaysCount}{1} |
|
588 \ifDVItoPS |
|
589 #2 |
|
590 \else |
|
591 \begin{Overlays} |
|
592 \bgroup |
|
593 \loop |
|
594 #2 |
|
595 \ifnum\value{overlaysCount}<\value{limitOverlays} |
|
596 \StepCounter{overlaysCount} |
|
597 \repeat |
|
598 \egroup |
|
599 \end{Overlays} |
|
600 \fi |
|
601 } |
|
602 |
|
603 \def\@listctr{} |
|
604 \AtBeginDocument{% |
|
605 {\begingroup \escapechar\m@ne\xdef\@gtempa{{\string\reset@color}}\endgroup |
|
606 \expandafter\@ifundefined\@gtempa\relax{% |
|
607 \global\let\orig@reset@color=\reset@color |
|
608 \gdef\reset@color{\orig@reset@color\pst@endcolor}}} |
|
609 \let\Label=\label |
|
610 \def\label#1{% |
|
611 \ifInOverlays |
|
612 \ifnum\value{overlaysCount}>1 |
|
613 \else |
|
614 \Label{#1} |
|
615 \fi |
|
616 \fi |
|
617 } |
|
618 % For amsmath environments |
|
619 \let\Label@in@display=\label@in@display |
|
620 \def\label@in@display#1{ |
|
621 \ifInOverlays |
|
622 \ifnum\value{overlaysCount}>1 |
|
623 \else |
|
624 \Label@in@display{#1} |
|
625 \fi |
|
626 \fi |
|
627 } |
|
628 |
|
629 \let\overlay@loop=\relax |
|
630 \let\StepCounter=\stepcounter |
|
631 \def\RefStepCounter#1{\StepCounter{#1}% |
|
632 \protected@edef\@currentlabel |
|
633 {\csname p@#1\endcsname\csname the#1\endcsname}% |
|
634 } |
|
635 \def\stepcounter#1{% |
|
636 \ifInOverlays |
|
637 \ifthenelse{\equal{#1}{slide}}{ |
|
638 \StepCounter{#1}}{ |
|
639 \ifthenelse{\equal{#1}{\@listctr}}{ |
|
640 \StepCounter{#1}}{ |
|
641 \ifnum\value{overlaysCount}>1 |
|
642 \else |
|
643 \StepCounter{#1} |
|
644 \fi}} |
|
645 \else |
|
646 \StepCounter{#1} |
|
647 \fi} |
|
648 % Macro \overlay taken from semlayer.sty |
|
649 \def\overlay#1{% |
|
650 \ifoverlays\ifx\@overlay\relax\nooverlays@err\fi\fi |
|
651 \ifslide |
|
652 \@tempcnta=#1 |
|
653 \@testfalse |
|
654 \ifnum\@tempcnta>-1 \ifnum\@tempcnta<10 \@testtrue\fi\fi |
|
655 \if@test |
|
656 \c@overlay=\@tempcnta |
|
657 \ifnum\c@overlay=0 |
|
658 \advance\c@slide by -1 |
|
659 \RefStepCounter{slide}% |
|
660 \else |
|
661 \advance\c@overlay by -1 |
|
662 \RefStepCounter{overlay}% |
|
663 \ifoverlays |
|
664 \xdef\overlay@list{\overlay@list,\the\c@overlay}% |
|
665 \fi |
|
666 \fi |
|
667 \ifoverlays |
|
668 \@overlay{\the\c@overlay}% |
|
669 \fi |
|
670 \else |
|
671 \@seminarerr{\string\overlay\space argument must be |
|
672 an integer between 0 and 9}\@eha |
|
673 \fi |
|
674 \else |
|
675 \@seminarerr{\string\overlay\space can only be used |
|
676 in slide environments}\@eha |
|
677 \fi |
|
678 \ignorespaces} |
|
679 |
|
680 } % AtBeginDocument |
|
681 |
|
682 |
|
683 % \part |
|
684 \let\part=\relax |
|
685 \newcommand{\part}[2][\@defaultTransition]{% |
|
686 \begin{slide}[#1]{@}% |
|
687 \vspace*{1.5cm}\@addBookmarkOnSlide{#2} |
|
688 \begin{center} |
|
689 \fontTitle{#2} |
|
690 \end{center} |
|
691 \end{slide}} |
|
692 |
|
693 % Uses #1 if PDF option, otherwise #2 |
|
694 \newcommand{\PDForPS}[2]{% |
|
695 \ifDVItoPS |
|
696 #2 |
|
697 \else |
|
698 #1 |
|
699 \fi |
|
700 } |
|
701 |
|
702 % #1 appears on the slide only on PS mode |
|
703 \newcommand{\onlyInPS}[1]{\ifDVItoPS #1\fi} |
|
704 % #1 appears on the slide only on PDF mode |
|
705 \newcommand{\onlyInPDF}[1]{\ifDVItoPS\relax\else #1\fi} |
|
706 |
|
707 |
|
708 |
|
709 % To be used in conjunction with babel/french to allow ones own labels |
|
710 \def\NoFrenchBabelItemize{% |
|
711 \AtBeginDocument{% |
|
712 \renewenvironment{itemize}% |
|
713 {\ifnum \@itemdepth >\thr@@\@toodeep\else |
|
714 \advance\@itemdepth\@ne |
|
715 \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% |
|
716 \expandafter |
|
717 \list |
|
718 \csname\@itemitem\endcsname% |
|
719 {\let\@trivlist\@trivlistORI |
|
720 \settowidth{\labelwidth}{\textendash}% |
|
721 \setlength{\leftmargin}{\labelwidth}% |
|
722 \addtolength{\leftmargin}{\labelsep}% |
|
723 \ifnum\@listdepth=0 |
|
724 \setlength{\itemindent}{\parindent}% |
|
725 \else |
|
726 \addtolength{\leftmargin}{\parindent}% |
|
727 \fi |
|
728 \setlength{\itemsep}{\z@}% |
|
729 \setlength{\parsep}{\z@}% |
|
730 \setlength{\topsep}{\z@}% |
|
731 \setlength{\partopsep}{\z@}% |
|
732 \addtolength{\topsep}{-\parskip}% |
|
733 \addtolength{\partopsep}{\parskip}% |
|
734 }% |
|
735 \fi}% |
|
736 {\endlist} |
|
737 }} |
|
738 |
|
739 \ptsize{14} |
|
740 |
|
741 \endinput |
|
742 |
|
743 %%% Local Variables: |
|
744 %%% mode: latex |
|
745 %%% TeX-master: t |
|
746 %%% End: |
|