用Markdown写PPT,我测了6个工具
场景是这样的
上周在咖啡馆里,我亲眼看到隔壁桌一个程序员哥们对着PowerPoint崩溃了。他只是想做个技术分享,结果花了二十分钟调格式,最后还在切换动画的时候卡住了。我忍不住跟他说:你用Markdown写不好吗?他说他知道Markdown好,但不知道怎么变成PPT。
这个场景太普遍了。程序员写文档用Markdown,但要对外展示还得硬着头皮打开那个笨重的演示软件。其实这个痛点早就被解决了很多次,只是工具太多,很多人根本不知道该选哪个。今天就把市面上最常见的6个MD转Deck工具全部聊一遍,按我的理解排了个顺序,从最入门的到最惊艳的,供大家参考。
先建立个全局印象
这六款工具其实分成了几个流派。第一类是纯前端派,靠JavaScript在浏览器里渲染,门槛最低,reveal.js是祖师爷级别。第二类是Node.js生态派,围绕npm构建,Marp和Slidev属于这类,生态最丰富。第三类是Python学术派,Quarto把Jupyter那一套搬过来了,做数据分析类分享的人用得多。第四类是React系,mdx-deck走的是组件化路线。第五类是新势力,presenterm直接用Rust写了个终端里的幻灯片,走的是差异化路线。
了解完全貌之后,我按实际体验排了个递增的榜单,从功能最基础的说到最让我惊喜的。
Quarto:学术圈的最爱
Quarto的目标用户很明确,就是做学术分享和数据研究的人。它能直接跑Jupyter笔记本,输出HTML、PDF、PPTX甚至IPYNB,格式覆盖很全。对搞机器学习或者统计的人来说,这个吸引力很大,因为你的代码和图表可以原样保留,不用再截图贴图。
愚钝如我的感受是:我试着用Quarto做了一场关于Python代码的分享,结果光配置环境就花了大半天。它确实很强大,但如果你不是常年泡在Jupyter里的人,光是搞清楚怎么让它正常工作就够呛。它更适合已经习惯Python科研那套流程的人,普通开发者上手成本偏高。
Marp:稳妥的入门选择
Marp是这里面生态最大的,VSCode插件成熟,社区模板多,输出格式支持HTML、PDF和PPTX。对很多人来说,光是能导出PPTX这一条就足够了,因为国内开会很多时候还是要发PPT文件。VSCode里装个插件,写完Markdown直接预览,格式问题基本不用操心。
愚钝如我的感受是:我在VSCode里装了Marp插件,写了几页之后发现主题切换确实方便,但要做出稍微个性化一点的样式,就得折腾CSS,感觉还不如直接写HTML。而且导出的PPTX在别的电脑打开有时候会丢字体,这点让我很头疼。它的定位更像是一个稳妥的入门选择,而不是追求炫酷效果的工具。
mdx-deck:代码动画很强,但维护放缓了
这个工具的特点是代码动画做得最好,支持用React组件来做动态效果,演示代码执行过程特别流畅。它背后是MDX生态,能在Markdown里直接写JSX,这对于前端开发者来说扩展性极强。
愚钝如我的感受是:这个东西刚出来的时候让我眼前一亮,代码演示效果确实很酷炫。但问题在于维护节奏明显放缓了,GitHub上更新不频繁,社区生态也慢慢冷下来。我上次想加个新功能,翻了半天文档发现例子都过时了。它适合已经熟悉React生态的人,但如果你是纯前端或者想长期用下去,得做好自己维护的心理准备。
Slidev:开发者用得最顺手
看名字就知道这是给开发者量身定做的工具,46683颗星在今天聊的这几个里面排第二。Slidev的核心理念是让开发者用自己熟悉的工具写PPT,Markdown里直接嵌代码,运行时渲染,主题系统也很完善,而且对Shiki这类代码高亮库支持很好。
愚钝如我的感受是:Slidev是我目前用得最顺手的日常工具。它的开发体验非常好,修改内容后热更新几乎无延迟,代码演示效果也是这几个里最干净的。不过它只能输出HTML,如果你公司强制要求PPT格式,那就得再转一道。总体来说,如果你的场景是技术分享或者内部演示,Slidev基本可以闭眼选。
presenterm:极客风格的异类
这个工具比较特殊,它是Rust写的,输出在终端里,用的是一种很独特的极客美学。你在终端里写Markdown,它实时渲染成带颜色和布局的幻灯片,风格跟传统的PPT完全不一样。presenterm的定位很清楚,就是给技术分享场景用的,尤其是那种开发者大会或者极客聚会。
愚钝如我的感受是:第一次看到presenterm演示的时候我是震惊的,原来幻灯片还能这么做。但冷静下来之后我发现,在国内大多数商务场合用这个风格容易被当成异类。它更适合技术社区的开放演讲,或者录屏发到网上做教程。如果你想要一个能让人眼前一亮的风格,选它没错。
reveal.js:71270颗星的老牌劲旅
这是今天的重头戏,也是71270颗星傲视群雄的老牌劲旅。reveal.js是最早期的HTML幻灯片框架之一,资历最老,生态也最完整。它最大的优势是不需要任何构建工具,直接用CDN引入就能跑,一个HTML文件扔到服务器上,分享链接就搞定了,对不想折腾环境的人来说简直是救星。
愚钝如我的感受是:reveal.js是我用过的最没有负担的工具。不需要装Node,不需要配环境,甚至不需要本地跑服务,直接打开浏览器就能写。它对插件的支持极其丰富,只有你想不到的功能,没有它实现不了的。虽然界面设计上偏老派,但稳定性和兼容性是这几个里面最强的。如果你想零成本快速做个还算不错的演示,reveal.js绝对是首选。
多维度横评
说了这么多,可能你还是很纠结,我直接给个实操建议。日常技术分享、代码演示多的话,Slidev是最顺手的;如果你想要零门槛、快速出活、不想折腾环境,reveal.js直接用CDN版本最省事;如果你做学术分享、和Jupyter生态绑定很深,Quarto适合你;如果你公司一定要PPT格式,Marp导出版最稳妥;mdx-deck适合React老手;presenterm适合极客风格的技术分享,选哪个取决于你的具体场景和口味。~
工具没有绝对的好坏,只有合不合适。希望这篇横评能帮你省点摸索的时间。
GitHub:https://github.com/hakimel/reveal.js | https://github.com/slidevjs/slidev | https://github.com/marp-team/marp