Documentation

Everything you need to make SIGIL your own. This page is the map; the configuration examples are the copy-paste starting points, and the API contract is the frozen reference. Requirements and installation are in the README.

Anatomy of a reading page

Header — Site identity, language switching, and navigation live above the reading page.

Body — The reading column holds the title, paragraphs, quotations, and code. Its line length keeps long-form reading comfortable.

Sidenotes — Ordinary Markdown footnotes move into the margin on wide screens and remain endnotes on narrow screens. This diagram separates their role, not their actual mobile position.

Contents — The table of contents comes from the article's headings and is shown when enabled. It helps readers find their place without changing the text.

Footer — Credits and site metadata sit after the words. They close the page without becoming part of the article.

A component diagram, not a screenshot. Select a part to read its role; separate the parts to see their relationship.

Getting Started

SIGIL runs on Hugo ≥ 0.166 extended with no build step. Set your baseURL, pick a [params] block from the examples, and write posts in Markdown. Out of the box you get Latin typography, sidenotes, search, and dark mode; CJK needs the optional font subset (bash scripts/build-fonts.sh corpus) if you want it to render in real Plex rather than the system fallback.

Writing with the features

Each feature is opt-in per page, so nothing loads unless a post asks for it. In a post’s front matter:

math    = true   # KaTeX for $...$ and \(...\)
mermaid = true   # Mermaid diagrams from ```mermaid blocks
lightbox = true  # click-to-enlarge images

The typography sample shows all of this on one page — read it to see the result before writing your own.

API Reference

The theme’s public contract is frozen as of v0.9.0 — listed parameters will not be renamed or removed without a deprecation window. The API contract lists every site param, front-matter param, CSS hook, and extension point. Treat anything not listed there as internal, and safe to change without notice.