【学习笔记】CSDN MarkDown语法之一:基础特性

目录

将所有标题提炼成为目录。注意该代码的上下方最好都要有空行。

代码为:


[TOC]

显示为:

  • 目录
  • 分隔线和删除线
    • 1 分隔线
    • 2 删除线
  • 标题
    • 1 SeText语法的标题表示
  • 这是标题1
    • 这是标题2
    • 2 atx语法的标题表示
  • 标题1
    • 标题2
      • 标题3
        • 标题4
          • 标题5
            • 标题6
  • 引用
    • 1 区块引用
    • 2 嵌套引用
    • 3 在引用区块内使用其它MarkDown
    • 这是一个标题2
  • 强调
  • 列表
    • 1 列表分类
      • 11 无序列表
      • 12 有序列表
    • 2 嵌套列表
    • 2 列表中的排版
      • 21 条目间空行
      • 22 条目下多个段落
      • 23 列表内引用
      • 24 避免不必要的列表条目
  • 链接和图片
    • 1 自动链接
    • 2 普通文本链接
      • 21 行内式普通链接
      • 22 参考式链接
    • 3 图片
  • 代码
    • 1 行内代码
    • 2 块代码
      • 21 缩进编码的块代码
    • 其实我不是标题
      • 22 反引号包裹的块代码
  • 转义字符
  • 换行
    • 1 双空格换行
    • 2 插入HTML语法换行

1. 分隔线和删除线

1.1 分隔线

*、-、_三种符号都可以用来创建分隔线。行内不可有其它东西。连续,或者中间插入空格,或者三种符号混用,且总数量至少为3即可表示分隔线。

代码为:

* * *

***

*****

- - -

**--

-*_***--_

---------------------------------------

显示为:





**–

-_**–_


1.2 删除线

一对连续两个~~(波浪线)括起来的内容将会拥有中间的删除线。

代码为:

~~我有删除线~~

显示为:

我有删除线

2. 标题

2.1 SeText语法的标题表示

SeText语法使用=-(等号、减号)在标题的下一行来表示标题1和标题2,符号数量为至少1个。

代码为:

这是标题1
=

这是标题2
-

显示为:

这是标题1

这是标题2

2.2 atx语法的标题表示

atx语法使用连续1~6个#(井号)引领6级标题,井号与标题正文间可以没有空格。

代码为:

# 标题1
## 标题2
### 标题3
#### 标题4
##### 标题5
###### 标题6

显示为:

标题1

标题2

标题3

标题4

标题5
标题6

3. 引用

使用>(大于号)作为先导,引领一行或多行引用。

3.1 区块引用

代码为:

> 这是一个区块引用。
与上面文本属于一个段落,因此这一行前面可以不加`>`标记。

> 由于上面空了一行,因此这是另一个不同的段落,前面的 `>`必须添加。
>
虽然这也是另一个不同的段落,但上面空行加了 `>`,因此这里段落之前的 `>`也可以省略,相当于上面空行的 `>`属于这个段落。

显示为:

这是一个区块引用。
与上面文本属于一个段落,因此这一行前面可以不加>标记。

由于上面空了一行,因此这是另一个不同的段落,前面的 >必须添加。

虽然这也是另一个不同的段落,但上面空行加了 >,因此这里段落之前的 >也可以省略,相当于上面空行的 >属于这个段落。

3.2 嵌套引用

代码为:

> 这是区块引用的第一层。
>
> > 这是嵌套引用,属于第二层,因此需要再加一个`>`,两个`>`之间的空格不是必需的。
>
> 回到区块引用的第一层。

显示为:

这是区块引用的第一层。

这是嵌套引用,属于第二层,因此需要再加一个>,两个>之间的空格不是必需的。

回到区块引用的第一层。

3.3 在引用区块内使用其它MarkDown

代码为:

> ## 这是一个标题2。
> 
> 1. 这是第一个列表项。
> 2. 这是第二个列表项。
> 
> 这是一个代码例子:
> 
>     printf("Hello, Minmin!\n"); return 0;

显示为:

这是一个标题2。

  1. 这是第一个列表项。
  2. 这是第二个列表项。

这是一个代码例子:

printf("Hello, Minmin!\n"); return 0;

4 强调

一对#或者一对_(井号、下划线)表示的强调,以斜体表示。
一对连续两个#或者一对连续两个_表示的强调,以粗体表示.
一对连续三个#或者一对连续三个_表示的强调,以斜体加粗体表示。

代码为:

