Markus

GitHub-flavored Markdown, plus a small vocabulary for layout intent.

Markus gallery

Every built-in directive, rendered from Markus source.

Every directive, live

This page is itself Markus. Each section is a real block from the 0.1 registry, followed by the source that produced it.

Callouts

Callout source
:::callout{kind="note" title="Note"}
Use a note for editorial guidance, not for warnings the reader must not miss.
:::

:::warning{title="Warning"}
`:::warning` is an alias for `:::callout{kind="warning"}`.
:::

Pull quote

The least obvious part of a system, its function or purpose, is often its most crucial determinant of the system’s behavior.

Donella Meadows · Thinking in Systems
Pull-quote source
:::pull-quote{attribution="Donella Meadows" source="Thinking in Systems" tone="primary"}
The least obvious part of a system, its function or purpose, is often its most crucial determinant of the system’s behavior.
:::

Inline attribute lists also work, which is handy when the quote is already a Markdown blockquote:

Measure what matters, then improve what you can.

Editorial principle

Card grid

Keep Markdown

Ordinary paragraphs, lists, tables, and code fences stay GFM. Directives wrap them.

Validate attributes

Each block has a Pydantic schema. Extra keys fail the build.

Render meaning

Output is semantic HTML: figure, aside, article, section — not anonymous divs.

:::feature-grid / :::feature-card are aliases for the same blocks.

Two-up

Conventional Markdown

Authors reach for raw HTML or a pile of images when the page needs structure.

Markus

Authors name the structure. The theme chooses a responsive layout, including print.

On a three-column track, ratio divides the row into proportional parts:

Primary (2 parts)

Wider column for the main narrative.

Aside (1 part)

Narrow column for a sidebar or counterpoint.

Lead (1 part)

Narrow setup or qualifier.

Body (2 parts)

Wider column when the second side should dominate.

Full width

span=full on a card spans every column in the grid.

Figure

Markus processing pipeline
Source becomes a directive AST, then semantic HTML. · Anthus AI

Details and aside

Progressive disclosure

Details are for material that is true but not on the main path: caveats, source listings, extra procedure.

Metric

Local round trip
12msp95-38%

Leaf directives use two colons and take no body: ::metric{value="12ms" unit="p95" label="Local round trip" delta="-38%"}.

Tabs

brew install anthus-markus
pip install anthus-markus

Step list

  1. 1. Author intent

    Choose semantic directives that declare structure without presentation classes.

  2. 2. Validate strictly

    Compile through strict Pydantic schemas that reject arbitrary CSS.

  3. 3. Render anywhere

    Generate accessible HTML, styled for web and print.

Video