Pandoc 安装与使用(转)

 PANDOC

Markdown 是我平时编写各类材料和文章时最喜欢的工具之一,但将其作为文档分发时却略有些不便。毕竟不是所有人都了解 Markdown 的语法,而且它亦不如富文本文档易读。直至我发现了 Pandoc,它可以将文档在 Markdown、LaTeX、reStructuredText、HTML、Word docx 等多种标记格式之间相互转换,并支持输出 PDF、EPUB、HTML 幻灯片等多种格式。该程序被称为格式转换界的 “瑞士军刀”。

我平时大量使用该程序生成 HTML 和 PDF 文档,希望本文可以总结一些自己使用的心得。

程序简介

Pandoc 的作者是 John MacFarlane,他是加州大学伯克利分校的哲学系教授。Pandoc 使用 Haskell 语言编写,被作者用来生成讲义、课件和网站等。该程序开源免费,目前以 GPL 协议托管在 Github 网站上。

程序安装

Pandoc 的安装有许多方式,但本文只介绍最简单的方法。Pandoc 的作者已经为 Windows、macOS、Linux 等操作系统分别制作了对应的程序安装包。要使用该程序,只需下载对应的程序安装包进行安装即可。

对于 Ubuntu 等 Linux 发行版,Pandoc 已经被集成到系统的软件源内,因此还可以直接从软件源安装:

 sudo apt-get install pandoc

或者,如果你已经安装了 Anaconda,那么你可以直接使用 Pandoc 了。该程序已经被集成到 Anaconda 中。

参数说明

Pandoc 程序的命令使用方式为:

 pandoc <files> <options>

其中 <files> 为输入的内容,其输入即可以来自文件,也可以来自标准输入甚至网页链接。而 <options> 为参数选项。主要的参数选项有:

-f <format>、-r <format>:指定输入文件格式,默认为 Markdown;

-t <format>、-w <format>:指定输出文件格式,默认为 HTML;

-o <file>:指定输出文件,该项缺省时,将输出到标准输出;

--highlight-style <style>:设置代码高亮主题,默认为 pygments;

-s:生成有头尾的独立文件(HTML,LaTeX,TEI 或 RTF);

-S:聪明模式,根据文件判断其格式;

--self-contained:生成自包含的文件,仅在输出 HTML 文档时有效;

--verbose:开启 Verbose 模式,用于 Debug;

--list-input-formats:列出支持的输入格式;

--list-output-formats:列出支持的输出格式;

--list-extensions:列出支持的 Markdown 扩展方案;

--list-highlight-languages:列出支持代码高亮的编程语言;

--list-highlight-styles:列出支持的代码高亮主题;

-v、--version:显示程序的版本号;

-h、--help:显示程序的帮助信息。

虽然 Pandoc 提供了用于指定输入输出格式的参数,但是很多时候该参数不必使用。Pandoc 已经足够聪明到可以根据文件名判断输入输出格式,所以除非文件名可能造成歧义,否则这两个参数都可以省略。

使用示例

信息查看

查看程序支持的输入文件格式:

$ pandoc --list-input-formats

查看程序支持代码高亮的编程语言:

 pandoc --list-highlight-languages

查看程序帮助:

 pandoc --help

生成 HTML 文档

使用 Pandoc 可以很容易地将 Markdown 文档渲染为 HTML 网页:

 pandoc demo.md -o demo.html

上面的命令将输出一个 HTML 文档,但该文档不包含任何样式,它的显示效果依赖于你使用的浏览器。我们当然希望可以得到排版更精美的文档,只要在转换时引入自己的层叠样式表 CSS 文件。输入的 CSS 文件可使用 -c 命令来指定:

 pandoc demo.md -c style.css -o demo.html

如此输出的 HTML 文档已经包含样式文档了,平时自己查看时,效果很不错。但该方式依然存在部分问题。我们发布或共享文档时,需要传送至少两个文件:1 个 HTML 文件和 1 个 CSS 文件,略有些不便。而如果文档中还包含多个本地图片等文件,共享文档几乎成了不可能的事情。好在 Pandoc 可以将外部文件嵌入到 HTML 文档中,生成一个自包含的独立文件:

 pandoc demo.md --self-contained -c style.css -o demo.html