*使用一个星号的强调*
_使用一个 底线 的强调_

**使用两个星号的强调**
__使用两个底线 的强调__

***使用三个星号的强调***
___使用三个底线 的强调___

显示为:

使用一个星号的强调
使用一个 底线 的强调

使用两个星号的强调
使用两个底线 的强调

使用三个星号的强调
使用三个底线 的强调

5 列表

5.1 列表分类

5.1.1 无序列表

无序列表使用*+-(星号、加号、减号)其中之一做先导,后续跟着至少一个空格或制表符,再跟着列表项内容。

代码为:

* 星号条目1
* 星号条目2
* 星号条目3

` `

+ 加号条目1
+ 加号条目2
+ 加号条目3

` `

- 减号条目1
- 减号条目2
- 减号条目3

显示为

  • 星号条目1
  • 星号条目2
  • 星号条目3

  • 加号条目1
  • 加号条目2
  • 加号条目3

  • 减号条目1
  • 减号条目2
  • 减号条目3

5.1.2 有序列表

有序列表使用英文数字加上.(英文点号)做先导,后续跟着至少一个空格或制表符,再跟着列表项内容。
有序列表中的数字序号不重要,会自动跟踪计数。

代码为:

1. 主要步骤1
1. 主要步骤2
1. 主要步骤3

显示为:

  1. 主要步骤1
  2. 主要步骤2
  3. 主要步骤3

5.2 嵌套列表

可以通过在列表符号的对齐位置处增加或减少缩进(4个空格或者1个制表符)来创建多级列表。

例1:三层嵌套无序列表
代码为:

* 主条目1
    + 次条目1-1 (用加号和制表符)
    + 次条目1-2(用加号和4个空格)
* 主条目2
    - 次条目2-1(用减号和制表符)
    - 次条目2-2(用减号和4个空格)
        + 三级条目2-2-1
        + 三级条目2-2-2
* 主条目3
    * 次条目3-1(用星号和制表符)
        * 三级条目3-1-1
        * 三级条目3-1-2 
    * 次条目3-2(用星号和4个空格)
* 主条目4

显示为:

  • 主条目1
    • 次条目1-1 (用加号和制表符)
    • 次条目1-2(用加号和4个空格)
  • 主条目2
    • 次条目2-1(用减号和制表符)
    • 次条目2-2(用减号和4个空格)
      • 三级条目2-2-1
      • 三级条目2-2-2
  • 主条目3
    • 次条目3-1(用星号和制表符)
      • 三级条目3-1-1
      • 三级条目3-1-2
    • 次条目3-2(用星号和4个空格)
  • 主条目4

例2:三级嵌套有序列表

代码为:

1. 主条目1
    1. 次条目1-1
        1. 三级条目1-1-1
    2. 次条目1-2
        1. 三级条目1-2-1
        2. 三级条目1-2-2
        3. 三级条目1-2-3
    3. 次条目1-3 
1. 主条目2
1. 主条目3
    1. 次条目3-1
    1. 次条目3-2 
1. 主条目4

显示为:

  1. 主条目1
    1. 次条目1-1
      1. 三级条目1-1-1
    2. 次条目1-2
      1. 三级条目1-2-1
      2. 三级条目1-2-2
      3. 三级条目1-2-3
    3. 次条目1-3
  2. 主条目2
  3. 主条目3
    1. 次条目3-1
    2. 次条目3-2
  4. 主条目4

5.2 列表中的排版

5.2.1 条目间空行

列表条目间可以用空行分开,某个条目的上方出现空行,则那个条目的下方也会出现空行,而不是所有条目出现空行。

例1 无序列表空行:编辑时条目2和条目5的上方出现空行,则2和5的下方在显示时也出现空行。

代码为:

* 无序条目1

* 无序条目2
* 无序条目3
* 无序条目4

* 无序条目5

显示为:

  • 无序条目1

  • 无序条目2

  • 无序条目3
  • 无序条目4

  • 无序条目5

例2 有序列表空行:编辑时条目2和条目5的上方出现空行,则2和5的下方在显示时也出现空行。

代码为:

1. 有序条目1

1. 有序条目2
1. 有序条目3
1. 有序条目4

1. 有序条目5

显示为:

  1. 有序条目1

  2. 有序条目2

  3. 有序条目3
  4. 有序条目4

  5. 有序条目5

5.2.2 条目下多个段落

每个列表条目中可以包含多个段落,每个段落必须缩进4个空格或1个制表符。(如果缩进8个空格或2个制表符将会变成代码引用,而不是条目段落)

