使用pandoc来生成pdf

安装pandoc

pandoc download url

查看官网指导,我需要下载的是linux版本,那么只要在下载页面里面选择pandoc-2.12.linux.tar.gz就行。

下载完成之后,解压,就算安装好了,查看一下里面的内容

pandoc tree

按照官方的指导说法,如果想要导出PDF,那么还需要安装texlive

For PDF output, you’ll need LaTeX. We recommend installing TeX Live via your package manager. (On Debian/Ubuntu, apt-get install texlive.)

安装texlive

看网上有很多人是下载了iso镜像进行安装texlive的,但查看官网给的安装指导后,我准备从网络安装texlive。

  • 第一步、下载安装脚本

    • 根据官方下载指导,从上面下载安装脚本install-tl-unx.tar.gz

    • 解压刚刚下载下来的文件,里面内容如下。其中install-tl就是一会儿要运行的负责下载textlive的脚本

    解压 install-tl-unx.tar.gz后的内容

  • 第二步、参考快速安装手册, 先要卸载以前安装的旧版本。由于我以前没安装过,此处步骤就略过了。

  • 第三步、运行./install_tl

    • 我运行这个命令后报错:
./install-tl: open tlpdb(http://mirrors.sjtug.sjtu.edu.cn/ctan/systems/texlive/tlnet/tlpkg/texlive.tlpdb) failed: Inappropriate ioctl for device at tlpkg/TeXLive/TLPDB.pm line 362.
- 在网上找了找,说是在这个脚本后面添加`-no-verify-downloads`就可以。所以整个命令为`./install_tl -no-verify-downloads`
  • 第四步、修改textlive的安装路径

    • 看一下命令界面,i命令就直接安装了,不过我需要先修改textlive的安装路径

    textlive安装界面

    textlive安装界面

    • textlive的默认安装路径是这样子的,如下图所示。你可以按照提示,输入对应的数字更改textlive的安装路径

    textlive默认路径

  • 第五步、安装

    • 修改完默认路径后,回到安装界面,然后输入i命令,就开始安装了。整个过程挺长的,最好保持良好的网络。
  • 第六步、修改PATH变量

    • 安装完成之后,它有一个提示,让你修改path变量。如下图所示

    提示添加path

    • 添加path。
cd ~
vim .bashrc

### 在.bashrc里面写上这两句
PATH=/home/xxxxxxxx/texlive/2017/bin/x86_64-linux:$PATH;
export PATH
  • 第七步、测试是否安装正常,输入命令tex --version,打印结果如下图

    测试打印tex版本

使用pandoc来生成pdf

查看pandoc官方使用手册,或者官方示例

官方示例找到了将md转成pdf的方法,比如说将test.md转成test.pdf

pandoc test.md --pdf-engine=xelatex -o test.pdf

执行了上面这个命令之后,发现报一堆错,都是说找不到某个中文字。看下面这个报错图,它默认使用的是lmroman10-regular这个字体。

missing chinese in font

解决方法是:

  • 1.给linux安装中文字体,可以看我之前的一片笔记:给CentOS安装中文字体

  • 2.转换的时候指定字体。我把苹果里面的字体PingFang SC拿了出来,装在了CentOS上面

    • pandoc test.md --pdf-engine=xelatex -V CJKmainfont="PingFang SC" -V mainfont="PingFang SC" -o test.pdf

有时候,转换成pdf可能有些不够美观,这个时候就需要使用模板。使用--template设置模板名字或者路径。

pandoc test.md --template=template.latex --pdf-engine=xelatex -V CJKmainfont="PingFang SC" -V mainfont="PingFang SC" -o test.pdf

关于--template参数:

  • --template后面如果是一个模板名,如--template=template.latex,则默认会在源md文件同级目录里面找,找不到就会去template/文件夹里面找

  • --template后面如果是一个路径,那么直接使用该路径的模板,如--template=/home/xxxxxxx/pandoc/template.latex

pandoc的其他参数、其他用法,还有待学习。

Show Comments