Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用 Markdown 做的 PPT,真的太强了!

用 Markdown 做的 PPT,真的太强了!

作者头像
崔庆才
发布于 2022-02-08 05:10:53
发布于 2022-02-08 05:10:53
7.2K04
代码可运行
举报
文章被收录于专栏:进击的Coder进击的Coder
运行总次数:4
代码可运行

这是「进击的Coder」的第 562 篇技术分享

作者:崔庆才

相信绝大多数朋友做 PPT(幻灯片 / Slides / Deck 等各种称呼了)都是用的 PowerPoint 或者 KeyNote 吧?功能是比较强大,但你有没有遇到过这样的痛点:

  • 各种标题、段落的格式不统一,比如字体大小、行间距等等各个页面不太一样,然后得用格式刷来挨个刷一下。
  • 想给 PPT 做版本控制,然后就保存了各种复制版本,比如“一版”、“二版”、“终版”、“最终版”、“最终不改版”、“最终稳定不改版”等等,想必大家都见过类似这样的场景吧。
  • 想插入代码,但是插入之后发现格式全乱了或者高亮全没了,然后不得不截图插入进去。
  • 想插入个公式,然后发现 PPT、Keynote 对 Latex 兼容不太好或者配置稍微麻烦,就只能自己重新敲一遍或者贴截图。
  • 想插入一个酷炫的交互组件,比如嵌入一个微博的网页页面实时访问、插入一个可以交互的组件、插入一个音乐播放器组件,原生的 PPT 功能几乎都不支持,这全得依赖于 PowerPoint 或者 KeyNote 来支持才行。

