Skip to content

Releases: jongalloway/MarpToPptx

MarpToPptx 1.2.0

17 Mar 19:41
0fe067d

Choose a tag to compare

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 -

13 Mar 22:01
528ce2f

Choose a tag to compare

MarpToPptx v1.1.0 — Release Notes

Date: March 13, 2026
NuGet: MarpToPptx 1.1.0
Install:

dotnet tool install --global MarpToPptx

MarpToPptx 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.pptx

Or install as a global .NET tool:

dotnet tool install --global MarpToPptx
marp2pptx slides.md -o slides.pptx

Apply a CSS theme:

marp2pptx slides.md --theme-css brand.css -o slides.pptx

Use an existing PowerPoint template:

marp2pptx slides.md --template corporate.pptx -o slides.pptx

Features

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-assets with 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--template copies masters, layouts, and themes from an existing .pptx
  • Layout selection — target named template layouts from Markdown via layout front matter or layout/_layout directives
  • Template slide cloningTemplate[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.OpenXml validation
  • 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 (![bg](...), filters, split backgrounds) is not supported — use directives for backgrounds
  • Fragmented/incremental list reveals are not supported
  • size directive, math (KaTeX/MathJax), emoji shortcodes, and fit/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

Full Changelog: v0.2.0...v1.1.0

v0.2.0

04 Mar 23:07
d8c881c

Choose a tag to compare

🎨 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

04 Mar 02:20
04bdaea

Choose a tag to compare

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.pptx

Or install globally:

dotnet tool install --global MarpToPptx
marp2pptx sample.md -o sample.pptx

Initial 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.md
  • doc/marp-markdown.md
  • doc/pptx-compatibility-notes.md
  • samples/README.md
  • scripts/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.pptx

Install as a global tool:

dotnet tool install --global MarpToPptx
marp2pptx sample.md -o sample.pptx

Feedback

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.