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

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

2013-04-25
Pandoc是一款命令行轉檔軟體,不過和一般人對轉檔軟體的印象不同,它所轉換的對象不是影片,而是多種常見的標記語言(markup language)。
在我的Linux電腦上,預設模版放在這個位置:


也可用以下指令叫出某格式的模版,來閱讀或另存:


得到範本後,就可以依樣畫葫蘆地修改它們了。將模版修改好之後,就可以透過--template參數套用它。如同下面這行:


你可以用模版功能來進行絕大多數的格式自定義,自由度相當高。至於少部分無法透過模版架構進行自訂的東西,在Pandoc指令後方往往也能追加一些特殊參數來處理。具體有哪些參數可用,還請參看官網的參數列表:http://johnmacfarlane.net/pandoc/README.html#options。

定義與修改模版

如果你剛剛試著看過任何一個Pandoc模版,這時恐怕正感到頭暈,因為模版裡面堆滿了「$」符號。這些「$」符號被兩兩成對地運用著,像我們平常使用括號那樣夾著某些東西。

這就是Pandoc所用的模版巨集語句!包括以下幾種:

1. if 判斷→ $if(變數名)$ $else$ $endif$
如果變數有被指定,則$if(變數名)$後的內容會被實際寫入檔案中。反之,如果變數沒被指定,則$else$後面的內容會被寫入。判斷式的最後需用$endif$收尾。

2. for 迴圈→ $for(變數名)$ $endfor$
運用在多值變數上。會重複寫入$for(變數名)$與$endfor$之間的內容。變數有多少個值就會重複寫入幾次。 3. 變數→ $變數名$
會被替換為指定的變數值。變數名可以自己取,譬如命名為largefontsize等等。

有這些東西就能玩出很多花樣了,例如:


這行表示,當使用者有指定largefontsize時,才將font-size: $largefontsize$;這行寫入CSS中,可玩的東西很多啦!說了那麼多,那麼該如何將變數具體指定為某個值呢?讓我們回來看看pdf篇最後的範例:


這行中,「-V mainfont=...」也可以寫成「--veriable mainfont=...」。更直接點說,這段指令將一個名叫mainfont的變數,設定為"WenQuanYi Micro Hei"的值。這樣應該完全理解了吧?若想了解更多變數說明,可以看看官方說明(http://johnmacfarlane.net/pandoc/README.html#templates)。

瑕疵與繞過

Pandoc轉檔很方便,但程式本身還是有些問題。至少在筆者的經驗中,1.9.2版透過命令行輸入時,若輸入的字串中包含任何非英文字元,就會報錯。

但這並不是Pandoc內部不能處理非英文路徑,而似乎是Pandoc的「命令行介面」不能傳入非英文字元。如果不幸碰上,稍微更名一下就能將問題避掉了。

<本文依創用CC BY-ND-NC授權刊登,原文請見:http://www.openfoundry.org/tw/foss-programs/8814>

<林雪凡,童話世界的居民,正職小說家。對於任何試圖將世界童話化的傢伙與技術都深感興趣。最近因為童話世界物價高漲而忙著打工。>

<自由軟體鑄造場(OSSF),自由軟體鑄造場為中央研究院與行政院國家科學委員會共同出資設立的專職計畫,對自由軟體使用開發有興趣的讀者,可以參考其計畫網址:http://www.openfoundry.org>


追蹤我們Featrue us

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

我知道了!