Taliesin
Your .tmd files become a live post, a book, or a website, and only the block you changed re-renders.
When you save, the page does not reload. The scene below keeps turning where you left it, and the Python kernel keeps the variables it has already computed.
This scene is live WebGL. Drag to orbit it. It is the {js} cell above plus a shared
makeScene3D helper that {{< include >}} pulls in from _includes/three-scene.tmd,
which loads Three.js from esm.sh, so the scene needs network access. More of them, and
the source, on the showcase.
What it builds
One .tmd file is a post. A directory with a _site.yml is a website, and a
chapters: list in it makes a book. They share one renderer, so what you learn for one
applies to the others.
Blog posts & papers
Prose, math, figures, citations, and cross-references, with executable Python cells and live interactive graphics.
Multi-chapter books
A sidebar, numbered chapters, cross-chapter references, and full-text search. The User Guide is a Taliesin book.
Multi-page websites
Navbar, footer, OpenGraph, Cmd-K search, and opt-in post listings with an Atom feed per
dated listing. This site is a Taliesin website, built by the same build you run.
Executed code
A {python} cell runs against a warm kernel. Change a parameter and only
that cell (and the figure it produced) re-renders. The rest of the page does
not move, and the kernel stays warm between saves.
Figure 1 is the output of a cell in this page’s source, executed by the same build
that wrote the HTML you are reading.
= 6
=
, =
Editing and publishing
Click to source
Ctrl-click (Cmd-click on Mac) anything in the preview and your editor jumps to the line
it came from, even across files pulled in with {{< include >}}. The .tmd stays the
only place you edit.
Works offline
Fonts, KaTeX and its font files, syntax highlighting and the vendored plotting libraries
are all compiled into the binary and written into the page. Taliesin itself never fetches
anything at runtime, so a built page renders the same offline. Anything you import()
from a {js} cell is your own network call, which is why the scene above says so when it
cannot reach esm.sh.
Static output
One command turns a document into a single HTML file, or a portable folder with its local assets copied alongside. Point it at a directory instead and you get a whole site or book as static files, with no server runtime and nothing to reproduce.
This page and the documentation book are built by Taliesin
from plain .tmd files in one repository.