代码为:

1.  这是一个有两个段落的列表项,这是第一段。

    这是第二段,段首已经缩进 4 个空格,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。
    这是第三段,段首已经缩进  1 个制表符,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。

1.  这是列表的第二个条目。

        这是第二段,这是段首缩进两个制表符。所以它变成了代码引用。但并不影响下一条目的正常使用。
        这是第三段,这是段首缩进8个空格。所以它变成了代码引用。但并不影响下一条目的正常使用。

1.  这是列表的第三个条目。

显示为:

  1. 这是一个有两个段落的列表项,这是第一段。

    这是第二段,段首已经缩进 4 个空格,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。
    这是第三段,段首已经缩进 1 个制表符,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。

  2. 这是列表的第二个条目。

    这是第二段,这是段首缩进两个制表符。所以它变成了代码引用。但并不影响下一条目的正常使用。
    这是第三段,这是段首缩进8个空格。所以它变成了代码引用。但并不影响下一条目的正常使用。
    
  3. 这是列表的第三个条目。

5.2.3 列表内引用

除了直接缩进2个制表符或者8个空格加入代码引用外,也可以用>(大于号)在列表条目内加入引用。注意在>前用缩进来调节引用的位置,此外要在引用的上下添加空行保证对后续条目的识别。

代码为:


1. 有序条目1

    > 这是一条引用,段首缩进了1个制表符。
    > 这是第二条引用,段首缩进了4个空格。

1. 有序条目2

        #include 
            int main (void){
                printf ("Hello, world!\n");
                return 0;               
            }
1. 有序条目3

显示为:

  1. 有序条目1

    这是一条引用,段首缩进了1个制表符。
    这是第二条引用,段首缩进了4个空格。

  2. 有序条目2

    #include 
        int main (void){
            printf ("Hello, world!\n");
            return 0;               
        }
    
  3. 有序条目3

5.2.4 避免不必要的列表条目

有些时候数字和点号会凑巧的出现在内容中,例如年份,不能将其解释成为列表条目。

代码为:

1986. 这个不是列表项。

显示为:
1986. 这个不是列表项。

6. 链接和图片

有两种链接:自动链接普通文本链接

6.1 自动链接

