Contributing¶
ODP output¶
Decktile has two ODP output modes. Neither is complete, but the screenshot approach is production-ready.
--image-odp(production-ready): Renders each slide to PNG via weasyprint + pdftoppm, embeds in an ODP file. Always pixel-perfect. No native text selection or editing, but perfect for LibreOffice Draw → Impress copy-paste workflow.--odp(work in progress): Programmatic renderer that builds native ODF elements. Renders structurally but layout positioning doesn’t match HTML yet.
The recommended workflow for editable slides:
pdm run decktile slides.md --pdf
# Open in LibreOffice Draw → Select All → Copy → Paste into LibreOffice Impress
Areas that need help with the programmatic ODP renderer:
Layout fidelity: Frame positions estimated from content length
Headless bounding-box: Render in Chrome, extract exact positions via JS
Font rendering: ODP uses system fonts, CSS font stacks need mapping
Complex layouts: Nested grids, two-col with images, compare layout
Obsidian extension¶
An Obsidian plugin that renders .md files as decktile presentations directly
in the editor. Key features: live preview panel, build-on-save, presenter
mode in a separate pane. Requires familiarity with the Obsidian plugin API
and TypeScript.
Setup¶
pdm install # core + HTML/PDF/ODP
pdm install -G plot # + seaborn/matplotlib
pdm run decktile slides.md
seaborn support (done)¶
```seaborn fenced blocks execute Python in-process and render as inline SVG.
Requires pdm install -G plot. See src/decktile/render/seaborn.py and README.md.
Diagrams (done)¶
```pdg fenced blocks render with predictygraph,
a Python dependency (no system tools). See src/decktile/render/pdg.py and README.md.
mermaid support (done)¶
```mermaid fenced blocks render via the mmdc Python package to SVG (HTML)
and PDF (ODP). The mmdc package is bundled as a dependency. See
src/decktile/render/ir.py mermaid handling and README.md.