使用 Pandoc 来制作 HTML 和 beamer 风格的幻灯片
Pandoc 是一款开源的文档格式转换工具,能够实现大部分的文件格式互转。这里我们主要用来将 Markdown 文档转换成 HTML 和 PDF 风格的幻灯片。 Markdown 语法、结构简单,只需要写出文档的提纲和结构,就能转换成简洁明了又美观的 Slides。
Table of Contents
Pandoc - 格式转换利器
Pandoc 是全平台的转换工具,在命令行能够很方便的进行格式转换。 Pandoc 支持的格式及转换方式如下图所示。
更多的可以打开这里 查看,可以看到 Pandoc 支持的格式是极多的。
Pandoc 的安装是非常简单的, 可按照 说明 很方便地安装到系统中。
文档语法结构
Pandoc 支持标准的 Markdown 语法,但在结构上与一般的用 Markdown 写博客有点区别。
元数据
为了让 Pandoc 能渲染 Markdown 文件生成 Slides, 需要在文档头部加上几行元数据信息。
1 | % Title |
这样就能生成幻灯片的标题页了。
文档结构
一般情况下,一个 Markdown 文档只有一个一级标题。 Pandoc 中,默认情况下,一级标题代表 一个章节, 三个一级标题就是把幻灯片分为三部分;二级标题代表一张幻灯片; 三级标题则一般是幻灯片内部的块。 一个基本的文档结构如下所示
1 | % Title |
数学公式
Pandoc 支持转换 TeX 数学公式, 能够将数学公式转换成 MathML, 或者通过 MathJax 显示。
1 | $\frac{a}{b^2+c^3}$ |
显示效果为:$\frac{a}{b2+c3}$
$$\frac{a}{b2+c3}$$
幻灯片样式
在 /usr/share/pandoc-xxx/data
下面有 Pandoc 自带的转换模版, html 幻灯片模版有 dszlides
, html
, html5
, revealjs
, s5
, slideous
, slidy
等等。下面简单介绍几种。
s5
s5 是很流行的 HTML 幻灯片模版,可以从网站上下载后使用,也可以在线使用。本地使用主要是其中的 ui/default
, 将其复制到 markdown 所在目录。在线使用需要指定 s5-url
1 | #### local |
reveal.js
reveal.js 是非常火的 HTML 幻灯片库,本身支持 Markdown 语法。 离线使用 reveal.js 需要将其下载下来,在线使用可以指定 revealjs-url
。下载 reveal.js
1 | $ git clone https://github.com/hakimel/reveal.js |
渲染 markdown 文件生成 HTML 幻灯片,在线使用可以通过指定 revealjs-url
来使用。
1 | $ pandoc -s -t revealjs -o h5.html h5.md |
reveal.js 自带了一些模版可供选择,通过 -V css=/path/to/css
来指定自带的或自己定制的模版,
1 | #### local |
也可以修改 reveal.js 模版 /usr/share/pandoc-xxx/data/templates/default.revealjs
。
1 | $if(css)$ |
改为
1 | $if(css)$ |
这样就可以简单指定theme
了。
1 | $ pandoc -s -t revealjs -V theme=night -o h5.html h5.md |
Beamer 样式
Pandoc 能非常方便地将 markdown 转换为独立的 tex 文档,然后通过 tex 命令 可以生成 pdf 幻灯片。
1 | $ pandoc -s -t beamer -o slide.tex slide.md |
Beamer 模版
Pandoc 有默认的 beamer 模版,使用 platex 编译,如果不喜欢,可以参考默认模版 /usr/share/pandoc-xxx/data/templates/default.beamer
自己定制一个 beamer 模版,网上也有一些现成的模版,可以参考。下面是默认模版生成的幻灯片样式。
中文字体
- 首先查看系统中文字体:
1 | $ fc-list :lang=zh |
- 转换时指定字体:
1 | $ pandoc -s -t beamer --pdf-engine=xelatex -V CJKmainfont=KaiTi srs.md -o srs.pdf |
- Markdown 文件中加入设置。默认的 beamer 模版中有
CJKmainfont
变量,指定后会使用xeCJK
包:
1 |
|
参考
- Markdown+Pandoc→HTML幻灯片速成
- pandoc does not recognize Chinese characters
- Pandoc Demo
- Talks with LaTeX Beamer, written in Markdown
- PDF slides and handouts using Pandoc and Beamer
- User contributed templates
- 用pandoc把markdown转化为pdf文档
- 纯文本做笔记 — 使用 Pandoc 与 Markdown 生成 PDF 文件