Animo builds both dynamic HTML and static PDF presentations using typst.
The short tour of Animo gives a quick impression of its capabilities.
A minimal single-slide deck with a single animation looks like this:
#import "@preview/animo:0.1.1": *
#show: animo.with(width: 16cm, height: 9cm, margin: 1cm)
#slide(animation: {
import anim: *
sub(reveal("punchline"))
})[
= Hello
This is static text shown right away.
#tag("punchline")[This will only appear on the next subslide.]
]
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 and revealing 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.
Examples
| Deck | Shows | Open |
|---|---|---|
hello.typ |
The smallest deck that animates: one slide, one reveal. | HTML · PDF · handouts |
motion.typ |
Moving and scaling, and the four timing keywords. | HTML · PDF · handouts |
content.typ |
Content replaced, removed and restyled, inside a region. | HTML · PDF · handouts |
pan.typ |
A canvas larger than the slide, travelled over by panning. | HTML · PDF · handouts |
numbering.typ |
Slide and subslide numbers, and a progress bar. | HTML · PDF · handouts |
tour.typ |
Every feature of Animo in one deck. | HTML · PDF · handouts |
A deck opens in a new tab and is stepped through with the arrow keys or a click.
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
- Presentation Author Guide, which covers everything from writing a slide up to what a deck costs to compile
- Reference, every public name and its arguments
- Animo Development Guide, for changing Animo itself
- planning/design.md, the specification, including the reasoning behind every decision, and planning/findings.md, the verified typst and browser behaviour it rests on
- CONTRIBUTING.md
License
Apache-2.0. See LICENSES/Apache-2.0.txt.