fold, xml, presentations

Good afternoon, world. I have a bit to write about; we'll see how much of it manages to escape my brain into this page.

fold, xml, presentations

To recap a bit, I've been trying to avoid powerpoint-style applications, especially OpenOffice. OpenOffice is good for some people but it hurts my brain.

After poking about for a while, I decided to make presentations with SVG graphics, with each layer being one slide. I made presentations in Inkscape, and then wrote a tool (in Guile) to split the SVG file into layers, and then make a PDF out of that.

However, the process was not satisfying: it was too hard to enter in the text, and I always had to think about alignment. I wanted to be able to make an SVG presentation programmatically. It turns out that the what has become the standard Scheme XML manipulation combinator, pre-post-order, is not well-suited to performing layout operations.

This is because pre-post-order effectively maps across XML child elements instead of single-threadedly passing a layout seed through the operation. So I started looking how to recast pre-post-order as an extended tree fold (foldts from Oleg's SSAX paper). I wrote up the results in a paper that I submitted to SFP 2007, Applications of Fold to XML Transformation. We'll see if it gets accepted, it's a bit of an odd endeavor.

Of course, the next time I gave a presentation, I would have to figure out how to use the algorithms that I had worked on, otherwise it would be wasted effort. The occasion was the Jornades del Programari Lliure last week in Girona. Following a recommendation by a kind commenter, I decided to write the presentation in Emacs' Org Mode, then transform its XML export into the presentation language that I defined, then use the algorithms that I presented to transform that into SVG. After the presentation, I cleaned up the scripts I had, and packaged them into a library that I just released, Guile-Present.

Guile-Present is OK. You can write your presentation in Emacs, with all of the fluidity that comes with plain text:

# -*- mode: org; fill-column: 34 -*-
#+TITLE: Medios de (re)producción: GStreamer

* Plan

GStreamer: Multimedia para todos Qué es lo que
estamos haciendo

* GStreamer

** ¿Qué es GStreamer?

 * Una librería multimedia y un
   conjunto de plugins

Then, just run org-to-pdf-presentation on your org file, and you have a PDF ready to present (example; example in english). The PDF output is clean but not pretty. I hope to improve that in the future (read: the next time I give a presentation). I also need to fix some rendering bugs in the HTML documentation, but time is with me these days.

7 responses

  1. Tobias says:

    The Link to the last PDF is wrong. Its jornadespl-en.pdf and not jornadaspl-en.pdf.

  2. dr d says:

    and how can this be extended to include LaTeXy like formulas?

  3. yosch says:

    Neat approach. I like using or for the added eye-candy and usability effects.

  4. Marius Gedminas says:

    Have you ever tried MagicPoint?

  5. Rob says:

    Thanks for the links yosch! Keyjnote looks awesome.

  6. wingo says:

    Tobias: links fixed, thanks :)

  7. phineas gage says:

    Maybe I just don't see it, but what does this have to do with sailing?

Comments are closed.