标题

1
语法:# 标题名字(井号的个数代表标题的级数,最多到六级标题)

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

文字样式

删除线

1
2
语法:用两个 ~ 来包裹删除的内容
~~文本内容被删除~~

文本内容被删除

斜体

1
2
3
语法:用一个 \* 来包裹斜体的内容

_文本内容倾斜_

文本内容倾斜

快捷键:选中需要斜体的内容后 Ctrl+I

加粗

1
2
3
语法:用两个 \* 来包裹加粗的内容

**文本内容加粗**

文本内容加粗

快捷键:选中需要加粗的内容后 Ctrl+B

斜体+加粗

1
2
3
语法:用三个 \* 来包裹斜体+加粗的内容

**_文本内容既倾斜又加粗_**

文本内容既倾斜又加粗

下划线

1
2
3
下划线是HTML语法:用 <u><\u> 来包裹添加下划线内容

<u>文本内容添加下划线</u>

文本内容添加下划线

快捷键:选中需要添加下划线的内容后 Ctrl+U

高亮(需在偏好设置勾选扩展语法)

1
2
3
语法:用 == 来包裹高亮内容

==文本内容高亮==

==文本内容高亮==

下标(需在偏好设置勾选扩展语法)

1
2
3
4
语法:用 ~ 来包裹下标内容

水 H~2~O
双氧水 H~2~O~2~

水 H2O

双氧水 H2O2

上标(需在偏好设置内选扩展语法)

1
2
3
4
语法:用 ^ 来包裹上标内容

平方米 m^2^
立方米 m^3^

平方米 m^2^
立方米 m^3^


表格

表格的源码格式:

使用 | 来分隔不同的单元格,使用 - 来分隔表头和其他行:

1
2
3
4
| name     | gender |
| -------- | ------ |
| Torvalds | Male |
| Tove | Female |

为了使 Markdown 更清晰,|- 两侧需要至少有一个空格(最左侧和最右侧的 | 外就不需要了)。

可以跳过以上描述,因为表格的 markdown 源代码是由typora自动生成的。

实际上输入 | Name | Gender | 并按下 enter 键将创建一个包含两列的表。

创建表后,焦点在该表上将弹出一个表格工具栏,您可以在左上角调整表格,居中居左居右对齐或删除表格。您还可以右上角使用上下文菜单来移动,复制和添加/删除列/行。还可以在表格中包括内联 Markdown 语法,例如链接,粗体,斜体或删除线。

Name Gender
Torvalds Male
Tove Female

除此之外可以使用空格对齐不同行的单元格,并在左右两侧都使用 | 来标记单元格边界,在表头下方的分隔线标记中加入 :,即可标记下方单元格内容的对齐方式:

1
2
3
4
| Name     | Gender | Age |
| :------- | :----: | --: |
| Torvalds | Male | 55 |
| Tove | Female | 58 |
Name Gender Age
Torvalds Male 55
Tove Female 58

使用快捷键Ctrl+T更方便(段落→表格→插入表格,即可查看快捷键)可以自定义表格大小。

引用

1
语法:>引用文本内容

引用文本内容

1
2
3
> 可以在引用中
>
> > 使用嵌套的引用

可以在引用中

使用嵌套的引用


目录

语法:[TOC] + enter

生成的目录内容会随笔者编辑而自动更新。


列表

无序列表–符号 空格

1
2
3
4
5
- 可以使用 `*` 作为标记

* 也可以使用 `+`

- 或者 `-`
  • 可以使用 * 作为标记(不推荐使用星号)

  • 也可以使用 +

  • 或者 -

有序列表–数字 . 空格

1
2
3
1. 有序列表以数字和 `.` 开始;
2. 数字的序列并不会影响生成的列表序列;
3. 但仍然推荐按照自然顺序(1.2.3...)编写。
  1. 有序列表以数字和 . 开始;

  2. 数字的序列并不会影响生成的列表序列;

  3. 但仍然推荐按照自然顺序(1.2.3…)编写。

    1
    可以使用:数字\. 来取消显示为列表(用反斜杠进行转义)

