Jupyter Notebook 使用技巧彙整:轉換為投影片格式

運用 nbconvert 將 .ipynb 輸出為適合簡報的投影片格式

郭耀仁 Yao-Jen Kuo
Feb 26 · 9 min read
Photo by Gemma Evans on Unsplash

The nbconvert tool allows you to convert an notebook file into various static formats.

nbconvert

Jupyter Notebook 是一個建構於網頁應用程式的整合開發環境,允許資料科學團隊像是寫作筆記一般地撰寫程式、顯示程式輸出、圖形視覺化輸出、支援 Markdown 標記語言與 LaTex 數學方程式的文字段落,從 2014 年推出以來風靡資料科學生態圈,包含 Google 與 Microsoft 也分別基於 Jupyter Notebook 建立 Google Colaboratory 和 Azure Notebook 的瀏覽器解決方案;資料科學愛好者們也很習慣以 Jupyter Notebook 作為分享、呈現與簡報的媒介,除了直接閱讀筆記本格式輸出(.ipynb),也可以使用網頁(.html)或 PDF(.pdf)來檢視筆記本的投影片格式。

摘要

Project Jupyter 由 IPython 專案發跡,主要以支援 Python 語言與 Python 虛擬環境為主,目前支援超過 40 種程式語言,其中筆記本轉換應用程式(nbconvert)是一個建構於 Jinja 框架上的解決方案,能夠將副檔名為 .ipynb 的筆記本檔案轉換為不同的靜態文件格式,包含像是 HTML、LaTeX、PDF、Reveal JS 或 Markdown 等;本文將簡介如何將筆記本格式(.ipynb)轉換為投影片格式,協助資料科學團隊以網頁(.html)或 PDF(.pdf)格式進行體驗更好的簡報。


建立示範資料夾

接下來我們在電腦桌面上建立一個名為 my-nb-slides 的資料夾作為範例,打開 Anaconda Prompt(Windows 使用者)或者 Terminal(Mac 使用者)切換目錄至該資料夾,啟動 Jupyter Notebook。

切換目錄至 my-nb-slides 資料夾,啟動 Jupyter Notebook

建立示範筆記本

在這個空白的範例資料夾中,建立一個支援 Python 3 直譯器的範例筆記本。

建立一個支援 Python 3 直譯器的範例筆記本

將新建立的範例筆記本由未命名(Untitled)更新命名為 my-nb-slide。

將新建立的範例筆記本命名為 my-nb-slide

點選 View、Cell Toolbar、Slideshow 將筆記本的檢視頁面調整為投影片外觀。

點選 View、Cell Toolbar、Slideshow

調整完畢之後我們會發現不論是一個 Markdown Cell 或者 Code Cell,右上角都有了一個 Slide Type 的下拉式選單,這幾個選項分別代表著:

  • -:不分頁的投影片
  • Slide:水平移動的投影片(用作主題部分)
  • Sub-Slide:垂直移動的投影片(用作隸屬於主題之下的內容部分)
  • Fragment:在一張投影片中依序顯示多個儲存格
  • Skip:輸出時略過該張投影片
  • Notes:輸出時略過該張投影片並作為備忘錄講稿

對於一般慣常使用 PowerPoint、Keynote 或 Google Slides 的使用者而言,對於 Slide 或 Sub-Slide 的選項一定會感到困惑;有這樣的設計是由於 Jupyter Notebook 轉換成投影片格式的引擎是建構於一個 reveal.js 的網頁投影片框架之上,而這個框架很大的一個亮點是投影片捲動方向區分為水平與垂直兩種,這點與多數簡報軟體通篇垂直向下的捲動不同。reveal.js 這樣設計的理念在於它認為簡報內容可以具有多一層的巢狀設計,像是書本的章(chapters)之下有節(sections),投影片也可以有 Slides 與 Sub-Slides 的對應。

接著在 my-nb-slide.ipynb 中隨意撰寫一些 Markdown、程式等內容,存檔之後準備輸出為投影片格式,

我們已經將 my-nb-slide.ipynb 上傳到 Google Colaboratory,可以點選連結將示範筆記本下載到自己的電腦。

以投影片模式進行簡報

在 Anaconda Prompt(Windows 使用者)或者 Terminal(Mac 使用者)中按下 Control-C 可以停止 Jupyter Notebook 的服務,接著運用 指令啟動投影片模式,就可以開始進行簡報,假如瀏覽器沒有自動開啟投影片的簡報模式,只需複製 http://127.0.0.1:8000/my-nb-slide.slides.html 貼上到瀏覽器網址列即可。

運用 指令啟動投影片模式
開始進行簡報

成功啟動簡報模式以後示範資料夾會多出一個 my-nb-slide.slides.html 檔案,我們就可以將 HTML 文件放置到網路上(例如 GitHub Page 或 GitLab Page),以網址跟聽眾分享投影片。 預設會由一個公開的內容傳遞網路(Content Delivery Network,CDN)讀取 reveal.js 作為輸出 my-nb-slide.slides.html 的格式,如果要將文件放置到網路上,記得將 reveal.js 下載(利用 指令)到同一個專案資料夾中,在 中指定 之後再一併上傳至網頁伺服器。

下載 reveal.js 後在 中指定

將投影片輸出為 PDF

現在我們已經可以在電腦上播放投影片進行簡報以及將投影片上傳至網頁伺服器與聽眾分享,但仍有一定比例的聽眾習慣將投影片印出為紙本,而目前以 HTML 格式進行簡報暫時沒有辦法讓聽眾能方便下載或印製為講義,這時只要在啟動投影片模式簡報時將網址列由 改為 就可以點選瀏覽器列印,另存為 PDF 文件。

將網址列改為
點選瀏覽器列印,另存為 PDF 文件

在簡報時進行 Live Coding

習慣利用 Jupyter Notebook 簡報的資料科學團隊時常有即時撰寫程式(Live coding)的需求,這時可以利用 模組將筆記本轉變成投影片簡報模式,與 最大的差別在 模組支援讓簡報者在有 Code Cell 的頁面中可以即時修改程式碼並執行觀看輸出結果。

我們首先在 Anaconda Prompt(Windows 使用者)或者 Terminal(Mac 使用者)中使用 安裝 模組。

使用 安裝 模組

完成 模組的安裝之後,重新啟動 Jupyter Notebook 將會在工具列看見一個新的按鈕(Enter/Exit RISE Slideshow),這表示我們已經可以在投影片簡報時進行即時程式設計了!

在投影片簡報時進行即時程式設計

小結

在這篇文章中我們簡介了 Jupyter Notebook 的使用技巧:將筆記本轉換為適合簡報的投影片格式,包含基於 reveal.js 框架的 HTML 格式、便於聽眾印出的 PDF 格式以及支援 Live coding 的 模組簡報模式。


如果您喜歡這篇文章,請多按下方的「拍手」圖像幾次、分享到社群網站以及訂閱 Pyradise追蹤更多 Python 資訊,請關注 Pyradise 的臉書粉絲專頁!🙏想看影音教學?🎥
我們將在 Pyradise 的 Youtube 頻道,定期跟大家直播分享相關心得!
訂閱我們!👇👇👇

Pyradise

在 Py 樂園輕鬆學習 Python。

郭耀仁 Yao-Jen Kuo

Written by

Could that data be any tidier? It is always nice to meet a data enthusiast / 2:43 marathon runner.

Pyradise

Pyradise

在 Py 樂園輕鬆學習 Python。