本文记录的在Mac下pandoc转换markdown输出含中文的文本,包含一些依赖的安装以及命令使用,最后的参考文档给了我很大帮助。

  1. pandoc的安装

  2. 转换pdf常用参数

pandoc的安装

简要记录安装步骤如下:

  1. 按照pandoc官方网站说明, 下载安装pandoc

  2. 按照pandoc官方网站说明,转换输出PDF时,需要LaTeX,下载安装MacTex-Additions和BasicTex

  3. 在tzengyuxio的开源项目中下载pm-template.latex pdf中文模板,将该模板中setCJKmainfont字段值LiHei Pro修改为电脑上带有的中文字体,我的自己安装了微软雅黑字体,于是修改成了Microsoft YaHei

  4. 使用tlmgr工具安装依赖titling和lastpage

1
2
$sudo tlmgr install titling
$sudo tlmgr install lastpage
  1. 使用命令pandoc --latex-engine=xelatex --template=pm-template markdown_strict.md -o markdown.pdf转换输出pdf, 可将pm-template.latex文件放置任意处,只是需要使用--template参数指定其路径.

我在安装上述包时出现找不到相应包的情况,即使使用

sudo tlmgr option --repository http://mirrors.ustc.edu.cn/CTAN/systems/texlive/tlnet

修改repository之后也不行,于是手动安装。先下载titlinglastpage, 然后运行kpsewhich -var-value=TEXMFHOME命令找出tex安装目录,进入该目录,如没有则创建之,接着执行以下命令:

1
2
sudo mkdir -p texmf/tex/latex/local/
sudo cp Downloads/titling.sty ~/Library/texmf/tex/latex/local

安装titling和lastpage时直接根据其安装指导安装即可,需要先经历一些简单的*.sty文件生成,zip解压及文件移动等操作

转换pdf常用参数

  • --latex-engine=pdflatex|lualatex|xelatex

--latex-engine用来指定转换PDF格式时LaTeX引擎,默认情况下是pdflatex,但是由于pdflatex不支持中文,因此需要将引擎设置为xelatex

  • --template=FILE

使用FILE指定的文件作为输出文档的自定义模板。可将模板文件放置任意处,只是指定FILE时需要该FILE的路径。

  • --toc, --table-of-contents

使用该参数后,会在输出文档开头自动产生文件目录,对于输出格式是man, docbook, slidy, slideous, s5, docx 或者odt的文档,该参数不起任何作用。

  • --toc-depth=NUMBER

指定文件目录中包含的章节级别,默认NUMBER=3,表示一级标题、二级标题、三级标题都会被在目录中展示。

  • -V KEY[=VAL], --variable=KEY[:VAL]

当渲染standalone模式下文档时,设置模板变量KEY的值为VAL。pandoc会自动设置默认模板中的这些变量,因此该选项这通常在使用--template选项指定自定义模板时有用,如果没有指定VAL值,那么该KEY会被赋予值true。

  • -s, --standalone

转换输出文档时会自动加上合适的header和footer(例如standalone HTML, LaTeX, RTF).该选择在转换输出pdf,epub,epub3,fb2,docx,odt格式文件时会被自动设置,因此如果转换输出上述格式文件,则不用显示指定该选项。

  • -N, --number-sections

对于转换输出LaTeX, ConTeXt, HTML, EPUB格式文档时,对文中章节进行编号。默认情况下,文章的章节是不会被编号的。对于使用了class unnumbered 的章节肯定不会被标号,即使使用了--number-sections选项。

参考: pandoc中文pdf转换攻略


我的博客: http://liumh.com