Guile Present

(present)

Overview

Guile-Present is a library to create presentations in Guile Scheme. It has three parts:

For examples of a parser, see (present org-mode).

Renderers are built on a pure-functional layout algorithm (see (present fold)).

One renderer (see presentation->svg) produces a single layered SVG.

Guile-Present also includes a command line tool (see org-to-pdf-presentation) to render an Org Mode file directly into a PDF suitable for presenting with a PDF viewer.

See Summary, for more information on Org Mode.

Presentation language

The presentation language defined in Guile-Present is a dialect of SXML. See http://ssax.sourceforge.net/ for more information on SXML.

The elements defined in the presentation language are as follows:

presentation

The top-level node. No attributes defined; may contain slide elements.

slide

Defines a slide. May contain attributes title and level, where level is an integer indicating the level of subsectioning.

title

A title, as might appear on a title slide. May contain text elements, which will normally be rendered on a separate lines.

header

A header line. May contain text elements, which will normally be rendered on a separate lines.

image

An image. May not contain subelements. Will open an image named the current value of the image-filename parameter, at the size image-width and image-height.

p

A set of text lines. No attributes defined. Each child text element will normally be rendered on a separate line.

ul

An unordered list. May only contain li elements. No attributes defined.

li

A list element. May contain p or ul elements. No attributes defined.

For example, the following example shows a presentation with one title slide and one body slide:

 (presentation
  (slide (@ (title "title-slide") (level 0))
         (title "Presentation language"))
  (slide (@ (title "Summary") (level 1))
         (header "Summary")
         (p "The presentation language"
            "is not particularly expressive.")
         (ul
          (li (p "Few elements defined")
              (ul (li (p "This will change with time"))))
          (li "Unclear specification"))
         (p "However, it is what we have.")))
 

Usage