Releases: jongalloway/MarpToPptx
MarpToPptx 1.2.0
MarpToPptx 1.2.0
MarpToPptx 1.2.0 adds managed deck update capabilities, expands diagram support, and strengthens release validation workflows.
Highlights
- Added re-entrant deck update support for previously exported managed decks.
- Added slide identity update workflow support to make deck refreshes safer and more predictable.
- Upgraded DiagramForge to 1.1.0.
- Expanded diagram fence support to cover newer conceptual layouts including funnel and radial.
- Updated diagram samples and regression coverage for the new conceptual layouts.
- Upgraded GitHub Actions workflow dependencies to current major versions.
Managed Deck Updates
This release introduces managed deck update flow improvements so exported decks can be refreshed in place instead of treated as one-shot output. That includes slide metadata support and update-oriented workflow coverage.
Diagram Support
MarpToPptx continues to render both mermaid and diagram fences through DiagramForge. With the DiagramForge 1.1.0 upgrade, conceptual layouts now include newer diagram types such as funnel and radial without requiring renderer integration changes.
Validation
This release was validated with:
- local Release smoke tests
- Open XML package validation
- contrast audit coverage on the selected stable subset
- PowerPoint open/save verification
- targeted regression coverage for new DiagramForge-backed conceptual layouts
Breaking Changes
- None intended.
1.1.0 Release -
MarpToPptx v1.1.0 — Release Notes
Date: March 13, 2026
NuGet: MarpToPptx 1.1.0
Install:
dotnet tool install --global MarpToPptxMarpToPptx is a .NET 10 CLI tool and library that compiles Marp-flavored Markdown into real, editable PowerPoint .pptx files — where every heading, bullet, table, and code block is a native, selectable PowerPoint shape.
v1.1.0 is the first official release of MarpToPptx. While earlier pre-releases (v0.1.0 through v1.0.1) were used during development, this release represents the first version we're broadly recommending for general use. These notes cover the full feature set as of v1.1.0.
Quick Start
No install needed — run directly with dnx:
dnx MarpToPptx slides.md -o slides.pptxOr install as a global .NET tool:
dotnet tool install --global MarpToPptx
marp2pptx slides.md -o slides.pptxApply a CSS theme:
marp2pptx slides.md --theme-css brand.css -o slides.pptxUse an existing PowerPoint template:
marp2pptx slides.md --template corporate.pptx -o slides.pptxFeatures
Slide Authoring
- Slide splitting on
---separators, matching Marp/Marpit conventions - YAML front matter for deck-level directives (theme, pagination, background, header, footer, language, headingDivider, transitions)
- HTML comment directives with carry-forward semantics and spot (
_-prefix) overrides for per-slide control - Presenter notes with rich inline formatting (bold, italic, code spans), packaged with correct Open XML relationships for PowerPoint compatibility
Content Elements
- Headings (all levels) with inline formatting spans
- Paragraphs with rich inline formatting: bold, italic, inline code, strikethrough, hyperlinks
- Ordered and unordered lists with preserved nesting depth
- Native PPTX tables with column alignment
- Images — local file embedding with aspect-ratio-aware placement
- Remote images via
--allow-remote-assetswith HTTP(S) fetching and commit-pinned URL support - Syntax-highlighted code blocks powered by TextMateSharp grammars
- Embedded audio (MP3, M4A)
- Embedded video
- Mermaid diagrams rendered as SVG via DiagramForge
- DiagramForge conceptual diagrams — flowchart, block, state, mindmap, matrix, and pyramid fences
Theming
- CSS-based Marp theme parsing — fonts, sizes, colors, padding, backgrounds, line-height, letter-spacing, text-transform, font-weight, heading style hierarchy, code block styling
- Class variants — CSS class-based style overrides (e.g.,
<!-- class: lead -->) - Community theme support — tested with Beam, Graph Paper, Wave, Dracula, and Gaia-inspired themes
PowerPoint Templates
- Template reuse —
--templatecopies masters, layouts, and themes from an existing.pptx - Layout selection — target named template layouts from Markdown via
layoutfront matter orlayout/_layoutdirectives - Template slide cloning —
Template[N]syntax targets specific authored template slides (e.g., branded title slides) - Placeholder-based content mapping — content flows into title and body placeholders from template layouts
- Template slides suppress theme/class/background/header/footer styling so the template design dominates
Directives
| Directive | Scope | Description |
|---|---|---|
theme |
Global | Theme name for CSS class-variant lookup |
paginate |
Global / Local / Spot | Enable slide number rendering |
class |
Global / Local / Spot | CSS class for style variants |
backgroundColor |
Global / Local / Spot | Solid background fill color |
backgroundImage |
Global / Local / Spot | Background image URL |
backgroundSize |
Global / Local / Spot | Background sizing (cover, contain, etc.) |
header |
Global / Local / Spot | Repeated header text |
footer |
Global / Local / Spot | Repeated footer text |
headingDivider |
Global | Auto-split slides before headings at/above a level (1–6) |
lang |
Global | BCP-47 language tag written to PPTX metadata |
layout / _layout |
Local / Spot | Select a named template layout or Template[N] |
style |
Global | Inline CSS merged with --theme-css |
transition |
Global / Local / Spot | Slide transition (fade, push, wipe, cut, cover, pull, random-bar, morph) with direction and duration |
Output Quality
- Open XML SDK validated — every generated package passes
DocumentFormat.OpenXmlvalidation - PowerPoint compatibility tested — output opens without repair prompts in PowerPoint desktop
- LibreOffice Impress verified — release gate CI imports and re-exports every sample deck
- WCAG contrast auditing — built-in contrast auditor checks text-to-background contrast ratios
CLI
| Option | Description |
|---|---|
<input.md> |
Input Marp Markdown file |
-o, --output |
Output .pptx file path |
--template |
PowerPoint template to copy masters and layouts from |
--theme-css |
CSS file for Marp theme styling |
--allow-remote-assets |
Enable HTTP(S) image fetching |
-h, --help |
Show help |
Platform Support
- Runs anywhere .NET 10 runs: Linux, Windows, macOS
- CI tested on Ubuntu (build, test, pack, smoke tests)
- PowerPoint desktop compatibility verified on Windows
Sample Decks
The samples/ directory includes 10 sample decks plus 5 community theme fixtures:
| Sample | Coverage |
|---|---|
01-minimal.md |
Slide splitting, headings, paragraphs, lists |
02-directives.md |
Front matter, backgrounds, header/footer, pagination |
03-theme-css.md |
Theme parsing: fonts, colors, padding, backgrounds, code styles |
04-content-coverage.md |
Images, syntax-highlighted code, audio, video, tables |
05-compatibility-gaps.md |
Edge cases, unsupported features, regression checks |
06-remote-assets.md |
HTTP(S) image fetching with commit-pinned URLs |
07-presenter-notes.md |
Notes packaging, mixed directive comments and notes |
08-showcase.md |
Speaker-style showcase with companion CSS and SVG assets |
09-diagrams.md |
Mermaid + DiagramForge diagrams |
10-transitions.md |
Slide transitions |
Key Dependencies
| Package | Version |
|---|---|
| DocumentFormat.OpenXml | 3.4.1 |
| Markdig | 1.1.1 |
| TextMateSharp + Grammars | 2.0.3 |
| DiagramForge | 1.0.0 |
Known Limitations
- Inline emphasis and hyperlinks in body text are rendered but link click-through is flattened in some contexts
- Extended Marpit image syntax (
, filters, split backgrounds) is not supported — use directives for backgrounds - Fragmented/incremental list reveals are not supported
sizedirective, math (KaTeX/MathJax), emoji shortcodes, andfit/auto-scaling are not implemented- Only
---is recognized as a slide separator (not***,___, or- - -) - Slide size is fixed at 16:9
- Tables use editable text fallback rather than full PPTX table styling
Links
- Repository: https://github.com/jongalloway/MarpToPptx
- NuGet: https://www.nuget.org/packages/MarpToPptx
- Marp ecosystem: https://marp.app/
- DiagramForge: https://github.com/jongalloway/DiagramForge
- Documentation:
Full Changelog: v0.2.0...v1.1.0
v0.2.0
🎨 Richer Marp theme support: expanded CSS mapping for backgrounds, typography, and code styling.
🧮 Native table rendering: Markdown tables now export as real editable PPTX tables instead of fallback text.
🌈 Better code blocks: syntax highlighting is now supported in generated slides.
🖼️ Stronger asset handling: support for remote assets plus more image formats.
🧭 Smarter slide layout mapping: content is matched more intelligently to PPTX layouts and template placeholders.
🎬 Embedded media support: MP4 video and audio now embed directly in the presentation.
📝 Better presentation polish: presenter notes, headers, footers, and slide numbers are now exported.
🔗 Richer text output: inline Markdown formatting and clickable hyperlinks now render as native rich text runs.
✅ More confidence in output quality: added Open XML validation tooling, golden package tests, and SVG background regression coverage.
📚 Better project guidance: added Open XML 3.4.1 audit documentation and related compatibility/reference material.
What's Changed
- Add OpenXmlValidator project by @jongalloway in #30
- Add golden package tests for PPTX rendering and SVG backgrounds by @jongalloway in #31
- Add Open XML 3.4.1 presentation audit documentation by @jongalloway in #33
- Expand Marp theme CSS mapping: background, typography, and code properties by @Copilot in #34
- Add native PPTX table generation from Markdown tables by @Copilot in #35
- Add syntax highlighting for code blocks by @Copilot in #45
- Support remote assets and additional image formats by @Copilot in #46
- Map slide content intelligently to multiple PPTX layouts and template placeholders by @Copilot in #47
- Add embedded MP4 video support to PPTX output by @Copilot in #48
- Support presenter notes export in generated PPTX files by @Copilot in #49
- Add native rich text runs and clickable hyperlinks for inline Markdown formatting by @Copilot in #50
- Add native header/footer/slide numbers and embedded audio support by @Copilot in #51
- Fix media embedding by @jongalloway in #52
Full Changelog: v0.1.1...v0.2.0
v0.1.1
MarpToPptx v0.1.1-alpha
This is the first GitHub release for MarpToPptx, published as an early alpha.
MarpToPptx is a .NET 10 CLI and library for converting Marp-flavored Markdown into editable PowerPoint presentations. This release establishes the first public tool distribution, the initial rendering pipeline, and the first round of PowerPoint compatibility hardening.
Alpha Status
This is an early preview release intended for experimentation, validation, and feedback.
What that means in practice:
- The core conversion flow is working and publicly installable.
- PowerPoint compatibility has been tested and improved significantly.
- Some Marp and PPTX features are still incomplete or intentionally conservative.
- Output quality and feature coverage will continue to evolve before
1.0.
Highlights
Public CLI Distribution
You can now run MarpToPptx as a published .NET tool.
Quickest option with dnx:
dnx MarpToPptx sample.md -o sample.pptxOr install globally:
dotnet tool install --global MarpToPptx
marp2pptx sample.md -o sample.pptxInitial Marp-to-PPTX Pipeline
This release includes the first end-to-end implementation for:
- front matter parsing
- slide splitting on
--- - semantic slide model generation
- theme parsing foundations
- PPTX rendering to editable PowerPoint output
Editable PowerPoint Output
Generated presentations are designed to remain editable in PowerPoint rather than being flattened into images.
Current supported content includes:
- headings
- paragraphs
- bullet lists
- ordered lists as editable text
- images
- code blocks
- basic background color and background image directives
PowerPoint Compatibility Improvements
A major part of this release was focused on producing .pptx files that open cleanly in PowerPoint.
Work in this area includes:
- Open XML schema fixes
- package structure normalization
- required metadata and relationship parts
- improved layout/master wiring
- compatibility validation against PowerPoint itself
- regression tests for package structure
Sample Content And Tooling
This release also adds:
- a
samples/directory with multiple Marp-style test decks - troubleshooting and validation scripts under
scripts/ - a batch sample generation script for converting all sample decks to
.pptx - CI smoke-test coverage for generated presentations
Included Documentation
This release ships with supporting documentation for both users and contributors:
README.mddoc/marp-markdown.mddoc/pptx-compatibility-notes.mdsamples/README.mdscripts/README.md
These docs cover:
- how this project defines “Marp Markdown”
- current implementation scope
- PowerPoint package requirements and compatibility notes
- local testing and troubleshooting workflows
Known Limitations
This alpha release is intentionally narrow in scope.
Current gaps and limitations include:
- Marp CSS/theme support is partial
- native PPTX table generation is not implemented yet
- code block syntax highlighting is not implemented yet
- layout heuristics are still basic
- advanced template/layout mapping is still limited
- remote assets and broader media handling are still future work
Some presentations will still render with simplified output where richer native PPTX support is planned later.
Installation
Requires .NET 10.
Run without installation:
dnx MarpToPptx sample.md -o sample.pptxInstall as a global tool:
dotnet tool install --global MarpToPptx
marp2pptx sample.md -o sample.pptxFeedback
Because this is an alpha, feedback is especially useful in these areas:
- PowerPoint compatibility issues
- Marp syntax or directive handling gaps
- theme/CSS fidelity problems
- layout issues on real-world decks
- sample decks that reproduce rendering edge cases
If you run into a problem, an issue with the source Markdown and generated output is very helpful.
Looking Ahead
Planned follow-up work includes:
- broader sample validation
- stronger package regression validation
- richer native PPTX output
- expanded theme and layout fidelity
- additional asset and media support
Thanks for trying the first alpha release of MarpToPptx.