Thanks to visit codestin.com
Credit goes to github.com

Skip to content

✨ Convert Markdown into stunning PDFs with beautiful themes

License

Notifications You must be signed in to change notification settings

hyperb1iss/silkprint

Repository files navigation


💎 silkprint

Transform Markdown into stunning, publication-ready PDFs

40 Themes Syntax Highlighting PDF Output

Quick StartFeaturesTheme GalleryCLI ReferenceCustom Themes


⚡ Quick Start

# 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

💎 Features

  • 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

🎨 Theme Gallery

SilkPrint ships with 40 themes across 8 families. Every theme controls typography, colors, syntax highlighting, spacing, and component styling.

Light Themes

Silk Light Sakura
silk-light — Clean serif elegance sakura — Cherry blossom pink

Dark Themes

SilkCircuit Neon Nord
silkcircuit-neon — Electric purple + cyan nord — Arctic blue-grey calm
Dracula Catppuccin Mocha
dracula — Dark purple elegance catppuccin-mocha — Warm soothing pastels

All 40 Themes

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.

🔮 CLI Reference

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

Examples

# 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

Front Matter

---
title: My Document
subtitle: A Detailed Analysis
author: Jane Doe
date: 2025-06-15
theme: nord
toc: true
paper: letter
---

🪄 Custom Themes

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 types

Use it: silkprint document.md --theme ./my-theme.toml

Full schema reference: see CLAUDE.md or any built-in theme in themes/.

🏗️ Architecture

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

🧪 Development

cargo check            # Type-check
cargo clippy           # Lint (pedantic)
cargo test             # Run all tests
cargo run -- --help    # CLI help

Requires Rust 1.85+ (edition 2024).


Star on GitHub

✦ Built with obsession by Hyperbliss Technologies

Releases

No releases published

Sponsor this project

  •  

Packages

No packages published

Contributors 2

  •  
  •