Asciidoc简介
Markdown 是現(xiàn)在最流行的輕量級標記語言,Github、Stack Overflow、Smashing Magazine 等網(wǎng)站都使用 Markdown。Markdown 格式簡單,純文本具有很好的可讀性。但它對復(fù)雜格式(例如表格、圖片標題)支持不夠,也沒有預(yù)留擴展語法,不同網(wǎng)站各自擴展產(chǎn)生了很多方言。
社區(qū)有不少人意識到問題,其中就有 Jeff Atwood 牽頭,聯(lián)合 Stack Overflow、Github、reddit 的一些員工發(fā)起了 Standard Markdown 項目,希望將 Markdown 標準化。 沒想到項目起步遇到的最大阻力是 Markdown 的創(chuàng)建者 John Gruber,John 很不滿意 Jeff 在未充分溝通的情況下宣稱自己的項目是“Standard”,經(jīng)過一番爭吵,Jeff 把項目改名為 Common Markdown ,John 也沒有加入項目。
這場爭吵讓我不太看好 Markdown 的前景,沒有創(chuàng)建者的支持,Common Markdown 可能又成為一個方言,Markdown 的混亂狀況還要繼續(xù)下去。
最近我在摸索制作電子書制作方案,需要一種更嚴謹、功能更豐富的標記語言,便開始尋找比 Markdown 更好的選擇。 現(xiàn)行的輕量級標記語言并不少, Wikipedia 上列出了 17 種 (有三種是 Markdown 方言)。經(jīng)過一些研究之后,我比較看好 AsciiDoc,它的設(shè)計初衷就是為了解決寫書規(guī)模的問題,并且是 O’Reilly 的在線出版平臺 Atlas 的推薦語言。經(jīng)過一番學習,我覺得 Asciidoc 確實很適合電子書制作。
第一印象
AsciiDoc 基本語法跟 Markdown 類似,例如以 = 號開頭作為標題、以 * 號開頭作為列表項、以空行分割段落等,下面是一段 AsciiDoc 文本:
= Hello, AsciiDoc!
Doc Writer doc@example.com
An introduction to http://asciidoc.org[AsciiDoc].
== First Section
- item 1
- item 2
[source,ruby]
puts “Hello, World!”
如果學會了 Markdown,再學 AsciiDoc 應(yīng)該不難。詳細的語法說明可以看這份文檔: http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/ 。
內(nèi)置更多特性
AsciiDoc 相比 Markdown 支持更多的格式,包括而不限于:
文檔屬性,設(shè)置作者、版本信息等。
語法高亮。
表格。
Include 功能,將大文檔拆分幾個文件。
自定義塊語法,可擴展性。
Markdown 通過自行擴展語法或者使用 HTML 可以實現(xiàn)這些格式,但前者造成文檔不通用的問題,后者則直接把展示結(jié)構(gòu)硬編碼到了文檔中,將來修改會很麻煩。
當然, 更多的特性帶來更多的學習成本,對于博客等簡單文檔,這些特性并不是必須的,但對于電子書等大型文檔,標準內(nèi)提供豐富的特性就很有必要,否則就需要自己實現(xiàn)不成熟、不兼容的擴展。
AsciiDoctor
AsciiDoctor 是 AsciiDoc 的 Ruby 實現(xiàn),也是一個工具鏈,實現(xiàn)了 AsciiDoc 對 HTML5/DocBook/EPUB/PDF/MOBI 的轉(zhuǎn)換(有的需要借助第三方工具例如 Kindlegen)。相比原版 Python 實現(xiàn),AsciiDoctor 作了以下改進:
添加模板引擎,可以用 Ruby 的模板語言(例如 erb)自定義輸出格式。
處理過程分成解析和生成兩步,在解析之后文檔轉(zhuǎn)化為 Ruby 對象,可供編程處理。
性能和安全性提升。
通過 JRuby 提供 Java 版本;通過轉(zhuǎn)編譯提供 JavaScript 版本。
AsciiDoctor 是一個很宏偉的項目,還有很多子項目在開發(fā)中,例如我比較關(guān)注的 Asciidoctor PDF 和 Asciidoctor EPUB3,這兩個項目用于去掉現(xiàn)有工具鏈中對 DocBook 的依賴,由原文檔直譯目標文檔。工具鏈層次的減少可以增加定制便利性,也更方便用戶安裝。
因為有 AsciiDoctor 這樣設(shè)計精良的實現(xiàn),我才決定把精力放到 AsciiDoc 上。
編輯器
輕量級標記語言不依賴編輯器,但好的編輯器會讓寫作過程更愉快。現(xiàn)在 AsciiDoc 的專用編輯器還不多,我推薦的編輯器是 Atom ,并且加裝以下插件:
zen,全屏居中的寫作布局。
language-asciidoc,語法高亮。
asciidoc-preview,實時預(yù)覽。
配色之類可以根據(jù)個人喜好配置,Atom 是一個可塑性很強的編輯器。
為什么不用……
我可以估計到有人會向我發(fā)問,為什么不用某某標記語言?這里簡要回答一下:
LaTex:語法太復(fù)雜,導致寫作沒有樂趣可言。LaTex 適合用于數(shù)學公式這類專門場合。
Org mode:基本上是 Emacs 用戶在用。
reStructuredText:基本上是 Python 開發(fā)者在用。
其他類似。
綜合功能、易用性、社區(qū)氛圍、配套工具來看,目前我覺得 AsciiDoc 最好。
總結(jié)
AsciiDoc 是一個成熟的、為大型文檔設(shè)計的標記語言。如果你在搭建復(fù)雜的文檔環(huán)境,并且認為 Markdown 已經(jīng)不能滿足需求,那么可以試試 AsciiDoc。
總結(jié)
以上是生活随笔為你收集整理的Asciidoc简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决更改域账号后登录AppCenter报
- 下一篇: 英语单词学习第一章