← 返回博客

Marp:Markdown 演示文稿工具(以及如何导出到 PowerPoint)

Marp 是开源的 Markdown 演示文稿生态——用 Markdown 编写幻灯片,再通过 Marp CLI 导出 HTML、PDF 或 PowerPoint。本指南涵盖 Marp 主题、Markdown 编写、用 marp-cli 导出为 pptx(以图片形式),它与 reveal.js 和 Slidev 的对比,以及 Agent-Native Design Workspace 的适用场景。

Marp:Markdown 演示文稿工具(以及如何导出到 PowerPoint)

如果你搜索"marp"是想找一个牙科或正畸术语,那这是另一个:Marp 是 Markdown 演示文稿生态(Markdown Presentation Ecosystem)——一个来自 GitHub 上 marp-team 的开源(MIT)项目,通过编写纯 Markdown 来构建幻灯片。不用在画布上拖拽方框,也没有私有文件格式。你写下 # Slide title 和几个要点,加上一两条指令,Marp 就把它变成一份演示文稿。(你可能见过的、与此无关的"MARPE"是正畸学里的一种上颌扩弓手术——跟幻灯片毫无关系。本文只讲 Marp 这个演示文稿工具。)

在开源演示文稿工具里,Marp 是最简单、最贴近 Markdown 原生的选择,这正是开发者青睐它的原因。这是一份诚实的指南,讲清楚 Marp 是什么、编写与主题如何运作、Marp CLI 如何导出到 PowerPoint 和 PDF(以及那个总让人踩坑的注意事项)、它与 reveal.js 和 Slidev 的对比,以及当 Markdown 走到尽头时,设计工作空间该如何接手。

Marp 是什么

Marp 是围绕一个理念构建的一小套工具:幻灯片即 Markdown。它由三个部分组成。Marpit 是底层框架,把 Markdown 加上主题转换成幻灯片的 HTML 和 CSS。Marp Core 是构建在 Marpit 之上、开箱即用的引擎,自带默认主题、图片处理和数学公式支持。Marp CLImarp-team/marp-cli)是命令行工具,把你的 Markdown 文件渲染成 HTML、PDF 或 PowerPoint。还有一个官方的 VS Code 扩展,能在你输入时提供实时的并排预览。

你在一个 .md 文件里编写。幻灯片之间用 --- 分隔,逐页和全局设置通过 Marp 指令(如 theme:paginate:class:)来设定,一切都保持为可版本控制的纯文本。这正是它的全部魅力:你的幻灯片在 Git 里能干净地 diff、跟你的代码放在一起,也永远不会把你锁进某种二进制格式。

Marp 主题与 Markdown 编写

编写一份 Marp 幻灯片刻意保持极简。文件顶部的 front-matter 块设定全局指令,--- 分隔幻灯片,而标准的 Markdown——标题、列表、代码块、图片、表格——就成了你的内容。因为 Marp 底层渲染成 HTML 和 CSS,任何 Markdown 能表达的东西都能映射到一张幻灯片,无需再学额外的语法。

Marp 主题就是 CSS。Marp Core 自带几个内置主题(defaultgaiauncover),你用一条 theme: 指令就能在它们之间切换。当内置主题不够用时,你把自己的主题写成一个 CSS 文件——针对 Marpit 暴露的类,通过 --theme--theme-set 用 CLI 注册它,每一张幻灯片都会套用它。想做行内微调,你可以往某一张幻灯片里放一个带作用域的 <style> 块。这种 CSS 原生的模型既是 Marp 的天花板也是地板:如果你熟悉 CSS,就拥有完全的掌控力;如果不熟,默认样式看起来也很干净。

把 Marp 导出到 PowerPoint 和 PDF

导出正是 Marp CLI 体现价值的地方。把它指向你的 Markdown,选一个目标格式:

  • HTML——marp deck.md -o deck.html 会生成一份自包含的网页幻灯片,供你在浏览器里演示。
  • PDF——marp deck.md --pdf 渲染出一份可打印的 PDF,非常适合作讲义和分享。
  • PowerPoint——marp deck.md --pptx 导出一个 .pptx 文件,你可以在 PowerPoint 或 Keynote 里打开。

有一个值得直说的注意事项:Marp 的 PPTX 导出会把每一张幻灯片渲染成一张图片,而不是原生、可编辑的 PowerPoint 形状。每张幻灯片都变成 .pptx 容器里一张满版的图。当你需要把文件交给一个只需演示、离不开 PowerPoint 的人时,这堪称完美——但导出之后,你没法点进去编辑文本框、给形状换色,或挪动某个要点。如果你的工作流之后还要在 PowerPoint 里继续编辑,就把 Marp 的 pptx 当成交付格式,而不是源格式。(实验性的"可编辑"导出模式来了又走;可靠且有文档记载的行为是一页一图。)

