aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLudovic Court`es2005-06-15 13:00:39 +0000
committerLudovic Court`es2005-06-15 13:00:39 +0000
commitfc42fe56a57eace2dbdb31574c2e161f0eacf839 (patch)
tree18111570156cb0e3df0d81c8d104517a2263fd2c /examples
downloadskribilo-fc42fe56a57eace2dbdb31574c2e161f0eacf839.tar.gz
skribilo-fc42fe56a57eace2dbdb31574c2e161f0eacf839.tar.lz
skribilo-fc42fe56a57eace2dbdb31574c2e161f0eacf839.zip
Initial import of Skribe 1.2d.
Initial import of Skribe 1.2d. git-archimport-id: lcourtes@laas.fr--2004-libre/skribilo--devel--1.2--base-0
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile48
-rw-r--r--examples/slide/Makefile153
-rw-r--r--examples/slide/PPRskribe.sty67
-rw-r--r--examples/slide/README11
-rw-r--r--examples/slide/advi.sty416
-rw-r--r--examples/slide/ex/skribe.skb11
-rw-r--r--examples/slide/ex/syntax.scr1
-rw-r--r--examples/slide/skb/slides.skb286
-rw-r--r--examples/slide/skr/local.skr73
9 files changed, 1066 insertions, 0 deletions
diff --git a/examples/Makefile b/examples/Makefile
new file mode 100644
index 0000000..7f47f6e
--- /dev/null
+++ b/examples/Makefile
@@ -0,0 +1,48 @@
+#*=====================================================================*/
+#* serrano/prgm/project/skribe/examples/Makefile */
+#* ------------------------------------------------------------- */
+#* Author : Manuel Serrano */
+#* Creation : Fri Oct 24 13:25:43 2003 */
+#* Last change : Wed Feb 18 11:25:20 2004 (serrano) */
+#* Copyright : 2003-04 Manuel Serrano */
+#* ------------------------------------------------------------- */
+#* The meta Makefile for the examples */
+#*=====================================================================*/
+
+#*---------------------------------------------------------------------*/
+#* All the examples */
+#*---------------------------------------------------------------------*/
+EXAMPLES=slide
+
+#*---------------------------------------------------------------------*/
+#* pop */
+#*---------------------------------------------------------------------*/
+.PHONY: pop
+
+pop:
+ @ for p in $(EXAMPLES); do \
+ (cd $$p && $(MAKE) pop); \
+ done
+ @ echo examples/Makefile
+
+#*---------------------------------------------------------------------*/
+#* Install/Uinstall */
+#*---------------------------------------------------------------------*/
+.PHONY: install uninstall
+
+install:
+
+uninstall:
+
+#*---------------------------------------------------------------------*/
+#* cleaning */
+#*---------------------------------------------------------------------*/
+.PHONY: clean distclean
+
+clean:
+ for p in $(EXAMPLES); do \
+ (cd $$p && $(MAKE) clean); \
+ done
+
+distclean: clean
+
diff --git a/examples/slide/Makefile b/examples/slide/Makefile
new file mode 100644
index 0000000..c9b7a84
--- /dev/null
+++ b/examples/slide/Makefile
@@ -0,0 +1,153 @@
+#*=====================================================================*/
+#* serrano/prgm/project/skribe/examples/slide/Makefile */
+#* ------------------------------------------------------------- */
+#* Author : Manuel Serrano */
+#* Creation : Fri Jan 11 10:19:46 2002 */
+#* Last change : Thu Dec 18 09:21:41 2003 (serrano) */
+#* Copyright : 2002-03 Manuel Serrano */
+#* ------------------------------------------------------------- */
+#* The Makefile to build the Slides example */
+#*=====================================================================*/
+include ../../etc/Makefile.config
+include ../../etc/$(SYSTEM)/Makefile.skb
+
+#*---------------------------------------------------------------------*/
+#* Compiler and tools */
+#*---------------------------------------------------------------------*/
+BINDIR = ../../bin
+LIBDIR = ../../lib
+
+#*---------------------------------------------------------------------*/
+#* Compilers and Tools */
+#*---------------------------------------------------------------------*/
+SFLAGS = -I txt -I skr -I skb -I ../../skr
+LATEX = latex
+DVIPS = dvips -Ppdf -G0
+TEXHOME = $$HOME/tex
+PS2PDF = ps2pdf -dPDFSETTINGS=/prepress -sPAPERSIZE=a4
+MODE = advi
+
+#*---------------------------------------------------------------------*/
+#* Skribe variables */
+#*---------------------------------------------------------------------*/
+SKRIBEVARS = --eval "(define *mode* '$(MODE))"
+
+#*---------------------------------------------------------------------*/
+#* Sources */
+#*---------------------------------------------------------------------*/
+MASTER = skb/slides.skb
+
+INPUTSNAME =
+EXNAME = skribe.skb syntax.scr
+INPUTS = $(INPUTSNAME:%=skb/%.skb) $(EXNAME:%=ex/%)
+
+SOURCESNAME =
+SOURCES = $(SOURCESNAME:%=scm/%.scm)
+
+STYLES = local
+LSTYLES = $(STYLE:%=skr/%.skr)
+
+FIGS_SOURCES =
+FIGURES = $(FIGS_SOURCES:%=fig/%.eps) $(FIGS_SOURCES:%=fig/%.png)
+
+#*---------------------------------------------------------------------*/
+#* Suffixes */
+#*---------------------------------------------------------------------*/
+.SUFFIXES:
+.SUFFIXES: .skb .skr .eps .fig .tex .ps .pdf .png .html .dvi
+
+#*---------------------------------------------------------------------*/
+#* All */
+#*---------------------------------------------------------------------*/
+all: ps html
+
+ps: slides.ps
+slides.ps: slides.dvi
+ $(DVIPS) -o slides.ps slides.dvi
+
+pdf: slides.pdf
+slides.pdf: slides.ps
+ $(PS2PDF) slides.ps slides.pdf
+
+dvi: slides.dvi
+slides.dvi: slides.tex
+ $(LATEX) slides.tex
+
+slides.tex: $(MASTER) $(INPUTS) $(LSTYLES) $(SOURCES) $(FIGURES)
+ $(SKRIBE) $(SKRIBEVARS) $(SFLAGS) $(MASTER) -o slides.tex
+
+html: slides.html
+slides.html: $(MASTER) $(INPUTS) $(LSTYLES) $(SOURCES) $(FIGURES)
+ $(SKRIBE) $(SKRIBEVARS) $(SFLAGS) $(MASTER) -o slides.html
+
+text: slides.text
+slides.text: $(MASTER) $(INPUTS) $(LSTYLES) $(SOURCES) $(FIGURES)
+ $(SKRIBE) $(SKRIBEVARS) $(SFLAGS) $(MASTER) -t text -o slides.text
+
+#*---------------------------------------------------------------------*/
+#* pop */
+#*---------------------------------------------------------------------*/
+.PHONY: pop
+
+pop:
+ @ echo examples/slide/Makefile \
+ examples/slide/README \
+ examples/slide/advi.sty \
+ examples/slide/PPRskribe.sty \
+ examples/slide/skr/local.skr
+ @ echo $(MASTER:%=examples/slide/%)
+ @ echo $(EXNAME:%=examples/slide/ex/%)
+
+#*---------------------------------------------------------------------*/
+#* binary */
+#*---------------------------------------------------------------------*/
+getbinary:
+ echo "slides"
+
+#*---------------------------------------------------------------------*/
+#* re */
+#*---------------------------------------------------------------------*/
+.PHONY: re re.ps re.html
+
+re: re.ps re.html
+
+re.ps:
+ touch -m -d 0 slides.tex
+ $(MAKE) ps
+
+re.html:
+ touch -m -d 0 slides.html
+ $(MAKE) html
+
+#*---------------------------------------------------------------------*/
+#* .eps.png */
+#*---------------------------------------------------------------------*/
+.eps.png:
+ @ echo $*.png:
+ @ convert $*.eps $*.png
+
+#*---------------------------------------------------------------------*/
+#* .eps.fig */
+#*---------------------------------------------------------------------*/
+.fig.eps:
+ @ echo $*.fig:
+ @ fig2dev -L eps $*.fig > $*.eps
+
+#*---------------------------------------------------------------------*/
+#* Clean */
+#*---------------------------------------------------------------------*/
+clean:
+ -/bin/rm -f slides.tex 2> /dev/null
+ -/bin/rm -f slides.dvi 2> /dev/null
+ -/bin/rm -f *.aux *.log 2> /dev/null
+ -/bin/rm -f *~ 2> /dev/null
+ -/bin/rm -f */*~ 2> /dev/null
+ -/bin/rm -f */*/*~ 2> /dev/null
+ -/bin/rm -f slides.ps 2> /dev/null
+ -/bin/rm -f slides.pdf 2> /dev/null
+ -/bin/rm -f slides*.html 2> /dev/null
+ -/bin/rm -f slides.text 2> /dev/null
+ -/bin/rm -f slides.out 2> /dev/null
+ -/bin/rm -f $(FIGURES)
+
+cleanall: clean
diff --git a/examples/slide/PPRskribe.sty b/examples/slide/PPRskribe.sty
new file mode 100644
index 0000000..40b2d08
--- /dev/null
+++ b/examples/slide/PPRskribe.sty
@@ -0,0 +1,67 @@
+%==============================================================================
+% Prosper -- (PPRskribe.sty) Style file
+% A LaTeX class for creating slides
+% Author: Manuel Serrano
+%
+% Permission is hereby granted, without written agreement and without
+% license or royalty fees, to use, copy, modify, and distribute this
+% software and its documentation for any purpose, provided that the
+% above copyright notice and the following two paragraphs appear in
+% all copies of this software.
+%
+% IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+% SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
+% THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE AUTHOR HAS BEEN ADVISED
+% OF THE POSSIBILITY OF SUCH DAMAGE.
+%
+% THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+% INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+% AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+% ON AN "AS IS" BASIS, AND THE AUTHOR HAS NO OBLIGATION TO
+% PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+%==============================================================================
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{PPRskribe}[2003/10/21]
+\typeout{`skribe' style for Prosper ---}
+\typeout{ }
+
+\RequirePackage{amssymb}
+% Loading packages necessary to define this slide style.
+% none
+
+\FontTitle{%
+ \usefont{T1}{ptm}{b}{n}\fontsize{13.82pt}{12pt}\selectfont\blue}{%
+ \usefont{T1}{ptm}{b}{n}\fontsize{13.82pt}{12pt}\selectfont\blue}
+\FontText{%
+ \black\usefont{T1}{phv}{m}{n}\fontsize{9.4pt}{9pt}\selectfont}{%
+ \black\usefont{T1}{phv}{m}{n}\fontsize{9.4pt}{9pt}\selectfont}
+
+
+% Positionning of the title of a slide.
+\newcommand{\slidetitle}[1]{%
+ \rput[c](5.25,4.4){\fontTitle{#1}}
+}
+
+% Positionning for a logo
+% \LogoPosition{-1,-1.1}
+
+% Definition of this style for slides.
+
+\newcommand{\BasicFrame}[1]{%
+ {#1}}
+
+%\NewSlideStyle[115mm]{t}{5.3,3.2}{BasicFrame}
+\NewSlideStyle[125mm]{t}{5.3,3.8}{BasicFrame}
+\PDFCroppingBox{10 40 594 800}
+\RequirePackage{semhelv}
+
+\myitem{1}{$\bullet$}
+\myitem{2}{$\circ$}
+\myitem{3}{$\diamond$}
+
+\endinput
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: t
+%%% End:
diff --git a/examples/slide/README b/examples/slide/README
new file mode 100644
index 0000000..cb9f303
--- /dev/null
+++ b/examples/slide/README
@@ -0,0 +1,11 @@
+This example shows how to program slides with Skribe. Three slide
+formats can be produced:
+
+1. Advi
+ type `make MODE=advi'
+
+2. Plain PDF
+ type `make pdf MODE=pdf'
+
+3. LaTeX prosper
+ type `make pdf MODE=prosper'
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
diff --git a/examples/slide/ex/skribe.skb b/examples/slide/ex/skribe.skb
new file mode 100644
index 0000000..d1a525e
--- /dev/null
+++ b/examples/slide/ex/skribe.skb
@@ -0,0 +1,11 @@
+(slide :title [Skribe]
+ (st [Skribe:])
+ (itemize (item [A functional programming language based on Scheme])
+ (item [A markup language ,(emph [à la]) XML])
+ (item [A document ,(blue [is]) a program,
+ a program ,(blue [looks like]) a text with markups]))
+
+ (p [
+ ,(st [Example:])
+ ,(slide-pause)
+ ,(skribe-prgm :file "ex/skribe.skb")]))
diff --git a/examples/slide/ex/syntax.scr b/examples/slide/ex/syntax.scr
new file mode 100644
index 0000000..8590f4a
--- /dev/null
+++ b/examples/slide/ex/syntax.scr
@@ -0,0 +1 @@
+[text goodies: ,(bold "bold") and ,(it "italic").]
diff --git a/examples/slide/skb/slides.skb b/examples/slide/skb/slides.skb
new file mode 100644
index 0000000..c13b102
--- /dev/null
+++ b/examples/slide/skb/slides.skb
@@ -0,0 +1,286 @@
+;*=====================================================================*/
+;* serrano/prgm/project/skribe/examples/slide/skb/slides.skb */
+;* ------------------------------------------------------------- */
+;* Author : Manuel Serrano */
+;* Creation : Wed Oct 8 16:04:59 2003 */
+;* Last change : Fri Oct 24 13:32:37 2003 (serrano) */
+;* Copyright : 2003 Manuel Serrano */
+;* ------------------------------------------------------------- */
+;* Skribe slide example */
+;*=====================================================================*/
+
+;*---------------------------------------------------------------------*/
+;* Style */
+;*---------------------------------------------------------------------*/
+(case *mode*
+ ((advi)
+ (skribe-load "slide.skr" :advi #t))
+ ((prosper)
+ (skribe-load "slide.skr" :prosper #t))
+ (else
+ (skribe-load "slide.skr")))
+
+(skribe-load "local.skr")
+
+;*---------------------------------------------------------------------*/
+;* latex configuration ... */
+;*---------------------------------------------------------------------*/
+(let ((le (find-engine 'latex)))
+ (engine-custom-set! le 'transition 'slide)
+ (engine-custom-set! le 'usepackage
+ (string-append (engine-custom le 'usepackage)
+ "\\usepackage{pstricks,pst-node,pst-text,pst-3d}\n")))
+
+;*---------------------------------------------------------------------*/
+;* sk-expression ... */
+;*---------------------------------------------------------------------*/
+(define (sk-expression)
+ (it "sk-expression"))
+(define (sk-expressions)
+ (it "sk-expressions"))
+
+;*---------------------------------------------------------------------*/
+;* The document */
+;*---------------------------------------------------------------------*/
+(document
+:title (red (sf (font :size +2. "This is Skribe!")))
+:author (author :name (it (magenta "Manuel Serrano, Erick Gallesio"))
+ :affiliation [Inria Sophia Antipolis, University of Nice]
+ :address (list "" (tt (skribe-url))))
+
+;*---------------------------------------------------------------------*/
+;* First slide */
+;*---------------------------------------------------------------------*/
+(include "ex/skribe.skb")
+
+;* {*---------------------------------------------------------------------*} */
+;* {* Overview *} */
+;* {*---------------------------------------------------------------------*} */
+;* (slide :title "Skribe overview" */
+;* (center (image :width 90. :file "fig/overview.fig"))) */
+
+;* {*---------------------------------------------------------------------*} */
+;* {* Examples *} */
+;* {*---------------------------------------------------------------------*} */
+;* (if (or (skribe-mgp?) (and (skribe-tex?) *skribe-slide-advi*)) */
+;* (slide :title "Skribe examples" */
+;* */
+;* (%embed :geometry *xterm.geo* *xterm*) */
+;* (%embed :geometry *xdvi.geo* *xdvi*) */
+;* */
+;* (st [1 Skribe document, 2 targets:]) */
+;* */
+;* (%vspace 0.0) */
+;* (itemize (item [A ,(sc [Nroff]) target:])) */
+;* (%vspace 3) */
+;* (itemize (item [A ,(sc [Dvi]) target:])))) */
+
+;* {*---------------------------------------------------------------------*} */
+;* {* Skribe gallery *} */
+;* {*---------------------------------------------------------------------*} */
+;* {*--- math ------------------------------------------------------------*} */
+;* (slide :title "Gallery (1/2)" */
+;* */
+;* (st [Math skills:]) */
+;* (itemize (item [A ,(LaTeX) math formula in:])) */
+;* (p (font :size -3 */
+;* (color :bg *display-bg* */
+;* (center */
+;* (hook :after */
+;* (lambda () */
+;* (if (skribe-tex?) */
+;* (display "\\(\\sum_{i=1}^{n} x_{i} = \\int_{0}^{1} f\\)") */
+;* (display "&#8721;<sub><font size='-2'>i=1</font></sub><sup><font size='-2'>i=1</font></sup> = &#8747;<sub><font size='-2'>0</font></sub><sup><font size='-2'>1</font></sup>f")))))))) */
+;* (itemize (item [Denotational semantics:])) */
+;* (p (font :size -3 */
+;* (color :bg *display-bg* */
+;* (prgm :language denotation :monospace (skribe-html?) */
+;* (map (lambda (d) */
+;* (from-file "scm/eval.scm" :definition d)) */
+;* '("ev-lambda1" "ev-funcall1")))))) */
+;* (itemize (item [SOS rule:])) */
+;* (p (font :size -4 */
+;* (color :bg *display-bg* */
+;* (labeled-component */
+;* "Assignment" */
+;* (rule */
+;* (evaluate "exp" "sched, env" "val" "sched', env'") */
+;* (rewrite "var = exp, sched, env" (TERM) "nothing, sched', env'<var = val>"))))))) */
+;* */
+;* {*--- misc ------------------------------------------------------------*} */
+;* (slide :title "Gallery (2/2)" */
+;* */
+;* (st [Misc:]) */
+;* (itemize (item [A computer program:])) */
+;* (p (font :size -1 (prgm :bg *example-bg* :language c :lnum 1 (from-file "ex/C-code.c")))) */
+;* (itemize (item [Images: */
+;* ,(p (image :width 75 :height 50 :file "img/img.jpg") */
+;* (hook :after (lambda () */
+;* (cond */
+;* ((skribe-tex?) */
+;* (display "\\ \\ \\ \\ ")) */
+;* (else */
+;* (display " "))))) */
+;* (image :width 25 :height 50 :file "img/img.jpg") */
+;* (hook :after (lambda () */
+;* (cond */
+;* ((skribe-tex?) */
+;* (display "\\ \\ \\ \\ ")) */
+;* (else */
+;* (display " "))))) */
+;* (image :width 150 :height 50 :file "img/img.jpg"))]))) */
+;* */
+;*---------------------------------------------------------------------*/
+;* Syntax */
+;*---------------------------------------------------------------------*/
+(slide :title "Skribe Syntax" :vspace 0.3
+
+(st [,(sk-expression):])
+
+(slide-pause)
+(itemize (item [An ,(emph "atom") (a ,(red (it "string")), a ,(red (it "number")), ...)] (slide-pause))
+ (item [A ,(emph "list") of ,(!latex "{\\rnode{NA}{$1}}" (sk-expressions))] (slide-pause))
+ (item [A ,(emph "text") (,(red (tt [ ,(char "[")... ,(blue [,(char ",")(,(it "<expr>"))]) ...,(char "]") ])))] (slide-pause)))
+
+(slide-vspace 0.3)
+(p [,(!latex "{\\rnode{NB}{$1}}" (st [Example:]))
+ ,(slide-pause)
+ ,(!latex "{\\nccurve[linecolor=red,angleA=90,angleB=270]{->}{NB}{NA}}")
+ ,(skribe-prgm :fsize 0 (source :file "ex/syntax.scr"))])
+
+(p [is equivalent to:
+ ,(slide-pause)
+ ,(skribe-prgm :fsize 0 [(list "text goodies: " (bold "bold") "and" (it "italic") ".")])]))
+
+;* {*---------------------------------------------------------------------*} */
+;* {* Skribe documents *} */
+;* {*---------------------------------------------------------------------*} */
+;* (slide :title "Skribe Documents (1/2)" :vspace 0.5 */
+;* */
+;* (st [Skribe Document Structure:]) */
+;* (p (skribe-prgm [,(from-file "ex/skel.scr")]))) */
+;* */
+;* {*--- markup ----------------------------------------------------------*} */
+;* (slide :title "Skribe Documents (2/2)" :vspace 0.5 */
+;* (st [XML markup:]) */
+;* (p (prgm :language xml :bg *example-bg* [ */
+;* <elmt1 attr="val"> */
+;* Some text */
+;* <elmt2> */
+;* for the example */
+;* </elmt2> */
+;* </elmt1>])) */
+;* (%vspace 0.3) */
+;* (st [Sc-markup:]) */
+;* (p (skribe-prgm [,(from-file "ex/xml.scr")]))) */
+;* */
+;* {*---------------------------------------------------------------------*} */
+;* {* Libraries *} */
+;* {*---------------------------------------------------------------------*} */
+;* (slide :title "Skribe Libraries" */
+;* */
+;* (st [A set of libraries containing the ,(q "usual") facilities. For instance:]) */
+;* */
+;* (p (skribe-prgm [,(from-file "ex/itemize.scr")])) */
+;* (%vspace 0.1) */
+;* (st [Produces the following output text:]) */
+;* (center (color :bg *display-bg* (font :size -2 (include "ex/itemize.scr"))))) */
+;* */
+;* {*---------------------------------------------------------------------*} */
+;* {* Dynamic texts *} */
+;* {*---------------------------------------------------------------------*} */
+;* (slide :title "Dynamic texts (1/3)" :vspace 0.2 */
+;* */
+;* (st [Let us assume the factorial table:]) */
+;* (%vspace 0.5) */
+;* */
+;* (center (font :size -1 (color :bg *display-bg* (include "ex/fact.scr"))))) */
+;* */
+;* {*--- dynamic texts: the usual solution -------------------------------*} */
+;* (slide :title "Dynamic texts (2/3)" */
+;* */
+;* (st [The usual solution:]) */
+;* (p (skribe-prgm :fsize -1 (from-file "ex/factb.scr")))) */
+;* */
+;* {*--- dynamic texts: a better solution --------------------------------*} */
+;* (slide :title "Dynamic texts (3/3)" */
+;* */
+;* (st [A better solution:]) */
+;* (p (skribe-prgm (from-file "ex/fact.scr")))) */
+;* */
+;* {*---------------------------------------------------------------------*} */
+;* {* Introspection *} */
+;* {*---------------------------------------------------------------------*} */
+;* {*--- Introspection ---------------------------------------------------*} */
+;* (slide :title "Introspection" */
+;* */
+;* (color :bg *image-bg* */
+;* (center (image :width 1. :file "fig/skribe.fig")))) */
+;* */
+;* {*--- Number of slides ------------------------------------------------*} */
+;* (slide :title "Introspection: an example (1/2)" */
+;* */
+;* (p (color :bg *display-bg* (include "ex/slide.scr")))) */
+;* */
+;* {*--- Number of slides (2/2) ------------------------------------------*} */
+;* (slide :title "Introspection: an example (2/2)" :vspace 0.5 */
+;* */
+;* (st [The previous output is produced with:]) */
+;* (p (skribe-prgm (from-file "ex/slide.scr")))) */
+;* */
+;* {*---------------------------------------------------------------------*} */
+;* {* Conditional evaluation *} */
+;* {*---------------------------------------------------------------------*} */
+;* (slide :title "Conditional evaluation" :vspace 0.5 */
+;* */
+;* (st [Some features are dependent of the target format:]) */
+;* (itemize (item [Only specific back-ends may support specific features]) */
+;* (item [It is in charge of the back-ends to implement */
+;* ,(emph "reasonable") behaviors for unsupported features. */
+;* Examples: */
+;* ,(itemize (item [Hyper links]) */
+;* (item [Images]) */
+;* (item [...]))]) */
+;* (item [Skribe enables conditional evaluation: */
+;* ,(itemize (item [according to the target format]) */
+;* (item [enabling target format commands]))]))) */
+;* */
+;* {*---------------------------------------------------------------------*} */
+;* {* Extensibility *} */
+;* {*---------------------------------------------------------------------*} */
+;* (slide :title "Extensibility" */
+;* */
+;* (st [User level:]) */
+;* (itemize (item [New markups can be defined in a document]) */
+;* (item [A markup is a Skribe (Scheme) function]) */
+;* (item [Example: the ,(code "(%pause)") slide facility:])) */
+;* */
+;* (p (skribe-prgm [ */
+;* (define (%pause) */
+;* (cond */
+;* ((skribe-mgp?) (hook :after (lambda () (display "%pause")))) */
+;* ((skribe-advi-tex?) (hook :after (lambda () (print "\\adviwait")))) */
+;* (else (linebreak))))])) */
+;* (%pause) */
+;* */
+;* (st [System level:]) */
+;* (itemize (item [New back-ends can be dynamically added]) */
+;* (item [The ,(sc-ast) can be extended]))) */
+;* */
+;* {*---------------------------------------------------------------------*} */
+;* {* Conclusion *} */
+;* {*---------------------------------------------------------------------*} */
+;* (slide :title "Conclusion" :vspace 0.5 */
+;* */
+;* (st [Status:]) */
+;* (itemize (item [Available on-line: ,(ref :url (skribe-url))]) */
+;* (item [Available since a couple of months]) */
+;* (item [Used, by the authors, on a daily basis]) */
+;* (item [,(magenta (bold [Still too young])) ,(symbol '=>) */
+;* ,(itemize (item [Very few styles have been implemented]) */
+;* (item [It is still necessary to be aware of the */
+;* targets idiosyncrasies]) */
+;* (item [Difficult to tame the fix-point */
+;* iteration of the computation model]))])))) */
+
+)
diff --git a/examples/slide/skr/local.skr b/examples/slide/skr/local.skr
new file mode 100644
index 0000000..2802a53
--- /dev/null
+++ b/examples/slide/skr/local.skr
@@ -0,0 +1,73 @@
+;*=====================================================================*/
+;* serrano/prgm/project/skribe/examples/slide/skr/local.skr */
+;* ------------------------------------------------------------- */
+;* Author : Manuel Serrano */
+;* Creation : Mon Jun 3 15:32:25 2002 */
+;* Last change : Wed Oct 8 16:22:42 2003 (serrano) */
+;* Copyright : 2002-03 Manuel Serrano */
+;* ------------------------------------------------------------- */
+;* The local style of the presentation */
+;*=====================================================================*/
+
+;* {*---------------------------------------------------------------------*} */
+;* {* fg ... *} */
+;* {*---------------------------------------------------------------------*} */
+;* (define (fg c . body) */
+;* (apply color :fg c body)) */
+;* */
+;* {*---------------------------------------------------------------------*} */
+;* {* bg ... *} */
+;* {*---------------------------------------------------------------------*} */
+;* (define (bg c . body) */
+;* (apply color :bg c body)) */
+;* */
+;*---------------------------------------------------------------------*/
+;* colors ... */
+;*---------------------------------------------------------------------*/
+(define (green body)
+ (fg "darkgreen" body))
+(define (red body)
+ (fg "red" body))
+(define (blue body)
+ (bold (fg "darkblue" body)))
+(define (magenta body)
+ (fg "darkmagenta" body))
+(define (orange body)
+ (fg "darkorange" body))
+
+;*---------------------------------------------------------------------*/
+;* em ... */
+;*---------------------------------------------------------------------*/
+(define (em body)
+ (bold (magenta body)))
+
+;*---------------------------------------------------------------------*/
+;* st ... */
+;*---------------------------------------------------------------------*/
+(define (st body)
+ (sf (red body)))
+
+;*---------------------------------------------------------------------*/
+;* citem ... */
+;*---------------------------------------------------------------------*/
+(define-markup (citem #!rest opt #!key (color "black") (shape (math 'bullet)))
+ (item (list (fg color shape) " " (the-body opt))))
+
+;*---------------------------------------------------------------------*/
+;* skribe-prgm ... */
+;*---------------------------------------------------------------------*/
+(define-markup (skribe-prgm #!rest opt #!key file definition)
+ (cond
+ ((and definition file)
+ (font :size -4
+ (color :bg "#ccffcc" (prog (source :language skribe
+ :file file
+ :definition definition)))))
+ (file
+ (font :size -4
+ (color :bg "#ccffcc" (prog (source :language skribe
+ :file file)))))
+ (else
+ (font :size -4
+ (color :bg "#ccffcc" (prog (source :language skribe
+ (the-body opt))))))))