<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 5855字,需瀏覽 12分鐘

           ·

          2022-01-31 04:10

          這是「進(jìn)擊的Coder」的第?562?篇技術(shù)分享作者:崔慶才

          相信絕大多數(shù)朋友做 PPT(幻燈片 / Slides / Deck 等各種稱呼了)都是用的 PowerPoint 或者 KeyNote 吧?功能是比較強大,但你有沒有遇到過這樣的痛點:

          • 各種標(biāo)題、段落的格式不統(tǒng)一,比如字體大小、行間距等等各個頁面不太一樣,然后得用格式刷來挨個刷一下。
          • 想給 PPT 做版本控制,然后就保存了各種復(fù)制版本,比如“一版”、“二版”、“終版”、“最終版”、“最終不改版”、“最終穩(wěn)定不改版”等等,想必大家都見過類似這樣的場景吧。
          • 想插入代碼,但是插入之后發(fā)現(xiàn)格式全亂了或者高亮全沒了,然后不得不截圖插入進(jìn)去。
          • 想插入個公式,然后發(fā)現(xiàn) PPT、Keynote 對 Latex 兼容不太好或者配置稍微麻煩,就只能自己重新敲一遍或者貼截圖。
          • 想插入一個酷炫的交互組件,比如嵌入一個微博的網(wǎng)頁頁面實時訪問、插入一個可以交互的組件、插入一個音樂播放器組件,原生的 PPT 功能幾乎都不支持,這全得依賴于 PowerPoint 或者 KeyNote 來支持才行。

          如果你遇到這些痛點,那請你一定要看下去。如果你沒有遇到,那也請你看下去吧(拜托。

          好,說回正題,我列舉了那么多痛點,那這些痛點咋解決呢?

          能!甚至解決方案更加輕量級,那就是用 Markdown 來做 PPT!

          你試過用 Markdown 寫 PPT 嗎?沒有吧,試試吧,試過之后你就發(fā)現(xiàn)上面的功能簡直易如反掌。

          具體怎么實現(xiàn)呢?

          接下來,就有請今天的主角登場了!它就是 Slidev。

          什么是 Slidev?

          簡而言之,Slidev 就是可以讓我們用 Markdown 寫 PPT 的工具庫,基于 Node.js、Vue.js 開發(fā)。

          利用它我們可以簡單地把 Markdown 轉(zhuǎn)化成 PPT,而且它可以支持各種好看的主題、代碼高亮、公式、流程圖、自定義的網(wǎng)頁交互組件,還可以方便地導(dǎo)出成 pdf 或者直接部署成一個網(wǎng)頁使用。

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

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

          安裝和啟動

          下面我們就來了解下它的基本使用啦。

          首先我們需要先安裝好 Node.js,推薦 14.x 及以上版本,安裝方法見 https://setup.scrape.center/nodejs。

          接著,我們就可以使用 npm 這個命令了。

          然后我們可以初始化一個倉庫,運行命令如下:

          npm?init?slidev@latest

          這個命令就是初始化一個 Slidev 的倉庫,運行之后它會讓我們輸入和選擇一些選項,如圖所示:

          669a9c08b2acc49e472b8250be0057cd.webp

          比如上圖就是先輸入項目文件夾的名稱,比如這里我取名叫做 slidevtest。

          總之一些選項完成之后,Slidev 會在本地 3000 端口上啟動,如圖所示:

          3102852593b6d993c5b3128aaa25429f.webp

          接著,我們就可以打開瀏覽器 http://localhost:3000 來查看一個 HelloWorld 版本的 PPT 了,如圖所示:

          dfbddc2c6931cd17c20faedf8d3810f3.webp

          我們可以點擊空格進(jìn)行翻頁,第二頁展示了一張常規(guī)的 PPT 的樣式,包括標(biāo)題、正文、列表等,如圖所示:

          e60f38171aa4aba528f8d67bb96b9fa9.webp

          那這一頁的 Markdown 是什么樣的呢?其實就是非常常規(guī)的 Markdown 文章的寫法,內(nèi)容如下:

          #?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 語法就可以輕松將其轉(zhuǎn)化為 PPT 了。

          快捷鍵操作

          再下一頁介紹了各種快捷鍵的操作,這個就很常規(guī)了,比如點擊空格、上下左右鍵來進(jìn)行頁面切換,如圖所示:

          28276be7ca39286e45aebd9a3c9639ed.webp

          更多快捷鍵的操作可以看這里的說明:https://sli.dev/guide/navigation.html,一些簡單的快捷鍵列舉如下:

          • f:切換全屏
          • right / space:下一動畫或幻燈片
          • left:上一動畫或幻燈片
          • up:上一張幻燈片
          • down:下一張幻燈片
          • o:切換幻燈片總覽
          • d:切換暗黑模式
          • g:顯示“前往...”

          代碼高亮

          接下來就是代碼環(huán)節(jié)了,因為 Markdown 對代碼編寫非常友好,所以展示自然也不是問題了,比如代碼高亮、代碼對齊等都是常規(guī)操作,如圖所示:

          bc6dc254c0e11d20d0596860e9843948.webp

          那左邊的代碼定義就直接這么寫就行了:

          #?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,所以我們可以指定是什么語言,比如 TypeScript、Python 等等。

          網(wǎng)頁組件

          接下來就是非常酷炫的環(huán)節(jié)了,我們還可以自定義一些網(wǎng)頁組件,然后展示出來。

          比如我們看下面的一張圖。左邊就呈現(xiàn)了一個數(shù)字計數(shù)器,點擊左側(cè)數(shù)字就會減 1,點擊右側(cè)數(shù)字就會加 1;另外圖的右側(cè)還嵌入了一個組件,這里顯示了一個推特的消息,通過一個卡片的形式呈現(xiàn)了出來,不僅僅可以看內(nèi)容,甚至我們還可以點擊下方的喜歡、回復(fù)、復(fù)制等按鈕來進(jìn)行一些交互。

          這些功能在網(wǎng)頁里面并不稀奇,但是如果能做到 PPT 里面,那感覺就挺酷的。

          57f9823cab9cf305be5b44888b68343d.webp

          那這一頁怎么做到的呢?這個其實是引入了一些基于 Vue.js 的組件,本節(jié)對應(yīng)的 Markdown 代碼如下:

          #?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?``?and?``?that?you?can?use?directly.?And?adding?your?custom?components?is?also?super?easy.

          ```html

          ```



          <Counter?:count="10"?m="t-4"?/>

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

          div>
          <div>

          ```html

          ```


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

          div>
          div>

          這里我們可以看到,這里引入了 Counter、Tweet 組件,而這個 Counter 就是 Vue.js 的組件,代碼如下:

          <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">
          ????
          ??????border="r?gray-400?opacity-50"
          ??????p="2"
          ??????font="mono"
          ??????outline="!none"
          ??????hover:bg="gray-400?opacity-20"
          ??????@click="counter?-=?1"
          ????>
          ??????-
          ????
          button>

          ????{{?counter?}}
          ????
          ??????border="l?gray-400?opacity-50"
          ??????p="2"
          ??????font="mono"
          ??????outline="!none"
          ??????hover:bg="gray-400?opacity-20"
          ??????@click="counter?+=?1"
          ????>
          ??????+
          ????
          button>

          ??div>
          template>

          這就是一個標(biāo)準(zhǔn)的基于 Vue.js 3.x 的組件,都是標(biāo)準(zhǔn)的 Vue.js 語法,所以如果我們要添加想要的組件,直接自己寫就行了,什么都能實現(xiàn),只要網(wǎng)頁能支持的,統(tǒng)統(tǒng)都能寫!

          主題定義

          當(dāng)然,一些主題定制也是非常方便的,我們可以在 Markdown 文件直接更改一些配置就好了,比如就把 theme 換個名字,整個主題樣式就變了,看如下的對比圖:

          054c87e043c9e20e04c54c38f09a7d36.webp

          上面就是一些內(nèi)置主題,當(dāng)然我們也可以去官方文檔查看一些別人已經(jīng)寫好的主題,見:https://sli.dev/themes/gallery.html。

          另外我們自己寫主題也是可以的,所有的主題樣式都可以通過 CSS 等配置好,想要什么就可以有什么,見:https://sli.dev/themes/write-a-theme.html。

          公式和圖表

          接下來就是一個非常強大實用的功能,公式和圖表,支持 Latex、流程圖,如圖所示:

          cee875ef0086b6fdfb23b2cd8d8cc8d0.webpb3f46211eb7ee7d8191ac2fbce21441d.webp

          比如上面的 Latex 的源代碼就是這樣的:

          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 一樣的。

          其背后是怎么實現(xiàn)的呢?其實是因為 Slidev 默認(rèn)集成了 Katex 這個庫,見:https://katex.org/,有了 Katex 的加持,所有公式的顯示都不是事。

          頁面分隔

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

          其實很簡單,最常規(guī)的,用三條橫線分割就好了,比如:

          ---
          layout: cover
          ---

          # 第 1 頁

          This is the cover page.

          ---

          # 第 2 頁

          The second page

          當(dāng)然,除了使用三橫線,我們還可以使用更豐富的定義模式,可以給每一頁制定一些具體信息,就是使用兩層三橫線。

          比如這樣:

          ---
          theme: seriph
          layout: cover
          background: 'https://source.unsplash.com/1600x900/?nature,water'
          ---

          上面這樣的配置可以替代三橫線,是另一種可以用作頁面分隔的寫法,借助這種寫法我們可以定義更多頁面的具體信息。

          備注

          當(dāng)然我們肯定也想給 PPT 添加備注,這個也非常簡單,通過注釋的形式寫到 Markdown 源文件就好了:

          ---
          layout: cover
          ---

          # 第 1 頁

          This is the cover page.



          這里可以看到其實就是用了注釋的特定語法。

          演講者頭像

          當(dāng)然還有很多酷炫的功能,比如說,我們在講 PPT 的時候,可能想同時自己也出鏡,Slidev 也可以支持。

          因為開的是網(wǎng)頁,而網(wǎng)頁又有捕捉攝像頭的功能,所以最終效果可以是這樣子:

          675d51b73a5849d8ffdb5bf13d5dd683.webp

          是的沒錯!右下角就是演講者的個人頭像,它被嵌入到了 PPT 中!是不是非常酷!

          演講錄制

          當(dāng)然,Slidev 還支持演講錄制功能,因為它背后集成了 WebRTC 和 RecordRTC 的 API,一些錄制配置如下所示:

          90206a0560cd6f2629b1cecd8c021b0c.webp

          所以,演講過程的錄制完全不是問題。

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

          部署

          當(dāng)然用 Slidev 寫的 PPT 還可以支持部署,因為這畢竟就是一個網(wǎng)頁。

          而且部署非常簡單和輕量級,因為這就是一些純靜態(tài)的 HTML、JavaScript 文件,我們可以輕松把它部署到 GitHub Pages、Netlify 等站點上。

          試想這么一個場景:別人在演講之前還在各種拷貝 PPT,而你打開了一個瀏覽器直接輸入了一個網(wǎng)址,PPT 就出來了,眾人驚嘆,就問你裝不裝逼?

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

          讓我們看幾個別人已經(jīng)部署好的 PPT,直接網(wǎng)頁打開就行了:

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

          就是這么簡單方便。

          版本控制

          什么?你想實現(xiàn)版本控制,那再簡單不過了。

          Markdown 嘛,配合下專業(yè)版本管理工具 Git,版本控制再也不是難題。

          總結(jié)

          以上就是對 Slidev 的簡單介紹,確實不得不說有些功能真的非常實用,而且我本身特別喜歡 Markdown 和網(wǎng)頁開發(fā),所以這個簡直對我來說太方便了。

          如果你感興趣的話,不妨也來試試吧~

          7b371439cc836e024a0e7986acdee470.webp

          End

          崔慶才的新書《Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)(第二版)》已經(jīng)正式上市了!書中詳細(xì)介紹了零基礎(chǔ)用 Python 開發(fā)爬蟲的各方面知識,同時相比第一版新增了 JavaScript 逆向、Android 逆向、異步爬蟲、深度學(xué)習(xí)、Kubernetes 相關(guān)內(nèi)容,?同時本書已經(jīng)獲得 Python 之父 Guido 的推薦,目前本書正在七折促銷中!

          內(nèi)容介紹:《Python3網(wǎng)絡(luò)爬蟲開發(fā)實戰(zhàn)(第二版)》內(nèi)容介紹


          3b06dac47d9e22d12228d3c90609a8a1.webp


          掃碼購買




          好文和朋友一起看~
          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩欧美中文字幕在线视频 | 三级片电影久久 | 少妇高潮喷水 | 亚洲色情在线播放 | 久久黄色午夜免费视频 |