kramdown 语法

Author Avatar
lsbbd 9月 02, 2016
  • 在其它设备中阅读本文章

kramdown 语法

版本:1.12.0

kramdown 的语法基于 Markdown,并且在其基础上添加了许多其他 Markdown 实现的特性,其中包括
[Maruku][Maruku],[PHP Markdown Extra][PME] 和 [Pandoc][Pandoc]。但是,kramdown 致
力于提供一种严格的语法,并制定了一些自己的规则,因此,kramdown 不会完全兼容 Markdown。
尽管如此,大多数的 Markdown 文档还是能被 kramdown 正确的解析。所有与 Markdown 语法有冲突
的地方都会被高亮显示。

源文件格式

kramdown 的源文件可以使用任何的编码方式,比如 ASCII,UTF-8 或者 ISO-8859-1,并且输出会采
用与源文件相同的编码。

kramdown 文档中包含两种元素 – 块级元素和行内元素:

  • 块级元素定义了文档内容的主要结构,比如某段文字应该是段落、列表、引用还是其他什么。

  • 行内元素标记一小块文字作为比如强调或是超链接什么的。

行内元素只能使用在块级元素或者其他行内元素之中。

换行

一些轻量的标记语言在手动换行的环境中可能不会正常的工作。比如,在许多邮件程序中就会出现问题。因

此 kramdown 允许在段落或者引用等元素中使用手动换行。这有时候也被成为 「偷懒语法」。

支持换行的块级元素通常在遇到任何一种条件时会换行:

  • 一个空行、一个 [EOB 标记行][eob]、一个 [block IAL][IAL] 或者是文档尾 (即块级元素
    边界)。

  • HTML 的块级元素。

这里列出了一些不支持换行的元素:

标题

但多数情况下标题只需要占一行。如果你的标题实在过长,你可以选择使用 HTML 的标题来代替。

fenced code block

The delimiting lines of a fenced code block do not support hard-wrapping. Since everything between the delimiting lines is taken as is, the content of a fenced code block does also not support hard-wrapping.

定义列表项

每一个定义列表项都必须单独占一行,因此换行会导致创建一个新的定义列表项。

表格

由于 kramdown 表格的每一行都用来表示表格的一行或者分割线,所以不支持换行。

注意: 我们不建议你使用偷懒语法来书写 kramdown 文档。

制表符的用法

kramdown 将制表位设为了 4 的倍数。这对于缩进列表尤其重要。还有,制表符最好只使用在一行的开头,
并且前面不能有空格。

自动转义和手动转义