Marp 对比 Slidev 与 reveal.js

Marp 并不是唯一以 Markdown 为先的演示文稿工具。以下是围绕决定你选择的那些维度做的诚实对比:

工具编写方式可编辑的 PPTX 导出模板化许可证
Marp纯 Markdown + 指令pptx 为图片(非可编辑形状)CSS 主题MIT
reveal.jsHTML(可选 Markdown 插件)无原生 pptxHTML/CSS 主题MIT
SlidevMarkdown + Vue 组件无原生 pptx(PDF/PNG/SPA)Vue + Windi/UnoCSS 主题MIT
Open Design把它描述给你的 Agent对着设计系统生成可编辑幻灯片设计系统 + 模板库Apache-2.0

Marp 适合你想要最少繁文缛节的时候——一个 Markdown 文件加一个 CLI。reveal.js 是成熟的网页幻灯片框架:以 HTML 为先、可无限定制、拥有最丰富的浏览器内体验,但你写的是 HTML,而且没有原生的 PowerPoint 路径。Slidev 居于中间,适合想要 Markdown 加上真正的 Vue 组件、代码高亮和交互式嵌入的开发者——比 Marp 更强大,配置也更多。这三者都采用 MIT 许可证,且都无法直接导出可在 PowerPoint 里编辑的内容。

Open Design 的位置

Marp 在一件事上做得极好:把你已经写好的 Markdown 变成幻灯片。但它要求来写这份幻灯片——结构、措辞、主题 CSS。它不会生成内容、不会让内容跨项目符合品牌调性,也不会在导出后给你一份可编辑的成果。

Open Design 是它之上的那一层。它是一个开源(Apache-2.0)、本地优先、自备 key 的 Agent-Native Design Workspace,位于你已经在用的编程 Agent 之外。你不必手写 Markdown,而是描述你想要的幻灯片,Agent 就对着一套设计系统生成一份可编辑的——它的插件库里还提供了第一方的 HTML 幻灯片模板作为起点。它并不是要取代用 Markdown 编写的 Marp:当你已经把内容写进 Markdown、想从命令行快速得到一份幻灯片时,Marp 就是对的工具。当你想让幻灯片被生成出来、符合品牌调性,并且作为一整套更大的设计工作流的一部分仍然可编辑时,那就是工作空间的活了。如果你已经在用编程 Agent 做幻灯片,看看编程 Agent 如何做幻灯片

常见问题

什么是 Marp?Marp 是来自 GitHub 上 marp-team 的开源 Markdown 演示文稿生态。你用 Markdown 编写幻灯片,Marp CLI 把它们导出成 HTML、PDF 或 PowerPoint。它采用 MIT 许可证,包含 Marp Core、Marpit 框架和一个 VS Code 扩展。它与正畸学里的"MARPE"一词无关。

我怎么把一份 Marp 幻灯片导出到 PowerPoint?安装 Marp CLI(marp-cli)并运行 marp deck.md --pptx。注意导出的 .pptx 会把每张幻灯片渲染成图片,而不是原生可编辑的 PowerPoint 形状——它很适合交接,但导出之后你没法在 PowerPoint 里编辑文本或形状。

Marp 能导出可编辑的 PowerPoint 文件吗?不太可靠。Marp 有文档记载的 PPTX 行为是一页一图。如果你需要带真实文本框和形状、原生可编辑的 .pptx,那这一步 Marp 就是错的工具。

Marp 免费吗?免费。Marp 在 MIT 许可证下开源,因此可以自由使用、自托管和修改。

Marp、reveal.js 与 Slidev——我该用哪个?要最简单的纯 Markdown 幻灯片以及便捷的 PDF/pptx 导出,选 Marp;要一个成熟、以 HTML 为先、可深度定制的网页幻灯片框架,选 reveal.js;要 Markdown 加上交互式 Vue 组件,选 Slidev。这三者都采用 MIT 许可证,都无法直接导出可编辑的 PowerPoint。

结语

Marp 是把你已有的 Markdown 变成幻灯片最干净利落的方式——一个 .md 文件、CSS 主题,以及一个能导出 HTML、PDF 和 PowerPoint 的 CLI。只要记住那一个诚实的限制:pptx 导出来是图片,所以把它当成交付格式,而不是你会在 PowerPoint 里继续编辑的东西。如果你的需求是"我有 Markdown,给我一份幻灯片",Marp 很难被超越。而当幻灯片需要被生成、保持品牌调性,并在一套更大的设计工作流里保持可编辑时,那就是 Agent-Native Design Workspace 接手的地方。


← 返回博客 GitHub · 来源 ↗