如果你遇到这些痛点,那请你一定要看下去。如果你没有遇到,那也请你看下去吧(拜托。

好,说回正题,我列举了那么多痛点,那这些痛点咋解决呢?

能!甚至解决方案更加轻量级,那就是用 Markdown 来做 PPT!

你试过用 Markdown 写 PPT 吗?没有吧,试试吧,试过之后你就发现上面的功能简直易如反掌。

具体怎么实现呢?

接下来,就有请今天的主角登场了!它就是 Slidev。

什么是 Slidev?

简而言之,Slidev 就是可以让我们用 Markdown 写 PPT 的工具库,基于 Node.js、Vue.js 开发。

利用它我们可以简单地把 Markdown 转化成 PPT,而且它可以支持各种好看的主题、代码高亮、公式、流程图、自定义的网页交互组件,还可以方便地导出成 pdf 或者直接部署成一个网页使用。

官方主页:https://sli.dev/

GitHub:https://github.com/slidevjs/slidev

安装和启动

下面我们就来了解下它的基本使用啦。

首先我们需要先安装好 Node.js,推荐 14.x 及以上版本,安装方法见 https://setup.scrape.center/nodejs。

接着,我们就可以使用 npm 这个命令了。

然后我们可以初始化一个仓库,运行命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm init slidev@latest

这个命令就是初始化一个 Slidev 的仓库,运行之后它会让我们输入和选择一些选项,如图所示:

比如上图就是先输入项目文件夹的名称,比如这里我取名叫做 slidevtest。

总之一些选项完成之后,Slidev 会在本地 3000 端口上启动,如图所示:

接着,我们就可以打开浏览器 http://localhost:3000 来查看一个 HelloWorld 版本的 PPT 了,如图所示:

我们可以点击空格进行翻页,第二页展示了一张常规的 PPT 的样式,包括标题、正文、列表等,如图所示:

那这一页的 Markdown 是什么样的呢?其实就是非常常规的 Markdown 文章的写法,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# What is Slidev?

Slidev is a slides maker and presenter designed for developers, consist of the following features

- 📝 **Text-based** - focus on the content with Markdown, and then style them later
- 🎨 **Themable** - theme can be shared and used with npm packages
- 🧑‍💻 **Developer Friendly** - code highlighting, live coding with autocompletion
- 🤹 **Interactive** - embedding Vue components to enhance your expressions
- 🎥 **Recording** - built-in recording and camera view
- 📤 **Portable** - export into PDF, PNGs, or even a hostable SPA
- 🛠 **Hackable** - anything possible on a webpage

<br>
<br>

Read more about [Why Slidev?](https://sli.dev/guide/why)

是不是?我们只需要用同样格式的 Markdown 语法就可以轻松将其转化为 PPT 了。

快捷键操作

再下一页介绍了各种快捷键的操作,这个就很常规了,比如点击空格、上下左右键来进行页面切换,如图所示:

更多快捷键的操作可以看这里的说明:https://sli.dev/guide/navigation.html,一些简单的快捷键列举如下:

  • f:切换全屏
  • right / space:下一动画或幻灯片
  • left:上一动画或幻灯片
  • up:上一张幻灯片
  • down:下一张幻灯片
  • o:切换幻灯片总览
  • d:切换暗黑模式
  • g:显示“前往...”

代码高亮

接下来就是代码环节了,因为 Markdown 对代码编写非常友好,所以展示自然也不是问题了,比如代码高亮、代码对齐等都是常规操作,如图所示:

那左边的代码定义就直接这么写就行了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Code

Use code snippets and get the highlighting directly![^1]

```ts {all|2|1-6|9|all}
interface User {
  id: number
  firstName: string
  lastName: string
  role: string
}

function updateUser(id: number, update: User) {
  const user = getUser(id)
  const newUser = {...user, ...update}  
  saveUser(id, newUser)
}
```

由于是 Markdown,所以我们可以指定是什么语言,比如 TypeScriptPython 等等。

网页组件

接下来就是非常酷炫的环节了,我们还可以自定义一些网页组件,然后展示出来。

比如我们看下面的一张图。左边就呈现了一个数字计数器,点击左侧数字就会减 1,点击右侧数字就会加 1;另外图的右侧还嵌入了一个组件,这里显示了一个推特的消息,通过一个卡片的形式呈现了出来,不仅仅可以看内容,甚至我们还可以点击下方的喜欢、回复、复制等按钮来进行一些交互。

这些功能在网页里面并不稀奇,但是如果能做到 PPT 里面,那感觉就挺酷的。

那这一页怎么做到的呢?这个其实是引入了一些基于 Vue.js 的组件,本节对应的 Markdown 代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Components

<div grid="~ cols-2 gap-4">
<div>

You can use Vue components directly inside your slides.

We have provided a few built-in components like `<Tweet/>` and `<Youtube/>` that you can use directly. And adding your custom components is also super easy.

```html
<Counter :count="10" />
```

<!-- ./components/Counter.vue -->
<Counter :count="10" m="t-4" />

Check out [the guides](https://sli.dev/builtin/components.html) for more.

</div>
<div>

```html
<Tweet id="1390115482657726468" />
```

<Tweet id="1390115482657726468" scale="0.65" />

</div>
</div>

这里我们可以看到,这里引入了 Counter、Tweet 组件,而这个 Counter 就是 Vue.js 的组件,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script setup lang="ts">
import { ref } from 'vue'

const props = defineProps({
  count: {
    default: 0,
  },
})

const counter = ref(props.count)
</script>

<template>
  <div flex="~" w="min" border="~ gray-400 opacity-50 rounded-md">
    <button
      border="r gray-400 opacity-50"
      p="2"
      font="mono"
      outline="!none"
      hover:bg="gray-400 opacity-20"
      @click="counter -= 1"
    >
      -
    </button>
    <span m="auto" p="2">{{ counter }}</span>
    <button
      border="l gray-400 opacity-50"
      p="2"
      font="mono"
      outline="!none"
      hover:bg="gray-400 opacity-20"
      @click="counter += 1"
    >
      +
    </button>
  </div>
</template>

这就是一个标准的基于 Vue.js 3.x 的组件,都是标准的 Vue.js 语法,所以如果我们要添加想要的组件,直接自己写就行了,什么都能实现,只要网页能支持的,统统都能写!

主题定义

当然,一些主题定制也是非常方便的,我们可以在 Markdown 文件直接更改一些配置就好了,比如就把 theme 换个名字,整个主题样式就变了,看如下的对比图:

上面就是一些内置主题,当然我们也可以去官方文档查看一些别人已经写好的主题,见:https://sli.dev/themes/gallery.html。

另外我们自己写主题也是可以的,所有的主题样式都可以通过 CSS 等配置好,想要什么就可以有什么,见:https://sli.dev/themes/write-a-theme.html。

公式和图表

接下来就是一个非常强大实用的功能,公式和图表,支持 Latex、流程图,如图所示:

比如上面的 Latex 的源代码就是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Inline $\sqrt{3x-1}+(1+x)^2$

Block
$$
\begin{array}{c}

\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} &
= \frac{4\pi}{c}\vec{\mathbf{j}}    \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\

\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\

\nabla \cdot \vec{\mathbf{B}} & = 0

\end{array}
$$

其语法也是和 Latex 一样的。

其背后是怎么实现的呢?其实是因为 Slidev 默认集成了 Katex 这个库,见:https://katex.org/,有了 Katex 的加持,所有公式的显示都不是事。

页面分隔

有的朋友就好奇了,既然是用 Markdown 写 PPT,那么每一页之间是怎么分割的呢?

其实很简单,最常规的,用三条横线分割就好了,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
layout: cover
---

# 第 1 页

This is the cover page.

---

# 第 2 页

The second page

当然,除了使用三横线,我们还可以使用更丰富的定义模式,可以给每一页制定一些具体信息,就是使用两层三横线。

比如这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
theme: seriph
layout: cover
background: 'https://source.unsplash.com/1600x900/?nature,water'
---

上面这样的配置可以替代三横线,是另一种可以用作页面分隔的写法,借助这种写法我们可以定义更多页面的具体信息。

备注

当然我们肯定也想给 PPT 添加备注,这个也非常简单,通过注释的形式写到 Markdown 源文件就好了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
---
layout: cover
---

# 第 1 页

This is the cover page.

<!-- 这是一条备注 -->

这里可以看到其实就是用了注释的特定语法。

演讲者头像

当然还有很多酷炫的功能,比如说,我们在讲 PPT 的时候,可能想同时自己也出镜,Slidev 也可以支持。

因为开的是网页,而网页又有捕捉摄像头的功能,所以最终效果可以是这样子:

是的没错!右下角就是演讲者的个人头像,它被嵌入到了 PPT 中!是不是非常酷!

演讲录制

当然,Slidev 还支持演讲录制功能,因为它背后集成了 WebRTC 和 RecordRTC 的 API,一些录制配置如下所示:

所以,演讲过程的录制完全不是问题。

具体的操作可以查看:https://sli.dev/guide/recording.html。

部署

当然用 Slidev 写的 PPT 还可以支持部署,因为这毕竟就是一个网页。

而且部署非常简单和轻量级,因为这就是一些纯静态的 HTML、JavaScript 文件,我们可以轻松把它部署到 GitHub Pages、Netlify 等站点上。

试想这么一个场景:别人在演讲之前还在各种拷贝 PPT,而你打开了一个浏览器直接输入了一个网址,PPT 就出来了,众人惊叹,就问你装不装逼?

具体的部署操作可以查看:https://sli.dev/guide/hosting.html

让我们看几个别人已经部署好的 PPT,直接网页打开就行了:

  • https://demo.sli.dev/composable-vue
  • https://masukin.link/talks/simply-publish-your-package-to-npm

就是这么简单方便。

版本控制

什么?你想实现版本控制,那再简单不过了。

Markdown 嘛,配合下专业版本管理工具 Git,版本控制再也不是难题。

总结

以上就是对 Slidev 的简单介绍,确实不得不说有些功能真的非常实用,而且我本身特别喜欢 Markdown 和网页开发,所以这个简直对我来说太方便了。

如果你感兴趣的话,不妨也来试试吧~

End

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击的Coder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用Markdown写Html和.md也就图一乐,真骚操作还得用来做PPT
和这篇文章一样,我就是用Markdown写的。相信各位平时也就用Markdown写写文档,做做笔记,转成XHtml、Html等,今天教大伙一招骚操作:用Markdown写PPT。
BlueSocks
2022/03/25
8790
用Markdown写Html和.md也就图一乐,真骚操作还得用来做PPT
工具:Slidev 使用指南:从入门到精通
幻灯片通过 一个 markdown 文件 编写而成 (默认会使用 ./slides.md)。
Freedom123
2024/03/29
9520
工具:Slidev 使用指南:从入门到精通
Slidev写PPT的全新方式
slide,泛称 ppt,指代幻灯片中具体的一页;ppt,PowerPoint 的简称。
Python研究所
2022/06/17
2K0
Slidev写PPT的全新方式
牛逼!用 Markdown 来做 PPT!
大多数朋友做 PPT 一般都是用的 PowerPoint 、KeyNote的吧,那你有没有用 Markdown 来编写幻灯片呢?
程序员老鱼
2022/12/02
5.1K0
Markdown = PPT ?这个工具给力!
TJ君平时最头疼的是啥事情?当然是老大布置的各种宣传任务!所谓的宣传任务,就是写各种各样的宣传ppt,对于TJ君来说,要满足老大各种对于PPT的奇思妙想和严苛要求,还不如多写几行代码。
程序猿DD
2021/12/15
8510
Markdown = PPT ?这个工具给力!
36.3K star!开发者专属PPT神器,Markdown秒变炫酷幻灯片!
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
小华同学ai
2025/04/26
1970
36.3K star!开发者专属PPT神器,Markdown秒变炫酷幻灯片!
让你用Markdown的方式来做PPT
说Slidev之前,咱先聊聊Markdown,在认识Markdown之前,各种版式样式的问题也一直困扰着TJ君,所幸Markdown的出现完美的解决了这个问题,而Slidev,或许就是和Markdown一样的一个东东哦!
AWeiLoveAndroid
2022/05/13
9930
让你用Markdown的方式来做PPT
这样做PPT也太酷了吧,27.9kstar,适合开发者的ppt工具推荐
slidev 是一个基于 Vue 开发的网页演示文稿工具,主要功能是将 Markdown 文档转换为演示幻灯片。
大侠之运维
2024/09/25
2120
Markdown 写 PPT 是如何实现的?
Markdown 是一种轻量的标记语言,我们只需要写 md 格式文件,不必考虑文档的排版,被广泛用于博客写作,技术文档编写等,程序员们都热爱,但我们工作中除了写文档,有时候还需要汇报工作,技术分享等,需要用到 PPT,但设计 PPT 可能不是每个程序员所喜欢的,所以我们可以使用一个非常好用的工具 slidev, 可以使用 markdown 来制作演示文稿, 这个工具很多小伙伴都知道,尤大的分享就经常使用,其他类似的工具还有 Nodeppt、 marp 等,那么这类工具是如何实现的?
狂奔滴小马
2022/09/21
1K0
Markdown 写 PPT 是如何实现的?
工具:Slidev 简介
Slidev 是一个基于 Vue.js 的幻灯片演示工具,它可以通过 Markdown 语法来创建漂亮的幻灯片。
Freedom123
2024/03/29
8850
工具:Slidev 简介
slidev - 为开发者打造的演示文稿工具
提起幻灯片制作工具,大家都会想到PowerPoint 或 Keynote,它们在制作带有复杂动画和图表等方面效果相当好。今天为大家介绍一款开发者友好的演示文稿工具——Slidev
埃兰德欧神
2024/07/15
2680
slidev - 为开发者打造的演示文稿工具
程序员用 Markdown 写 ppt,真是太绝了!
大家好,我是机灵可爱的开源小妹~~ 上周老板找我说要给客户演示下我们最近开发的项目,说让我写个 ppt ? 身为程序员怎么能拒绝呢,于是乎刷起来 Github ,还真找到了个神器,用 Markdown
永恒君
2022/12/07
6140
程序员用 Markdown 写 ppt,真是太绝了!
slidev
君子先择而后交,小人先交而后择。——王通 分享一个为开发者打造的演示文稿工具:https://cn.sli.dev/ Slidev (slide + dev, /slʌɪdɪv/) 是基于 Web 的幻灯片制作和演示工具。它旨在让开发者专注在 Markdown 中编写内容,同时拥有支持 HTML 和 Vue 组件的能力,并且能够呈现像素级完美的布局,还在你的演讲稿中内置了互动的演示样例。 它使用了功能丰富的 markdown 文件来生成精美的幻灯片,具有即时重载的体验。它还拥有很多内置的集成功
阿超
2023/04/27
3020
slidev
出现了,PPT 制作新方式——GitHub 热点速览 v.21.19
想当初 Markdown 的出现,拯救了多少死在 Word 样式调整上的人,现在,slidev 出现了,它让你 Focus 在本该专注的 PPT 内容制作上而不需要花太多精力在样式调整上,你仅仅用 Markdown 语法就可以做出一个高颜值幻灯片。生产力工具除了 slidev,还有 zx 这个 Google 开源的小工具能帮你写出更好的脚本,以及现在才被小鱼干发现的一个宝藏项目 Best-websites-a-programmer-should-visit 收录了太多非常高质量的 CS 相关网站,全方位解放学习能力。
HelloGitHub
2021/05/14
7540
出现了,PPT 制作新方式——GitHub 热点速览 v.21.19
给大家介绍一个很实用的工具——Slidev
使用 PowerPoint 或者 KeyNote 来制作 PPT 这个大概已经是众所周知的常识了吧,功能强大且简单易用,
开源指北
2022/12/26
3.5K0
给大家介绍一个很实用的工具——Slidev
Marp 教程:使用 VSCode 编写专业 PPT
Marp 是 Markdown Presentation Ecosystem 的简称,它允许你使用 Markdown 语法来创建和展示幻灯片。通过结合 VSCode 的强大编辑功能,Marp 可以让你的 PPT 制作过程变得更加高效和专业。本教程将指导你如何在 VSCode 中使用 Marp 来创建精美的幻灯片。
码事漫谈
2024/12/20
4360
Marp 教程:使用 VSCode 编写专业 PPT
Marp 入门与教程:让你一分钟爱上Markdown写PPT的乐趣
Marp 是一个基于 Markdown 的开源幻灯片制作工具,可以轻松将 Markdown 文档转换为精美的幻灯片。其核心是 Marpit 框架,支持可定制主题、多种输出格式和动态功能。
码事漫谈
2024/12/20
4.2K0
Marp 入门与教程:让你一分钟爱上Markdown写PPT的乐趣
牛逼!Markdown还能这么玩?这款开源神器绝了!
Slidev是一款专门为开发者打造的演示文稿工具,目前在Github上已有23K+Star。通过Slidev,我们只要使用熟悉的Markdown就可以做出炫酷的PPT来,同时拥有支持HTML和Vue组件的能力,并且能够呈现像素级完美的布局。
macrozheng
2022/12/14
8110
牛逼!Markdown还能这么玩?这款开源神器绝了!
居然可以用 js 写 PPT?
用powerpoint或者keynote写演示文稿,对于代码、数学公式等的支持一直是个痛点。而且对于前端同学来说,一身的css功力用不上也是个痛点。对于使用markdown来写文档的同学来说,将文档转成ppt需要重新排版也是件重复性的工作量。
winty
2021/08/24
9.7K0
居然可以用 js 写 PPT?
vue中引入并使用markdown编辑器
  不知道各位是否对 markdown熟悉。它算是一门标记语言,但是语法简单,却本领强大。例如本篇博客,便是用 markdown语法编写,然后根据不同的环境及依赖生成各种我想要的样式,比如直接生成本篇博客样式或者使用一些依赖或者工具赋之更加美观的样式。同样,一般在CMS后台管理系统中,也经常会用到编辑器来编写一些文章材料。其中最常用的还是 markdown编辑器和 富文本编辑器。
流眸
2019/08/12
7K0
vue中引入并使用markdown编辑器
相关推荐
用Markdown写Html和.md也就图一乐,真骚操作还得用来做PPT
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验