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来进行文件转换。
  • panddlenlp 安装 pandoc安装_html

  • Git Windows 64位下载地址:
    百度网盘,密码:b5t6

安装后的配置

安装之后,使用 pandoc --version 命令用于检查pandoc是否可用,这时候如果直接在任意处打开cmd来执行,windows可能不能识别此命令,需要将pandoc.exe的路径配置到path环境变量中去

我的路径:

panddlenlp 安装 pandoc安装_panddlenlp 安装_02

我的电脑——>鼠标右键:属性——>高级系统设置——>高级:环境变量——>系统变量:path——>.......;D:\Typora—编辑软件\Pandoc;

panddlenlp 安装 pandoc安装_panddlenlp 安装_03


注:系统环境变量是相对所有用户而言,所以配置一个就可以了。

使用 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中。)