Skip to content

v0.3

Choose a tag to compare

@pspoerri pspoerri released this 13 Mar 20:31
· 3 commits to main since this release

Theme & Template Support

Apply corporate themes by passing a .pptx or .potx template file:

marp2pptx -theme template.potx presentation.md

The tool automatically detects slide layouts from the template using a 3-pass algorithm (OOXML type attributes, placeholder composition scoring, name heuristics) — works with both standard and custom-named layouts. Template media, styles, and slide masters are preserved.

Bug Fixes

  • Typographer text rendering — Goldmark's Typographer extension produces HTML entities (“, …, –, etc.) which were being written literally into the PPTX. They are now decoded to proper Unicode characters.
  • Image visibility — Small images (e.g. icons) were rendered at their native pixel size, making them invisible in presentations. Images now scale up to fill their allocated area while maintaining aspect ratio.
  • Title placeholders — Headings are now placed into proper PPTX placeholder shapes (<p:ph type="title"/>, <p:ph type="ctrTitle"/>) so they inherit theme styling. The first heading becomes the title; remaining content goes into the body placeholder.

PPTX Evaluation Tool

New cmd/pptxeval tool for inspecting and validating generated PPTX files:

# Inspect structure, text, relationships
go run ./cmd/pptxeval output.pptx

# Extract text only
go run ./cmd/pptxeval -text output.pptx

# Validate structure (CI-friendly, exits non-zero on errors)
go run ./cmd/pptxeval -lint output.pptx

# Show raw XML for a specific slide
go run ./cmd/pptxeval -slide 3 output.pptx

The linter checks for: missing relationships, orphaned media, undeclared content types, unresolved HTML entities in text, zero-dimension shapes, and slide/rels count mismatches.

Makefile targets:

make eval ARGS=output.pptx        # inspect a PPTX
make eval-lint ARGS=output.pptx   # lint a PPTX
make eval-all                     # generate and inspect all test files
make eval-lint-all                # generate and lint all test files

Full Changelog

  • Add theme/template support with 3-pass layout detection
  • Split titles into proper PPTX placeholders
  • Fix typographer HTML entity decoding
  • Fix image scaling for small images
  • Add cmd/pptxeval inspection and linting tool
  • Add integration tests for typographer, image visibility, and PPTX lint
  • Add .gitignore

Full Changelog: v0.2...v0.3

Full Changelog: v0.2...v0.3

Full Changelog: v0.2...v0.3