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元素的第一列位置也不同,可参见文档),然后对齐该位置。

你可能感兴趣的:(Kramdown 关键概念)