[翻譯]《Pandoc使用者指南》之一

高翌翔發表於2011-12-17

摘要

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

相關文章