當前位置:
首頁 > 知識 > 為什麼不應該使用Markdown來寫文檔

為什麼不應該使用Markdown來寫文檔


Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。




Markdown

是互聯網上最普遍使用的輕量級標記語言。對於寫博客和評論這類的任務,用

Markdown

很棒。不過最近技術社區的人員開始用它來寫文檔。


 


下面我列出一些反對使用

Markdown

的觀點,希望能幫助你決定是否適合使用

Markdown

。如果你在考慮使用

Markdown

,我希望你也可以關注下

Asciidoctor 

Sphinx

,我發現用它們寫文檔更好。

 


人們選擇

Markdown

是因為它可以很簡單的處理一些基本任務。開發者選擇它是因為

GitHub

支持它,儘管

GitHub

支持

9

種不同的標記語言,包括

 Asciidoc

reStructuredText

。但是當文檔從幾頁逐漸增長到大的文檔集,

Markdown

很快就崩潰並成為累贅。下面是這種情況發生的原因。


 


缺乏一個標準




最初,

Markdown

是由

John Gruber

寫的

initial implementation

來定義,但並未明確規定行為規範。


 


隨著

Markdown

越來越流行,越來越多的站點開始支持

Markdown

的實現,這些站點是用其它語言寫成的,因此產生了更多的

Markdown

實現。所有這些實現有輕微差別,但都達不到令人接受的程度。

 


比如有些實現要求開頭有一個空格,但另外的一些不做要求:



 


還有一些小問題使得

Markdown

很難在不同的站點和版本之間移植


在過去的幾年裡,

Commonmark

已經發展成標準化的

Markdown

。這很好,應該解決很多問題,但是卻沒人採用它。


 


風格




Markdown

缺乏採用的主要原因是這些年來其一直在變化。起初,

Markdown

功能很有限,每當有流行的工具在

Markdown

上實現的時候,都會有一個特定的風格。聽起來不錯

,是吧?問題是每一個工具都形成了不同的風格,甚至連實現相似任務的工具都有不同的語法。


 


舉個例子,在

Markdown Extra 

中代碼塊是下面這種樣式:



這將

python

類應用於輸出的

HTML


 


然而,同樣的情況在

GitHub Flavored Markdown 

中是這樣的:



這會將語法高亮顯示應用於實際呈現的

HTML

輸出。



相似的概念,不同的語法,但都是

Markdown


 


缺乏擴展




其它的標記語言,可以對其進行擴展以提供需要的功能。它們在語法上有增添新功能同時又不會違反初始規範的機制。




比如

reStructuredText

,具有內嵌和塊級別的標記:



可以了解更多關於

 rfc

 class

 contents

的概念。


 


作為一個使用

rST

Asciidoctor

的開發者,我可以以一種簡單,可插入的方式增添新的標記。




我不必改變語言的解析方式,而且我還可以通過標準擴展機制向其它用戶分享那些新功能。




在不同的版本間進行移植這些功能,用

Markdown

可辦不到。




注意:

CommonMark

正在開發可擴展性的語法,但還沒有實現。


 


缺乏語義化




儘管很多人添加了很多擴展,但都不夠語義化。這意味著不能寫

Class

Warning

,只能寫文本。因此很多人直接將

HTML

嵌入到

Markdown

中:



而在

reStructuredText

中,你可以寫成:




這在

HTML,PDF

,甚至任何創建的輸出格式中都可以合適的顯示為一個

Warning.


 


語義化標記可以將所寫的文字與它們的顯示方式完全分開。


 


缺乏語義化將導致問題,原因如下:




  • 現在

    Markdown

    依賴於顯示中的特定

    CSS

    類,這意味著編寫者必須考慮如何設計頁面。



  • 內容不可再移植到其他輸出格式(

    PDF

    等)。



  • 轉換到其他標記工具和頁面設計變得更加困難。




注意:


在我的博文

Semantic Meaning in Authoring Documentation

中有關於語義化更詳細的介紹。


 


鎖定和缺乏可移植性




風格的多種多樣及缺乏語義化導致鎖定。一旦創建了大的

Markdown

文檔集,就很難將它們遷移到另一個工具上,即使該工具宣稱支持

Markdown

!自定義的

HTML

類和奇怪風格的擴展組成的文檔集,除了在當前的工具和設計外,在其它地方都行不通。


 


同時也無法輕易將

Markdown

遷移到其他標記語言(

Asciidoc

RST

),因為

Pandoc

和其他轉換工具不支持您風格的擴展。




很多人選擇

Markdown

是因為他們認為他們可以在稍後遷移到其他工具或其它標記語言。




Markdown

絕對是最低的共同標準,除非文檔集足夠小,否則你所需要的東西都不在基本語法中。




任何有意義的文檔都需要擴展,而一旦使用

Markdown

各種各樣風格的擴展,你將失去所有可移植性的優勢。


 


結論




我認為

CommonMark

是向前邁出的一大步,如果它被更廣泛地使用,並且增加對擴展的支持,我會全心全意地推薦它作為解決這個問題的方法。我不能擁護

Markdown

目前的生態系統,並且我認為它很大程度上阻止了人們使文檔變得更好。


 


我希望我們可以開始推進更加標準化的語言集合,包括

CommonMark

reStructuredText

Asciidoc

,在我們使用的工具套件中全面支持他們。目前,

Sphinx

Asciidoctor

是很好的替代品。它們語音內部內置了更多的擴展,並且含有用於構建當今文檔更完整的工具。


 


Markdown

更像是一個概念,而不是實現。

它通常意味著「在看起來與

Markdown

類似的語言上的一組互不兼容的擴展」。

當創建大的文檔集時,它顯然不是正確的工具。




披露:我從事的一款產品,

Read the Docs

,是基於

Sphinx

的,所以我的觀點可能有偏頗。


 


 




英文原文:http://ericholscher.com/blog/2016/mar/15/dont-use-markdown-for-technical-docs/


譯者:Chris



喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python程序員 的精彩文章:

如果你也用Win10,真的請備份!
【限量閃購】《Python大戰機器學習》僅售40元,只有3本,先到先得。

TAG:Python程序員 |