aboutsummaryrefslogtreecommitdiff
path: root/examples/slide/advi.sty
diff options
context:
space:
mode:
Diffstat (limited to 'examples/slide/advi.sty')
-rw-r--r--examples/slide/advi.sty416
1 files changed, 416 insertions, 0 deletions
diff --git a/examples/slide/advi.sty b/examples/slide/advi.sty
new file mode 100644
index 0000000..9b5e09f
--- /dev/null
+++ b/examples/slide/advi.sty
@@ -0,0 +1,416 @@
+%%
+%% This is the original source file advi.sty
+%%
+%% Package `advi' to use with LaTeX 2e
+%% Copyright Roberto Di Cosmo, Jun Furuse, Didier Remy, and Pierre Weis
+%% All rights reserved.
+
+% Which name is ours
+\def \ActiveDVI {Active-DVI}
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{advi}
+ [2001/29/08 v0.40 Advi Package for advi Previewer]
+
+%%
+
+%% Identification
+%% Preliminary declarations
+
+\RequirePackage {keyval}
+
+%% Options
+
+\newif \ifadvi@ignore \advi@ignorefalse
+\DeclareOption {ignore}{\advi@ignoretrue}
+
+\ProcessOptions
+% \@ifundefined {AdviOptions}{}{\ExecuteOptions {\AdviOptions}}
+
+%% More declarations
+
+% Auxilliary macros
+
+
+\def \advi@empty{}
+\def \advi@ifempty #1{\def \@test {#1}\ifx \@test \advi@empty
+ \expandafter \@firstoftwo \else \expandafter \@secondoftwo \fi}
+\def \advi@error #1{\PackageError {Advi}{#1}{Type <RETURN> to proceed.}}
+\def \advi@warning #1{\PackageWarning {Advi}{#1}}
+\def \advi@undefinedenv {\advi@error {Environment \@currenvir\space undefined.
+Maybe you mean \@currenvir ing}}
+\def \advi@special@ {\advi@ifadvi{\special}{\advi@ignore}}
+\def \advi@special #1{\advi@special@ {advi: #1}}
+\def \advi@export #1#2{\@ifdefinable #1{\let #1#2}}
+\def \advi@exportenv #1#2{%
+ \@ifundefined {#1}{\expandafter \let \csname #1\expandafter \endcsname
+ \csname end#1\endcsname }\relax
+ \expandafter \@ifdefinable \csname #1\endcsname
+ {\expandafter \let \csname #1\expandafter \endcsname \csname #2\endcsname
+ \expandafter \let \csname end#1\expandafter \endcsname
+ \csname end#2\endcsname}}
+
+\def \advi@ignore #1{}
+\def \advi@id #1{#1}
+
+\def \advi@ifadvi {\ifadvi@ignore
+ \expandafter \@secondoftwo \else \expandafter \@firstoftwo \fi}
+\advi@export \adviignore \advi@ignoretrue
+\advi@export \ifadvi \advi@ifadvi
+
+%%% Record and play
+
+\newif \ifadvi@recording
+\def \advi@ifrecording {\ifadvi@recording
+ \expandafter \@firstoftwo \else \expandafter \@secondoftwo \fi}
+\def \advi@ifrecordenv {\ifx \@currenvir \advi@recordenv
+ \expandafter \@firstoftwo \else \expandafter \@secondoftwo \fi}
+
+\def \advi@start {start}
+\def \advi@startplay {start play}
+\define@key{advi@record}{play}[]{\let \advi@do \advi@startplay}
+\def \advi@recordenv {advirecord}
+
+\newenvironment{advi@recording}[2][]%
+ {\begingroup
+ \let \advi@do \advi@start \setkeys{advi@record}{#1}%
+ \advi@special {proc=#2 record=\advi@do}%
+ \endgroup}
+ {\advi@special {proc record=end}}
+\newcommand {\advi@record}[3][]{\advi@recording[#1]{#2}#3\endadvi@recording}
+
+\newcommand {\advi@play}[2][]%
+ {\begingroup
+ \advi@ifempty{#1}{}{\color {#1}}{\advi@special {proc=#2 play}}%
+ \endgroup}
+
+\advi@exportenv {advirecording}{advi@recording}
+\advi@export \advirecord \advi@record
+\let \endadvirecord \advi@undefinedenv
+\advi@export \adviplay \advi@play
+
+
+%%% Embedded applications
+
+\def \advi@embed@name{anonymous}
+\def \advi@embed@mode{ephemeral}
+\def \advi@embed@width{0pt}
+\def \advi@embed@height{0pt}
+\define@key {advi@embed}{name}{\def \advi@embed@name {#1}}
+\define@key {advi@embed}{width}%
+ {\@tempdima#1\relax \edef \advi@embed@width {\the\@tempdima}}
+\define@key {advi@embed}{height}%
+ {\@tempdima#1\relax \edef \advi@embed@height {\the\@tempdima}}
+\def \advi@definemode #1{%
+ \define@key {advi@embed}{#1}[anonymous]{%
+ \def \advi@embed@mode {#1}\def\advi@embed@name {##1}%
+ }}
+\advi@definemode{ephemeral}
+\advi@definemode{persistent}
+\advi@definemode{sticky}
+
+\def \advi@embed@ #1#2#3#4#5{%
+ \mbox{\advi@special
+ {embed name="#1" mode=#2 width=#3 height=#4 command="#5"}%
+ {\vbox to #4{\hbox to #3{}}}}}
+\def \advi@length #1{\@tempdima #1\relax \the\@tempdima}
+\newcommand{\advi@embed}[2][]{%
+ \mbox {\setkeys {advi@embed}{#1}%
+ \advi@embed@ {\advi@embed@name}{\advi@embed@mode}
+ {\advi@embed@width}{\advi@embed@height}{#2}}}
+
+\newcommand{\advi@killembed}[2][]{\advi@special {kill name="#2" signal="#1"}}
+
+\advi@export \adviembed \advi@embed
+
+\advi@export \advikillembed \advi@killembed
+
+
+%%% Background colors and images
+
+\def \do #1{\expandafter \def \csname advi@geom@#1@\endcsname {#1}}
+\do {center}
+\do {left}
+\do {right}
+\do {bottom}
+\do {top}
+\do {topleft}
+\do {topright}
+\do {bottomleft}
+\do {bottomright}
+\let \do \relax
+\def \advi@ifnine #1#2#3{\@ifundefined {advi@geom@#1@}{#3}{#2}}
+
+\let \advi@global \relax
+\def \advi@global@ {global}
+\newif \ifadvi@bgactive
+
+\def \advi@bg@do
+ {\do\advi@bgcolor \do\advi@bgimage \do \advi@bgalpha \do\advi@bgblend}
+\def \advi@auto@ { fit=auto}
+\def \advi@bgreset
+ {\def \do ##1{\expandafter \advi@global
+ \expandafter \let \noexpand ##1\advi@empty}\advi@bg@do
+ \advi@global \let \advi@bgfit \advi@auto@
+ \advi@global \advi@bgactivefalse}
+\advi@bgreset
+
+\def \advi@none@ {none}
+\def \advi@ifnone #1{\def \@test{#1}\ifx \@test \advi@none@
+ \let \@test \advi@empty \fi \ifx \@test \advi@empty
+ \expandafter \@firstoftwo \else \expandafter \@secondoftwo \fi}
+
+\def \advi@setbg #1#2#3{\advi@ifnone {#1}
+ {\advi@global \expandafter \let \noexpand #1\advi@empty}
+ {\advi@global \expandafter \def \noexpand #1{ #2=#3}%
+ \advi@global \advi@bgactivetrue}}
+\define@key {advi@bg}{color}[]{\advi@setbg{\advi@bgcolor}{color}{#1}}
+\define@key {advi@bg}{image}[]{\advi@setbg{\advi@bgimage}{image}{#1}}
+\define@key {advi@bg}{alpha}[]{\advi@setbg{\advi@bgalpha}{alpha}{#1}}
+\define@key {advi@bg}{blend}[]{\advi@setbg{\advi@bgblend}{blend}{#1}}
+\define@key {advi@bg}{fit}[auto]{\def \advi@bgfit {#1}%
+ \ifx \advi@bgfit \advi@auto@ \else
+ \advi@ifnine {\advi@bgfit}
+ {\advi@global \def \advi@bgfit{ fit=#1}}
+ {\advi@error {Ill formed background fit=#1}}%
+ \fi}
+\def \advi@bgset #1{\advi@ifnone {#1}{\advi@bgreset}{\setkeys {advi@bg}{#1}}}
+
+%\define@key {advi@bg}{inherit}[]{\advi@special{setbg inherit}}
+
+\def \advi@bgemit
+ {\advi@special
+ {setbg \advi@bgcolor \advi@bgimage \advi@bgalpha \advi@bgblend
+ \advi@bgfit
+ }}
+\newif \ifadvi@bglocal
+
+\newcommand{\advi@bg}[2][]{%
+ \begingroup
+ \def \@test {#1}\ifx \@test \advi@global@ \let \advi@global \global
+ \advi@bgset {#2}\else
+ \ifx \@test \advi@empty \else \advi@warning
+ {Optional argument [#1] to \string \advibg ignored}\fi
+ \global \advi@bglocaltrue
+ \advi@bgset{#2}\advi@bgemit \fi
+ \endgroup}
+\def \advi@bgpage
+ {\ifadvi@bgactive \ifadvi@bglocal\else \advi@bgemit \fi\fi
+ \global \advi@bglocalfalse}
+
+\advi@export \advibg \advi@bg
+
+%%% Pausing and waiting
+
+\def\advi@pause {\advi@special{pause}}
+\def\advi@wait#1{\advi@special{wait sec=#1}}
+
+%% export
+\newcommand {\adviwait}[1][]%
+ {\advi@ifempty {#1}{\advi@pause}{\advi@wait {#1}}}
+
+%%% Transparency and alpha blending
+%%% To be revisited.
+
+\def\advi@epstransparent
+ {\advi@special{epstransparent push true}%
+ \aftergroup \advi@resetepstransparent}
+\def\advi@epswhite
+ {\advi@special{epstransparent push false}%
+ \aftergroup \advi@resetepstransparent}
+\def\advi@setalpha#1%
+ {\advi@special{alpha push #1}%
+ \aftergroup \advi@resetalpha}
+\def\advi@setblend#1%
+ {\advi@special{blend push #1}%
+ \aftergroup\advi@resetblend}
+\def\advi@resetepstransparent {\advi@special{epstransparent pop}}
+\def\advi@resetalpha {\advi@special{alpha pop}}
+\def\advi@resetblend {\advi@special{blend pop}}
+
+\advi@export \epstransparent \advi@epstransparent
+\advi@export \epswhite \advi@epswhite
+\advi@export \setalpha \advi@setalpha
+\advi@export \setblend \advi@setblend
+
+%%% Animated transitions
+
+\def \advi@transfrom{}
+\def \advi@transsteps{}
+\def \advi@settrans {\advi@global \def}
+\define@key {advi@trans}{none} []{\advi@settrans \advi@transmode {none}}
+\define@key {advi@trans}{slide}[]{\advi@settrans \advi@transmode {slide}}
+\define@key {advi@trans}{block}[]{\advi@settrans \advi@transmode {block}}
+\define@key {advi@trans}{wipe} []{\advi@settrans \advi@transmode {wipe}}
+\define@key {advi@trans}{from} {\advi@settrans \advi@transfrom { from=#1}}
+\define@key {advi@trans}{steps}{\advi@settrans \advi@transsteps { steps=#1}}
+
+\def \advi@transemit
+ {\advi@special{trans \advi@transmode \advi@transfrom \advi@transsteps}}
+\newif \ifadvi@translocal
+\newcommand {\advi@transition}[2][]{%
+ \begingroup
+ \def \@test {#1}\ifx \@test \advi@global@ \let \advi@global \global
+ \setkeys {advi@trans}{#2}\else
+ \ifx \@test \advi@empty \else \advi@warning
+ {Optional argument [#1] to \string \advitransition ignored}\fi
+ \global \advi@translocaltrue
+ \setkeys {advi@trans}{#2}\advi@transemit \fi
+ \endgroup}
+
+\def \advi@transpage
+ {\@ifundefined {advi@transmode}{}
+ {\ifadvi@translocal\else \advi@transemit \fi}%
+ \global \advi@translocalfalse}
+
+%% Hook \advi@setpagesetyle at \@begindvi that run at every page
+
+\def \advi@setpagestyle {\advi@bgpage \advi@transpage}
+\def \endpage@hook {}
+\def \AtEndPage {\g@addto@macro \endpage@hook}
+\AtEndPage {\advi@setpagestyle}
+
+% We must patch \@begindvi to put out hook.
+% However, hyperref may patch it as well. So we should do it at begin
+% document to have the control (no one after us).
+% Howver, one must be careful, because \@begindvi redefines itself at the
+% first call to its prerecorded final value.
+% So our first patch will be overridden with the value that it was
+% meant to have after the first page.
+% Hence, we patch it a second time to put our hook to this final value.
+
+% we can use \g@addto@macro which redefines #1 to so that it procedes as
+% before and then execute #2 at the end.
+
+\def \advi@begindvi@patch
+ {\g@addto@macro \@begindvi
+ {\endpage@hook \g@addto@macro \@begindvi {\endpage@hook}}}
+
+\AtBeginDocument {\advi@begindvi@patch}
+
+% {\let \advi@begindvi@save \@begindvi %% value at begindocument
+% \def \@begindvi %% our new value
+% {\advi@begindvi@save %% may redefine \@begindvi
+% \global\let \advi@begindvi@save %% so we this new value
+% \@begindvi
+% \gdef \@begindvi %% now and forever
+% {\advi@begindvi@save \endpage@hook}%
+% \endpage@hook %% our hook for the
+% }}
+
+
+
+%% Transitions
+
+\def\advi@transbox@save#1#2#3{\advi@special
+ {transbox save width=#1 height=#2 depth=#3}}
+\def\advi@transbox@go#1{\advi@special{transbox go #1}}
+
+\def \advi@transslide {slide}
+\def \advi@transbox #1{%
+ \def \advi@afterbox
+ {\hbox {\advi@transbox@save{\the\wd0 }{\the\ht0 }{\the\dp0}%
+ \unhbox0\setkeys {advi@trans}{#1}%
+ \advi@transbox@go
+ {\advi@transmode \advi@transfrom \advi@transsteps}}}%
+ \def \advi@@afterbox {\aftergroup \advi@afterbox}
+ \afterassignment \advi@@afterbox \setbox0 \hbox }
+
+\advi@export \advitransition \advi@transition
+\advi@export \advitransbox \advi@transbox
+
+%%% For PS Tricks
+
+\def \advi@moveto {\advi@special {moveto}}
+\def\advi@psput@special#1{%
+\hbox{%
+\pst@Verb{{ \pst@coor }
+dup exec 2 copy moveto advi@Dict begin printpos end
+\tx@PutCoor
+\tx@PutBegin}
+\hbox {\advi@moveto \box#1}%
+\pst@Verb{\tx@PutEnd}}}
+
+\def\advi@ncput@iii{%
+\leavevmode
+\hbox{%
+\pst@Verb{%
+\pst@nodedict
+/t \psk@npos def
+tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse
+LPutCoor
+end
+\tx@PutBegin
+}%
+\hbox {\box\pst@hbox}%
+\pst@Verb{\tx@PutEnd}}}
+
+\def \advi@pstricks@patch
+ {\@ifundefined {psput@special}{}
+ {\let \psput@special \advi@psput@special
+ %\@ifundefined {ncput@iii}{}{\let \ncput@iii \advi@ncput@iii}%
+ \pstheader {advi.pro}}}
+\AtBeginDocument {\advi@pstricks@patch}
+
+
+%%% Active DVI
+
+\def \advi@over@ {over}
+\def \advi@click@ {click}
+\def \advi@null {\hbox {}}
+
+\newenvironment {advi@anchoring}[2][over]{%
+ \begingroup
+ \def \@test {#1}\ifx \@test \advi@over@
+ \advi@special@ {html:<a advi="#2">}\else
+ \ifx \@test \advi@click@
+ \advi@special@ {html:<a hdvi="#2">}\else
+ \advi@error {Incorect anchor mode #1}\fi \fi\endgroup}
+ {\advi@special@ {html:</a>}}
+\newcommand {\advi@anchor}[3][over]%
+ {\advi@anchoring[#1]{#2}#3\endadvi@anchoring}
+
+\def \advi@endanchor #1{#1\endadvi@anchor \endgroup}
+\advi@exportenv {advianchoring}{advi@anchoring}
+\advi@export \advianchor \advi@anchor
+\let \endadvianchor \advi@undefinedenv
+
+%%% Partial patch for overlays -- 0 will be shown > 0 will not be shown
+
+\def \advi@max {0}
+\def \advi@overlay #1{%
+ \advi@ifadvi
+ {%\advance \c@overlay by 1
+ \ifnum \c@overlay>\advi@max \global \xdef \advi@max {\the \c@overlay}\fi
+ \advi@recording {overlay@#1}\aftergroup \endadvi@recording}
+ {\latex@overlay {#1}}}
+
+\def \advi@overlay@loop
+ {\advi@ifadvi
+ {\begingroup
+ \c@overlay=0
+ \@whilenum\c@overlay<\advi@max
+ \do {\advance \c@overlay by 1%
+ \adviwait \adviplay{overlay@\the\c@overlay}}%
+ \endgroup
+ \gdef \advi@max {0}}
+ {\latex@overlay@loop}}
+
+\def \advi@end@slide
+ {\advi@ifadvi {\overlay@loop}{}\latex@end@slide}
+
+\def \advi@overlay@patch {%
+ \let \latex@overlay \@overlay
+ \let \latex@end@slide \end@slide
+ \let \latex@overlay@loop \overlay@loop
+ \let \@overlay \advi@overlay
+ \let \overlay@loop \advi@overlay@loop
+ \let \end@slide \advi@end@slide
+ }
+
+\@ifundefined {overlay}{}
+ {\AtBeginDocument {\advi@overlay@patch}}
+
+
+\endinput