This repo includes render_markdown.py, which renders Markdown files from markdown/ into HTML pages that use index.css (matching the look of index.html).
It also includes page.css, which provides small site-wide overrides (font size, subtitle spacing, and a white background).
index.css references Latin Modern font files under ./fonts/. These are vendored from the latex-css project so the site doesn’t fall back to system serif fonts.
This repo also includes TeX Gyre Termes under fonts/tex-gyre-termes/ (licensed under the GUST Font License). page.css sets TeX Gyre Termes as the preferred body font.
uv run python render_markdown.py- Input:
markdown/**/*.md - Output: repo root (mirrors paths), e.g.
markdown/foo.md→foo.html - Title: first
# Headingin the markdown (fallback: filename) - Body: the first
# Headingis used as the page title and removed from the body (use--keep-title-headingto keep it) - Frontmatter (optional): set
title,author, and/ordatein the markdown and it will be used for the page header.authoris used in the "Last updated … by …" subtitle. - Optional extensions:
uv run python render_markdown.py --extensions fenced_code,tablesGenerated pages include a small top nav with Home and About links pointing at index.html and about.html. The renderer computes these as relative links, so they work from nested pages too.
uv run python render_markdown.py --keep-title-headingPut this at the very top of your markdown file:
---
date: 2026-01-01
---
You can also override the title (instead of using the first # Heading):
---
title: The best year of my life
author: Dylan Bowman
date: 2026-01-01
---