Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。 由于 Markdown 的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。 如 GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等,甚至还能被使用来撰写电子书。
一、Markdown基础语法
Markdown语法 | 详解 | 快捷键 | 效果 |
---|---|---|---|
*斜体* | 无 | Ctrl/⌘ + I | 斜体 |
**粗体** | 无 | Ctrl/⌘ + B | 粗体 |
# 一级标题 | "#"后需加空格 | 无 | 无 |
## 二级标题 | 以此类推三级标题为三个“#” | 无 | 无 |
[链接](http://71up.cn) | “[ ]”间为显示的超文本 | Ctrl/⌘ + K | 链接 |
![图片](http://url/pic.png) | “[ ]”间为图片名 | Ctrl/⌘ + Shift + I | |
“ > ”引用 | “ > ”后需加空格 | Ctrl + Q | 无 |
* 无序列表 | 无 | Ctrl + L | 无 |
1. 有序列表 | 无 | 无 | 无 |
--- | 水平分割线 | 无 | ———— |
`内联代码` 的使用 | 无 | Ctrl/⌘ + Shift + K | 无 |
```代码块``` | 无 | 无 | 无 |
颜色代码 | 无 | 无 | 无 |
***斜体+粗体*** | 无 | 无 | 斜体+粗体 |
二、Markdown扩展语法
(一)数学公式
使用“$...$”包含即行内公式,单独一行且居中则为:
$$
...
$$
1. 常用代号
名称 | 实例 | 预览 | 注释 |
---|---|---|---|
上下标 | a^n_m | a^n_m | 上标^用于指数,下标用于角标 |
正负号(±) | a\pm b | a±b | |
乘 | \times | × | |
除 | \dlv | ÷ | |
根号 | \sqrt{a-b} | \sqrt{a-b} | 根号下(a-b) |
大于 | \gt | > | |
小于 | \lt | < | |
大于等于 | \ge | ≥ | |
小于等于 | \le | ≤ | |
正无穷 | \infty | ∞ | |
负无穷 | -\infty | -∞ | |
分数 | \dfrac{a}{b} | \dfrac{a}{b} | a分之b |
省略号 | \cdots | ... |
2. 三角函数
数学表达式 | 代码 |
---|---|
sinθ | \sin |
cosθ | \cos |
tanθ | \tan |
cotθ | \cot |
3. 矢量、累加累乘、极限
数学表达式 | 代码 |
---|---|
矢量 | \vec{} |
累加(求和∑) | \sum_{}^{} |
累乘(求积∏) | \prod_{}^{} |
极限 | \lim_{} |
4. 希腊字母表
字母名称 | 英语音标 | 大写 | 小写 | 字母名称 | 英语音标 | 大写 | 小写 |
---|---|---|---|---|---|---|---|
alpha | /'ælfə/ | Α | α | nu | /nju:/ | Ν | ν |
beta | /'bi:tə/或 /'beɪtə/ | Β | β | xi | 希腊 /ksi/;英美 /ˈzaɪ/ 或 /ˈksaɪ/ | Ξ | ξ |
gamma | /'gæmə/ | Γ | γ | omicron | /əuˈmaikrən/或 /ˈɑmɪˌkrɑn/ | Ο | ο |
delta | /'deltə/ | Δ | δ | pi | /paɪ/ | Π | π |
epsilon | /'epsɪlɒn/ | Ε | ε | rho | /rəʊ/ | Ρ | ρ |
zeta | /'zi:tə/ | Ζ | ζ | sigma | /'sɪɡmə/ | Σ | σ, ς |
eta | /'i:tə/ | Η | η | tau | /tɔ:/ 或 /taʊ/ | Τ | τ |
theta | /'θi:tə/ | Θ | θ | upsilon | /ˈipsilon/或 /ˈʌpsɨlɒn/ | Υ | υ |
iota | /aɪ'əʊtə/ | Ι | ι | phi | /faɪ/ | Φ | φ |
kappa | /'kæpə/ | Κ | κ | chi | /kaɪ/ | Χ | χ |
lambda | /'læmdə/ | Λ | λ | psi | /psaɪ/ | Ψ | ψ |
mu | /mju:/ | Μ | μ | omega | /'əʊmɪɡə/或 /oʊ'meɡə/ | Ω | ω |
Markdown的希腊代码即在希腊的英文名称前加“\”即可(大小写则取决于首字母是否大写),如“\epsilon”效果就是“\epsilon”;“\Epsilon”效果就是“\Epsilon”。
5. 矩阵
基本方法: 使用 \begin{matrix} ... \end{matrix}
生成,每一行以 \\
结尾表示换行,各元素间以 &
隔开,右边的数学公式代码块序号用 \tag{n}
表示。
$$
\begin{matrix}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9\\
\end{matrix}
\tag{简单矩阵 - 事例1}
$$
$$
\left\{
\begin{matrix}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9\\
\end{matrix}
\right\}
\tag{带有大括号的矩阵}
$$
或:
$$
\begin{Bmatrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{Bmatrix} \tag{带有大括号的矩阵}
$$
$$
\left(
\begin{matrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{matrix}
\right)
\tag{小括号}
$$
\left\{
\begin{matrix}
1 & 2 & \cdots & 5 \\
6 & 7 & \cdots & 10 \\
\vdots & \vdots & \ddots & \vdots \\
\alpha & \alpha+1 & \cdots & \alpha+4
\end{matrix}
\right\}
\tag{包含省略号和希腊字母}
6. 表格
开头结尾:
\begin{array}
, \end{array}
定义式:
例:{|c|c|c|}
,其中 c
l
r
分别代表居中、左对齐及右对齐。
分割线:
①竖直分割线:在定义式中插入 |
, (||
表示两条竖直分割线)。
②水平分割线:在下一行输入前插入 \hline
,以下图真值表为例。
其他:每行元素间均须要插入 &
,每行元素以 \\
结尾。
(1) 简单表格
$$
\begin{array}{|c|c|c|}
\hline 2&9&4\\
\hline 7&5&3\\
\hline 6&1&8\\
\hline
\end{array}
$$
(2) 真值表
$$
\begin{array}{cc|c}
A&B&F\\
\hline 0&0&0\\
0&1&1\\
1&0&1\\
1&1&1\\
\end{array}
$$
7. 方程组、表达条件式
$$
\begin{cases}
3x + 5y + z \\
7x - 2y + 4z \\
-6x + 3y + 2z
\end{cases}
$$
$$
f(n) =
\begin{cases}
n/2, & \text{if }n\text{ is even} \\
3n+1, & \text{if }n\text{ is odd}
\end{cases}
$$
8. 格式
(1) 代码块内多行代码对齐
$$
\begin{aligned}
a &= b + c \\
&= d + e + f
\end{aligned}
$$
(2) 间隔(空格、跟随)
- 跟随
\!
- 无空格 小空格
\,
中空格\;
大空格\
- 真空格
\quad
双真空格\qquad
$$
a\!b + ab + a\,b + a\;b + a\ b + a\quad b + a\qquad b
$$
(二)流程图
1. 基本语法
基本的流程图包含:流程图布局方向、几何图形和连接线三个部分组成。以下是一个简单的Markdown流程图示例,采用Mermaid语法:
`ˋ`mermaid
flowchart LR
开始 --> 结束
`ˋ`
说明:
graph LR;
:指定这是一个有向图;- 节点以及节点之间的关系通过
-->
来表示; - 方框中的文字表示节点的名称,例如
A[开始]
表示开始节点; 决策
节点后接两条分支线,分别表示决策的两个选项;- 流程图的开始和结束通过特殊节点
开始
和结束
表示。
2. 流程方向
符号/术语 | 含义 |
---|---|
TB /TD(两者相同) | 从上到下(Top to Bottom)的流程方向 |
BT | 从下到上(Bottom to Top)的流程方向 |
LR | 从左到右(Left to Right)的流程方向 |
RL | 从右到左(Right to Left)的流程方向 |
HZ | 水平方向(Horizontal)的流程方向 |
VT | 垂直方向(Vertical)的流程方向 |
3. 定义元素
元素类型 | 代表意义 | 形状 |
---|---|---|
start | 开始 | 圆角矩形 |
end | 结束/完成 | 圆角矩形 |
operation | 流程操作 | 普通矩形 |
subroutine | 预定子流程 | 双边线矩形 |
condition | 条件判断 | 菱形 |
inputoutput | 输入输出 | 平行四边形 |
4. 连接线的形状
线条类型 | 代码 | 线箭头类型 | 代码 |
---|---|---|---|
线条 | A --- B | 箭头 | A --> B |
虚线 | A -.- B | 圆点 | A --o B |
粗线 | A === B | 叉号 | A --x B |
示例:
A --o B
B ==> C
C -.-> D
D <--> E
flowchart LR;
test((指我干啥))
直线---test
直线箭头-->test
虚线-.-test
虚线箭头-.->test;
粗直线===test;
粗箭头==>test;
双竖线加标签---|"||加标签"| test;
5. 线长
长度 | 1 个 | 2 | 3 |
---|---|---|---|
无向 | --- |
---- |
----- |
普通箭头 | --> |
---> |
----> |
加粗 | === |
==== |
===== |
加粗箭头 | ==> |
===> |
====> |
点状 | -.- |
-..- |
-...- |
点状箭头 | -.-> |
-..-> |
-...-> |
6. 带文字连接线
带文字连接线可以在连接线上增加连接线的注释。注释有两种写法:
写在末尾:||
符号,只需要在连接线符号末尾增加—>|
文字|即可展示。
写在中间:类似—文字—>
、-. 文字 .->
,等于是重复连接符号,前半部分是定义上一个图形到文字的连接线样式,后半部分是定义文字到图形的连接线样式。
介绍 | 语法 |
---|---|
不带描述文字 | A--描述---B |
带描述的箭头 | A--描述-->B |
带描述的虚线连指向 | A-.描述.->B |
带描述的加粗箭头指向 | A==描述==>B |
末尾增加文字 | A--->|描述|B |
7. 连接线样式
连接线样式 在 linkStyle 语句中定义的样式
flowchart LR;
A-->B;
linkStyle 0 stroke:#ff3,stroke-width:4px,color:red;
节点样式 可以为节点定义指定的样式,例如更粗的边框或不同的背景色:
flowchart LR
A-->B;
style A fill:#f9f,stroke:#333,stroke-width:4px
style B fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
类 Class 比每次定义样式更方便的是定义一个样式 class,并将该 class 添加到不同的节点上。
flowchart LR
A:::someclass --> B
classDef someclass fill:#f96;
8. 节点的语法
在 Mermaid 中可以使用一些基本符号定义节点的形状,例如:圆角形、跑道形、气缸形、非对称形状、菱形、六角形、平行四边形、梯形。
`ˋ`mermaid
flowchart TB;
A(圆角形节点)
B[矩形节点]
C((圆形节点))
D[(圆柱形节点)]
E{菱形节点}
`ˋ`
`ˋ`mermaid
flowchart TB;
F([跑道形节点])
G{{六角形节点}}
H[[子程序形状]]
I>非对称形节点]
`ˋ`
`ˋ`mermaid
flowchart TB;
J[/梯形--正向\]
K[\梯形--反向/]
L[/平行四边形--右倾/]
M[\平行四边形--左倾\]
`ˋ`
9. 交互语法
跳转链接交换 超链接在同一浏览器选项卡/窗口中打开。可以通过在 click 定义中添加链接目标来更改此设置 (支持 _self,_blank,_parent 和 _top):
10. 串联连接
在Mermaid中,可以使用一行代码声明多个连接或节点之间的关系,这使得描述依赖关系变得非常简洁。以下是一些示例:
- 多个连接关系:
- 多个节点连接:
- 简洁的依赖关系声明:
11. 视图分组
子图
多子图流转
在多个子图中,可以在子图之间设置连接线,如下面的例子所示:
子图的方向
在多个流程图中,您可以使用方向语句来设置子图将呈现的方向,就像下面的例子所示:
12. 综合图
闰年判断逻辑
(本站Markdown暂无法解析)
flowchart
st=>start: Start
i=>inputoutput: 输入年份n
cond1=>condition: n能否被4整除?
cond2=>condition: n能否被100整除?
cond3=>condition: n能否被400整除?
o1=>inputoutput: 输出非闰年
o2=>inputoutput: 输出非闰年
o3=>inputoutput: 输出闰年
o4=>inputoutput: 输出闰年
e=>end
st->i->cond1
cond1(no)->o1->e
cond1(yes)->cond2
cond2(no)->o3->e
cond2(yes)->cond3
cond3(yes)->o2->e
cond3(no)->o4->e
冒泡排序流程图
flowchart LR
执行1[i = 1]
执行2[j = 0]
执行3[i ++]
执行4["a = arr[j], b = arr[j + 1]"]
执行5[交换 a, b]
执行6[j ++]
判断1["i < n"]
判断2["j < n - i"]
判断3["a > b"]
开始 --> 执行1
执行1 --> 判断1
判断1 --Y--> 执行2
执行2 --> 判断2
判断2 --Y--> 执行4
判断2 --N--> 执行3
执行3 --> 判断1
执行4 --> 判断3
判断3 --N--> 判断2
判断3 --Y--> 执行5
执行5 --> 执行6
执行6 --> 判断2
判断1 --N--> 结束