Markdown 最全语法

作者: 夜行的鸟 | 来源:发表于2019-05-08 03:07 被阅读0次

    Markdown 是一种纯文本格式的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。一份 Markdown 文档可以很方便的导出为 HTML 、Word、图像、PDF、Epub 等多种格式的文档,非常便于文章的发布。
    Markdown 具有一系列衍生版本,不同版本之间基本兼容,但在一些语法和渲染效果上略有差别,另外不同的编辑器显示效果也会有区别。
    本篇文章尽量全的介绍 Markdown 的各个语法,但有些编辑器可能不支持其中某些语法。本文内容是根据 Markdown 的语法文档和一些其它资料整理得到,内容也会不断的更新。

    标题

    Markdown标题有几种写法 ("atx", "atx_closed", "setext") :
    第一种 ("atx") 是在想要设置为标题的文字前面加 #,这种写法支持六级标题,注意要在 # 和文字之间加至少一个空格:

    # 一级标题
    ## 二级标题
    ### 三级标题
    #### 四级标题
    ##### 五级标题
    ###### 六级标题
    

    第二种 ("setext") 是在想要设置为标题的文字下面用多个 = 和 - 分隔,这种写法只能写到二级标题,= 和 - 的个数没有限制,只要大于一个就可以:

    一级标题
    ==========
    二级标题
    ----------
    

    第三种 ("atx_closed") 是在想要设置为标题的文字前后都加 #,这种写法也支持六级标题,注意要在文字和前后的 # 之间加至少一个空格:

    # 一级标题 #
    ## 二级标题 ##
    ### 三级标题 ###
    #### 四级标题 ####
    ##### 五级标题 #####
    ###### 六级标题 #######
    

    标题的三种写法可以混用,但为了保持统一性,不建议混用,但用第二种写法写到二级标题后,还可以使用第一种或第三种写法继续写后面的标题。

    段落和换行

    Markdown 中用一个或多个空行划分不同的段落(空行的含义就只要是看起来是空行就行了,即使包含了空格或者水平制表符等空白符也是空行),普通段落不应该使用缩进。
    关于换行,Markdown 并不会将段落的每个换行都转换为 <br /> 标签,如果确实需要在行尾输入 <br /> 标签,只需要在行尾加两个及以上的空格,然后换行。

    强调

    倾斜

    倾斜是在文字左右用一个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

    *倾斜*  _倾斜_
    

    会得到:

    倾斜 倾斜

    加粗

    加粗是在文字左右用两个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

    **加粗**  __加粗__
    

    会得到:

    加粗 加粗

    加粗倾斜

    加粗倾斜是在文字左右用三个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

    ***加粗倾斜***   ___加粗倾斜___
    

    会得到:

    加粗倾斜 加粗倾斜

    删除线

    删除线是在文字左右用两个 ~~ 包起来,文字与 ~~ 之间没有空格:

    ~~删除线~~
    

    会得到:

    删除线

    脚注

    脚注是对文本的补充说明,格式如下:

    面朝大海,春暖花开[^脚注]
    
    [^脚注]: 海子
    

    会得到:

    面朝大海,春暖花开[1]

    注意:

    1. 这里有些编辑器会自动给脚注进行编号,整篇文档从 1 开始编号,但有的编辑器会直接显示脚注的名字;
    2. 脚注的定义与脚注的内容至少隔一行,也可以将整篇文档的脚注统一写在文档结尾处,编辑器会自动把脚注的内容放到文档的最后。

    引用

    用法是在文字前面加一个 >,注意 > 是英文格式下的右尖括号,括号和文字之间至少有一个空格:

    > 面朝大海,春暖花开。
    

    会得到:

    面朝大海,春暖花开。

    引用是一个区块,可以放很多东西,如标题、列表、代码块等等:

    > ## 二级标题
    > * 无序列表
    

    会得到:

    二级标题

    • 无序列表

    引用可以多层嵌套,多层嵌套时,多个 > 是不需要连在一起的,只需要在同一行就可以:

    > 引用一
    >> 引用二
    >>> 引用三
    

    会得到:

    引用一

    引用二

    引用三

    列表

    列表分为 有序列表 和 无序列表。

    无序列表

    无序列表可以用 *、+、- 创建,三个符号可以混用,但建议上下文统一,符号和文字之间加至少一个空格或水平制表符:

    * 无
    - 序
    + 列
    * 表
    

    会得到:

    有序列表

    有序列表用数字和点来创建,需要注意的是数字后面只能是英文的点,且点和文字之间至少加一个空格,另外有序列表的序号是根据第一行的数字确定的,后面的数字序号对于最终生成 HTML 是没有影响的. 比如下面的列表创建时序号是乱的,但创建后序号会显示为 2. 3. 4. 5. (这一点很多编辑器会自动更正或填充),点和文字之间加至少一个空格或水平制表符:

    2. 有
    2. 序
    3. 列
    3. 表
    

    会得到:

    列表嵌套

    列表可以嵌套使用,只需要在上一级和下一级之间打两个空格即可(或者一个水平制表符)(有的语法需要三个空格或四个空格),有序列表和无序列表可以互相嵌套:

    * 1
      * a
      * b
    * 2
      1. a
      2. B
    

    会得到:

    • 1
      • a
      • b
    • 2
      1. a
      2. B

    如果列表项中包含引用,引用标记 > 需要缩进,如果列表项中有代码块,代码块需要双倍缩进,例如:

    * 孔子说过:  
      > 毋意,毋必,毋固,毋我。
    

    会得到:

    • 孔子说过:

      毋意,毋必,毋固,毋我。

    另外,如果一个列表项里包含多个段落,那么每个段落都需要缩进,缩进量与第一段一致(用空格或制表符):

    * 段落一
    
      段落二
    

    会得到:

    • 段落一

      段落二

    任务列表

    任务列表通过无序列表和中括号 [] 来定义,中括号中间加 x 表示完成:

    * [ ] 任务1
    * [ ] 任务2
    * [x] 任务3已完成
    

    会得到:

    • 任务1
    • 任务2
    • 任务3已完成

    代码块

    单行代码用一个 `(反引号)包起来,或者行前加四个空格或一个水平制表符:

    `a=1`
    

    用反引号可以在行内显示代码,如:

    如果`a=1`,`b=2`,那么`a+b=3`

    会得到:

    如果a=1b=2,那么a+b=3

    多行代码用三个 `(反引号)包起来,反引号单独一行,或者在每行代码前加四个空格或一个水平制表符:

    ```
    a=1
    b=2
    ```
    

    会得到:

    a=1
    b=2
    

    反引号后面可以写注释,这样可以给代码块添加相应语言的代码高亮,例如:

    ```ruby
    require 'redcarpet'
    markdown = Redcarpet.new("Hello World!")
    puts markdown.to_html
    ```
    

    会得到:

    require 'redcarpet'
    markdown = Redcarpet.new("Hello World!")
    puts markdown.to_html
    

    水平线

    水平线可以由 *、 - 、_(星号,减号,下划线)这三个符号的至少三个表示,注意至少要三个,且不需要连续,中间有空格也可以,但生成水平线的符号必须独占一行:

    ***
    -    -   -
    _ _ _
    

    会得到:




    链接

    Markdown 支持两种链接形式: 内联 和 引用 。
    内联:

    [链接名](链接地址 “链接title” )
    

    链接title 是可选的内容,是当指针停留在链接处时显示的内容;
    引用:

    [链接名][链接id]
    [链接id]: 链接地址 “链接title”
    [链接id]: 链接地址 '链接title'
    [链接id]: 链接地址 (链接title)
    

    链接id 有三种定义方式(如上),定义时冒号后面加一个以上的空格或水平制表符;
    链接id 可以包含字母, 数字, 空格, 和标点符号,字母不是大小写敏感的,链接id 的定义可以在文章的任意位置,一般直接放在引用位置的下面;
    链接名也可以包含字母, 数字, 空格, 和标点符号,链接名 和 链接id 的中括号间可以有空格;

    引用的链接形式中可以隐含链接名称,可以忽略 链接id,这时 链接名 本身被用于 链接id。引用 链接id 时只用一对空的中括号就可以了,
    例如, 要链接 "Google" 这个词到 google.com 网站, 只用这样写:

    [Google][]
    

    同时这样定义 链接id:

    [Google]: http://google.com/
    

    另外,也可以将网址直接用 <>(尖括号)包起来,也可以显示为链接,甚至直接写出网址也显示为链接:

    <http://www.baidu.com>
    

    图片

    图片跟链接格式类似,也有 内联 和 引用 两种形式,只不过在图片名前要加 !(英文叹号)。
    内联:

    ![图片名](图片地址 "图片title")
    

    引用:

    ![图片名][图片id]
    
    [图片id]:图片地址 “图片title”
    

    图片名 是指显示在图片下方的描述文字,可选;图片title 是当指针停留在图片上时显示的内容,可选。
    Markdown 没有语法指定图片尺寸,如果需要指定图片尺寸, 可以使用 HTML <img> 标签。

    反斜杠转义

    Markdown 中可以使用反斜杠转义 Markdown 语法符号为字面量。Markdown 为以下字符提供反斜杠转义:

    \\   backslash(反斜杠)
    \`   backtick(反引号)
    \*   asterisk(星号)
    \_   underscore(下划线)
    \{\}  curly braces(花括号)
    \[\]  square brackets(方括号)
    \(\)  parentheses(圆括号)
    \#   hash mark(井号)
    \+   plus sign(加号)
    \-   minus sign (hyphen)(减号)
    \.   dot(点)
    \!   exclamation mark(惊叹号)
    

    以上这些符号在前面加反斜杠后就会显示本身的字面形式,而不会作为 Markdown 的语法符号。

    表格

    | 表头 | 表头  | 表头 |
    | :---- | :---: | ---: |
    | 靠左 | 居中 | 靠右 |
    | 内容 | 内容  | 内容 |
    

    会得到:

    表头 表头 表头
    靠左 居中 靠右
    内容 内容 内容

    第二行分割表头和内容,-(减号) 有一个就行,也可以多加几个使其对齐,文字默认居左,- 两边加 :(冒号)表示文字居中,- 右边加 : 表示文字居右,原生语法两边的 | 必须加,但目前大多数语法两边的 | 不加也可以,不同的解释器显示的表格会有所区别。

    应用 HTML 标签

    可以直接在 Markdown 文档里应用 HTML 标签,以达到更好的表现效果,但不同的编辑器可能支持的标签会有区别。

    上、下标

    上、下标可以通过 HTML 的 <sup><sub> 标签实现:

    这是<sup>上标</sup>文本
    这是<sub>下标</sub>文本
    

    会得到:

    这是上标文本
    这是下标文本

    倾斜、加粗、下划线

    倾斜、加粗、下划线可以通过 HTML 的 <i><b><u> 标签实现:

    <i>倾斜</i>
    <b>加粗</b>
    <i><b>倾斜加粗</b></i>
    <u>下划线</u>
    

    高亮标记

    高亮标记可以通过 HTML 的 <mark> 标签实现:

    <mark>高亮标记</mark>
    

    键盘文本

    键盘文本可以通过 HTML 的 <kbd> 标签实现:

    <kbd>键盘文本</kbd>
    

    按钮

    按钮可以通过 HTML 的 <button> 标签实现:

    <button type="button">按钮</button>
    

    注意需要指明 type 属性。

    一些规范

    • MarkDown 文件均使用 .md 作为后缀
    • 标题与紧贴的上下正文使用空行隔开,# 号和文字之间一个空格连接
    • 整篇文章标题格式要统一
    • 普通文本换行,使用行末尾两个空格触发
    • 定义列表时上下文使用一致的符号,缩进也要统一
    • 列表块前后整行隔开
    • 代码块前后整行隔开

    本文介绍的 Markdown 语法不同的衍生版本或不同的解释器会有所区别,有些会不支持,有些可能需要一些扩展工具才能实现。

    参考

    参考1


    1. 海子

    相关文章

      网友评论

        本文标题:Markdown 最全语法

        本文链接:https://www.haomeiwen.com/subject/etkpoqtx.html