由于最近需要把markdown文件导出为pdf并且需要用到latex的行内的数学公式,只用typora无法做到,于是开始使用pandoc。问题是pandoc中在从md转pdf的时候需要手动设置中文,否则会有转换问题。这个坑查了很久,最终从一个pandoc模板里得到了解决方法。
系统:macOS 10.13.2
基本操作
准备:需要先安装HomeBrew
- 安装pandoc
brew install pandoc
- 安装texlive,支持latex
brew cask install mactex
- 导出pandoc转换为时的latex默认模板
pandoc -D latex > template.latex
- 在template.latex里添加中文字体支持
\usepackage{fontspec} % 允許設定字體
\usepackage{xeCJK} % 分開設置中英文字型
\setCJKmainfont{SimSun} % 設定中文字型
\setmainfont{Helvetical} % 設定英文字型
\setromanfont{Helvetical} % 字型
\setmonofont{Courier New}
\linespread{1.2}\selectfont % 行距
- 使用模板把md转换为pdf
pandoc --pdf-engine=xelatex --template=[template.latex的路径] newfile.md -o newfile.pdf
pandoc的默认使用的模板路径
在mac os下,在~/.pandoc/templates文件夹里。没有的话要手动创建的。
cd ~
mkdir -p ~/.pandoc/templates
导出latex的默认模板至默认的模板路径
pandoc -D latex > ~/.pandoc/templates/default.latex
在default.latex里添加中文字体支持
\usepackage{fontspec} % 允許設定字體
\usepackage{xeCJK} % 分開設置中英文字型
\setCJKmainfont{SimSun} % 設定中文字型
\setmainfont{Vollkorn} % 設定英文字型
\setromanfont{Vollkorn} % 字型
\setmonofont{Courier New}
\linespread{1.2}\selectfont % 行距
这样下来转换的时候不使用指定的template,使用的就是default模板。例如
pandoc --pdf-engine=xelatex newfile.md -o newfile.pdf