Marp

简单介绍

  • Markdown → 幻灯片
  • 可导出 PDF / HTML
  • 适合讲义、科研展示、课程分享
  • 使用方式
    • VS Code 安装 Marp 插件(推荐)
    • npm 安装 Marp CLI

基本语法

基于现有的 Markdown 文件略微修改即可

  • 使用 --- 分页,前后最好有单独空行
  • 在头部添加元信息进行全局配置
    1
    2
    3
    4
    5
    6
    7
    ---
    marp: true
    theme: gaia
    paginate: true
    ---

    ...

配置

Marp 支持的配置包括全局配置和局部配置,前者出现在头部,后者出现在对应的分页。

在Markdown头部支持添加如下形式的元信息进行全局配置

1
2
3
4
5
---
marp: true
theme: gaia
paginate: true
---

具体含义为:

  • marptrue 开启 Marp 渲染(这是唯一的必选项)
  • theme: defaultgaiauncover 几个内置主题
  • paginatetruefalse 是否显示页码

在具体分页则可以使用html注释形式添加对应的局部配置,例如:

  • 用大字体样式(通常用于封面)

    1
    <!-- _class: lead -->

  • 翻转页面样式

    1
    <!-- _class: invert -->

Jupyter Notebook

简单介绍

  • 使用 Jupyter Notebook 编写文本和代码
  • 通过 nbconvert 转换为 Reveal.js 风格 HTML
  • 支持代码和公式展示,在特定情况下还支持运行代码

最大的特点是:幻灯片支持二维结构而非通常的线性结构。

使用方法

对于jupyter notebook的每一个cell,不仅有 code/markdown 两种类型, 还存在另一套slide类型系统,两者并不冲突,后者只在转换为幻灯片形式时起作用。

slide类型包括:

  1. Slide: 开始一个新的幻灯片。
  2. Sub-Slide: 在当前幻灯片下创建一个新的垂直幻灯片。
  3. Fragment: 在当前幻灯片或子幻灯片中添加一个新元素,该元素将在演示时逐一出现。
  4. Skip: 这个cell在幻灯片演示中将被忽略。
  5. Notes: 添加备注,只有在演讲者模式中才可见。
  6. None:默认

如果需要创建slide,最好手动将每一个cell都明确指定相关的类型,否则可能出现展示错误,类型None的cell可能会附加在上一个幻灯片中出现。

转换命令

安装 nbconvert

1
pip install nbconvert

使用如下命令可以导出html文件

1
jupyter nbconvert myslides.ipynb --to slides

使用如下命令可以开启server持续渲染html文件

1
jupyter nbconvert myslides.ipynb --to slides --post serve

展示幻灯片

jupyter导出的slide不同于传统的线性结构,它支持上下左右调整展示顺序:

  1. 左右顺序是幻灯片的主顺序,包括每一个Slide
  2. 上下顺序可以展示当前Slide的Sub-Slide(如果存在)

在展示时可以在浏览器按esc得到幻灯片的全局视图,进行页面的快速切换。

小结

工具 主要用途 渲染方式 导出格式
Marp Markdown -> 幻灯片 VS Code 插件 或 CLI HTML / PDF
Jupyter Notebook -> 幻灯片 Reveal.js + nbconvert HTML / PDF