使用pandoc將Markdown轉(zhuǎn)換為格式化文檔
生活在普通文本世界么?以下是無(wú)需使用文字處理器而創(chuàng)建別人要的格式化文檔的方法。
如果你生活在普通文本世界里,總會(huì)有人要求你提供格式化文檔。我就經(jīng)常遇到這個(gè)問(wèn)題,特別是在 Day JobTM。雖然我已經(jīng)給與我合作的開(kāi)發(fā)團(tuán)隊(duì)之一介紹了用于撰寫(xiě)和審閱發(fā)行說(shuō)明的 Docs Like Code 工作流程,但是還有少數(shù)人對(duì) GitHub 和使用 Markdown 沒(méi)有興趣,他們更喜歡為特定的專(zhuān)有應(yīng)用格式化的文檔。
好消息是,你不會(huì)被卡在將未格式化的文本復(fù)制粘貼到文字處理器的問(wèn)題當(dāng)中。使用 pandoc,你可以快速地給人們他們想要的東西。讓我們看看如何使用 pandoc 將文檔從 Markdown 轉(zhuǎn)換為 Linux 中的文字處理器格式。
請(qǐng)注意,pandoc 也可用于從兩種 BSD(NetBSD 和 FreeBSD)到 Chrome OS、MacOS 和 Windows 等的各種操作系統(tǒng)。
基本轉(zhuǎn)換
首先,在你的計(jì)算機(jī)上安裝 pandoc。然后,打開(kāi)控制臺(tái)終端窗口,并導(dǎo)航到包含要轉(zhuǎn)換的文件的目錄。
輸入此命令以創(chuàng)建 ODT 文件(可以使用 LibreOffice Writer 或 AbiWord 等字處理器打開(kāi)):
pandoc -t odt filename.md -o filename.odt
記得用實(shí)際文件名稱(chēng)替換 filename
。如果你需要為其他文字處理器(你知道我的意思)創(chuàng)建一個(gè)文件,替換命令行的 odt
為 docx
。以下是本文轉(zhuǎn)換為 ODT 文件時(shí)的內(nèi)容:
Basic conversion results with pandoc.
這些轉(zhuǎn)換結(jié)果雖然可用,但有點(diǎn)乏味。讓我們看看如何為轉(zhuǎn)換后的文檔添加更多樣式。
帶樣式轉(zhuǎn)換
pandoc
有一個(gè)漂亮的功能,使你可以在將帶標(biāo)記的純文本文件轉(zhuǎn)換為字處理器格式時(shí)指定樣式模板。在此文件中,你可以編輯文檔中的少量樣式,包括控制段落、文章標(biāo)題和副標(biāo)題、段落標(biāo)題、說(shuō)明、基本的表格和超鏈接的樣式。
讓我們來(lái)看看能做什么。
創(chuàng)建模板
要設(shè)置文檔樣式,你不能只是使用任何一個(gè)模板就行。你需要生成 pandoc 稱(chēng)之為引用模板的文件,這是將文本文件轉(zhuǎn)換為文字處理器文檔時(shí)使用的模板。要?jiǎng)?chuàng)建此文件,請(qǐng)?jiān)诮K端窗口中鍵入以下內(nèi)容:
pandoc -o custom-reference.odt --print-default-data-file reference.odt
此命令創(chuàng)建一個(gè)名為 custom-reference.odt
的文件。如果你正在使用其他文字處理程序,請(qǐng)將命令行中的 “odt” 更改為 “docx”。
在 LibreOffice Writer 中打開(kāi)模板文件,然后按 F11
打開(kāi) LibreOffice Writer 的 “樣式” 窗格。雖然 pandoc 手冊(cè)建議不要對(duì)該文件進(jìn)行其他更改,但我會(huì)在必要時(shí)更改頁(yè)面大小并添加頁(yè)眉和頁(yè)腳。
使用模板
那么,你要如何使用剛剛創(chuàng)建的模板?有兩種方法可以做到這一點(diǎn)。
最簡(jiǎn)單的方法是將模板放在家目錄的 .pandoc
文件夾中,如果該文件夾不存在,則必須先創(chuàng)建該文件夾。當(dāng)轉(zhuǎn)換文檔時(shí),pandoc
會(huì)使用此模板文件。如果你需要多個(gè)模板,請(qǐng)參閱下一節(jié)了解如何從多個(gè)模板中進(jìn)行選擇。
使用模板的另一種方法是在命令行鍵入以下轉(zhuǎn)換選項(xiàng):
pandoc -t odt file-name.md --reference-doc=path-to-your-file/reference.odt -o file-name.odt
如果你想知道使用自定義模板轉(zhuǎn)換后的文件是什么樣的,這是一個(gè)示例:
A document converted using a pandoc style template.
選擇模板
很多人只需要一個(gè) pandoc
模板,但是,有些人需要不止一個(gè)。
例如,在我的日常工作中,我使用了幾個(gè)模板:一個(gè)帶有 DRAFT 水印,一個(gè)帶有表示內(nèi)部使用的水印,另一個(gè)用于文檔的最終版本。每種類(lèi)型的文檔都需要不同的模板。
如果你有類(lèi)似的需求,可以像使用單個(gè)模板一樣創(chuàng)建文件 custom-reference.odt
,將生成的文件重命名為例如 custom-reference-draft.odt
這樣的名字,然后在 LibreOffice Writer 中打開(kāi)它并修改樣式。對(duì)你需要的每個(gè)模板重復(fù)此過(guò)程。
接下來(lái),將文件復(fù)制到家目錄中。如果你愿意,你甚至可以將它們放在 .pandoc
文件夾中。
要在轉(zhuǎn)換時(shí)選擇特定模板,你需要在終端中運(yùn)行此命令:
pandoc -t odt file-name.md --reference-doc=path-to-your-file/custom-template.odt -o file-name.odt
改變 custom-template.odt
為你的模板文件名。
結(jié)語(yǔ)
為了不用記住我不經(jīng)常使用的一組選項(xiàng),我拼湊了一些簡(jiǎn)單的、非常蹩腳的單行腳本,這些腳本封裝了每個(gè)模板的選項(xiàng)。例如,我運(yùn)行腳本 todraft.sh
以使用帶有 DRAFT 水印的模板創(chuàng)建文字處理器文檔。你可能也想要這樣做。
以下是使用包含 DRAFT 水印的模板的腳本示例:
pandoc -t odt $1.md -o $1.odt --reference-doc=~/Documents/pandoc-templates/custom-reference-draft.odt
使用 pandoc 是一種不必放棄命令行生活而以人們要求的格式提供文檔的好方法。此工具也不僅適用于 Markdown。我在本文中討論的內(nèi)容還可以讓你在各種標(biāo)記語(yǔ)言之間創(chuàng)建和轉(zhuǎn)換文檔。有關(guān)更多詳細(xì)信息,請(qǐng)參閱前面鏈接的 pandoc 官網(wǎng)。