首席教师
首席教师
发布于 2024-04-08 / 163 阅读
0
0

Markdown使用指南

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 logo-2.png
“ > ”引用 “ > ”后需加空格 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}
$$
\begin{matrix}
1 & 2 & 3\\
4 & 5 & 6\\
7 & 8 & 9\\
\end{matrix}
\tag{简单矩阵 - 事例1}
$$

\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{带有大括号的矩阵}
$$

或:

$$
\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 & 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{包含省略号和希腊字母}
\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}
$$
\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}
$$
\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}
$$
\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}
$$
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}
$$
\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
$$
a\!b + ab + a\,b + a\;b + a\ b + a\quad b + a\qquad b
$$

(二)流程图

1. 基本语法

基本的流程图包含:流程图布局方向、几何图形和连接线三个部分组成。以下是一个简单的Markdown流程图示例,采用Mermaid语法:

flowchart LR 开始 --> 结束
`ˋ`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

示例:

flowchart LR A --o B B ==> C C -.-> D D <--> E
A --o B
B ==> C
C -.-> D
D <--> E
flowchart LR; test((指我干啥)) 直线---test 直线箭头-->test 虚线-.-test 虚线箭头-.->test; 粗直线===test; 粗箭头==>test; 双竖线加标签---|"||加标签"| test;
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;
    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
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;
flowchart LR
    A:::someclass --> B
    classDef someclass fill:#f96;

8. 节点的语法

在 Mermaid 中可以使用一些基本符号定义节点的形状,例如:圆角形、跑道形、气缸形、非对称形状、菱形、六角形、平行四边形、梯形。

flowchart TB; A(圆角形节点) B[矩形节点] C((圆形节点)) D[(圆柱形节点)] E{菱形节点}
flowchart TB; F([跑道形节点]) G{{六角形节点}} H[[子程序形状]] I>非对称形节点]
flowchart TB; J[/梯形--正向\] K[\梯形--反向/] L[/平行四边形--右倾/] M[\平行四边形--左倾\]
`ˋ`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):

flowchart LR; 百度-->71UP; click A "http://www.baidu.com/" _blank click B "http://www.71up.cn/" _blank

10. 串联连接

在Mermaid中,可以使用一行代码声明多个连接或节点之间的关系,这使得描述依赖关系变得非常简洁。以下是一些示例:

  1. 多个连接关系:
flowchart LR A -- 文字 --> B -- 文字 --> C
  1. 多个节点连接:
flowchart LR a --> b & c--> d
  1. 简洁的依赖关系声明:
flowchart TB A & B--> C & D

11. 视图分组

子图

flowchart LR; subgraph 第一个子图 测试数据1 --> 指我干啥 end subgraph 第二个子图 测试数据2 --> 你也指我干啥 end

多子图流转
在多个子图中,可以在子图之间设置连接线,如下面的例子所示:

flowchart TB c1-->a2 subgraph A a1-->a2 end subgraph B b1-->b2 end subgraph C c1-->c2 end A --> B C --> B B --> c2

子图的方向
在多个流程图中,您可以使用方向语句来设置子图将呈现的方向,就像下面的例子所示:

flowchart LR subgraph TOP direction TB subgraph B1 direction RL i1 -->f1 end subgraph B2 direction BT i2 -->f2 end end A --> TOP --> B B1 --> B2

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--> 结束
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--> 结束

评论