前言

  因为在写博客的过程中,常常会遇到忘记Markdown相关语法的情况,所以就把在网上找到的一些零碎的语法整理成一篇博客,既方便自己以后查阅,也加深自己对Markdown语法的记忆。


关于Markdown

介绍

  Markdown是一种轻量级标记语言,设计的目的是希望大家使用“易于阅读、易于撰写的纯文字格式,并选择性的转换成有效的 XHTML (或是HTML)”。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”,语法简洁明了、学习容易。Markdown文件的文件拓展名为.md

为什么选择Markdown

  • 它基于纯文本,方便修改和共享
  • 几乎可以在所有的文本编辑器中编写
  • 有众多编程语言的实现,以及应用的相关扩展
  • 在GitHub、SourceForge等网站都应用了Markdown或者其变种(语法稍有不同)
  • 很容易转换为HTML文档或其他格式
  • 使用者可以更关注写作的内容,而不去太多地关注样式,适合用来编写文档、记录笔记、撰写文章
  • Markdown完全兼容HTML语法,可以直接在Markdown文档中插入HTML内容

语法

标题

  • Setext 形式
    在文本下方加入=或者-=或者-的数量是没有限制的,通常的做法是使其和标题文本的长度相同,这样看起来比较舒服。Setext 形式只支持两种H1和H2两种标题。

    1
    2
    3
    4
    5
    一级标题 H1
    ====

    二级标题 H2
    ----
  • atx 形式
    在文本前面加上#即可创建一级标题。同理,创建二级标题、三级标题等只需要增加#个数即可,Markdown 共支持六级标题。需要注意的是,#左侧不能出现空格

    1
    2
    3
    4
    5
    6
    # 一级标题
    ## 二级标题
    ### 三级标题
    #### 四级标题
    ##### 五级标题
    ###### 六级标题

段落与换行

  • 段落的前后必须是空行(行内什么都没有,或者只有空白符(空格或Tab))
  • 相邻两行文本,如果中间没有空行 会显示在一行中(换行符被转换为空格)
  • 如果需要在段落内换行,可以在前一行的末尾加入至少两个空格,然后换行写其它的文字,这样能保证换行后的文字和前面文字的样式保持一致

强调

  • 斜体
    使用符号*或者_左右包裹文本。需要注意的是,符号和文本之间不能存在空格,有的Markdown版本不支持,且*会被解释成列表。
    1
    2
    *斜 体* 
    _斜体_

显示效果

  • 斜 体
  • _斜体_
  • 粗体
    使用符号**或者__左右包裹文本。需要注意的是,符号之间、符号和文本之间不能存在空格,有的Markdown版本不支持。
    1
    2
    **粗体**
    __粗体__

显示效果

  • 粗体
  • 粗体
  • 删除线
    使用符号~~左右包裹文本。需要注意的是,符号之间、符号和文本之间不能存在空格
    1
    2
    ~~删除线~~
    ~~ 删除线~~

显示效果

  • 删除线
  • ~~ 删除线~~
  • 嵌套使用
    1
    2
    3
    ***加粗斜体***
    **_加粗斜体_**
    **~~加粗删除线~~**

显示效果

  • 加粗斜体
  • 加粗斜体
  • 加粗删除线

分割线

可以在一行中使用三个或更多的 *-_ 来添加分隔线,字符之间可以有空格(空白符),但不能有其他字符。但是对于符号-,必须添加空格,不然会解释为H2标题

1
2
3
***
- - -
___

显示效果




引用

  • 引用内容
    在段落或其他内容前使用>符号,就可以将这段内容标记为引用的内容。当一行文本前面加上了>符号的时候,后面所有相邻行都会被引用,除非隔上一个空行。注意,空行也能使用>标记。
    1
    2
    3
    4
    5
    >引用内容
    会被引用
    也会被引用

    不会被引用

显示效果

引用内容
会被引用
也会被引用

不会被引用

  • 嵌套引用
    根据不同的层次加上不同数量的>即可,注意,为了避免上一层引用对下面的影响,不同层的引用之间需要加入一个空行
    1
    2
    3
    >>>内层引用
    >>外层引用
    >最外层引用

显示效果

内层引用

外层引用

最外层引用


