reStructuredText Markdown textile DocBook Pandoc LaTeX HTML 標記語言 自由軟體 轉檔

Pandoc-用命令行轉換標記語言

2013-04-25
Pandoc是一款命令行轉檔軟體,不過和一般人對轉檔軟體的印象不同,它所轉換的對象不是影片,而是多種常見的標記語言(markup language)。
命令行轉檔程式Pandoc能將Mark down、reStructuredText、textile、HTML、DocBook、LaTeX格式轉換為:


1. 基於HTML的標記語言:包括XHTML、HTML、S5幻燈片。
2. 文書編輯格式:包括docs、odt。
3. Epub電子書
4. LaTeX格式。透過LaTeX格式還可以進一步轉為PDF格式。
5. 許多輕量級標記語言,包括Markdown、reStructuredText、AsciiDoc、Mediawiki、Textile與Emacs Org-Mode。

安裝說明

Windows與Mac OS X使用者,請從下面的網頁下載安裝:http://code.google.com/p/pandoc/downloads/list。

至於Linux與BSD使用者,請檢查你的套件庫,從套件庫安裝即可。倘若套件庫版本過舊,官網也有提供使用源碼包安裝的方式。詳情請參看網頁「http://johnmacfarlane.net/pandoc/installing.html」。


使用說明

前面說過了,Pandoc是款命令行軟體,所以請打開終端機,開始下指令吧!

基本指令下法

先看下面這行,這就是最簡單的Pandoc用法:


pandoc是Pandoc的主程式,Pandoc的所有操作都是透過這個程式執行的。demo.rst指定了轉檔時的輸入檔案,-o demo.md則是輸出檔案。如果不用-o參數指定輸出檔名,Pandoc就會直接將結果輸出到標準輸出上(一般說來,這是指終端機上)。

Pandoc會透過副檔名,自動判斷輸入與輸出的檔案格式。像上面那一行,輸入檔案會被自動視為reStructuredText(http://docutils.sourceforge.net/docs/user/rst/quickref.html),而輸出檔案則會被自動視為markdown(http://markdown.tw/)。你也可以透過-f與-t參數強制指定輸入與輸出的格式,比方說:


以上這句指令,會將輸入檔案「demo.txt」視為markdown格式,並將它轉為html格式後,存到output.txt位置上。

-f、-t後面可接哪些格式名稱?請參考這裡:http://johnmacfarlane.net/pandoc/README.html#general-options。

產生PDF

pandoc的PDF產生功能是透過LaTeX來做的,所以除了主程式外,使用前還得先裝別的外掛程式。在Linux上,這個程式就是texlive包,請自行抓來裝。如果光裝texlive包Pandoc轉pdf時還是跑不起來,就將texlive-cjk包和texlive-xetex包也一併安裝,這樣就該沒問題了。

兩個包合計將近500MB,真是夠大的。裝好了之後,就請立刻執行看看吧!


若你的demo.rst是純英文的,照上面操作就可以順利產生pdf檔案。然而,如果原始文件檔之中含有其他字元(比方說中文字),執行之後pdf產生不出來,反而會吐出「Undefined control sequence」的錯誤訊息,這是因為預設的latex引擎不支援中文的緣故。

為了解決這個問題,必須改用能支援Unicode的xelatex引擎。此外,預設的字型也不包括中文,為了順利顯示,這邊還需要另外指定中文字型。總之就是下面這行(指定的字型是文泉驛微米黑,可以替換成你希望的。請記得用英文名稱):


如此一來,就能順利產生出中文的pdf檔案了。

不過,儘管順利產生pdf,但某些問題依然存在(例如中文的line break),這些東西需透過校調模版才能解決。接下來,筆者會介紹Pandoc的模版,但關於如何用XeTeX設定中文pdf文件已超出本文範圍,網路上有很多這方面資料,個人推荐新手參考以下這個網頁來修改模版:http://electronic-blue.wikidot.com/doc:xetex。

使用模版

模版(Template)是用來告訴Pandoc,它應該要用什麼格式來產生目的檔案。說得更具體一點:字型如何?字要多大?頁面寬度多寬?加重語氣時要用黑體還是斜體?以上這些都有賴模版進行設定。

不同的目標檔案格式,其模版的基本格式也不一樣。比方說html的模版就會是CSS與html的混合,latex就是.tex格式 & &諸如此類。此外,模版中還會混有pandoc專屬的內部程式碼。

只要擁有相應格式的撰寫經驗,修改預設模版其實並不難,但第一步,要先找到這些模版被放在哪裡。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!