目录

使用pandoc转换md为PDF并添加中文支持

由于最近需要把markdown文件导出为pdf并且需要用到latex的行内的数学公式,只用typora无法做到,于是开始使用pandoc。问题是pandoc中在从md转pdf的时候需要手动设置中文,否则会有转换问题。这个坑查了很久,最终从一个pandoc模板里得到了解决方法。

系统:macOS 10.13.2

基本操作

准备:需要先安装HomeBrew

  1. 安装pandoc
1
brew install pandoc
  1. 安装texlive,支持latex
1
brew cask install mactex
  1. 导出pandoc转换为时的latex默认模板
1
pandoc -D latex > template.latex
  1. 在template.latex里添加中文字体支持
1
2
3
4
5
6
7
\usepackage{fontspec}   % 允許設定字體
  \usepackage{xeCJK}    % 分開設置中英文字型
  \setCJKmainfont{SimSun}   % 設定中文字型
  \setmainfont{Helvetical}  % 設定英文字型
  \setromanfont{Helvetical}   % 字型
  \setmonofont{Courier New}
  \linespread{1.2}\selectfont   % 行距
  1. 使用模板把md转换为pdf
1
pandoc --pdf-engine=xelatex --template=[template.latex的路径] newfile.md -o newfile.pdf

pandoc的默认使用的模板路径

在mac os下,在~/.pandoc/templates文件夹里。没有的话要手动创建的。

1
2
cd ~
mkdir -p ~/.pandoc/templates

导出latex的默认模板至默认的模板路径

1
pandoc -D latex > ~/.pandoc/templates/default.latex

在default.latex里添加中文字体支持

1
2
3
4
5
6
7
\usepackage{fontspec}   % 允許設定字體
  \usepackage{xeCJK}    % 分開設置中英文字型
  \setCJKmainfont{SimSun}   % 設定中文字型
  \setmainfont{Vollkorn}  % 設定英文字型
  \setromanfont{Vollkorn}   % 字型
  \setmonofont{Courier New}
  \linespread{1.2}\selectfont   % 行距

这样下来转换的时候不使用指定的template,使用的就是default模板。例如

1
pandoc --pdf-engine=xelatex newfile.md -o newfile.pdf