{"id":46274462,"url":"https://github.com/jongalloway/marptopptx","last_synced_at":"2026-03-04T04:03:24.643Z","repository":{"id":341755742,"uuid":"1171342439","full_name":"jongalloway/MarpToPptx","owner":"jongalloway","description":"A .NET 10 CLI and library for compiling Marp-flavored Markdown into editable PowerPoint presentations.","archived":false,"fork":false,"pushed_at":"2026-03-03T06:06:06.000Z","size":18,"stargazers_count":0,"open_issues_count":7,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-03T09:57:33.335Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jongalloway.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-03T05:54:35.000Z","updated_at":"2026-03-03T06:06:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jongalloway/MarpToPptx","commit_stats":null,"previous_names":["jongalloway/marptopptx"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/jongalloway/MarpToPptx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongalloway%2FMarpToPptx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongalloway%2FMarpToPptx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongalloway%2FMarpToPptx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongalloway%2FMarpToPptx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jongalloway","download_url":"https://codeload.github.com/jongalloway/MarpToPptx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongalloway%2FMarpToPptx/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30071670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T03:25:38.285Z","status":"ssl_error","status_checked_at":"2026-03-04T03:25:05.086Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-04T04:03:22.580Z","updated_at":"2026-03-04T04:03:24.638Z","avatar_url":"https://github.com/jongalloway.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MarpToPptx\n\n[![Build](https://github.com/jongalloway/MarpToPptx/actions/workflows/ci.yml/badge.svg)](https://github.com/jongalloway/MarpToPptx/actions/workflows/ci.yml)\n[![NuGet Version](https://img.shields.io/nuget/v/MarpToPptx?logo=nuget)](https://www.nuget.org/packages/MarpToPptx/)\n[![NuGet Downloads](https://img.shields.io/nuget/dt/MarpToPptx?logo=nuget)](https://www.nuget.org/packages/MarpToPptx/)\n[![.NET 10](https://img.shields.io/badge/.NET-10-512BD4?logo=dotnet)](https://dotnet.microsoft.com/)\n\nMarpToPptx is a .NET 10 CLI and library for compiling Marp-flavored Markdown into editable PowerPoint presentations.\n\nFor a precise description of how this repo defines and implements Marp-style Markdown, see `doc/marp-markdown.md`.\n\nFor renderer and PowerPoint package requirements and compatibility reference material, see `doc/pptx-compatibility-notes.md`.\n\nFor integrating `MarpToPptx` into a VS Code authoring workflow in a content repository, see `doc/vscode-workflow.md`.\n\n## Current Structure\n\n- `src/MarpToPptx.Core`: semantic slide model, Markdown parsing, theme parsing, layout planning\n- `src/MarpToPptx.Pptx`: Open XML PPTX rendering and template-aware presentation generation\n- `src/MarpToPptx.Cli`: `marp2pptx` command-line entrypoint\n- `src/MarpToPptx.OpenXmlValidator`: small .NET validation helper used by smoke tests and CI\n- `scripts/`: PowerShell helpers for local generation, smoke tests, package inspection, and PowerPoint troubleshooting\n- `tests/MarpToPptx.Tests`: xUnit v3 tests running on Microsoft Testing Platform\n- `samples/`: Marp-style sample decks for smoke tests, feature coverage, theme parsing, and compatibility-gap repros\n- `.github/workflows/ci.yml`: Ubuntu build/test/pack plus an Ubuntu CI-safe PPTX smoke-test job\n\n## Usage\n\n### Preferred: DNX\n\n`dnx` is the quickest way to run MarpToPptx without installing it as a persistent tool, but it requires .NET 10.\n\n```bash\ndnx MarpToPptx sample.md -o sample.pptx\ndnx MarpToPptx sample.md --template theme.pptx\ndnx MarpToPptx sample.md --theme-css theme.css\n```\n\n### Install As A .NET Tool\n\nIf you prefer a persistent command, install the tool from NuGet:\n\n```bash\ndotnet tool install --global MarpToPptx\nmarp2pptx sample.md -o sample.pptx\nmarp2pptx sample.md --template theme.pptx\nmarp2pptx sample.md --theme-css theme.css\n```\n\nTo update later:\n\n```bash\ndotnet tool update --global MarpToPptx\n```\n\n### VS Code Task\n\nAdd a `.vscode/tasks.json` to your content repository to export the currently open file:\n\n```json\n{\n  \"version\": \"2.0.0\",\n  \"tasks\": [\n    {\n      \"label\": \"Export to PPTX\",\n      \"type\": \"shell\",\n      \"command\": \"dnx\",\n      \"args\": [\n        \"MarpToPptx\",\n        \"${file}\",\n        \"-o\",\n        \"${fileDirname}/${fileBasenameNoExtension}.pptx\"\n      ],\n      \"group\": \"build\",\n      \"presentation\": { \"reveal\": \"always\", \"panel\": \"shared\" },\n      \"problemMatcher\": []\n    }\n  ]\n}\n```\n\nRun it from **Terminal → Run Task** while the Markdown file is open. The `.pptx` is written next to the source file.\n\nFor template-based export, theme CSS, version pinning, team sharing, and the full edit / preview / export loop with the Marp for VS Code extension, see [`doc/vscode-workflow.md`](doc/vscode-workflow.md).\n\n### Run From Source\n\nIf you are developing on the repo, you can still run the CLI project directly:\n\n```bash\ndotnet run --project src/MarpToPptx.Cli -- input.md -o output.pptx\ndotnet run --project src/MarpToPptx.Cli -- input.md --template theme.pptx\ndotnet run --project src/MarpToPptx.Cli -- input.md --theme-css theme.css\n```\n\n## Local Packaging\n\nBuild a local tool package:\n\n```bash\ndotnet pack src/MarpToPptx.Cli -c Release\n```\n\nThat produces a tool package under `artifacts/nupkg/` with package ID `MarpToPptx` and command name `marp2pptx`.\n\nRun it with `dnx` from the local package source:\n\n```bash\ndnx MarpToPptx --add-source ./artifacts/nupkg sample.md -o sample.pptx\n```\n\nYou can also install it as a local tool from the package output:\n\n```bash\ndotnet new tool-manifest\ndotnet tool install MarpToPptx --add-source ./artifacts/nupkg\ndotnet tool run marp2pptx sample.md -o sample.pptx\n```\n\n## Releases\n\nNuGet publishing is handled by `.github/workflows/publish.yml` using nuget.org Trusted Publishing with GitHub OIDC.\n\n- Versioning is tag-based via `MinVer`.\n- Stable release tags should use the form `v1.2.3`.\n- The publish workflow builds, tests, packs, and then pushes the tool package from `artifacts/nupkg/`.\n\nTo cut a release:\n\n```bash\ngit tag v1.2.3\ngit push origin v1.2.3\n```\n\nAfter the workflow finishes and NuGet indexing completes, install or run the published tool with:\n\n```bash\ndotnet tool install --global MarpToPptx\ndnx MarpToPptx sample.md -o sample.pptx\n```\n\n## Repository Conventions\n\n- Solution format: `MarpToPptx.slnx`\n- Centralized package management: `Directory.Packages.props`\n- Test framework: xUnit v3\n- Test runner: Microsoft Testing Platform via `global.json`\n- CLI packaging direction: `marp2pptx` as a .NET tool, while preserving single-file publish as a deployment mode\n\n## Current Milestone\n\n- Marp-style front matter and directive parsing\n- Slide splitting on `---`\n- Semantic slide model independent from PPTX\n- Basic theme extraction for font families, font sizes, colors, and padding\n- PPTX generation for headings, paragraphs, bullet lists, images, and code blocks\n- Table content fallback rendered as editable text while native PPTX table generation remains a product requirement\n- Template-copy workflow for reusing an existing `.pptx` theme/master\n\n## Steering Decisions\n\n- `ImageSharp` is intentionally not used for image sizing unless it is explicitly re-approved after licensing review\n- Intrinsic image sizing should prefer built-in platform capabilities or a minimal in-project metadata reader\n- Remaining roadmap work should be evaluated against the current implemented baseline rather than an empty starting point\n\n## Roadmap\n\n- Improve CSS coverage for more Marp theme features\n- Refine layout heuristics for denser or highly designed decks\n- Expand template integration to map multiple layouts intelligently\n- Add native PPTX table generation and richer table styling\n- Add code block syntax highlighting\n- Support remote assets and additional image formats\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongalloway%2Fmarptopptx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjongalloway%2Fmarptopptx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongalloway%2Fmarptopptx/lists"}