Kramdown 關鍵概念

一、kramdown 元素

kramdown元素分為 Block-level ElementsSpan-Level Elements

Block-level Elements 包括

  • Paragraphs
  • Headers
  • Blockquotes
  • Code Blocks
  • Horizontal Rules
  • Lists
  • Definition Lists
  • Tables
  • 其它

Span-Level Elements 包括

  • Emphasis
  • Links and Images
  • Inline Code
  • Footnotes
  • Abbreviations

關于kramdown元素,不必記憶,現用現學,但學的時候要注意以下幾點

  1. 元素的表示法

    如Blockquotes的表示是以>開頭,后跟一個可選的空格,并且每一行的開頭都為>

    而Code Blocks的表示又有兩種,一種是 以4個空格 縮進,另一種不用縮進,但是使用 ~~~~ 標志

二、Block-level 元素的結束

當Block-level元素遇到以下時結束。

  1. 空行
  2. EOB字符,a ^ as first character on an otherwise empty line.
  3. 其它(參見官方文檔)

三、first character 和 first column

當提交當前Block元素的 first characterfirst column 時,均是指相對于當前元素的嵌套等級來說的,而不是絕對于文檔的最左邊。

四、縮進與嵌套

即如何利用縮進來嵌套元素。

Block元素中可以包含多個Block元素,這就是嵌套,當然,這種嵌套可以有多層。

可以這樣理解,把整個文檔想像成一個大的Block元素,這個元素中包含著許許多多的Block元素,拿一個Blockquotes來說,其>必須在第一列上,然后是一個可選的空格,再接非空白字符。這樣,一個Block元素就嵌套在文檔這個最外層Block元素中了。

此時,再空一行,就可以添加另一個Block元素,如無序列表,只要其*也在第一列上,即Blockquote和List的縮進是相同的,那么,這兩個元素就都是外面文檔的嵌套元素。

然后就可以引申了,比如要在一個Blockquotes元素中嵌套元素,就可以利用上面的規則來實現。首先要找到Blockquotes元素的第一列是哪一列,然后,其所有要被嵌套的元素都與第一列對齊即可,如嵌套最一個Blockquotes和List, 因為Blockquotes的第一列為其非空白字符所在的那一列,所以只需要將嵌套的Blockquote的>與List的*與該列對齊,兩者之間使用空行隔開,就行了。具體的兩個更復雜的例子如下:


This is a quote

This is another para.

This is a nested quote.

  1. This is Item 1

  2. This is Item 2.

    This is a code block
    

  1. This is a item 1

  2. This is a item 2

    This is a quoteblock

    another paragraph

    another code block
    

關鍵點:

找到其直接外層元素的第一列的位置(不同Block元素的第一列位置也不同,可參見文檔),然后對齊該位置。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容