Ubuntu下使用Markdown+Pandoc+Beamer制作幻灯片

date: 2018.08.27; modification:2018.08.27

目录:

1 前言

用Linux + vim写代码写习惯了, 偶尔需要写个ppt或者文档啥的, 不想再去用微软的office. 所以寻找其他的替代方案. 本文介绍一种markdown生成pdf格式的幻灯片的方案.

2 安装环境

本文的测试环境为: Ubuntu 16.04 64位

sudo apt install textlive pandoc

3 基本幻灯片(不带中文)

将如下内容保存为test.md

---
title: Test pandoc beamer slide
author: Mike
date: 2018-08-27
---

# This is title 1
 
This is first slide
 
  - item 1
  - item 2
 
# This is tile 2
 
  This is second slide

然后用如下命令将md, 转换成pdf:

pandoc -t beamer -o test.pdf test.md

4 中文支持

中文的支持基本都是通过xetex(xelatex)来支持. 不过不一定每种方式都能在你的机器上成功, 所以在此列出几种方法, 读者可以参考:

5 方法1

也是本文作者使用的方法(简单):

pandoc -t beamer --latex-engine=xelatex  slide.mkd -o slide.pdf -V CJKmainfont='Noto Sans CJK SC Regular'

新版本(v2.2.3.2)的pandoc已经把 --latex-engine 换成 --pdf-engine 了:

pandoc -t beamer --pdf-engine=xelatex  slide.mkd -o slide.pdf -V CJKmainfont='Noto Sans CJK SC Regular'

该方法在命令后面设置: -V CJKmainfont= 解决中文问题. 注意: 别忘了 --latex-engine=xelatex 选项.

字体也可以设置成: WenQuanYi Micro Hei 但是貌似不支持粗体.

6 方法2

将如下字段

---
CJKmainfont: Noto Sans CJK SC Regular
---

加入markdown文件的开头, 这样就不用命令行指定 -V CJKmainfont= 了.

7 方法3

先导出beamer配置:

pandoc -D beamer > beamer-template.tex

然后, 在

\usepackage{xeCJK}                 % 设置中英文字体
\setCJKmainfont{WenQuanYi Micro Hei} % 中文字体
\setmainfont{Arial}                % 英文字体
\setromanfont{Courier New}
\setmonofont{Courier New}
\linespread{1.2}\selectfont        % 行距
\XeTeXlinebreaklocale "zh"         % 中文自动换行
\XeTeXlinebreakskip = 0pt plus 1pt % 字之间加0pt至1pt间距
\parindent 0em                     % 段缩进
\setlength{\parskip}{20pt}         % 段间距

然后执行命令时指定模板:

pandoc -t beamer --latex-engine=xelatex --template=beamer-template.tex test.md -o test.pdf

但是这种方法在作者机子上始终出来中文. 尝试了把这段说明放到其他位置, 换其他字体, 也试了网上其他的类似的编辑模板的方案, 都不好使.

8 参考资料

使用Markdown+Pandoc+LaTex+Beamer制作幻灯片

https://github.com/jgm/pandoc/wiki/Pandoc-with-Chinese

https://tex.stackexchange.com/questions/341809/pandoc-does-not-recognize-chinese-characters

https://github.com/shd101wyy/markdown-preview-enhanced/blob/master/docs/pandoc-beamer.md