Skip to content
andygill edited this page Sep 15, 2014 · 10 revisions

Story-board is a Haskell-DSL for presenting slides.

It is intended as a viable replacement for beamer, PowerPoint, and pandoc, but with stronger scripting ability.

Data types

Story Board is populated by a list of Slides.

Type Purpose Monad? Monoid Action
Slide a Layout slide content Monad Sequence
Deck a Deck of transparent layers Monad Sequence
Tile a Draw Rectangular Picture Functor Overlay
Mosaic a Piece together Tiles Applicative Sequence
Prose Words of Text - Append

A Slide is a monad for rendering the slide. You can think of a Slide as a state monad of a statically sized Mosaic, with commands to fill the spaces inside the Mosaic, so you can tell your story.

A Deck is a monad for layering transparencies into slides. Every slide has at least one Mosaic.

A Tile is a fixed-size piece of screen real-estate. A Tiles size can statically queried. When rendering, a Tile may fill a larger space than originally requested (padding).

A Mosaic is a layout of tiles around a cavity, using an algorithm modeled on the Tk/Tcl packer algorithm. A Mosaic is filled outside inwards, using the Applicative Functor or Monoid API. The Cavity, the space inside a Mosaic that is not filled yet, is stretched as needed. If you know the size of the final Mosaic, then the Cavity size can be statically determined.

Prose is a list of words, with optional markup annotations, like b, i, and fontSize.

Environments

Plugins:

  • Anything that uses blank-canvas (generates at Canvas) can be plugged into story-board.
  • This includes diagrams.
Clone this wiki locally