pandoc转换markdown为pdf
pandoc是一款强悍的文档的转换工具,支持绝大多数文档格式之间的相互转换,而且具有强大的控制能力。
安装
1 | # apt install texlive-xetex pandoc |
转换markdown
默认latex引擎pdflatex不支持中文,需要使用xelatex引擎,并且要指定中文字体
可以这样查看系统中文字体:
1 | $ fc-list :lang=zh |
然后mkd转换到pdf:
1 | $ pandoc foo.mkd --latex-engine=xelatex -V CJKmainfont="Noto Sans CJK SC" -o foo.pdf |
然而对中文的支持还是有些问题,这样会把较长的文本行截断,需要定制template来解决此问题。
先导出pandoc默认模板:
1 | $ pandoc -D latex > mytemplate.tex |
在生成的模板文件mytemplate.tex文件的第一行后面添加如下行:
1 | \\XeTeXlinebreaklocale "zh" |
将模板文件mytemplate.lex置于~/.pandoc/templates/路径下,或者置于转换命令当前目录下。
然后这样转换:
1 | $ pandoc manual.mkd --latex-engine=xelatex -V CJKmainfont="Noto Sans CJK SC" -o manual.pdf --template=mytemplate.tex |
还有一个小问题,默认生成的pdf边距比较大,可以通过geometry参数来控制边距。
所以最后的命令行大约是这个样子的:
1 | $ pandoc manual.mkd --latex-engine=xelatex -V CJKmainfont="Noto Sans CJK SC" -o manual.pdf -V geometry:"top=2cm, bottom=1.5cm, left=1cm, right=1cm" --template=mytemplate.tex |
可以用模板文件指定使用的字体,模板文件可以很复杂,嗯,latex太复杂了。
pandoc转换markdown时,对两个tab缩进支持不好,还没找到好的解决办法。
Mac OS X
安装pandoc和mactex
1 | $ brew install pandoc |
中文字体可以使用苹方简体中文 “PingFang SC”
References:
[1]Pandoc With Chinese (简体中文)
[2]pandoc faqs
[3]Pandoc: Markdown to PDF, without cutting off code block lines that are too long
[4]纯文本做笔记 — 使用 Pandoc 与 Markdown 生成 PDF 文件
[5]使用xelatex生成中文pdf
[6]使用pandoc转换md为PDF并添加中文支持
===
[erq]