摘要

pandoc [options(选项)] [input-file(输入文件)]…

描述

Pandoc是一个用于从一种标记格式转换为另一种的Haskell库,还是一个使用该库的命令行工具。它可以读取markdown格式和Textile格式(的子集)、reStructuredText格式、HTML格式、以及LaTeX格式;而且它可以写成纯文本、markdown格式、reStructuredText格式、HTML格式、LaTeX格式、ConTeXt格式、RTF格式、DocBook XML格式、OpenDocument XML格式、ODT格式、GNU Texinfo格式、MediaWiki markup格式、EPUB格式、Textile格式、groff man页面、Emacs Org-Mode格式、以及Slidy格式或S5格式的HTML幻灯片显示。

Pandoc的markdown增强版包括的语法有:脚注、表格、灵活有序列表、定义列表、分隔的代码块、上标、下标、删除线、标题块、自动目录、嵌入式LaTeX数学符号、引用、以及将HTML标记内的块元素转化为markdown格式。(在下面的Pandoc的markdown格式小节下描述了这些增强语法,还可以使用--strict选项将其禁用。)

同大多数用于从markdown格式转换为HTML格式的现有工具不同的是,那些工具都使用了正则替换,而Pandoc具有模块化设计:它由一系列读出器和一系列编写器组成的,读出器用于以给定格式分析文本并生成一份此文档的本地表示,编写器则用于将这份本地表示转换为目标格式。因此,增加某种输入或输出格式只需要增加一个读出器或编写器就可以了。

使用Pandoc

如果未指定input-file(输入文件),那么将从stdin(标准输入)中读取输入。否则,多个输入文件input-files会串联起来(彼此之间以一个空行分隔),并作为输入使用。在默认情况下,会输出到stdout(标准输出设备,如命令行窗口)(然而,对于odtepub输入格式则被禁用输出到stdout)。对于输出到文件,应使用-o选项:

pandoc -o output.html input.txt

除了文件,还可以给定一个绝对URI。在本例中,Pandoc将使用HTTP协议获取相应内容:

pandoc -f html -t markdown http://www.fsf.org

如果有多个输入文件,pandoc在解析前将把它们全部串联起来(它们彼此之间以若干空行分隔)。

输入和输出格式可以使用命令行选项显式指定。可使用-r/--read-f/--from选项指定输入格式,使用-w/--write-t/--to选项指定输出格式。因此,把hello.txt从markdown格式转换为LaTeX格式,你可以输入:

pandoc -f markdown -t latex hello.txt

hello.html从html格式转换为markdown格式:

pandoc -f html -t markdown hello.html

-t/--to选项下列出了支持的输出格式。在-f/--from选项下列出了支持的输入格式。请注意,rsttextilelatex、以及html读出器是不完整的;尚有一些它们没有解析的结构。

如果没有显示指定输入或输出格式,那么pandoc将尝试从输入和输出文件名的扩展名来猜出相应格式。因此,例如,

pandoc -o hello.tex hello.txt

将把hello.txt从markdown格式转换为LaTeX格式。如果没有指定输出文件(因此会输出到stdout),或者如果输出文件的扩展名是未知的,那么输出格式将默认采用HTML格式。如果没有指定输入文件(因此输入将来自stdin),或者如果输入文件的扩展名是未知的,那么除非显式指定,否则输入格式将假定为markdown格式。

Pandoc对于输入和输出都使用UTF–8字符编码。如果你的本地字符编码不是UTF–8,你应该通过iconv传送输入和输出:

iconv -t utf-8 input.txt | pandoc | iconv -f utf-8