一、kramdown 元素
kramdown元素分為 Block-level Elements 和 Span-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元素,不必記憶,現用現學,但學的時候要注意以下幾點
-
元素的表示法
如Blockquotes的表示是以
>
開頭,后跟一個可選的空格,并且每一行的開頭都為>
。而Code Blocks的表示又有兩種,一種是 以4個空格 縮進,另一種不用縮進,但是使用 ~~~~ 標志
二、Block-level 元素的結束
當Block-level元素遇到以下時結束。
- 空行
- EOB字符,a
^
as first character on an otherwise empty line. - 其它(參見官方文檔)
三、first character 和 first column
當提交當前Block元素的 first character 或 first 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.
This is Item 1
This is Item 2.
This is a code block
This is a item 1
-
This is a item 2
This is a quoteblock
another paragraph
another code block
關鍵點:
找到其直接外層元素的第一列的位置(不同Block元素的第一列位置也不同,可參見文檔),然后對齊該位置。