;*=====================================================================*/ ;* 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 "∑<sub><font size='-2'>i=1</font></sub><sup><font size='-2'>i=1</font></sup> = ∫<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]))])))) */ )