.slides.html

orz-slides — layouts & syntax

A reference for the deck format: structure templates, a small column/row layout grammar, regions, floats, and per-slide options. Part of the orz editable-document family.

You don't have to learn any of this. The editor's layout picker covers the common cases with one click, and for anything beyond that the fastest path is to ask an AI agent to build or restructure your deck. Point it at the bundled orz-slides agent skill (orz-slides-skills/SKILL.md) and describe what you want — “make this a two-column slide with a figure on the right,” “turn these notes into a section divider then three bullet slides.” This page is the reference the agent (and curious humans) can draw on; skim it, don't memorize it.

The quick way: the layout picker

In the editor, open the layout button (the grid icon) and pick a layout. On a blank slide it drops the skeleton straight in; on a slide that already has content it inserts the new layout and tucks your old content into a comment so you can copy-paste it into place. The picker offers the most common layouts:

Title · Section · Closing

Cover, divider, and thank-you slides — large centered or left-aligned type, no regions to fill.

Bullets · Outline

A titled slide with a list, or an agenda. The everyday content slide.

Two columns · Main + side · Three columns · Two rows · Quad

Multi-region layouts. Each region is filled with a <!-- @name --> marker.

Everything below is what those skeletons expand to — reach for it when you want a custom split, a floating figure, a background colour, or a template variant.

Deck settings

One <!-- deck --> block at the very top sets defaults for the whole deck.

<!-- deck
title: My presentation
theme: paper            # paper · executive · chalk · sage · neon · poppy · architect …
ratio: 16:9             # or 4:3
author: Dr. Yu Wang
footer: My talk · 2026  # shown on normal slides (not title/closing)
transition: fade        # reveal.js transition: none · fade · slide · convex …
-->

Structure templates

Templates are ready-made slides with fixed structure and several visual variants (add v=2, v=3, …). The first # heading is the main line, ## the subtitle, and any remaining text is the meta line.

TemplateVariantsFor
titlev=1–6Cover / title slide
sectionv=1–4Section divider
outlinev=1–3Agenda / table of contents (a list)
closingv=1–3Thank-you / questions
<!-- slide template=title v=2 -->
# Controlled Polymerization
## RAFT vs ATRP
**Dr. Yu Wang** · 2026

<!-- slide template=section -->
# Part II — Methods

<!-- slide template=outline -->
## Outline
1. Introduction
2. Methods
3. Results

Layout presets & regions

A normal slide’s first ## heading becomes its title. Add a preset to split the body into named regions; fill each region with a <!-- @name --> marker. Text before the first marker goes into the primary region.

PresetRegionsDefault ratio
(none)single body
2colleft right1/1
3colleft mid right1/1/1
2rowtop bottom1/1
main-sidemain side2/1
quadtl tr bl br2×2

Add a ratio after the preset, e.g. 2col 3/2 or main-side 1/2.

<!-- slide 2col 3/2 -->
## Results

<!-- @left -->
- Accuracy 92%
- Precision 88%

<!-- @right -->
{{smiles C(=S)(SC)SC}}

Custom splits (advanced)

For anything the presets don’t cover, write the split directly. col and row take a track list (numbers become fr units; auto, %, and px also work) and a { … } list of regions or nested splits — to any depth.

<!-- slide row auto/1 { header; col 1/1 { a; b } } -->
## Dashboard

<!-- @header -->
Top banner across the full width.

<!-- @a -->
Left metric.

<!-- @b -->
Right metric.

Floats place a free box anywhere over the slide (outside the grid):

<!-- @float left=58% top=22% w=36% h=44% z=2 -->
> **Key takeaway:** narrow PDI across all methods.

Speaker notes never appear on the slide:

<!-- @notes -->
Remember to mention the control experiment.

Worked examples

Real splits and what they produce. Each box mirrors the slide’s region grid; the source beside it is exactly what you write. (Drawn from the deck’s own layout test set.)

Header band over two columns

head
a
b
<!-- slide row auto/1 { head; col 1/1 { a; b } } -->
## Dashboard
<!-- @head -->
Full-width banner.
<!-- @a -->
Cell A
<!-- @b -->
Cell B

Three columns, the middle one split into two rows

c1
c2a
c2b
c3
<!-- slide col 1/1/1 { c1; row 1/1 { c2a; c2b }; c3 } -->
## Comparison
<!-- @c1 -->
Column one.
<!-- @c2a -->
Middle top.
<!-- @c2b -->
Middle bottom.
<!-- @c3 -->
Column three.

Sidebar + a main column with its own header

side
mainHead
mainBody
<!-- slide col 1/2 { side; row auto/1 { mainHead; mainBody } } -->
## Topic
<!-- @side -->
Nav / notes.
<!-- @mainHead -->
Main header.
<!-- @mainBody -->
Main body fills the rest.

A floating figure over two columns

left
right
float
<!-- slide 2col -->
## Result
<!-- @left -->
Background content.
<!-- @right -->
More content.
<!-- @float left=58% top=22% w=36% h=44% -->
> **Key takeaway** sits on top of the grid.

Per-slide options

Add these to any <!-- slide … --> marker.

OptionMeaning
bg=#0b3d2eSlide background colour or gradient
t=fadeTransition for this slide
fit=scrollOverflow handling: fit (default), scroll, off
stepReveal the slide’s items one click at a time
class=… / id=…Custom class or id on the slide
v=2Template variant (with template=)
<!-- slide 2col bg=#0b3d2e t=fade step -->

Footers & overflow

Footers. The deck’s footer: setting shows at the bottom of every normal slide (title, section, and closing slides have none). Override it on one slide with a <!-- @footer --> region:

<!-- slide -->
## A slide with its own footer
Body content.
<!-- @footer -->
Custom footer — this slide only

Overflow. By default a slide’s content scales down to fit so it never spills off the edge. Change that per slide with fit=:

OptionBehaviour
fit=fitDefault — auto-scale the content down to fit the slide
fit=scrollKeep full size; the slide scrolls if it overflows
fit=offNo scaling, no scroll — content may overflow (you size it yourself)

Rich content in any region

Region content is orz-markdown, so the full plugin set works right inside a slide — diagrams, charts, chemistry, QR codes, and math:

WriteGet
{{mermaid …}}Mermaid flowcharts & sequence diagrams
{{chart …}}Bar / line / pie charts
{{smiles …}}Chemical structures (SMILES)
{{qr …}}QR codes (click to enlarge)
$…$ · $$…$$KaTeX math (incl. mhchem)
{{youtube …}} · {{emoji …}}Video embeds & emoji

On dark themes (chalk, neon) diagrams and charts sit on a soft light panel so they stay legible.

Presenting

Speaker view — S

A second window with the current and next slide, your <!-- @notes --> speaker notes, and a clock.

Timer — T

An on-deck elapsed-time timer to keep pace, toggled right on the deck.

Step-reveal & fragments

Add step to a slide marker to reveal its items one click at a time, or mark any element with {{attrs[.fragment]}} for manual fragments.

Notes, numbers & ratio

<!-- @notes --> never shows on the slide; slide numbers appear while presenting; set ratio: 16:9 or 4:3 in the deck block.

Editing and in-place Save need a Chromium-based browser (Chrome or Edge). Presenting works in any modern browser.