Universe

Package on Typst Universe Latest release on GitHub Supported typst release Documentation site Status of the test suite Status of the pre-commit hooks Status of the documentation build Status of the release build Status of the weekly probes Apache-2.0 license

Build dynamic HTML and static PDF presentations using typst from a single source.

The short tour of Animo gives a quick impression of its capabilities.

A minimal deck with one slide and one animation looks like this:

#import "@preview/animo:0.2.0": *
#show: animo.with(width: 16cm, height: 9cm, margin: 1cm)

#slide(animation: {
  import anim: *
  sub(reveal("punchline"))
})[
  What makes a good punchline?

  #tag("punchline")[Timing.]
]

The body of a slide defines the contents and tags the parts an animation may address. The animation argument says when and how tagged parts move or change.

Key features:

  • One source file compiles to an animated HTML deck, a presentation PDF and a handout PDF.
  • The HTML presentation comes with a runtime that supports visual effects, such as moving, scaling, fading, replacing, resetting, hiding, revealing and morphing content.
  • Slides are drawn on a canvas that can be larger than the slide, so the deck can pan over it.
  • Plain typst inside a slide: no template machinery and no theme to learn.
  • Every position in a deck is a URL, so a deep link lands on a subslide.
  • Content and animation stay separate, so a slide body reads as a document.
  • Extensive validation of HTML outputs against different browser engines with playwright.

Demos

Each demo deck shows, slide by slide, features that the Presentation Author Guide explains. Most demo decks accompany one page of the guide, and their title slide links to that page.

Deck Shows Open
hello.typ The smallest deck that animates: one slide, one reveal. HTML · PDF · handouts
slides.typ Margins, backgrounds, overlays and slide transitions. HTML · PDF · handouts
tags.typ Where a tag may sit, and how it starts out. HTML · PDF · handouts
continuous.typ Moving and scaling, and the four timing keywords. HTML · PDF · handouts
structural.typ Content replaced, removed, restyled and reset. HTML · PDF · handouts
viewport.typ A canvas larger than the slide, travelled over by panning. HTML · PDF · handouts
regions.typ Areas that reflow around a change inside a fixed footprint. HTML · PDF · handouts
morph.typ Paragraphs, equations and shapes that morph as they change. HTML · PDF · handouts
numbering.typ Slide and subslide numbers, and a progress bar. HTML · PDF · handouts
handouts.typ The states the handout keeps, and why to keep more. HTML · PDF · handouts
tour.typ Every feature of Animo in one deck. HTML · PDF · handouts

A deck opens in a new tab. Step through the HTML version with the arrow keys or a click. Most decks import the colors, the title slide, the styles and the slide wrapper they share from the auxiliary file _common.typ, so a copy of such a deck needs _common.typ in the same directory.

Animo exports its logo in two forms. animo-logo draws the logo alone, as an image in any color. made-with-animo draws a badge that places the logo beside the words “made with Animo”. Both take the color of the surrounding text, unless their fill: argument names a color.

If Animo helped you make a presentation, you are welcome to show the badge on your deck. Showing it is optional, and a corner of the title slide is a good place for it:

#slide[
  = A Talk About Something
  #place(bottom + right, made-with-animo(height: 1cm))
]

The title slide of each demo deck that links to the guide shows the badge in white.

Status

Animo is currently a proof of concept. API stability is not strictly guaranteed before a 1.0 release, but no major breaking changes are planned. Despite the version number, it already has enough features to make a complete presentation, with a unique approach to animations.

Where to Go Next

License

Apache-2.0. See LICENSES/Apache-2.0.txt.