diff options
Diffstat (limited to 'examples/slide/advi.sty')
-rw-r--r-- | examples/slide/advi.sty | 416 |
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 |