代码块

  • 行内代码
    使用 (和~`在同一个键上)包裹住行内代码,
    1
    这里有一段代码`a + b = 10;`

显示效果
这里有一段代码a + b = 10;

  • 多行代码
    可以在代码钱缩进至少四个空格或者一个Tab,代码块会一直持续到没有缩进的那一行;也可以使用六个 `来包裹代码块,代码块前后分别有三个,且独占一行。

超链接

  • 行内式
    语法为[链接文本](URL '链接Title')链接Title的效果是鼠标悬停在链接上会出现指定的内容,URL可以是普通链接,也可以是本地链接。

    1
    2
    3
    [Google](http://www.google.com/)

    [icon.png](./images/icon.png)
  • 参考式
    在文档中需要插入链接的地方写[链接文字][链接标记],在后面的任意位置添加[链接标记]:URL "链接Title"。其中,URL可以使用<> 包括起来,链接Title可以使用""''()包裹(考虑到兼容性,建议使用引号),链接Title 部分也可以换行来写。
    如果某一个链接在文章中多处使用,那么使用参考式创建链接将非常好,它可以让你对链接进行统一的管理。

  • 自动链接
    使用<>包括的URL邮箱地址会被自动转换为超链接
    1
    2
    3
    <http://www.google.com/>

    <example@email.com>

图片

图片语法和超链接语法很像

  • 行内式
    语法为![图片Alt](图片URL "图片Title")。语法中图片Alt的意思是如果图片因为某些原因不能显示,就用定义的图片Alt文字来代替图片。图片Title表示鼠标悬停与图片上时出现的文字。Alt和Title都不是必须的,可以省略。需要注意的是,!为英文的感叹号,图片URL"图片Title"之间有一个空格。
  • 参考式
    在文档要插入图片的地方写![图片Alt][标记],在后面(一般是文档最后或者某一个统一的地方)写上[标记]:图片地址 "Title"
  • 指定图片大小
    Markdown 不支持指定图片的显示大小,不过可以通过直接插入标签来指定相关属性
    1
    <img src="src" alt="alt" title="title" width="width" height="height" />

锚点

锚点其实就是页内超链接,也就是链接本文档内部的某些元素,实现当前页面中的跳转。需要注意的是,有一些版本的Markdown只支持在标题后插入锚点,其它地方无效。有的编辑器在编辑Markdown时可能出现锚点无法跳转,但是发布成笔记之后能正常调整的情况。
锚点的语法:

1
2
3
## 目录{#index}

跳转到[目录](#index)


列表

  • 无序列表
    无序列表的语法是:符号 文本。其中符号可以是*-或者+,符号和文本之间,需要加上一个空格。

    1
    2
    3
    list1
    list2
    list3
  • 有序列表
    有序列表的语法是:数字. 文本。其中数字可以为任意数字,且使用的数组不会对解析之后的列表序号造成影响。

    1
    2
    3
    1. list1
    1. list2
    1. list3

    显示效果

    1. list1
    2. list2
    3. list3
  • 嵌套列表
    无序列表和有序列表可以随意相互嵌套,子列表需要在前面加上缩进,或者至少一个空格

    1
    2
    3
    4
    * list1
     1. list
    * list2
     * list
  • 代办列表

    1
    2
    3
    4
    5
    6
    - [ ] Eat
    - [x] Code
      - [x] HTML
      - [x] CSS
      - [x] JavaScript
    - [ ] Sleep
  • Eat
  • Code
    • HTML
    • CSS
    • JavaScript
  • Sleep
  • 其他
    如果要在列表项目内放进引用,那>就需要缩进

表格

使用|来分隔不同的单元格,使用-来分隔表头和其他行,-的数量没有限制但至少为一个。

1
2
3
4
name | age
---- | ---
LearnShare | 12
Mike |  32

为了美观,可以使用空格对齐不同行的单元格,并在左右两侧都使用 | 来标记单元格边界。
在表头下方的分隔线标记中加入:,即可标记下方单元格内容的对齐方式(_没有数量限制,至少为一个)

  • :--- 代表左对齐
  • :--: 代表居中对齐
  • ---: 代表右对齐
1
2
3
4
| left | center | right |  
| :--- | :----: | ----: |
| aaaa | bbbbbb | ccccc |
| a | b | c |
left center right
aaaa bbbbbb ccccc
a b c

字符转义

反斜线\用于显示在 Markdown 语法中有特殊作用的字符。

1
这是用来 \*演示\* 的 \_文本\_

这是用来 *演示* 的 _文本_


后记

不同平台对Markdown语法的解释可能稍有不同,使用的时候可能需要根据实际情况进行调整.