Pandoc使用和配置
Pandoc介绍
将文件从一种标记格式转换为另一种格式(比如 html 和 markdown等标记语言),它可以将文档在 Markdown、LaTeX、reStructuredText、HTML、Word docx 等多种标记格式之间相互转换,并支持输出 PDF、EPUB、HTML 幻灯片等多种格式。pandoc支持转换的格式非常多:
安装
- Pandoc 可以在Linux上进行安装:
scoop install pandoc
# 安装成功后 查看帮助(会发现一些有用的选项)
pandoc -h
-
pandoc 可以从官网下载文件;
首先从github上获取最新版本,有5种版本可供选择,为了不用安装我下载了其pancoc-2.0.2-windows.zip版本
解压之后得到4个文件:.rtf与.txt——版权声明文件,.html——用户指南,pandoc.exe——命令行工具。主要使用pandoc.exe来进行文件转换。
-
Git Windows 64位下载地址:
百度网盘,密码:b5t6
安装后的配置
安装之后,使用 pandoc --version 命令用于检查pandoc是否可用,这时候如果直接在任意处打开cmd来执行,windows可能不能识别此命令,需要将pandoc.exe的路径配置到path环境变量中去
我的路径:
我的电脑——>鼠标右键:属性——>高级系统设置——>高级:环境变量——>系统变量:path——>.......;D:\Typora—编辑软件\Pandoc;
注:系统环境变量是相对所有用户而言,所以配置一个就可以了。
使用 pandoc
安装好上述两个软件,在要转换文件格式的目录下,右键选择 git bash,运行下面命令,检查pandoc软件是否正常安装:
pandoc -h #或者
pandoc --version
pandoc.exe 2.10.1
Compiled with pandoc-types 1.21, texmath 0.12.0.2, skylighting 0.8.5
Default user data directory: C:\Users\huang\AppData\Roaming\pandoc
Copyright (C) 2006-2020 John MacFarlane
Web: https://pandoc.org
This is free software; see the source for copying conditions.
There is no warranty, not even for merchantability or fitness
for a particular purpose.
使用
可以显式指定输入和输出的格式,使用 -f 输入格式 -t 输出格式
如果未明确指定输入或输出格式,pandoc将根据文件的扩展名进行猜测
1. md 转 html
pandoc -s -f gfm -t html5 --css=css/markdownPad-github.css test.md -o test.html
2.md 转 docx文件
pandoc test.md -o test.docx
-s 表示使用标准模板输出
-f gfm -t html5 表示用 gfm 引擎来解析,从 Github Flavored MarkDown 到 HTML5。从网上看的别人写的是-f markdown_github -t html,试着使用这个来编译会产生Warning,提示找不到markdown_github,用gfm替代,索性就直接在命令里使用gfm
--css=css/markdownPad-github.css 把 markdownPad-github.css 这个css文件加到生成的HTML文件中,是其呈现出不同的样式
test.md -o test.html 把test.md这个MarkDown文件输出成同的.html文件,这样使用有时候会有Warning,应该是需要把.html取一个与.md文件不同的名字
本想使用github-markdown.css来呈现 github 式的 MarkDown 文件,但生成的html文件并没有.markdown-body等 class 名字,应该是 html 模板的原因,后来改用markdownPad-github.css
3.md 转 pdf
pandoc --pdf-engine=xelatex --template=D:\tools\Pandoc\pm-template.latex test.md -o test.pdf
生成pdf过程中的问题
-
执行命令:
pandoc --latex-engine=xelatex test.md -o test.pdf
-
编译出错:
latex-engine has been removed. Use --pdf-engine instead.
替换为:pandoc --pdf-engine=xelatex test.md -o test.pdf
-
编译生成的pdf文件只有英文,中文不显示,原因是没有指定中文字体,在 cmd 中用 fc-list 查看所有安装的字体:``
fc-list :lang=zh 输出所有中文字体, -
cmd输出的中文乱码,执行chcp 65001打开 active code page 65001 可以看到正常的中文输出
-
注:用 -V mainfont="Microsoft YaHei" 指定中文字体,必须是双引号,否则会报错
pandoc --pdf-engine=xelatex -V mainfont="Microsoft YaHei" test.md -o test.pdf -
中文正常显示后,发现中文不换行。原因是 Pandoc 使用的 latex 模板文件需要修改
看了几篇文章,他们都改用了Tzeng Yuxio的模板文件,下载该模板,修改命令为:
pandoc --pdf-engine=xelatex --template=pm-template.latex test.md -o test.pdf
或者 指明绝对路径:
pandoc --pdf-engine=xelatex --template=D:\tools\Pandoc\pm-template.latex test.md -o test.pdf
利用 Typora 进行转换
比如中Typora中markdown与word的互转: 在Typora中:Typora 👉 文件 👉 导入/导出 选择 word格式即可。(markdown中的数学公式也可以转换到word中。)