Transform Markdown into stunning, publication-ready PDFs
Quick Start • Features • Theme Gallery • CLI Reference • Custom Themes
# Install from source (requires Rust 1.85+)
cargo install --path .
# Render a Markdown file to PDF
silkprint document.md
# Choose a theme
silkprint document.md --theme nord
# See all 40 themes
silkprint --list-themes- 40 built-in themes across 8 aesthetic families — from electric neon to academic serif
- Rich syntax highlighting for 20+ languages via TextMate grammars
- GitHub-style alerts — note, tip, important, warning, caution with themed icons
- Typst-native math — inline and display equations, matrices, Greek letters
- Tables with header styling, alternating row stripes, and column alignment
- YAML front matter — title, subtitle, author, date, theme, TOC control
- Title pages — auto-generated from front matter metadata
- Table of contents — configurable depth and styling
- Footnotes — Typst-native with auto-numbering and page placement
- Task lists, description lists, wikilinks, emoji shortcodes
- Print-safe themes validated with WCAG contrast checks
- Custom themes via TOML with 24 configurable sections
- Color emoji support via bundled Noto Color Emoji
SilkPrint ships with 40 themes across 8 families. Every theme controls typography, colors, syntax highlighting, spacing, and component styling.
| silk-light — Clean serif elegance | sakura — Cherry blossom pink |
| silkcircuit-neon — Electric purple + cyan | nord — Arctic blue-grey calm |
| dracula — Dark purple elegance | catppuccin-mocha — Warm soothing pastels |
| Family | Themes | Variants |
|---|---|---|
| Signature | silk-light, silk-dark, manuscript, monochrome | Light + Dark |
| SilkCircuit | silkcircuit-dawn, neon, vibrant, soft, glow | Dark + Dawn |
| Developer | nord, dracula, solarized-light/dark, catppuccin-latte/mocha, gruvbox-light/dark, tokyo-night, rose-pine | Mixed |
| Classic | academic, typewriter, newspaper, parchment | Light |
| Nature | forest, ocean, sunset, arctic, sakura | Mixed |
| Futuristic | cyberpunk, terminal, hologram, synthwave, matrix | Dark |
| Artistic | noir, candy, blueprint, witch | Mixed |
| Greyscale | greyscale-warm, greyscale-cool, high-contrast | Light |
Use silkprint --list-themes to see descriptions, variants, and print-safe status.
silkprint [OPTIONS] [INPUT]
Arguments:
[INPUT] Markdown file to render
Options:
-o, --output <PATH> Output path ("-" for stdout) [default: <input-stem>.pdf]
-t, --theme <NAME> Theme name or path to .toml file [default: silkcircuit-dawn]
-p, --paper <SIZE> Paper size: a4, letter, a5, legal [default: a4]
--list-themes List all available themes
--check Validate input + theme without rendering
--dump-typst Emit generated Typst markup instead of PDF
--open Open PDF in system viewer after rendering
--toc Force-enable table of contents
--no-toc Force-disable table of contents
--no-title-page Suppress title page
--font-dir <DIR> Additional font search directory
-v, --verbose... Increase verbosity (-v, -vv, -vvv)
-q, --quiet Suppress all output except errors
# Render with a specific theme and paper size
silkprint report.md --theme academic --paper letter -o report.pdf
# Preview — render and open in system viewer
silkprint notes.md --theme silk-light --open
# Validate without rendering (CI-friendly)
silkprint document.md --check
# Inspect generated Typst markup
silkprint document.md --dump-typst > output.typ
# Write PDF to stdout (piping)
silkprint document.md -o - | lpr---
title: My Document
subtitle: A Detailed Analysis
author: Jane Doe
date: 2025-06-15
theme: nord
toc: true
paper: letter
---Create a .toml file with 24 configurable sections:
[meta]
name = "My Theme"
version = "1"
variant = "light"
print_safe = true
[colors]
primary = "#4a5dbd"
background = "#ffffff"
text = "#1a1a2e"
[fonts]
heading = "Inter"
body = "Source Serif 4"
mono = "JetBrains Mono"
[text]
color = "text"
line_height = 1.4
paragraph_gap = "0.65em"
justification = "justify"
[headings]
color = "primary"
font = "heading"
[code_block]
background = "#f8f8fc"
border = "#e2e2e8"
[syntax]
background = "#f8f8fc"
keyword = { color = "#7c3aed", bold = true }
string = { color = "#059669", italic = true }
comment = { color = "#9ca3af", italic = true }
function = { color = "#2563eb", bold = true }
# ... 12 more token typesUse it: silkprint document.md --theme ./my-theme.toml
Full schema reference: see CLAUDE.md or any built-in theme in themes/.
Markdown → comrak AST → Typst markup → World trait compile → PDF
| Stage | Component | Technology |
|---|---|---|
| Parse | Markdown → AST | comrak 0.50 (GFM + extensions) |
| Theme | TOML → tokens | serde + two-level color resolution |
| Emit | AST → Typst | Custom emitter with theme-aware styling |
| Compile | Typst → PDF | typst 0.14 via World trait |
cargo check # Type-check
cargo clippy # Lint (pedantic)
cargo test # Run all tests
cargo run -- --help # CLI helpRequires Rust 1.85+ (edition 2024).
✦ Built with obsession by Hyperbliss Technologies ✦