安装pandoc
查看官网指导,我需要下载的是linux版本,那么只要在下载页面里面选择pandoc-2.12.linux.tar.gz
就行。
下载完成之后,解压,就算安装好了,查看一下里面的内容
按照官方的指导说法,如果想要导出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
- 我运行这个命令后报错:
./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的安装路径
- 看一下命令界面,
-
第五步、安装
- 修改完默认路径后,回到安装界面,然后输入
i
命令,就开始安装了。整个过程挺长的,最好保持良好的网络。
- 修改完默认路径后,回到安装界面,然后输入
-
第六步、修改PATH变量
- 安装完成之后,它有一个提示,让你修改path变量。如下图所示
- 添加path。
cd ~
vim .bashrc
### 在.bashrc里面写上这两句
PATH=/home/xxxxxxxx/texlive/2017/bin/x86_64-linux:$PATH;
export PATH
-
第七步、测试是否安装正常,输入命令
tex --version
,打印结果如下图
使用pandoc来生成pdf
查看pandoc官方使用手册,或者官方示例
在官方示例找到了将md转成pdf的方法,比如说将test.md
转成test.pdf
pandoc test.md --pdf-engine=xelatex -o test.pdf
执行了上面这个命令之后,发现报一堆错,都是说找不到某个中文字。看下面这个报错图,它默认使用的是lmroman10-regular
这个字体。
解决方法是:
-
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的其他参数、其他用法,还有待学习。