Pandoc

如果你需要将文档从一种格式转换成另一种格式,那么Pandoc是你的一把瑞士军刀,Pandoc可以将下列格式文档进行相互转换。
MarkdownMicrosoft WordOpenOffice/LibreOfficeJupyter notebookHTMLEPUBroff manLaTeX、甚至是PDF。当然Pandoc还包括很多类型文档的转换,这里就不一一例举了,可以参考About pandoc

安装

windows

下载地址:windows下载
也可以通过Chocolatey来安装。

choco install pandoc
# 其他Pandoc软件安装
choco install rsvg-convert python miktex

macOS

brew install pandoc
# Pandoc解析器
brew install pandoc-citeproc
# 其他Pandoc软件安装
brew install librsvg python homebrew/cask/basictex

Linux

sudo yum install pandoc
# 如果想输出PDF,可以安装TeX Live
sudo yum install texlive

Ubuntu/Debian

sudo apt install pandoc
# 如果想输出PDF,可以安装TeX Live
sudo apt install texlive

使用

经过上面的安装,我们可以使用了。

验证

[frank@LAPTOP-0OCJTGJR ~]$ pandoc --version
pandoc 1.12.3.1
Compiled with texmath 0.6.6, highlighting-kate 0.5.6.
Syntax highlighting is supported for the following languages:
    actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog,
    clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d,
    diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang,
    fortran, fsharp, gnuassembler, go, haskell, haxe, html, ini, java, javadoc,
    javascript, json, jsp, julia, latex, lex, literatecurry, literatehaskell,
    lua, makefile, mandoc, markdown, matlab, maxima, metafont, mips, modelines,
    modula2, modula3, monobasic, nasm, noweb, objectivec, objectivecpp, ocaml,
    octave, pascal, perl, php, pike, postscript, prolog, python, r,
    relaxngcompact, restructuredtext, rhtml, roff, ruby, rust, scala, scheme,
    sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog, vhdl,
    xml, xorg, xslt, xul, yacc, yaml
Default user data directory: /home/frank/.pandoc
Copyright (C) 2006-2013 John MacFarlane
Web:  http://johnmacfarlane.net/pandoc
This is free software; see the source for copying conditions.  There is no
warranty, not even for merchantability or fitness for a particular purpose.

小试牛刀

虽然下面的方法不怎么常用,我们先通过命令行的一个简单例子认识一下Pandoc

例子一:markdown 转 html

[frank@LAPTOP-0OCJTGJR pandoc]$ pandoc
# 标题一
## 标题二
> 摘要

这是按下Ctrl-D,看看会发生什么?

<h1 id="标题一">标题一</h1>
<h2 id="标题二">标题二</h2>
<blockquote>
<p>摘要</p>
</blockquote>

例子二:html 转 LaTeX

[frank@LAPTOP-0OCJTGJR pandoc]$ pandoc -f html -t markdown
<h1 id="标题一">标题一</h1>
<h2 id="标题二">标题二</h2>
<blockquote>
<p>摘要</p>
</blockquote>

这时再次按下Ctrl-D,看看会发生了什么?

标题一
======

标题二
------

> 摘要

我们是不是可以将markdown转换成LaTeX了?你会怎么使用命令组合呢?

文本转换

好了,玩够了,我们正式开始文本转换

编辑文档

使用任意你喜欢的文本编辑器编辑如下文档并保持为.md文件。这里保持成test1.md

---
title: Test
...

# Test!

This is a test of *pandoc*.

- list one
- list two

markdown 转 html

[frank@LAPTOP-0OCJTGJR pandoc]$ pandoc test1.md -f markdown -t html -s -o test1.html
[frank@LAPTOP-0OCJTGJR pandoc]$ ll
total 4
-rw-rw-r-- 1 frank frank 629 Feb  4 22:06 test1.html
-rw-rw-r-- 1 frank frank  81 Feb  4 22:05 test1.md

介绍一下参数
-s选项表示创建一个“独立”文件,其中包含页眉和页脚,而不仅仅是片段
-o test1.html 将输出放入文件中test1.html
-f markdown和-t html 表示,from markdown格式 to html格式,Pandoc模式就是从markdown转成html。

markdown 转 LaTeX

[frank@LAPTOP-0OCJTGJR pandoc]$ pandoc test1.md -f markdown -t latex -s -o test1.tex
[frank@LAPTOP-0OCJTGJR pandoc]$ ll
total 8
-rw-rw-r-- 1 frank frank  629 Feb  4 22:06 test1.html
-rw-rw-r-- 1 frank frank   81 Feb  4 22:05 test1.md
-rw-rw-r-- 1 frank frank 1627 Feb  4 22:17 test1.tex

当然,你也可以直接用下面的命令

[frank@LAPTOP-0OCJTGJR pandoc]$ pandoc test1.md -s -o test2.tex
[frank@LAPTOP-0OCJTGJR pandoc]$ ll
total 12
-rw-rw-r-- 1 frank frank  629 Feb  4 22:06 test1.html
-rw-rw-r-- 1 frank frank   81 Feb  4 22:05 test1.md
-rw-rw-r-- 1 frank frank 1627 Feb  4 22:17 test1.tex
-rw-rw-r-- 1 frank frank 1627 Feb  4 22:18 test2.tex

以为你的文件后缀是.tex,那么Pandoc就会知道你是想生成LaTeX文档,够贴心

markdown 转 pdf

如果想转成pdf那么我们需要安装texlive这个工具包,在安装一节中我们已经做过这件事儿了。那么我们就直接运行吧。

[frank@LAPTOP-0OCJTGJR pandoc]$ pandoc test1.md -s -o test1.pdf
[frank@LAPTOP-0OCJTGJR pandoc]$ ll
total 92
-rw-rw-r-- 1 frank frank   629 Feb  4 22:06 test1.html
-rw-rw-r-- 1 frank frank    81 Feb  4 22:05 test1.md
-rw-rw-r-- 1 frank frank 80599 Feb  4 22:20 test1.pdf
-rw-rw-r-- 1 frank frank  1627 Feb  4 22:17 test1.tex
-rw-rw-r-- 1 frank frank  1627 Feb  4 22:18 test2.tex

进阶

更高级的用法可以参考《Pandoc用户指南》


夏洛克
43 声望2 粉丝