在该命令中,--self-contained 参数指定:将任何的外部文件嵌入至输出的文件中,形成一个独立的 HTML 文档。这样传送资料时只传送一个文件就可以了,就像分享 PDF 文档一样方便。

生成 docx 文档

虽然我很喜欢使用 HTML 作为文档交换格式,但某些情况下你可能还是需要传送 Word docx 文件。这也不是问题,Pandoc 能够将所支持的输入文件一键转换为 Word docx 格式。

下面的命令将一份 Markdown 文件转换为 docx 格式:

 pandoc demo.md -o demo.docx

下面的命令将 HTML 网页转换为 docx 格式:

 pandoc http://gnss.help/2017/06/12/pandoc-install-usage/ -o this_page.docx

需补充的是:Pandoc 无法为生成的 Word docx 文档指定排版方式。你可能需要二次编辑输出的文件,将标题、正文等调整为满意的样式。

生成 PDF 文档

使用 Pandoc 直接生成 PDF 文件时,需要安装 LaTeX。并且,Pandoc 自带的 PDF 引擎不支持中文,必须为中文配置额外的引擎和模板。Pandoc 程序生成 PDF 文件的命令为:

 pandoc demo.md -o demo.pdf

我生成 PDF 文档时,未使用以上的方法。而是采用 HTML 文件作为中间文件过渡,使用 Windows 系统的 “打印到 PDF” 功能,将 HTML 文档进一步转换为所需的 PDF 文档。

生成 Markdown 文档

别忘了 Markdown 也是 Pandoc 支持的输出格式之一,我们可以将任何支持的输入格式转换为 Markdown。这对于我们将之前的文档也切换到 Markdown 格式来说,实在是太方便了。

下面的命令由 Word docx 文档生成 Markdown 文件:

 pandoc demo.docx -o demo.md

下面的命令由 HTML 网页生成 Markdown 文档:

 pandoc http://gnss.help/2017/06/12/pand

 层叠样式表文件决定最终的显示样式,因此有一个漂亮的 CSS 样式表文件非常重要。在此推荐两个 CSS 文件,首先是由 Alberto Leal 制作的 Github 风格的样式表文件,它的显示效果类似于 Github 网站的 README 文档。另一个是我制作的,类似本站曾采用的 Minos 主题(Minos-style)的样式表文件。该文件还未完全稳定,尚需部分完善,不过对付一般的文字排版已经没有问题。


神器Pandoc的安装与使用

How to install Pandoc in CentOS 6



Compiling from source

If for some reason a binary package is not available for your platform, or if you want to hack on pandoc or use a non-released version, you can install from source.

Getting the pandoc source code

Source tarballs can be found at https://hackage.haskell.org/package/pandoc. For example, to fetch the source for version 1.17.0.3:

wget https://hackage.haskell.org/package/pandoc-1.17.0.3/pandoc-1.17.0.3.tar.gz

tar xvzf pandoc-1.17.0.3.tar.gz

cd pandoc-1.17.0.3

Or you can fetch the development code by cloning the repository:

git clone https://github.com/jgm/pandoc

cd pandoc

Note: there may be times when the development code is broken or depends on other libraries which must be installed separately. Unless you really know what you’re doing, install the last released version.

Quick stack method

The easiest way to build pandoc from source is to use stack:

Install stack. Note that Pandoc requires stack >= 1.6.0. 

wget -qO- https://get.haskellstack.org/ | sh

Change to the pandoc source directory and issue the following commands:

stack setup

stack install

stack setup will automatically download the ghc compiler if you don’t have it. stack installwill install the pandoc executable into ~/.local/bin, which you should add to your PATH. This process will take a while, and will consume a considerable amount of disk space.


pandoc -f latex -t docx -o test.docx test.tex

Description: CentOS Linux release 7.4.1708 (Core)运行成功,输出的表格略有问题!


最方便的直接下载压缩包

FWIW we (rstudio) provide pandoc binaries at https://s3.amazonaws.com/rstudio-buildtools/pandoc-1.13.1.zip (windows, linux and mac)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容