标签 - pandoc

pandoc    2019-11-19 13:55:53    53    0    0

使用 Pandoc 将 Markdown 转化成 PDF 常见的流程是利用 xelatex 直接生成 PDF。这要求安装 Latex 的大部分功能以及各种宏包,也不能像 Latex 那样自由的控制格式,生成的速度也很慢。更关键的是容易出现各种莫名奇妙的问题。

于是就想了个另外生成 PDF 的办法,即利用 Pandoc 先将 Markdown 转成 Html,再利用浏览器的打印功能打印出 PDF,虽然多了一个步骤,但会少很多问题,不用那么折腾,正所谓遥程路反近,捷径常误人。

利用 xelatex 直接生成 PDF

如果使用 Pandoc 直接生成 PDF,则需要安装 latex,如果文档中含有中文,则需要 latex 套件中的 xelatex 外加改模板,如果需要代码块高亮,需要改模板,如果代码块需要添加行号,需要改模板,如果需要行内代码也有背景色,还是需要改模板,想给引用部分也加上背景色,还是需要改模板。

行内加背景色的这个功能,按照网上的操作改了模板也没有效果,这就是前面说的莫名其妙的问题,但在别人那里应该是有效的。

在 Pandoc 自带模板 eisvogel 的基础上改了一版,添加了上述的各种功能(如代码块高亮、行号等),这是下载地址,开箱即用。

将模板文件放到和 Markdonw 文件同一文件夹下或者 ~/.pandoc/templates 下,将模板中的字体改成你希望使用的字体:

  1. % 434 行附近
  2. \setCJKmainfont{SimSun} % 设置中文字型
  3. \setmainfont{Times New Roman} % 设置英文字型

然后执行以下命令,就可生成 PDF:

  1. pandoc --latex-engine=xelatex --template=eisvogel --listings input.md -o output.pdf

先转成 Html

使用以下命令将 Markdown 文档转成 Html 文件:

  1. pandoc -s input.md -o output.html

然后编辑 html 文档的 <head> 标签,添加需要的 jscss,就可以随意地控