Markdown的各類擴展

剛開始接觸markdown的時候,以爲好簡單好方便,隨着使用的深刻,發現markdown好像在不少地方有不少不一樣的實現,語法特性各不相同,頓時陷入迷茫。原文:Markdown的各類擴展php

標準markdown的語法:http://daringfireball.net/projects/markdown/syntaxhtml

PHP Markdown Extra

Markdown的php解析與實現,而且增長了許多有用的擴展。PHP Markdown Extra其中幾個比較重要的改進有:git

  • 支持在html塊元素中插入markdown語法
  • 支持爲一些元素添加id或class,好比爲header添加id屬性,用帶錨點的連接導航。例如:
[Link back to header 1](#header1)

Header 1            {#header1}
========

## Header 2 ##      {#header2}

支持元素包括headercode blocklinkimagegithub

  • 支持將代碼塊用`或者~包起來,這樣能夠避免一些二義,還能夠爲代碼塊添加id或class
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ {.html #example-1}
<p>paragraph <b>emphasis</b>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 支持手寫的表格:
| Function name | Description                    |
| ------------- | ------------------------------ |
| `help()`      | Display the help window.       |
| `destroy()`   | **Destroy your computer!**     |
  • 支持dldt在markdown中的對應語法
  • 支持腳註引用
That's some text with a footnote.[^1]

[^1]: And that's the footnote.
  • 支持專有名詞abbr
  • 避免下劃線出如今單詞中間,致使斜體輸出

Maruku

在"始做俑者PHP Markdown Extra"後,不少基於Ruby的Markdown解釋器開始浮現。其中,Maruku號稱:ruby

  • 支持原生Markdown
  • 支持全部PHP Markdown Extra的特性
  • 支持新的元數據語法,實際上就是給元素添加屬性的能力
  • 支持公式格式輸出

Maruku的語法詳見這裏markdown

不過,該項目已經中止維護了。ui

kramdown

一樣是ruby開發的解釋器,kramdown吸收了Maruku幾乎全部的特色,功能更爲強大。其中有特色的功能有:this

  1. 改進了一些二義語法
  2. 引入EOB標記^做爲塊元素的分隔符
  3. 手寫table的語法更增強大一些,支持table中的header和footer
  4. 一樣支持ALD(Attribute List Definitions屬性列表定義)
  5. 還支持註釋,以及在轉化時配置一些轉化選項

Github-Page推薦使用這個解釋器.net

RDiscount

RDiscount又是一個基於Ruby開發的解釋器,不過它是基於Discount的語法移植的,因此語法規則須要參考Discount。其語法支持幾種上面沒有提到過的特性:code

  • 文本居中,即輸出<center>
  • 圖片大小定義![dust mite](http://dust.mite =150x150)
  • 輸出alpha列表:<ol type='a'></ol>

Redcarpet

Redcarpet是一個轉化庫,能夠在標準Markdown的基礎上,配置一些額外的功能:

  • 單詞中間的_不處理
  • 轉化PHP-Markdown風格的手寫表格
  • 轉化PHP-Markdown風格的帶包含的代碼塊,也可禁用標準markdown的代碼塊語法
  • 自動link生成
  • 刪除線支持:~~good~~
  • 高亮標籤<mark></mark>經過==highlighted==輸出
  • 引用標籤<q></q>經過"quote"輸出
  • 轉化PHP-Markdown風格腳註
  • 一些二義性的約束支持

Github支持

Github Page對於上述的基於Ruby的markdown是支持的,從這裏能夠看到。另外,Github對於Issue、comments等,還定義了GFM(GitHub Flavored Markdown),其中的語法通常基原本源於上面的提到的東西。除此以外,github還支持一些額外的特性:

  • 支持把列表變成帶勾選框的任務列表
- [x] @mentions, #refs, [links](), **formatting**, and <del>tags</del> are supported 
- [x] list syntax is required (any unordered or ordered list supported) 
- [x] this is a complete item 
- [ ] this is an incomplete item
  • 站內對分支、問題、用戶等對象的直接引用
  • 表情
相關文章
相關標籤/搜索