Document Structure
Document Structure
Now that you've written a slide or two, let's step back and look at how a .tac file is organized as a whole. Understanding the overall shape makes everything else click into place.
Two regions, one rule
Every Tachyonn document is split into exactly two regions:
===
title: ... ← 1. Frontmatter: settings for the whole deck
author: ...
===
# Section ← 2. Body: the slides themselves
## Slide
content...The === fence marks the boundary. Everything above the closing fence configures the presentation; everything below it is content. That's the entire structural rule.
The frontmatter region
The frontmatter is optional, but you'll almost always want it — at minimum to set a title (which becomes your cover slide). It's a list of key: value pairs, one per line:
===
title: The Title
subtitle: A subtitle
author: Your Name
date: 2025-06-03
theme: scientific
===You can add comments inside the frontmatter with // or #:
===
title: My talk
// brand colors below
accent: #FF5F1F
===The full list of keys lives in Properties.
The body region
The body is a sequence of slides. Tachyonn decides where one slide ends and the next begins by watching for headings:
#→ a section slide (chapter divider)##→ a content slide###and deeper → headings inside the current slide
Everything between two headings belongs to the slide opened by the first heading. There are no explicit "end of slide" markers — the next heading is the signal.
A worked example
===
title: Annual Review
author: Team Atlas
===
# Results ← section divider
## Revenue ← content slide #1
Up 24% year over year.
## Customer growth ← content slide #2
- 1,200 new accounts
- 92% retention
# Next Year ← another section divider
## Goals ← content slide #3
Where we're headed.This produces six slides: the automatic cover, two section dividers, and three content slides — in exactly the order they appear in the file.
Why this matters
Because structure is driven entirely by headings, reorganizing your talk is just moving text around. Cut a ## block and paste it elsewhere, and you've moved a slide. Promote a ## to a #, and a slide becomes a section. There's no separate outline to keep in sync — the file is the outline.
Next, let's look more closely at the fundamental blocks that fill those slides.