代码

代码块

1
2
3
```语言名称

```
1
2
public static void main(String[] args) {
}

行内代码

1
2
3
也可以通过 ``,插入行内代码(``Tab` 键上边、`ESC`下面的、数字 `1` 键左侧的那个按键):

例如 `Markdown`

Markdown


分隔线

可以在一行中使用三个或更多的 *-_ 来添加分隔线(``):

1
2
3
4
---
---

---



任务列表

1
2
3
4
语法:
未完成事项:- [ ]
已完成事项:- [x]
可以通过鼠标左键勾选或取消方框内的√。
  • 任务1
  • 任务2
  • 任务3

跳转

外部跳转–超链接

语法: [注释/命名](具体链接)

1
[帮助文档](https://support.typoraio.cn/Markdown-Reference/)

帮助文档

内部跳转–本文件内跳

语法: [注释/命名](#要去的目的地--标题)

1
[跳转到文字](#文字样式)

跳转到文字

自动链接

使用 <> 包括的 URL 或邮箱地址会被自动转换为超链接:

1
<https://www.baidu.com>

https://www.baidu.com


本地图片

图像与链接类似, 但在链接语法之前需要添加额外的 ! 字符。 图像语法如下所示:

1
2
![图片命名](图片本地存储的路径) P.s.用相对路径或绝对路径都可以
或者直接拷贝到Typora内。

数学表达式(支持Latex语法)

内联公式

1
使用两个`$`一前一后将公式内容包裹起来。

例如不定积分公式:$\int f(x)dx = F(x) + c (c\in {\forall} constants)$

行外公式

1
使用`ctrl + shift + m`创建数学公式块

P.s.数学(Mathematics),因此 **+m**。

例如单调收敛定理:

$$
\forall x \in E , 0 \leq f_n(x) \leq f_{n+1}(x),n\in {N_+}.且\lim\limits_{n\to\infty}f_n(x)=f(x).
那么,\lim\limits_{n\to\infty}\int_Ef(x)dx=\int_Ef(x)dx.
$$


利用Markdown画图

MarkDown画图也是轻量级的,功能并不全。

但是MarkDown支持sequence,flowchart和mermaid三种图表类型。

sequence使用的是js-sequence-diagrams。

flowchart使用的是flowchart.js。

Mermaid 是一个用于画流程图、状态图、时序图、甘特图的库,使用 JS 进行本地渲染,广泛集成于许多 Markdown 编辑器中。Mermaid 作为一个使用 JS 渲染的库,生成的不是一个“图片”,而是一段 HTML 代码。

(不同的编辑器渲染的可能不一样)

图表类型 支持来源 备注
Sequence js-sequence-diagrams UML 时序图
Flowchart flowchart.js 流程图
Mermaid mermaid 集成的强大的图表库,支持时序图、流程图、甘特图、类图、饼图等

接下来我将一一介绍上述三种类型的图表。

Sequence Diagrams

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Title: MarkDown时序图实例
participant 客户端
participant 控制器
participant 业务
participant 数据库

客户端->>数据库:提交数据店铺
Note right of 客户端:提交数据进行验证
控制器->>控制器:验证数据完整性
Note left of 控制器:返回错误的字段信息
控制器-->>客户端:数据不完整
Note over 客户端: 用户输入通行证的账号、密码
控制器->>业务:保存店铺到数据库
业务->>业务:save店铺数据
业务-->>控制器:保存出现异常
控制器-->>客户端:保存成功
数据库-->>业务:success
业务-->>控制器:success
控制器-->>客户端:success 客户端
Note left of 控制器:返回正确的提示,并跳转到审核第二步
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Title: MarkDown时序图实例

participant 客户端
participant 控制器
participant 业务
participant 数据库

客户端->>数据库:提交数据店铺
Note right of 客户端:提交数据进行验证
控制器->>控制器:验证数据完整性
Note left of 控制器:返回错误的字段信息
控制器-->>客户端:数据不完整
Note over 客户端: 用户输入通行证的账号、密码
控制器->>业务:保存店铺到数据库
业务->>业务:save店铺数据
业务-->>控制器:保存出现异常
控制器-->>客户端:保存成功
数据库-->>业务:success
业务-->>控制器:success
控制器-->>客户端:success 客户端
Note left of 控制器:返回正确的提示,并跳转到审核第二步

1
2
3
4
5
- 代表实线 , 主动发送消息,比如 request请求
> 代表实心箭头 , 同步消息,比如 AJAX 的同步请求
> -- 代表虚线,表示返回消息,spring Controller return
>
> > 代表非实心箭头 ,异步消息,比如AJAX请求

Flowcharts

  • 标准竖向流程图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
st=>start: 开始框

op=>operation: 处理框

cond=>condition: 判断框(是或否?)

sub1=>subroutine: 子流程

io=>inputoutput: 输入输出框

e=>end: 结束框

st->op->cond

cond(yes)->io->e

cond(no)->sub1(right)->op
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
st=>start: 出发

op=>operation: 下雨

cond=>condition: 带雨伞

sub1=>subroutine: 回家取伞

io=>inputoutput: 继续出行

e=>end: 到达目的地

st->op->cond

cond(yes)->io->e

cond(no)->sub1(right)->op
  • 标准横向流程图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
st=>start: 开始框

op=>operation: 处理框

cond=>condition: 判断框(是或否?)

sub1=>subroutine: 子流程

io=>inputoutput: 输入输出框

e=>end: 结束框

st(right)->op(right)->cond

cond(yes)->io(bottom)->e

cond(no)->sub1(right)->op
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
st=>start: 出发

op=>operation: 下雨

cond=>condition: 带雨伞

sub1=>subroutine: 回家取伞

io=>inputoutput: 继续出行

e=>end: 到达目的地

st(right)->op(right)->cond

cond(yes)->io(bottom)->e

cond(no)->sub1(right)->op

Mermaid

流程图

1
2
graph 方向描述
图表中的其他语句...

关键字graph表示一个流程图的开始,同时需要指定该图的方向。

其中“方向描述”为:

用词 含义
TB 从上到下
BT 从下到上
RL 从右到左
LR 从左到右

T = TOP,B = BOTTOM,L = LEFT,R = RIGHT,D = DOWN

最常用的布局方向是TB、LR。

1
2
3
4
graph TB;
A-->B
B-->C
C-->A
1
2
3
4
graph TB;
A-->B
B-->C
C-->A
1
2
3
4
graph LR;
A-->B
B-->C
C-->A
1
2
3
4
graph LR;
A-->B
B-->C
C-->A
节点形状
表述 说明 含义
id[文字] 矩形节点 表示过程,也就是整个流程中的一个环节。
id(文字) 圆角矩形节点 表示开始和结束。
id((文字)) 圆形节点 表示连接。为避免流程过长或有交叉,可将流程切开。
id{文字} 菱形节点 表示判断、决策。
id>文字] 右向旗帜状节点

单向箭头线段:表示流程进行方向

id即为节点的唯一标识,A~F 是当前节点名字,类似于变量名,画图时便于引用

括号内是节点中要显示的文字,默认节点的名字和显示的文字都为A

1
2
3
4
5
6
7
graph TB
A
B(圆角矩形节点)
C[矩形节点]
D((圆形节点))
E{菱形节点}
F>右向旗帜状节点]
1
2
3
4
5
6
7
8
graph TB
A
B(圆角矩形节点)
C[矩形节点]
D((圆形节点))
E{菱形节点}
F>右向旗帜状节点]

1
2
3
4
5
6
7
%% 语法示例
graph TB
sport(出发运动)--> badminton[羽毛球]
badminton --> IsWin{"有没有赢下单打比赛?"}
IsWin -->|有|happy[赢下比赛]-->goBack(回家)
IsWin -->|没有|sad[再接再厉]-->goBack

1
2
3
4
5
6
graph TB
sport(出发运动)--> badminton[羽毛球]
badminton --> IsWin{"有没有赢下单打比赛?"}
IsWin -->|有|happy[赢下比赛]-->goBack(回家)
IsWin -->|没有|sad[再接再厉]-->goBack

连线
1
2
3
4
5
6
7
8
9
10
11
12
13
graph TB
A1-->B1
A2---B2
A3--text---B3
A4--text-->B4
A5-.-B5
A6-.->B6
A7-.text.-B7
A8-.text.->B8
A9===B9
A10==>B10
A11==text===B11
A12==text==>B12
1
2
3
4
5
6
7
8
9
10
11
12
13
graph TB
A1-->B1
A2---B2
A3--text---B3
A4--text-->B4
A5-.-B5
A6-.->B6
A7-.text.-B7
A8-.text.->B8
A9===B9
A10==>B10
A11==text===B11
A12==text==>B12

UML时序图

1
2
3
4
5
6
7
sequenceDiagram
顾客-->API: 预约产品
API-->预约服务: 开始预约流程
break 当预约失败时
API-->顾客: 展示预约失败原因
end
API-->支付账单服务: 开始支付账单流程
1
2
3
4
5
6
7
8
sequenceDiagram
顾客-->API: 预约产品
API-->预约服务: 开始预约流程
break 当预约失败时
API-->顾客: 展示预约失败原因
end
API-->支付账单服务: 开始支付账单流程

甘特图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%% 语法示例
gantt
dateFormat YYYY-MM-DD
title 软件开发甘特图
section 设计
需求 :done, des1, 2014-01-06,2014-01-08
原型 :active, des2, 2014-01-09, 3d
UI设计 : des3, after des2, 5d
未来任务 : des4, after des3, 5d
section 开发
学习准备理解需求 :crit, done, 2014-01-06,24h
设计框架 :crit, done, after des2, 2d
开发 :crit, active, 3d
未来任务 :crit, 5d
耍 :2d

section 测试
功能测试 :active, a1, after des3, 3d
压力测试 :after a1 , 20h
测试报告 : 48h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
gantt
dateFormat YYYY-MM-DD
title 软件开发甘特图
section 设计
需求 :done, des1, 2014-01-06,2014-01-08
原型 :active, des2, 2014-01-09, 3d
UI设计 : des3, after des2, 5d
未来任务 : des4, after des3, 5d

section 开发
学习准备理解需求 :crit, done, 2014-01-06,24h
设计框架 :crit, done, after des2, 2d
开发 :crit, active, 3d
未来任务 :crit, 5d

section 测试
功能测试 :active, a1, after des3, 3d
压力测试 :after a1 , 20h
测试报告 : 48h

类图

1
语法解释:<|-- 表示继承,+ 表示 public,- 表示 private。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
classDiagram
动物 <|-- 鸭子
动物 <|-- 鱼
动物 <|-- 斑马
动物 : +int age
动物 : +String gender
动物: +isMammal()
动物: +mate()
class 鸭子{
+String beakColor
+swim()
+quack()
}
class 鱼{
-int sizeInFeet
-canEat()
}
class 斑马{
+bool is_wild
+run()
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
classDiagram
动物 <|-- 鸭子
动物 <|-- 鱼
动物 <|-- 斑马
动物 : +int age
动物 : +String gender
动物: +isMammal()
动物: +mate()
class 鸭子{
+String beakColor
+swim()
+quack()
}
class 鱼{
-int sizeInFeet
-canEat()
}
class 斑马{
+bool is_wild
+run()
}

状态图

1
2
3
4
5
6
7
stateDiagram
[*] --> Still
Still --> [*]
Still --> Moving
Moving --> Still
Moving --> Crash
Crash --> [*]
1
2
3
4
5
6
7
8
stateDiagram
[*] --> 静止
静止 --> [*]

静止 --> 运动
运动 --> 静止
运动 --> 碰撞
碰撞 --> [*]

饼图

1
2
3
4
5
pie
title Pie Chart
"狗" : 386
"猫" : 85
"老鼠" : 150
1
2
3
4
5
pie
title Pie Chart
"狗" : 386
"猫" : 85
"老鼠" : 150