本身就是URL或者Email的文本,直接可以用一对<>(尖括号)括起来。受支持的包括HTTPS、HTTP、FTP、Email,但不包括File协议(例如file://e/download/readme.txt),也不能使用相对路径(例如/about/)。

代码为:

.sohu.com/index.html>
.baidu.com/>
.examples.com/category1/>
@163.com>

显示为:

http://www.sohu.com/index.html
https://www.baidu.com/
ftp://download.examples.com/category1/
[email protected]

6.2 普通文本链接

普通文本链接又分为行内式和参考式。

6.2.1 行内式普通链接

行内式普通链接由几部分组成:
1. 显示文本(必需):显示给浏览者用于提示链接的内容,由一对[](方括号)包裹的文字;
2. 链接URL(必需):要链接的目标,不显示,由有效的URL文本组成,不可加引号,该URL文本可以是绝对路径或相对路径;
3. 悬浮提示(可选):鼠标悬浮在链接上方是弹出的提示文本显示给浏览者,由一对''""符号(单引号、双引号)之一包裹有效的文本组成。悬浮提示可以没有,但如果有,需要和链接URL之间用空格隔开。

代码为:

[转到百度](http://www.baidu.com)(无悬浮提示)
[搜狐](http://www.sohu.com '打开搜狐主页')(单引号的悬浮提示)
[下载](ftp://download.examples.com/category1 "从示例网站下载第1分类")(双引号的悬浮提示)
[查看](/about/ "试试看")(相对路径)

显示为:

转到百度(无悬浮提示)
搜狐(单引号的悬浮提示)
下载(双引号的悬浮提示)
查看(相对路径)

6.2.2 参考式链接

参考式链接与普通链接类似,都包含三个部分:显示文本(必需),链接URL(必需)和悬浮文本(可选)三部分。
主要不同在于,后两部分使用参考来指向。
参考必须要被定义,一般是放在使用位置的后续某个位置,建议放在整篇文档的最后。

定义参考:以一对[](方括号)包裹的参考名引领,后面跟上普通链接中的链接URL悬浮文本,前后用:(冒号)隔开,冒号的后面至少要有一个空格或制表符。
* 参考名:使用不重名的数字或其它文本。
* 链接URL:可以不包裹,也可以用一对<>(尖括号)包裹。可以使用mailto:协议。
* 悬浮文本:需要用一对""()(双引号或者圆括号,但不能用单引号)包裹。

使用参考:在一对[](方括号)引领的显示文本后方,紧接着使用一对[](方括号)引领的参考名。使用参考时,可以不提供参考名,此时默认为参考名与显示文本相同。

代码为:

[百度][5](双引号悬浮提示)
[搜狐][6](尖括号URL,没有悬浮提示)
[文献1][] (隐含参考,相对路径)
[作者1][作者1邮箱](圆括号悬浮提示,mailto协议)

[5]: http://www.baidu.com "转到百度"
[6]: 
[文献1]: /about/ "关于"
[作者1邮箱]: mailto:[email protected] (邮箱)

显示为:

百度(双引号悬浮提示)
搜狐(没有悬浮提示)
文献1 (隐含参考,相对路径)
作者1(圆括号悬浮提示,mailto协议)

另一个参考用例:

代码为:

我经常逛的网站或社区有: [CSDN](http://www.csdn.net/ "CSDN")、[知乎] (http://www.zhihu.com/ "知乎")还有[豆瓣](http://www.douban.com/  "豆瓣")。


> 行内式

我经常逛的网站或社区有: [CSDN](http://www.csdn.net/ "CSDN")、[知乎] (http://www.zhihu.com/ "知乎")还有[豆瓣](http://www.douban.com/  "豆瓣")。

> 参考式

我经常逛的网站或社区有: [CSDN] [1]、[知乎] [2] 还有[豆瓣] [3]。

  [1]: http://www.csdn.net/   "CSDN"
  [2]: http://www.zhihu.com/  "知乎"
  [3]: http://www.douban.com/    "豆瓣"

> 默认参考式

我经常逛的网站或社区有: [CSDN] []、[知乎] [] 还有[豆瓣] []。

  [csdn]: http://www.csdn.net/   "CSDN"
  [知乎]: http://www.zhihu.com/  "知乎"
  [豆瓣]: http://www.douban.com/    "豆瓣"

显示为:

行内式

我经常逛的网站或社区有: CSDN、知乎 (http://www.zhihu.com/ “知乎”)还有豆瓣。

参考式

我经常逛的网站或社区有: CSDN、知乎 还有豆瓣。

默认参考式

我经常逛的网站或社区有: CSDN、知乎 还有豆瓣。

6.3 图片

以行内式链接格式,当链接的前面添加一个!(惊叹号),且链接URL的目标是一个图片文件(例如JPG、GIF等),则显示该图片。

代码为:

![百度图标图片](https://www.baidu.com/img/bd_logo1.png "百度图标图片")

显示为:
【学习笔记】CSDN MarkDown语法之一:基础特性_第1张图片

7. 代码

MarkDown采用类似于HTML的pre标签和code标签来实现代码包裹。

将一段文本用代码来表示,有多种好处。
1. 可以保留原汁原味的排版样式,至少不会被删除空格;
2. 不用专门去对各种用于Markdown语法的符号进行转义(当然反引号还是要转义);
2. 充分利用编辑器的功能高亮显示各种语言的关键字(例如Java、C、C++、HTML、XML等)。

代码按长度可以分为行内代码块代码两种。

7.1 行内代码

将文本用一对(反引号)包裹来实现行内代码。行内代码可以仅作用于被包裹的部分,但不能跨段落。行内代码可以很轻松的嵌入使用,特别是表示特殊转义符号时(用反斜杠加上那个特殊符号,详情见 转义字符)。

代码为:

`这是一段文本代码。`

显示为:

这是一段文本代码。

7.2 块代码

块代码有两种实现方式:缩进编码、3反引号包裹。

7.2.1 缩进编码的块代码

将多行普通文本缩进1次(4个空格或1个制表符)即可快速创建块代码。(快捷操作方法是选中那些连续的行,然后按一次Tab键)

代码为:

    我是一段文本,有很多杂七杂八的字符。

    ## 其实我不是标题。

    *我没打算斜着*
    **我没什么要强调的**
    ***我只想站直一点***

    2. 其实我不是条目
        1. 我还不是条目
        2. 我真的不是条目

    > 我不是引用
    >> 我也不是二级引用
    >>> 我不是三级引用
    > 我真的不是引用

    [我不想当链接](http://其实我是假的, "没骗你")
    [我没引用参考][8]

    [8]: mailto:我不提供参考@nobody.com

显示为:
我是一段文本,有很多杂七杂八的字符。

## 其实我不是标题。

*我没打算斜着*
**我没什么要强调的**
***我只想站直一点***

2. 其实我不是条目
    1. 我还不是条目
    2. 我真的不是条目

> 我不是引用
>> 我也不是二级引用
>>> 我不是三级引用
> 我真的不是引用

[我不想当链接](http://其实我是假的, "没骗你")
[我没引用参考][8]

[8]: mailto:我不提供参考@nobody.com

如果不在块代码里,将显示为:

我是一段文本,有很多杂七杂八的字符。

其实我不是标题。

我没打算斜着
我没什么要强调的
我只想站直一点

  1. 其实我不是条目
    1. 我还不是条目
    2. 我真的不是条目

我不是引用

我也不是二级引用

我不是三级引用
我真的不是引用

我不想当链接
我没引用参考

7.2.2 反引号包裹的块代码

块代码分为3个部分:
1. 代码块开始行:3个连续的 ` (反引号,不含空格)开头,紧跟可选的代码类型(text、java、c、c++、html、xml等等),如果不提供代码类型,默认为纯文本;
2. 代码块本体:需要添加的原始代码。
3. 代码块结束行:3个连续的 ` (反引号,不含空格),不含其它任何字符。

为保证代码块正常使用,开始行上方可能需要空行,结束行下方可能需要空行。

与缩进表示相比,好处在于最前面的4个字符也可以用了。非常适合用于各种编程代码。

下面直接给几个编程语言的例子:

示例1:纯文本型代码
代码为:

```
这是文本型代码,就直接引用缩进型的片段吧。
*我没打算斜着*
**我没什么要强调的**
***我只想站直一点***
```

显示为:

这是文本型代码,就直接引用缩进型的片段吧。
*我没打算斜着*
**我没什么要强调的**
***我只想站直一点***

示例:Java代码
代码为:

```java

package test;

public class HelloWorld {
    public static void main (String[] args)
    {
        System.out.println ("Hello, world!");
    }
} 


```

显示为:


package test;

public class HelloWorld {
    public static void main (String[] args)
    {
        System.out.println ("Hello, world!");
    }
} 

示例:C代码
代码为:

```c

#include "stdio.h"

int main (void)
{
    printf ("Hello, world!");
}


```

显示为:


#include "stdio.h"

int main (void)
{
    printf ("Hello, world!");
}

示例:C++代码
代码为:

```c++
#include 

int main (void)
{
    printf ("Hello, world!");
}

```

显示为:

#include 

int main (void)
{
    printf ("Hello, world!");
}

示例:HTML代码
代码为:

```html


    
        Hello, world!
    
    
        

Hello, world!

```

显示为:


<html>
    <head>
        <title>Hello, world!title>
    head>
    <body>
        <h1>Hello, world!h1>
    body>
html>

示例:XML代码
代码为:

```xml


    
        ZhangSan
        28
        male
    
    
        LiSi
        25
        female
    



```

显示为:


<Persons>
    <Person>
        <Name>ZhangSanName>
        <Age>28Age>
        <Sex>maleSex>
    Person>
    <Person>
        <Name>LiSiName>
        <Age>25Age>
        <Sex>femaleSex>
    Person>
Persons>

8 转义字符

MarkDown将很多字符赋予了特殊含义,因此如果正文中需要在发生混淆的时候(尤其是在行首)使用它们就需要转义字符:

符号 中文名 用途
\ 反斜杠 转义字符。
` 反引号 行内引用、链接。
( ) 左右圆括号 链接
[ ] 左右方括号 链接
{ } 左右花括号 链接
+ 加号 无序列表
- 减号 无序列表
_ 下划线 无序列表
* 星号 强调(粗体斜体)
# 井号 标题
. 点号 有序列表
! 惊叹号 图片引用

9 换行

MarkDown很大程度上兼容HTML语法,在一段文字中直接回车是没办法换行的。但有两个办法可以做到文字分段。(9.1段目前还没想明白)

9.1 双空格换行

在一段中如果需要分行,可以在换行前首先输入两个空格键,再换行。

代码为:

显示为:
我是第一行。我是第二行, 我想在这句话换行,但换不了。

9.2 插入HTML语法换行

MarkDown中可以直接插入HTML语言片段,可以用

来达到软换行和硬换行的目的。

代码为:

行1
行2

行3
<br />
行4
<p>p>
行5

显示为:

行1
行2

行3


行4

行5

你可能感兴趣的:(markdown,标记语言,学习笔记)