Slides from a Markdown file, in the browser
A deck is a document with breaks in it. Write the talk as Markdown, separate the slides with three dashes, and present it full-screen — or hand it over as a PDF, one landscape page per slide.
Writing the deck
# The problem
Nobody reads a 40-page document.
---
# The shape of a fix
- One idea per slide
- Diagrams where words get long
Anything Markdown does works on a slide: lists, tables, code with syntax highlighting, images, maths, and Mermaid diagrams. The slide shows exactly what the preview showed, because it is the rendered preview — the nodes are cloned rather than re-rendered, so nothing can drift between the two.
Presenting
Ctrl+K→ Present slides…→,SpaceorPage Downto advance;←orPage Upto go back;HomeandEndto jump to either end.Escleaves, and the cursor goes back where it was.
The overlay asks for full screen and carries on without it if the browser refuses — a deck that fills the window is still a deck. One slide is on screen at a time, at a readable width rather than stretched across a wide monitor.
Exporting the deck
Export in the toolbar → Slides as PDF gives one landscape A4 page per slide. Each slide is fitted to the page by aspect ratio and centred, so a two-line slide is not blown up to fill the sheet and a long one is not cut off at the bottom. Like the document export, it renders locally and forces light colours so the file is printable.
Why the split is on rendered rules, not on the text
Three dashes in Markdown are not always a slide break. They also underline a setext
heading, fence YAML front matter, and mean nothing at all inside a code block.
Splitting the source text would break all three. Markbeam splits on the horizontal
rules the renderer actually produced, so a --- inside a fenced block
stays part of your code sample — which is exactly what you would expect, and exactly
what the obvious implementation gets wrong.