# 用 HackMD 做簡報
HackMD 整合了 [reveal.js](https://github.com/hakimel/reveal.js/),讓我們可以用 Markdown 輕鬆寫簡報。讓我們開始吧!
:point_right: [點此看本份文件原始碼](https://hackmd.io/how-to-create-slide-deck-tw) :point_left:
## 製作簡報與分頁
只要 HackMD 有支援的 Markdown 語法就能放進簡報裡面,無論是流程圖、內嵌 Youtube 影片或是 Latex 語法都行!
我們用「三個連字號」(`-`)組成的「分隔線」來區別簡報的分頁,記得在前後各加上一個空行:
>[!Note]**提示**
>分隔線前後都要加空行,才能正確分頁!
```markdown
# 簡報標題一
## 簡報標題二
---
- 清單
- 清單
```
### 在編輯時,預覽選擇「瀏覽模式」呈現這樣
![image](https://hackmd.io/_uploads/HyW4k4VD0.png)
### 預覽選擇「簡報模式」呈現這樣
![預覽簡報模式](https://hackmd.io/_uploads/rkA-ZEVv0.gif)
:::success
這裡有更詳細的範例:[Slide-example](/slide-example?both)
:::
## 開啟筆記的簡報模式
要怎麼將右側改為簡報模式顯示呢?
1. 打開右上角的的共享選單「<i class="fa fa-share-alt fa-18"></i>」
2. 在在瀏覽模式的下拉選單裡,選擇「<i class="fa fa-tv"></i> **簡報模式**」
3. 按下「預覽」按鈕,便會在新分頁開啟筆記的簡報模式。
![image](https://hackmd.io/_uploads/S1qYWVNwC.png)
### 簡報總覽模式
在簡報模式下,可以按下 <kbd>Esc</kbd> 鍵進入「總覽模式」,全部簡報一覽無遺 :eyes:
在總覽模式下,我們用方向鍵切換不同的簡報頁面,按下 <kbd>Enter</kbd> 進入選擇的簡報頁面
![](https://i.imgur.com/iOoECtI.gif)
### 講者模式
在簡報模式下按下 <kbd>s</kbd> 鍵,會彈出講者模式的獨立視窗。在這裡你可以看到這次簡報的用時,以及每張投影片的速記:
![](https://i.imgur.com/PsDFb4i.gif)
## 以章節組織簡報
在你的簡報中可能會有多個不同的主題,我們可以用「章節」的方式來組織這些頁面,無論是在總覽模式或是切換簡報時都會更有條理。
以 [HackMD - Markdown 協作筆記 @ 2016 MOPCON](/s/Ko4dxZc-TRmVxLhVL3ukHw) 這篇簡報為例,可以看到講者在「如何協作同步」、「資料儲存架構」、「如何記錄修訂版本」這幾個主題下(左右方向),分別加上了投影片去詳細描述不同主題(上下方向)。
![](https://i.imgur.com/xQ9Deac.png)
>[!Important]一、如何建立簡報章節呢?
>以下方的灰色區塊舉例,您可以使用**四個連字號來分隔單一章節內衍生簡報。**
>
>章節內簡報用 `----`(四個連字號)來分頁,連字號前後都**必須有空行**來分隔頁面。
>
>想在一個章節之後接上一個普通的分頁,或是另開新章節,請用 `--- `(三個連字號)。
```markdown=
# 章節 1
---
# 章節 2
----
## 章節 2.1
----
## 章節 2.2
---
# 章節 3
```
## 使用 YAML 在雙欄模式預覽簡報
您可以在筆記的編輯器開頭加入 YAML 設定,使製作簡報的效率再升級!
將下面的設定插入整篇筆記的最頂端,就能立即在右側預覽。
```yaml
---
type: slide
---
```
![使用YAML在雙欄模式預覽](https://hackmd.io/_uploads/H1QpSwtUR.gif)
## 下載簡報為 PDF 格式
在簡報模式頁面捲動到底部,會發現印表機的按鈕 <span class="fa fa-fw fa-print"></span>:
![image](https://hackmd.io/_uploads/BkTsEvK8C.png)
點擊之後會進入簡報的**列印模式**,此時利用瀏覽器內建的「列印成 PDF」功能,就能把簡報輸出成 PDF 囉!
![](https://i.imgur.com/Gt3GW1v.png)
## 進階用法:自訂簡報樣式
如想自訂簡報樣式,請按「分享」,再點擊「自訂簡報選項」。
![image](https://hackmd.io/_uploads/H1mkMEEvA.png =300x)
即可在底下的文字欄位,用 YAML 語法自訂簡報選項。
![image](https://hackmd.io/_uploads/ry9-GVEvA.png =300x)
舉例來說:
```yaml
theme: solarized # 顏色主題
transition: slide # 換頁動畫
```
將以上範例貼到簡報選項:
![image](https://hackmd.io/_uploads/HJlSzVVDA.png)
再按「更新」即可
若要使用縮排,請確定 YAML 設定檔區塊的縮排是 **兩個空白**。在 YAML 格式中,我們在每行的最前面加上 `#`(井字符號)代表註解。註解內的設定值會被忽略。
更多的設定值請參考[可用的 YAML 設定值](#可用的-YAML-設定值)
---
## 進階用法:自訂單頁簡報樣式
使用 YAML 標頭的設定會影響整份簡報,如果只想要調整單頁的話,可以用這樣的語法來設定:
```
<!-- .slide: -->
```
例如,想要自訂簡報背景的話可以這麼做:
```markdown
---
<!-- .slide: data-background="https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg" -->
#### testslide
---
```
---
## 進階功能:簡報聚光燈
忘記帶簡報筆,或者線上會議只能用游標指示你說的重點?你可以使用簡報聚光燈!
在 YAML 設定檔加以下的設定值:
```yaml
slideOptions:
spotlight:
enabled: true
```
設定後開啟簡報模式,在畫面上按下左鍵,就會開啟聚光燈囉!
>[!Note]提示
>在聚光燈模式下,要用方向鍵才能換頁哦!
----
### Demo
![spotlight](https://i.imgur.com/dXhHcCP.gif)
---
## 進階功能:簡報倒數計時
想要在限定的時間內精準傳遞你的訊息,又不想一直看錶?可以用簡報倒數計時的功能來提示自己!
在 YAML 設定檔加上設定值:
```yaml
slideOptions:
allottedMinutes: 5 # 預計一張簡報花幾分鐘
```
設定後開啟簡報模式,會看到原本藍色簡報進度條的上方多了紅色的長條,代表目前經過的時間,與進度條對照就會清楚目前簡報的用時,是超前還是落後 :running:
----
### Demo
![Timer](https://i.imgur.com/l5Akz4B.gif)
---
## 可用的 YAML 設定值
```yaml
# Display controls in the bottom right corner
controls: true
# Display a presentation progress bar
progress: true
# Set default timing of 2 minutes per slide
defaultTiming: 120
# Display the page number of the current slide
slideNumber: false
# Push each slide change to the browser history
history: false
# Enable keyboard shortcuts for navigation
keyboard: true
# Enable the slide overview mode
overview: true
# Vertical centering of slides
center: true
# Enables touch navigation on devices with touch input
touch: true
# Loop the presentation
loop: false
# Change the presentation direction to be RTL
rtl: false
# Randomizes the order of slides each time the presentation loads
shuffle: false
# Turns fragments on and off globally
fragments: true
# Flags if the presentation is running in an embedded mode,
# i.e. contained within a limited portion of the screen
embedded: false
# Flags if we should show a help overlay when the questionmark
# key is pressed
help: true
# Flags if speaker notes should be visible to all viewers
showNotes: false
# Global override for autolaying embedded media (video/audio/iframe)
# - null: Media will only autoplay if data-autoplay is present
# - true: All media will autoplay, regardless of individual setting
# - false: No media will autoplay, regardless of individual setting
autoPlayMedia: null
# Number of milliseconds between automatically proceeding to the
# next slide, disabled when set to 0, this value can be overwritten
# by using a data-autoslide attribute on your slides
autoSlide: 0
# Stop auto-sliding after user input
autoSlideStoppable: true
# Use this method for navigation when auto-sliding
autoSlideMethod: Reveal.navigateNext
# Enable slide navigation via mouse wheel
mouseWheel: false
# Hides the address bar on mobile devices
hideAddressBar: true
# Opens links in an iframe preview overlay
previewLinks: false
# Transition style
transition: 'slide'
# none/fade/slide/convex/concave/zoom
# Transition speed
transitionSpeed: 'default'
# default/fast/slow
# Transition style for full page slide backgrounds
backgroundTransition: 'fade'
# none/fade/slide/convex/concave/zoom
# Number of slides away from the current that are visible
viewDistance: 3
# Parallax background image
parallaxBackgroundImage: ''
# e.g. "'https://s3.amazonaws.com/hakim-static/reveal-js/reveal-parallax-1.jpg'"
# Parallax background size
parallaxBackgroundSize: ''
# CSS syntax, e.g. "2100px 900px"
# Number of pixels to move the parallax background per slide
# - Calculated automatically unless specified
# - Set to 0 to disable movement along an axis
parallaxBackgroundHorizontal: null
parallaxBackgroundVertical: null
# The display mode that will be used to show slides
display: 'block'
# Enable spotlight mode
spotlight:
enabled: true
# Enable timer (in minutes)
allottedMinutes: 5
```