Content
This document explains the content format, markdown extensions and page structure for novem documents.
AI-assisted, human-approvednovem uses AI to review and keep our documentation up to date.
Content file
The content file /v1/vis/docs/<id>/content expects information to be
supplied in novem markdown with document-specific
extensions. For the endpoints surrounding the content file (config, assets,
sharing, and output formats) see the document API.
Frontmatter
Documents support YAML frontmatter at the beginning of the content file.
Frontmatter is enclosed between --- delimiters and supplies document
metadata. It does not create a page.
---
title: Quarterly Performance Report
author: Analytics Team
date: 2026-09-30
---
Identifier keys are available as $key in text and --doc-meta-key in CSS.
Common fields include title, author, date, and subtitle. Use
size: a4, letter, legal, or custom millimetre dimensions; margins
accepts a uniform value such as 20mm or spacing tokens such as t4 b2 x3. Presentation mode is 16:9 and rejects
size. Select the rendering mode and theme through the config endpoints.
Write {{ frontpage }} to display a cover from frontmatter. A bare
frontpage uses title, subtitle, author, and date; explicit fields override them.
Standard markdown
Novem documents support standard markdown including headings, paragraphs, bold, italic, lists, code blocks, blockquotes, tables and thematic breaks.
In addition, novem extends standard markdown with:
_underline_— underlines text (note:_is underline, not italic)*italic*— only*produces italic**bold**— standard bold~~strikethrough~~— strikethrough^superscript^— superscript~subscript~— subscript (single~, not~~)`inline code`— inline code
Pages
A document's content starts with a page declaration: {{ frontpage }} for
a cover, {{ tocpage }} for a contents page, or {{ page }}. Each {{ page }} starts a new page with its own
orientation and columns. Frontmatter never creates a page. Content before
the first declaration is ignored, with one exception: {{ header }} and
{{ footer }} blocks with cascade: true, which become the document's
running bands. Ignored headings and embeds do not enter the contents or the
page references.
A source with no page declaration at all is rendered as a single page laid out from the frontmatter's page keys and autopaginated across sheets. Mail keeps its single flow and does not require a page declaration.
{{ page }}
# First page content
{{ page
orientation: landscape
cols: 2
}}
# Second page content (landscape, 2 columns)
{{ page }}
# Third page content (default layout)
See Pages for every page option.
Heading config
Headings can carry layout configuration using a trailing {key:val} syntax:
## Regional Performance {colspan:all; fg: blue-700}
This attaches metadata to the heading without displaying the config in the
rendered output. Configuration uses key:value pairs separated by commas, semicolons, or
newlines.
Blocks
Blocks embed visuals and control layout. The grammar is on the Blocks page; one page per block:
- Blocks — grammar and the styling keys every block shares
- Pages — pages, covers, contents, running headers and footers
- Layout — page columns and
colspan: all,cols/col,box, layout pages witharea: - Tables — the table block and its in-table charts
- KPI tiles — headline figures as tiles
- Visualisation — embed novem plots, grids and documents
- Images — assets, fill, fit and bleed
- Page references — live page numbers of headings
- Variables — inline live values
- Spans — footnotes, references and colour spans
- Math and equations — enable KaTeX and write inline or display equations
- Paragraph — styled text blocks
- Callout — info, warning and error callout boxes
- HTML — sanitized HTML