MarkDown 语法简单整理 原文件最后

MarkDown 语法整理

注:详细请查看原文件


基础语法

一、标题

原生

  1. 标题行首添加若干个 # 加空格表示标题
示例:

一号标题

二号标题

三号标题

四号标题

五号标题
六号标题
  1. 标题行后添加一行 === 或者 --- 表示标题:
示例: 一级标题 === 二级标题 ---

Html

示例:

这是标题1

这是标题2

这是标题3

这是标题4

这是标题5
这是标题6

二、分割线

使用三个或以上的 - 或者 * 或者 _ 表示,且这一行只有符号,注意不要被识别为二级标题即可,中间或者前面可以加空格




三、字体

原生

用星号(*)和底线(_)作为强调字词的符号

  • 被 一个* 或 _ 包围的字词会被转成用 <em> 标签包围(斜体)
  • 用两个 * 或 _ 包围会被转成 <strong>(粗体)
  • 用三个 * 或 _ 包为会被转成 <strong><em> 综合效果(又粗又斜)
  • 两个~~表示删除线

斜体1
斜体2
粗体1
粗体2
又斜又粗1
又斜又粗2
我是要删掉的文字

Html

i斜体
b粗体
又斜又粗
del我是要删掉的文字
u下划线的文字
em?据说是着重文字(看上去像斜体)
strong?据说是强壮的语气(看上去像粗体)
big大的字small小的字
sub下标 还有 sup上标
ins?据说是插入的字(看上去像下划线)
kbd按键
code代码(但是不太好用,还是三个 ` 好用)
tt据说是打字机文本(不懂)
samp据说是计算机代码样本(不懂)
var据说是变量(更不懂)

pre标签中,文本将以等宽字体显示,保留空格和换行符,将完全按照 HTML 源代码中所写的方式显示

abbr据说是缩写

address据说是地址(懵圈)
bdo定义文字方向
blockquote据说是长的引用(类似于 > 的引用块)
q据说是短的引用语(看上去是加了双引号)
cite据说是引用、引证
dfn据说是一个定义项目(不知道什么玩意)
details标签用以声明一个可折叠的块,这里是标题 被折叠的文本内容

扩展:如何换行?

  • 使用 两个空格回车 换行
  • 添加一个空行换行( 两个回车
  • 使用标签 <br> 换行

四、超链接和图片

原生

链接1(是一个文件)
链接2(是一个文件)
图像1加载失败后将显示此文本
加载失败后将显示此文本
这个图像他加载失败了(悲)

Html

链接

链接1(是一个文件)

图像

加载失败后显示本信息图像1
默认底部对齐喵
居中对齐喵
顶部对齐喵
浮动图像喵
边框喵

五、注释(藏点东西.jpg)

这里藏了很多东西,请查看原文件

六、代码

行内代码

行内代码前后用一个 ` 包裹,如 Happy.jpg

代码块

代码块前后个用三个反引号 ` 包裹,并可以指定语言,示例

include <iostream>
int main() { return 0; }

也可使用 Html code 标签(貌似不好用)

七、列表

无序列表

无序列表使用星号(*)、加号(+)或是减号(-)作为列表标记,这些标记后面要添加一个空格,可以嵌套

  • 一层1
    • 二层1
    • 二层2
      • 三层1
        • 四层1
  • 一层2

有序列表

使用 1. (点号后面有个空格)表示有序列表,可嵌套

  1. 一层1
    1. 二层1
    2. 二层2
  2. 一层1

八、表格

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

  • -: 设置内容和标题栏居右对齐
  • :- 设置内容和标题栏居左对齐
  • :-: 设置内容和标题栏居中对齐
表头1 表头2 表头3
单元格喵 单元格 单元格喵
单元格 单元格喵 单元格

九、文字引用

使用 > 表示,可以有多个 > ,表示层级更深(类似于 blockquote 标签)

第一层

第二层
这样是跳不出去的喵

还可以更深

这样就跳出去了喵

绘图(Mermaid)

必须使用代码块包裹,并指定语言为 mermaid
%% 开头为注释,需独占一行,注释中不要使用大括号
特殊字符转义用双引号包裹

流程图

声明:

flowchartgraph 声明为 流程图 类型,排列方向用 L R T B 指定,例如 graph LR

可指定的排列方向有:

  • TBTD - 从上到下
  • BT - 从下到上
  • RL - 右到左
  • LR - 左到右

节点

节点声明:
  • 使用 节点名字[节点内容] 声明节点,其中的 [] 代表节点样式,在连接声明区域内以节点名字指代节点,节点内容可以使用 Unicode 字符(双引号包裹)Markdown 语法(反引号 ` 包裹)
  • 可以直接在连接声明区域声明节点,此时节点名字作为节点内容,节点样式为默认样式( [] 样式)

每个节点的名称需唯一

节点形状:
默认:     [文本]  
圆边:     (文本)  
胶囊:     ([文本])  
子程序:   [[文本]]  
圆柱:     [(文本)]  
圆形:     ((文本))  
六边形:   {{文本}}  
棱形:     {文本}  
正四边形: [/文本/]  
反四边形: [\文本\]  
正梯形:   [/文本\]  
反梯形:   [\文本/]  
旗帜:     >文本]  
双圆:     (((文本)))  

扩展样式使用方式:  
节点名称@{shape: 样式名称}

连接

连接声明:

声明单个连接语法 A --> B 声明一条 A 到 B 链接
声明多个连接语法 A --> B --> C 声明A 到 B、B 到 C 共两条链接
多个节点聚合声明语法 A & B --> C 声明 A 到 C、B 到 C 共两条链接

连接样式:

用减号表示普通线,等号表示加粗线,减号和点号交替表示虚线;箭头有三种样式,分别用 >xo 表示
标签文本中可以使用 <br/> 表示换行

--- title: 连接样式展示 --- graph LR A --- B <--> C ==> D --x E --标签--- F -.-> G H ==标签==> I x--x J --> K -.标签.-> L --o M --标签--> N O <-.-> P o--o Q
调整连接长度:

可以定义链接跨越的级数以调整链接长度
想要跨越多少级数,只需要在正常的连接符号上加入对应数量的 -.= 等符号即可

子图

示例:

subgraph 子流程图名字[子流程图文本内容(标题)]  
    direction 子流程图方向  
    子流程图具体信息  
end

样式

节点样式
定义

定义节点样式语法如下:

style 节点名字 fill:#000, stroke:#000, stroke-width:0px, color:#000
样式类

可以将某些样式和某一类节点绑定在一起,方便管理,定义类的语法如下:

classDef 类的名字 fill:#000, stroke:#000, stroke-width:0px, color:#000
使用样式

将节点和类绑定的语法如下

class 节点名字 类的名字  
class 节点名字1,节点名字2 类的名字  
节点名字:::类的名字  
连接样式

由于连接没有名字,需使用它的被声明时的顺序号(从0开始)
例如当我想要为第二条连接添加一个独特的样式时,应该这样做:

linkStyle 1 stroke:#000, stroke-width:0px, color:#000

示例

--- title: 流程图示例 --- graph LR Cat["猫猫类"] Animal["动物类"] Spirit["妖类"] CatSpirit["猫妖类"] CatGl["猫娘类"] CatMiao(("一只猫妖:猫妖喵")) subgraph exc["子图:修行"] direction TB Animal --"修行"--> Spirit end Cat --"是"--> Animal Spirit --"包括猫妖"--> CatSpirit --"变为妖类猫娘"--> CatGl Cat --"变为兽类猫娘"--> CatGl Cat -."修成猫妖".-> CatSpirit CatSpirit --"实例化"--> CatMiao

时序图

声明

sequenceDiagram 声明为时序图
使用 autonumber 可以为消息添加自动的编号(从 1 开始)

参与者

定义
  • 默认样式声明为 participant 别名 as 展示名 ,角色样式声明为 actor 别名 as 展示名
    声明连接时使用的是 别名 ;若不设置别名 participant 展示名 ,则别名与展示名一致

  • 可以直接在连接声明区域声明角色,此时角色样式为 participant

分组

可以利用 box 颜色 组名 + 声明参与者 + end 给参与者分组
其中颜色可以使用 rgb(int_r,int_g,int_b)rgba(int_r,int_g,int_b,float_a) 定义,也可以使用英文的颜色名称

连接(消息)

连接声明:

使用 参与者 箭头样式 参与者 : 消息文本、行为 声明一个连接(消息)

箭头样式:

- 表示实线, -- 表示虚线
箭头可采用 >>>x) 等类型

->      没有箭头的实线
-->     没有箭头的虚线
->>     带箭头的实线
-->>    带箭头的虚线
<<->>   带双向箭头的实线
<<-->>  带双向箭头的虚线
-x      末端有十字的实线
--x     末端带有十字的虚线。
-)      末尾带有空心箭头的实线(异步)
--)     末尾带有空心箭头的虚线(异步)
添加标签

通过 note 标签位置 参与者 : 标签文本 可以添加标签,标签文本中可以使用 <br/> 表示换行
标签位置可采用:

左侧 left of
左侧 right of
上方(可以包含多个参与者) over

其他行为、消息

动态创建和销毁参与者

可以通过消息创建和销毁参与者
创建一个参与者 create 声明一个参与者
销毁一个参与者 destroy 名称
注意:刚创建参与者的不可以发送消息

激活和停用角色

通过 (de)activation 角色名 激活或停用角色
简化表示:在消息箭头后跟 + 激活接收者,消息箭头后跟 - 停用发送者
激活和停用可以嵌套

循环

通过 loop end 结构声明一个循环

loop 循环名称
    ... 语句 ...
end
条件
条件分支

使用 alt else end 声明一个 if else 结构(等同于 switch case 结构),可以有多个 else ,可以嵌套

alt 条件1
    ... 语句 ...
else 条件2
    ... 语句 ...
else 
    ... 语句 ...
end
可选行为

使用 opt end 声明一个 if 结构,可嵌套

opt 条件
    ... 语句 ...
end
其他结构
并发

使用 par and end 结构声明一组并发消息,可嵌套

par 并发动作1
    ... 语句 ...
and 并发动作2
    ... 语句 ...
and 并发动作3
    ... 语句 ...
end
critical

据说是关键步骤,看上去类似于 try catch

类似于 try catch 结构, option 中的内容约等于 catch 中的内容

critical 正常情况
    ... 语句 ...
option 意外情况1
    ... 语句 ...
option 意外情况2
    ... 语句 ...
end
中断

使用 break end 结构声明一个中断事件

break 中断原因
    ... 语句 ...
end
背景颜色

使用 rect 颜色值 end 结构为消息添加背景颜色
其中颜色可以使用 rgb(int_r,int_g,int_b)rgba(int_r,int_g,int_b,float_a) 定义,也可以使用英文的颜色名称

rect 颜色值
    ... 语句 ...
end

示例

--- title: "时序图示例" --- sequenceDiagram participant Sys as "系统" actor Cat as "猫猫" actor CatSpirit as "猫妖" note left of CatSpirit : "已知猫妖是猫娘" actor Spirit as "妖怪大王" Cat ->> Sys : "领取任务" Sys ->> Sys : "查找任务:变猫娘" Sys ->> + Cat : "下发任务:向猫妖询问变猫娘的事宜" loop Cat ->> CatSpirit : "询问变猫娘的事宜" alt "猫妖可以解答" CatSpirit ->> Cat : "回答变猫娘的事宜" else "猫妖暂时也不知道" CatSpirit ->> Cat : "引荐妖怪大王" Cat ->> Spirit : "询问猫猫变猫娘的事宜" Spirit ->> Cat : "回答变猫娘的事宜" end end Cat ->> - Sys : "提交任务"

类图

声明

classDiagram 声明为类图
direction 声明图表的方向,方向用 L R T B 指定

对象

定义类型
  1. 使用 class 类型别名[类型展示名] 来定义一个类型
    声明连接时使用的是 类型别名 ;若不设置别名 class 类型展示名 ,则别名与展示名一致

  2. 定义类型关系时会自动生成未定义的类型

类名只能由字母、数字、字符(包括unicode)、下划线 _ 和减号 - 组成

类型注释

可以使用标记来注释类,用 <<>> 包裹,以提供有关该类的附加元数据,常见的有

<<Interface>>    接口
<<Abstract>>     抽象类
<<Service>>      服务
<<Enumeration>>  枚举

可以使用 <<注释>> 类型别名 单独占用一行声明类的注释
也可定义在类的嵌套结构中,例如

class 类型名 {
    <<注释>>
    ... 语句 ...
}
命名空间

使用 namespace 命名空间名称 { 类型 } 来定义一个命名空间,命名空间中不可以放关系声明

namespace 命名空间名称 {
    ... 语句 ...
}
样式

定义类型样式的语法如下:

style 类型名称 fill:#000, stroke:#000, stroke-width:0px, color:#000
成员
成员定义

使用 类型别名 : 成员 来定义一个成员
在类型定义时使用 { 成员 } 来定义多个成员

class 类型名 {
    ... 成员 ...
}

带有小括号 () 的会被识别为方法,反之为属性
带有返回值的方法可以用 方法名称(参数) 返回值 结构指名返回类型, ) 后必须要有空格
泛型请使用 ~ 包裹,如 List~int~ 最终会显示为 List<int> ,可嵌套,但不太好用

成员修饰符

前缀表示访问权限,如:

+ public  
- private  
# protected  
~ internal 或 package  

后缀可以表示静态或虚方法,如:

* 虚方法(也可用于属性)
$ 静态

关系

关系声明:

使用 类型别名 箭头样式 类型别名: 说明文本 声明一个关系

箭头样式

-- 表示实线, .. 表示虚线
箭头可采用以下类型:

<|--  继承,箭头指向父类
-->   关联,描述了类的结构之间的关系,具有方向、名字、角色和多重性等信息,一般的关联关系语义较弱
o--   聚合,指明一个聚集(整体)和组成部分之间的关系,箭头指向整体
*--   组合,语义更强的聚合,部分和整体具有相同的生命周期,箭头指向整体
..>   依赖,描述了一个类的变化对依赖于它的类产生影响的情况,例如绑定(bind)、友元(friend)等
..|>  实现,箭头指向接口
--    链接(实线)
..    链接(虚线)
多重性和基数

定义在箭头两边,用双引号包裹,可用以下选项或其他文本

1       只有 1 个
0..1    零或一
1..*    一个或多个
*       许多
n       n(其中 n>1)
0..n    0 到 n(其中 n>1)
1..n    1 到 n(其中 n>1)

示例

--- title: "类图示例" --- classDiagram namespace 妖的怪 { class Spirit["妖"] { <<Abstract>> +void 法术()* } } class Cat["猫猫"] { #int id +string name +int age } class CatSpirit["猫妖"] CatSpirit : +void 法术() Spirit <|-- CatSpirit : "猫妖是妖" Cat <|-- CatSpirit : "猫妖是猫猫"

状态图

声明

stateDiagram 声明为状态图
direction 声明图表的方向,方向用 L R T B 指定

状态

定义状态

可以用 状态名称 指定一个状态
可以用 state "状态描述(双引号包裹)" as 状态名称 指定一个状态
可以用 状态名称 : 状态描述(无需双引号) 指定一个状态

特殊状态

可以用 [*] 表示开始状态和结束状态
可以用 <<choice>> 指定一个具有分支的状态
可以用 <<fork>><<join>> 指定一个具有分支的状态(类似C++多进程fork

复合状态

可以用 state 状态名称 {状态主体} 指定一个复合状态

state 状态名称 {
    ... 语句 ...
}
添加标签

通过 note 标签位置 状态名称 标签文本 end note 可以添加标签,标签文本中可以使用 <br/> 表示换行
也可通过 note 标签位置 状态名称 : 标签文本 添加标签,标签文本中可以使用 <br/> 表示换行
标签位置可采用:

左侧 left of
左侧 right of
上方(可以包含多个参与者) over
样式

定义样式的语法如下:

classDef 样式名称 fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow

可以使用 状态名称:::样式名称 为一个状态指定样式
也可使用 class 状态名称1, 状态名称2 样式名称 为多个状态指定样式

状态转移

可以用 状态名称1 --> 状态名称2 : 说明文本 表示一个状态的转移
可以使用 -- 指定并发行为

示例

--- title: "状态图示例" --- stateDiagram state "初始化" as s_init state "工作中" as s_working { state s_continue <<choice>> s_in --> s_update s_update --> s_continue s_continue --> s_update : "continue" s_continue --> s_out : "break" } note left of s_working : "用于执行业务逻辑" state "结束" as s_end [*] --> s_init : "初始化系统" s_init --> s_working : "进入主循环" s_working --> s_working : "执行业务逻辑" s_working --> s_end : "结束" s_end --> [*]

实体关系图(又称ER模型)

声明

erDiagram 表示ER图

实体

使用 实体别名[实体展示名]实体名称 定义一个实体

关系

使用 实体1 关系信息 实体2 : 注释文本(可以用双引号包裹,不可空) 来指定一个关系

关系信息包含三个部分:

  • 实体1 相对于 实体2 的基数(左箭头)
  • 是否赋予 child 实体身份(线段)
  • 实体2 相对于 实体1 的基数(右箭头)

其中基数可用的有:

|o  和  o|    零或一
||  和  ||    正好一个
}o  和  o{    零个或多个(无上限)
}|  和  |{    1个或多个(无上限)

关系可分为识别性关系或非识别性关系,分别用实线(-- )或虚线( .. )表示

属性

使用 实体名称 { 属性 } 定义实体的属性
属性由 属性类型 属性名称 key 注释(双引号包裹) 构成,其中属性类型和属性名称须以字母开头,可以包含数字、减号、下划线、圆括号和方括号; key 可以为 PK (主键) 、 FK (外键) 或 UK (唯一键)

实体名称 {
    ... 语句 ...
}

示例

--- title: "ER图示例" --- erDiagram t1["猫猫"] t2["猫娘"]{ string name PK "姓名" int age "年龄" } t1 ||--|| t2 : "猫娘也是猫猫"

用户行程图

极其简单:

  • journey 表示用户行程图
  • title 标题,可选
  • section 阶段名称 表示一个阶段
  • 任务,形如 mission : score : actor1, actor2
    • mission 任务名称
    • score 评分,可以为小数,建议取值 0-5 ,空白表示 0
    • actor 参与者,可以有多个
journey title 昨天的任务完成情况 section 睡觉 睡着 : 5 : 我, 我的猫 做梦 : 4 : 我 section 醒了 吃饭 : 2 : 我, 我的猫 学猫叫 : 3 : 我, 我的猫 发呆 : 1 : 我

饼图

极其简单:

  • pie 表示饼图
  • showData 表示在图例之后显示数据值,可选
  • title 标题,可选
  • 数据集,形如 "label" : number
    • label 表示一块饼的名称
    • number 支持最多两位小数
pie showData title 一天天的都在干什么 "吃饭喵" : 2.5 "睡觉喵" : 12 "发呆喵" : 1.5 "学猫叫" : 8

需求图

声明

requirementDiagram 表示一个需求图

需求

需求定义包含需求类型、名称、ID、文本、风险和验证方法。语法如下:

需求类型 需求名称 {
    id: ID
    text: 文本
    risk: 风险
    verifymethod: 验证方法
}

其中,需求类型包括:

requirement              需求
functionalRequirement    功能需求
interfaceRequirement     接口需求
performanceRequirement   性能需求
physicalRequirement      物理需求
designConstraint         设计约束

验证方法包括:

Analysis        分析
Inspection      检验
Test            测试
Demonstration   演示

风险可采用 LowMediumHigh

元素

元素定义包含元素名称、类型和文档引用。语法如下:

element 元素名称 {
    type: 类型
    docref: 文档引用
}

关系

关系由源节点、目标节点和关系类型组成。语法如下:

源节点 -类型-> 目标节点
目标节点 <-类型- 源节点

源节点和目标节点为需求或元素的名称。
类型可以是包含(contains)、复制(copies)、派生(derives)、满足(satisfies)、验证(verifies)、细化(refines)或跟踪(traces)。

示例

--- title: "需求图示例" --- requirementDiagram requirement "变猫娘" { id: "需求1" text: "需要变成猫娘" risk: high verifymethod: demonstration } element "变猫猫" { type: "元素1" docref: "暂无" } "变猫娘" -contains-> "变猫猫"

Git分支可视化图

声明

gitGraph Git分支可视化图
可以再 gitGraph 后添加 LR(左到右)、TB(从上到下)、 BT(自下而上)设置图表方向

提交 commit

语法:使用 commit 创建一个提交,后面可以使用 参数名: 参数 来指定参数,其中参数名后紧跟冒号,参数用双引号包裹
可使用的参数有:

  • 提交ID: id
  • 提交类型: type 包括NORMAL(默认:实心圆)、REVERSE(反向提交:交叉实心圆)、HIGHLIGHT(高亮:实心矩形)
  • 标签: tag

分支 branch

语法:使用 branch 分支名称 创建一个分支并 置为当前分支 ,可能与关键字混淆的分支名称需双引号包裹

检出 checkout

语法:使用 checkout 分支名称 检出一个分支

合并 merge

语法:使用 merge 分支名称 将一个分支合并到当前分支,并生成一个合并提交,默认用实心双圆圈表示,可以使用 commit 指令的参数修改样式

从另一分支提交到当前分支 cherry-pick

语法:使用 cherry-pick id: 提交ID 创建一个提交,必须指明提交ID和,另外

  • 指定的提交必须在其他分支
  • 当前分支必须有提交
  • 若指定的提交为合并提交,需使用 parent: 父级ID 指定合并提交的直接父级

其他

略略略

示例

--- title: "Git分支图示例" --- gitGraph commit id:"Start" type:HIGHLIGHT tag:"project creat" branch "dev" commit id:"0" tag:"变猫猫" branch "bug-fix" commit id:"1" tag:"检查结果" checkout "dev" commit id:"2" tag:"变猫娘" merge "bug-fix" id:"3" tag:"成功"

思维导图

声明

使用 mindmap 声明为思维导图

使用 节点名字[节点内容] 声明节点,其中的 [] 代表节点样式,默认为 [] 样式
可使用的节点样式有:

[]     方形
()     圆角矩形
(())   圆形
))((   爆炸形
)(     云形
{{}}   六边形

使用缩进来辨别不同的层级关系,缩进可以不用很严格,而且思维导图没有标题,如:

mindmap 变猫娘 1变猫猫 1.2成精精 1.3变猫娘 2参考资料 没有一点 也没有两点

数据包图(疑似试验)

极其简单,示例:

--- title: "TCP Packet TCP数据包" --- packet-beta 0-15: "Source Port 源端口" 16-31: "Destination Port 目标端口" 32-63: "Sequence Number 数据序号" 64-95: "Acknowledgment Number 确认序号ACK" 96-99: "Data Offset 偏移" 100-105: "Reserved 保留" 106: "URG" 107: "ACK" 108: "PSH" 109: "RST" 110: "SYN" 111: "FIN" 112-127: "Window 窗口字段" 128-143: "Checksum 校验和" 144-159: "Urgent Pointer 紧急指针" 160-191: "(Options and Padding) 可选选项 + 8位填充" 192-255: "Data (variable length) 用户数据"

packet-beta title UDP Packet UDP数据包 0-15: "Source Port 源端口" 16-31: "Destination Port 目标端口" 32-47: "Length 长度" 48-63: "Checksum 校验和" 64-95: "Data (variable length) 数据"

公式(LaTeX)

行内公式采用 $ 包裹显示, 独立显示的公式采用 $$ 包裹显示

分组

使用大括号 {} 将内容括起来,其将被看做一个整体

上下标

使用 ^ 表示上标,使用 _ 表示下标,例如:

\[A ^ B _ i \]

括号

小括号与中括号不变,可直接使用
尖括号使用 \langle\rangle 表示
使用 \lvert\rvert 表示绝对值符号
使用 \left括号左\right括号右 可使符号大小与邻近的公式相适应

空格

公式内会忽略空格,单个空格用反斜杠加空格 \ 表示,四个空格用 \quad 表示

数学符号

矢量

使用 \vec\overrightarrow 表示向量,例如:

\[\vec a \overrightarrow {XY} \]

求和

使用 $ \sum _ {下标} ^ {上标} $ 表示

极限

使用 $ \lim _ { {变量} \to {值} } $ 表示

积分

使用 $ \int _ {下限} ^ {上限} $ 表示

分式

使用 $ \frac {分子} {分母} $ 表示

根式

使用 $ \sqrt [指数] {被开方数} $ 表示

其他函数

如 $ \sin x $ 、 $ \ln x $ 、 $ \max(a,b,c) $ 等

其他数学符号

使用 \ 加名称表示,例如:

\infty         无穷
\cap           交集
\cup           并集
\subseteq      子集
\supseteq      超集
\subset        真子集
\supset        真超集
\in            属于
\notin         不属于
\varnothing    空集
\exists        存在
\forall        任意
\cdots         横向省略号
\vdots         纵向省略号
\ddots         斜向省略号

矩阵

起始标记 \begin{样式} ,结束标记 \end{样式}
每行末尾标记 \\ ,行间元素之间以 & 分隔,例如:

\[\begin{matrix} A & B & C \\ D & E & F \\ \end{matrix} \]

可用的样式有:

matrix     无样式
pmatrix    小括号边框
bmatrix    中括号边框
Bmatrix    大括号边框
vmatrix    单竖线边框
Vmatrix    双竖线边框

阵列

起始标记 \begin{array}{对齐方式} ,结束标记 \end{array}
对齐方式默认为居中,用 lcr 表示左对齐、居中和右对齐,后跟 | 会插入一条竖线
可用 \hline 插入水平线

方程组

起始标记 \begin{cases} ,结束标记 \end{cases} 例如:

\[\begin{cases} Y = X + 1 \\ Y = X + 2 \\ \end{cases} \]

希腊字母

使用 \ 加字母英文名称表示希腊字母,当名称首字母大写时表示大写字母,在名称前加 var 表示斜体字母,例如:

\[\alpha \beta \Gamma \varDelta \]

字体

使用 \math 加字体简称设置字体,如 \mathtt 例如:

\[\mathtt{Y = X} \]

可用的字体有:

tt    Typewriter         打字机字体
bb    Blackboard Bold    
sf    Sans Serif         无衬线字体

原文件

点击查看代码
# MarkDown 语法整理  

注:详细请查看原文件  

---  

## 基础语法

### 一、标题  

#### 原生  

1. 标题行首添加若干个 `#` 加空格表示标题  

<details>
<summary>示例:</summary>
<blockquote>  

  # 一号标题  
  ## 二号标题  
  ### 三号标题  
  #### 四号标题  
  ##### 五号标题  
  ###### 六号标题  

</blockquote> 
</details> 

2. 标题行后添加一行 `===` 或者 `---` 表示标题:  

<blockquote>  

<details>
<summary>示例:</summary>
一级标题  
===  
二级标题  
---  

</blockquote>  
</details>

#### Html  

<details>
<summary>示例:</summary>
<blockquote>  

<h1>这是标题1</h1>  
<h2>这是标题2</h2>  
<h3>这是标题3</h3>  
<h4>这是标题4</h4>  
<h5>这是标题5</h5>  
<h6>这是标题6</h6>  

</blockquote>  
</details>

### 二、分割线  

使用三个或以上的 `-` 或者 `*` 或者 `_`  表示,且这一行只有符号,**注意不要被识别为二级标题即可**,中间或者前面可以加空格  

<blockquote>  

---  
* * *  
_  _  _  

</blockquote>  

### 三、字体  

#### 原生  

用星号(*)和底线(_)作为强调字词的符号  
- 被 一个* 或 _ 包围的字词会被转成用 `<em>` 标签包围(斜体)  
- 用两个 * 或 _ 包围会被转成 `<strong>`(粗体)  
- 用三个 * 或 _ 包为会被转成 `<strong><em>` 综合效果(又粗又斜)  
- 两个~~表示删除线  

<blockquote>  

*斜体1*  
_斜体2_  
**粗体1**  
__粗体2__  
***又斜又粗1***  
___又斜又粗2___  
~~我是要删掉的文字~~  

</blockquote>  

#### Html  

<blockquote>  

<i>i斜体</i>  
<b>b粗体</b>  
<b><i>又斜又粗</i></b>  
<del>del我是要删掉的文字</del>  
<u>u下划线的文字</u>  
<em>em?据说是着重文字(看上去像斜体)</em>  
<strong>strong?据说是强壮的语气(看上去像粗体)</strong>  
<big>big大的字</big> 和 <small>small小的字</small>  
<sub>sub下标</sub> 还有 <sup>sup上标</sup>  
<ins>ins?据说是插入的字(看上去像下划线)</ins>  
<kbd>kbd按键</kbd>  
<code>code代码(但是不太好用,还是三个 ` 好用)</code>  
<tt>tt据说是打字机文本(不懂)</tt>  
<samp>samp据说是计算机代码样本(不懂)</samp>  
<var>var据说是变量(更不懂)</var>  
<pre>pre标签中,文本将以等宽字体显示,保留空格和换行符,将完全按照 HTML 源代码中所写的方式显示</pre>  
<abbr title="鼠标移至缩略词语上时显示全称">abbr据说是缩写</abbr>  
<address>address据说是地址(懵圈)</address>  
<bdo dir="rtl">bdo定义文字方向</bdo>  
<blockquote>blockquote据说是长的引用(类似于 > 的引用块)</blockquote>  
<q>q据说是短的引用语(看上去是加了双引号)</q><br>  
<cite>cite据说是引用、引证</cite><br>  
<dfn>dfn据说是一个定义项目(不知道什么玩意)</dfn>  

<details>
    <summary>details标签用以声明一个可折叠的块,这里是标题</summary>
    被折叠的文本内容
</details>

</blockquote>  

#### **扩展:如何换行?**  
- 使用 **两个空格** 加 **回车** 换行  
- 添加一个空行换行( **两个回车** )  
- 使用标签 `<br>` 换行  

### 四、超链接和图片  

#### 原生  

<blockquote>  

[链接1(是一个文件)](DemoFile.txt "标题:这是一个文件(鼠标悬停时显示)")  
[链接2(是一个文件)][1]  
![图像1加载失败后将显示此文本](Demo-0.jpg "标题:图像1(鼠标悬停时显示)")  
![加载失败后将显示此文本][2]  
![这个图像他加载失败了(悲)](None.png "标题:这里什么都没有(鼠标悬停时显示)")  

[1]: DemoFile.txt "标题:是一个文件(鼠标悬停时显示)"  
[2]: Demo-0.jpg "标题:图像2(鼠标悬停时显示)"  

</blockquote>  

#### Html  

##### 链接  

> <a href="DemoFile.txt" title="是一个文件喵">链接1(是一个文件)</a>  

##### 图像  

<blockquote>  

<img src="Demo-0.jpg" alt="加载失败后显示本信息" title="标题:图像1(鼠标悬停显示)" width="64" height="100">图像1  
默认底部对齐喵<img src="Demo-0.jpg"  width="64" height="64">  
居中对齐喵<img src="Demo-0.jpg" align="middle" width="64" height="64">  
顶部对齐喵<img src="Demo-0.jpg" align="top" width="64" height="64">  
浮动图像喵<img src="Demo-0.jpg" style="float:right" width="64">  
边框喵 <img src="Demo-0.jpg" border="4" width="64">  

</blockquote>  

### 五、注释(藏点东西.jpg)  

这里藏了很多东西,请查看原文件  

[^_^]: 这里可以藏一些东西喵  
[comment]: <> (这里可以藏一些东西喵)  
[//]: <> (这里可以藏一些东西喵)  
[//]: # (这里可以藏一些东西喵)  
<!--  
    或者  
    用 Html  
    可以藏得更多  
-->  

### 六、代码  

#### 行内代码  

行内代码前后用一个 \`  包裹,如 `Happy.jpg`   

#### 代码块  

代码块前后个用三个反引号 \` 包裹,并可以指定语言,示例  

反单引号*3已替换防止冲突cpp
include <iostream>
int main() { return 0; }
反单引号*3已替换防止冲突

也可使用 Html `code` 标签(貌似不好用)  

### 七、列表  

#### 无序列表  

无序列表使用星号(*)、加号(+)或是减号(-)作为列表标记,这些标记后面要添加一个空格,可以嵌套  

<blockquote>  

+ 一层1  
    - 二层1  
    - 二层2  
        * 三层1  
            + 四层1  
+ 一层2  

</blockquote>  

#### 有序列表  

使用 `1. ` (点号后面有个空格)表示有序列表,可嵌套  

<blockquote>  

1. 一层1  
    1. 二层1  
    2. 二层2  
2. 一层1  

</blockquote>  

### 八、表格  

使用 `|` 来分隔不同的单元格,使用 `-` 来分隔表头和其他行  
对齐方式:  
- `-:` 设置内容和标题栏居右对齐  
- `:-` 设置内容和标题栏居左对齐  
- `:-:` 设置内容和标题栏居中对齐  

<blockquote>  

|  表头1   | 表头2  | 表头3 |  
|  :----  |  ---:  |  :-:  |  
| 单元格喵  | 单元格 | 单元格喵 |  
| 单元格  | 单元格喵 | 单元格 |  

</blockquote>  

### 九、文字引用  

使用 `>` 表示,可以有多个 `>` ,表示层级更深(类似于 `blockquote` 标签)  

> 第一层  
>> 第二层  
> 这样是跳不出去的喵  
>>> 还可以更深  

> 这样就跳出去了喵  

## 绘图(Mermaid)  

必须使用代码块包裹,并指定语言为 `mermaid`  
`%%` 开头为注释,需独占一行,注释中不要使用大括号  
特殊字符转义用双引号包裹  

### 流程图  

#### 声明:  

用 `flowchart` 或 `graph` 声明为 __流程图__ 类型,排列方向用 `L R T B` 指定,例如 `graph LR`  

可指定的排列方向有:  

- `TB` 和 `TD` - 从上到下
- `BT` - 从下到上
- `RL` - 右到左
- `LR` - 左到右

#### 节点

##### 节点声明:  

- 使用 `节点名字[节点内容]` 声明节点,其中的 `[]` 代表节点样式,在连接声明区域内以节点名字指代节点,节点内容可以使用 __Unicode 字符(双引号包裹)__ 或 __Markdown 语法(反引号 \` 包裹)__  
- 可以直接在连接声明区域声明节点,此时节点名字作为节点内容,节点样式为默认样式( `[]` 样式)  

__每个节点的名称需唯一__  

##### 节点形状:  

反单引号*3已替换防止冲突
默认:     [文本]  
圆边:     (文本)  
胶囊:     ([文本])  
子程序:   [[文本]]  
圆柱:     [(文本)]  
圆形:     ((文本))  
六边形:   {{文本}}  
棱形:     {文本}  
正四边形: [/文本/]  
反四边形: [\文本\]  
正梯形:   [/文本\]  
反梯形:   [\文本/]  
旗帜:     >文本]  
双圆:     (((文本)))  

扩展样式使用方式:  
节点名称@{shape: 样式名称}
反单引号*3已替换防止冲突

#### 连接  

##### 连接声明:  

声明单个连接语法 `A --> B` 声明一条 A 到 B 链接  
声明多个连接语法 `A --> B --> C` 声明A 到 B、B 到 C 共两条链接  
多个节点聚合声明语法 `A & B --> C` 声明 A 到 C、B 到 C 共两条链接  

##### 连接样式:  

用减号表示普通线,等号表示加粗线,减号和点号交替表示虚线;箭头有三种样式,分别用 `>` 、 `x` 和 `o` 表示  
标签文本中可以使用 `<br/>` 表示换行

反单引号*3已替换防止冲突 mermaid
---
title: 连接样式展示
---
graph LR
    A --- B <--> C ==> D --x E --标签--- F -.-> G 
    H ==标签==> I x--x J --> K -.标签.-> L --o M --标签--> N
    O <-.-> P o--o Q  
反单引号*3已替换防止冲突

##### 调整连接长度:  

可以定义链接跨越的级数以调整链接长度  
想要跨越多少级数,只需要在正常的连接符号上加入对应数量的 `-` 、`.` 、`=` 等符号即可  

#### 子图  

示例:  

反单引号*3已替换防止冲突
subgraph 子流程图名字[子流程图文本内容(标题)]  
    direction 子流程图方向  
    子流程图具体信息  
end
反单引号*3已替换防止冲突  

#### 样式  

##### 节点样式  

###### 定义

定义节点样式语法如下:  

反单引号*3已替换防止冲突
style 节点名字 fill:#000, stroke:#000, stroke-width:0px, color:#000
反单引号*3已替换防止冲突

###### 样式类  

可以将某些样式和某一类节点绑定在一起,方便管理,定义类的语法如下:  

反单引号*3已替换防止冲突
classDef 类的名字 fill:#000, stroke:#000, stroke-width:0px, color:#000
反单引号*3已替换防止冲突

###### 使用样式 

将节点和类绑定的语法如下  

反单引号*3已替换防止冲突
class 节点名字 类的名字  
class 节点名字1,节点名字2 类的名字  
节点名字:::类的名字  
反单引号*3已替换防止冲突

##### 连接样式

由于连接没有名字,需使用它的被声明时的顺序号(从0开始)  
例如当我想要为第二条连接添加一个独特的样式时,应该这样做:  

反单引号*3已替换防止冲突
linkStyle 1 stroke:#000, stroke-width:0px, color:#000
反单引号*3已替换防止冲突

#### 示例  

反单引号*3已替换防止冲突 mermaid
---
title: 流程图示例
---
graph LR
    Cat["猫猫类"]
    Animal["动物类"]
    Spirit["妖类"]
    CatSpirit["猫妖类"]
    CatGl["猫娘类"]
    CatMiao(("一只猫妖:猫妖喵"))
    subgraph exc["子图:修行"]
        direction TB
        Animal --"修行"--> Spirit
    end
    Cat --"是"--> Animal
    Spirit --"包括猫妖"--> CatSpirit --"变为妖类猫娘"--> CatGl
    Cat --"变为兽类猫娘"--> CatGl
    Cat -."修成猫妖".-> CatSpirit
    CatSpirit --"实例化"--> CatMiao
反单引号*3已替换防止冲突

### 时序图  

#### 声明  

用 `sequenceDiagram` 声明为时序图  
使用 `autonumber` 可以为消息添加自动的编号(从 `1` 开始)  

#### 参与者  

##### 定义  

- 默认样式声明为 `participant 别名 as 展示名` ,角色样式声明为 `actor 别名 as 展示名`  
声明连接时使用的是 `别名` ;若不设置别名 `participant 展示名` ,则别名与展示名一致  

- 可以直接在连接声明区域声明角色,此时角色样式为 `participant`  

##### 分组  

可以利用 `box 颜色 组名 + 声明参与者 + end` 给参与者分组  
其中颜色可以使用 `rgb(int_r,int_g,int_b)` 或 `rgba(int_r,int_g,int_b,float_a)` 定义,也可以使用英文的颜色名称  

#### 连接(消息)  

##### 连接声明:  

使用 `参与者 箭头样式 参与者 : 消息文本、行为` 声明一个连接(消息)  

##### 箭头样式:  

`-` 表示实线, `--` 表示虚线  
箭头可采用 `>` 、 `>>` 、 `x` 、 `)` 等类型  

反单引号*3已替换防止冲突
->      没有箭头的实线
-->     没有箭头的虚线
->>     带箭头的实线
-->>    带箭头的虚线
<<->>   带双向箭头的实线
<<-->>  带双向箭头的虚线
-x      末端有十字的实线
--x     末端带有十字的虚线。
-)      末尾带有空心箭头的实线(异步)
--)     末尾带有空心箭头的虚线(异步)
反单引号*3已替换防止冲突

##### 添加标签

通过 `note 标签位置 参与者 : 标签文本` 可以添加标签,标签文本中可以使用 `<br/>` 表示换行  
标签位置可采用:  
反单引号*3已替换防止冲突
左侧 left of
左侧 right of
上方(可以包含多个参与者) over
反单引号*3已替换防止冲突

#### 其他行为、消息  

##### 动态创建和销毁参与者  

可以通过消息创建和销毁参与者  
创建一个参与者 `create 声明一个参与者`  
销毁一个参与者 `destroy 名称`  
__注意:刚创建参与者的不可以发送消息__  

##### 激活和停用角色  

通过 `(de)activation 角色名` 激活或停用角色  
简化表示:在消息箭头后跟 `+` 激活接收者,消息箭头后跟 `-` 停用发送者  
__激活和停用可以嵌套__  

##### 循环  

通过 `loop end` 结构声明一个循环  

反单引号*3已替换防止冲突
loop 循环名称
    ... 语句 ...
end
反单引号*3已替换防止冲突

##### 条件  

###### 条件分支  

使用 `alt else end` 声明一个 `if else` 结构(等同于 `switch case` 结构),可以有多个 `else` ,可以嵌套  

反单引号*3已替换防止冲突
alt 条件1
    ... 语句 ...
else 条件2
    ... 语句 ...
else 
    ... 语句 ...
end
反单引号*3已替换防止冲突

###### 可选行为  

使用 `opt end` 声明一个 `if` 结构,可嵌套  

反单引号*3已替换防止冲突
opt 条件
    ... 语句 ...
end
反单引号*3已替换防止冲突

##### 其他结构  

###### 并发  

使用 `par and end` 结构声明一组并发消息,可嵌套  

反单引号*3已替换防止冲突
par 并发动作1
    ... 语句 ...
and 并发动作2
    ... 语句 ...
and 并发动作3
    ... 语句 ...
end
反单引号*3已替换防止冲突

###### critical  

据说是关键步骤,看上去类似于 `try catch`  

类似于 `try catch` 结构, `option` 中的内容约等于 `catch` 中的内容  

反单引号*3已替换防止冲突
critical 正常情况
    ... 语句 ...
option 意外情况1
    ... 语句 ...
option 意外情况2
    ... 语句 ...
end
反单引号*3已替换防止冲突

###### 中断  

使用 `break end` 结构声明一个中断事件  

反单引号*3已替换防止冲突
break 中断原因
    ... 语句 ...
end
反单引号*3已替换防止冲突

###### 背景颜色

使用 `rect 颜色值 end` 结构为消息添加背景颜色  
其中颜色可以使用 `rgb(int_r,int_g,int_b)` 或 `rgba(int_r,int_g,int_b,float_a)` 定义,也可以使用英文的颜色名称  

反单引号*3已替换防止冲突
rect 颜色值
    ... 语句 ...
end
反单引号*3已替换防止冲突

#### 示例  

反单引号*3已替换防止冲突 mermaid
---
title: "时序图示例"
---
sequenceDiagram
    participant Sys as "系统"
    actor Cat as "猫猫"
    actor CatSpirit as "猫妖"
    note left of CatSpirit : "已知猫妖是猫娘"
    actor Spirit as "妖怪大王"
    Cat ->> Sys : "领取任务"
    Sys ->> Sys : "查找任务:变猫娘"
    Sys ->> + Cat : "下发任务:向猫妖询问变猫娘的事宜"
    loop
        Cat ->> CatSpirit : "询问变猫娘的事宜"
        alt "猫妖可以解答"
            CatSpirit ->> Cat : "回答变猫娘的事宜"
        else "猫妖暂时也不知道"
            CatSpirit ->> Cat : "引荐妖怪大王"
            Cat ->> Spirit : "询问猫猫变猫娘的事宜"
            Spirit ->> Cat : "回答变猫娘的事宜"
        end
    end
    Cat ->> - Sys : "提交任务"
反单引号*3已替换防止冲突

### 类图  

#### 声明  

用 `classDiagram` 声明为类图  
用 `direction` 声明图表的方向,方向用 L R T B 指定  

#### 对象  

##### 类  

###### 定义类型  

1. 使用 `class 类型别名[类型展示名]` 来定义一个类型  
声明连接时使用的是 `类型别名` ;若不设置别名 `class 类型展示名` ,则别名与展示名一致    

2. 定义类型关系时会自动生成未定义的类型  

__类名只能由字母、数字、字符(包括unicode)、下划线 `_` 和减号 `-` 组成__  

###### 类型注释  

可以使用标记来注释类,用 `<<` 和 `>>` 包裹,以提供有关该类的附加元数据,常见的有  
反单引号*3已替换防止冲突
<<Interface>>    接口
<<Abstract>>     抽象类
<<Service>>      服务
<<Enumeration>>  枚举
反单引号*3已替换防止冲突
可以使用 `<<注释>> 类型别名` 单独占用一行声明类的注释  
也可定义在类的嵌套结构中,例如  
反单引号*3已替换防止冲突
class 类型名 {
    <<注释>>
    ... 语句 ...
}
反单引号*3已替换防止冲突

###### 命名空间  

使用 `namespace 命名空间名称 { 类型 }` 来定义一个命名空间,命名空间中不可以放关系声明  
反单引号*3已替换防止冲突
namespace 命名空间名称 {
    ... 语句 ...
}
反单引号*3已替换防止冲突

###### 样式

定义类型样式的语法如下:  

反单引号*3已替换防止冲突
style 类型名称 fill:#000, stroke:#000, stroke-width:0px, color:#000
反单引号*3已替换防止冲突

##### 成员  

###### 成员定义  

使用 `类型别名 : 成员` 来定义一个成员  
在类型定义时使用 `{ 成员 }` 来定义多个成员  
反单引号*3已替换防止冲突
class 类型名 {
    ... 成员 ...
}
反单引号*3已替换防止冲突

带有小括号 `()` 的会被识别为方法,反之为属性  
带有返回值的方法可以用 `方法名称(参数) 返回值` 结构指名返回类型, `)` 后必须要有空格  
泛型请使用 `~` 包裹,如 `List~int~` 最终会显示为 `List<int>` ,可嵌套,但不太好用  

###### 成员修饰符  

前缀表示访问权限,如:  
反单引号*3已替换防止冲突
+ public  
- private  
# protected  
~ internal 或 package  
反单引号*3已替换防止冲突

后缀可以表示静态或虚方法,如:  
反单引号*3已替换防止冲突
* 虚方法(也可用于属性)
$ 静态
反单引号*3已替换防止冲突

#### 关系  

##### 关系声明:  

使用 `类型别名 箭头样式 类型别名: 说明文本` 声明一个关系  

##### 箭头样式  

`--` 表示实线, `..` 表示虚线  
箭头可采用以下类型:  
反单引号*3已替换防止冲突
<|--  继承,箭头指向父类
-->   关联,描述了类的结构之间的关系,具有方向、名字、角色和多重性等信息,一般的关联关系语义较弱
o--   聚合,指明一个聚集(整体)和组成部分之间的关系,箭头指向整体
*--   组合,语义更强的聚合,部分和整体具有相同的生命周期,箭头指向整体
..>   依赖,描述了一个类的变化对依赖于它的类产生影响的情况,例如绑定(bind)、友元(friend)等
..|>  实现,箭头指向接口
--    链接(实线)
..    链接(虚线)
反单引号*3已替换防止冲突

##### 多重性和基数  

定义在箭头两边,用双引号包裹,可用以下选项或其他文本  
反单引号*3已替换防止冲突
1       只有 1 个
0..1    零或一
1..*    一个或多个
*       许多
n       n(其中 n>1)
0..n    0 到 n(其中 n>1)
1..n    1 到 n(其中 n>1)
反单引号*3已替换防止冲突

#### 示例  

反单引号*3已替换防止冲突 mermaid
---
title: "类图示例"
---
classDiagram
    namespace 妖的怪 {
        class Spirit["妖"] {
            <<Abstract>>
            +void 法术()*
        }
    }
    class Cat["猫猫"] {
        #int id
        +string name
        +int age
    }
    class CatSpirit["猫妖"]
    CatSpirit : +void 法术()
    Spirit <|-- CatSpirit : "猫妖是妖"
    Cat <|-- CatSpirit : "猫妖是猫猫"
反单引号*3已替换防止冲突

### 状态图  

#### 声明  

用 `stateDiagram` 声明为状态图  
用 `direction` 声明图表的方向,方向用 L R T B 指定  

#### 状态  

##### 定义状态  

可以用 `状态名称` 指定一个状态  
可以用 `state "状态描述(双引号包裹)" as 状态名称` 指定一个状态  
可以用 `状态名称 : 状态描述(无需双引号)` 指定一个状态  

##### 特殊状态

可以用 `[*]` 表示开始状态和结束状态  
可以用 `<<choice>>` 指定一个具有分支的状态  
可以用 `<<fork>>` 和 `<<join>>` 指定一个具有分支的状态(类似C++多进程`fork`)  

##### 复合状态  

可以用 `state 状态名称 {状态主体}` 指定一个复合状态  
反单引号*3已替换防止冲突
state 状态名称 {
    ... 语句 ...
}
反单引号*3已替换防止冲突

##### 添加标签  

通过 `note 标签位置 状态名称 标签文本 end note` 可以添加标签,标签文本中可以使用 `<br/>` 表示换行  
也可通过 `note 标签位置 状态名称 : 标签文本` 添加标签,标签文本中可以使用 `<br/>` 表示换行  
标签位置可采用:  
反单引号*3已替换防止冲突
左侧 left of
左侧 right of
上方(可以包含多个参与者) over
反单引号*3已替换防止冲突

##### 样式  

定义样式的语法如下:  

反单引号*3已替换防止冲突
classDef 样式名称 fill:#f00,color:white,font-weight:bold,stroke-width:2px,stroke:yellow
反单引号*3已替换防止冲突
可以使用 `状态名称:::样式名称` 为一个状态指定样式  
也可使用 `class 状态名称1, 状态名称2 样式名称` 为多个状态指定样式  

#### 状态转移  

可以用 `状态名称1 --> 状态名称2 : 说明文本` 表示一个状态的转移  
可以使用 `--` 指定并发行为  

#### 示例  

反单引号*3已替换防止冲突 mermaid
---
title: "状态图示例"
---
stateDiagram
  state "初始化" as s_init
  state "工作中" as s_working {
    state s_continue <<choice>>
    s_in --> s_update
    s_update --> s_continue
    s_continue --> s_update : "continue"
    s_continue --> s_out : "break"
  }
  note left of s_working : "用于执行业务逻辑"
  state "结束" as s_end
  [*] --> s_init : "初始化系统"
  s_init --> s_working : "进入主循环"
  s_working --> s_working : "执行业务逻辑"
  s_working --> s_end : "结束"
  s_end --> [*]
反单引号*3已替换防止冲突

### 实体关系图(又称ER模型)  

#### 声明  

用 `erDiagram` 表示ER图  

#### 实体  

使用 `实体别名[实体展示名]` 或 `实体名称` 定义一个实体  

#### 关系  

使用 `实体1 关系信息 实体2 : 注释文本(可以用双引号包裹,不可空)` 来指定一个关系  

关系信息包含三个部分:
- `实体1` 相对于 `实体2` 的基数(左箭头)  
- 是否赋予 `child` 实体身份(线段)  
-  `实体2` 相对于 `实体1` 的基数(右箭头)  

其中基数可用的有:
反单引号*3已替换防止冲突
|o  和  o|    零或一
||  和  ||    正好一个
}o  和  o{    零个或多个(无上限)
}|  和  |{    1个或多个(无上限)
反单引号*3已替换防止冲突

关系可分为识别性关系或非识别性关系,分别用实线(`--` )或虚线( `..` )表示  

#### 属性  

使用 `实体名称 { 属性 }` 定义实体的属性  
属性由 `属性类型 属性名称 key 注释(双引号包裹)` 构成,其中属性类型和属性名称须以字母开头,可以包含数字、减号、下划线、圆括号和方括号; `key` 可以为 `PK` (主键) 、 `FK` (外键) 或 `UK` (唯一键)  
反单引号*3已替换防止冲突
实体名称 {
    ... 语句 ...
}
反单引号*3已替换防止冲突

#### 示例  

反单引号*3已替换防止冲突 mermaid
---
title: "ER图示例"
---
erDiagram
    t1["猫猫"]
    t2["猫娘"]{
        string name PK "姓名"
        int age "年龄"
    }
    t1 ||--|| t2 : "猫娘也是猫猫"
反单引号*3已替换防止冲突

### 用户行程图  

极其简单:
- `journey` 表示用户行程图  
- `title` 标题,可选  
- `section 阶段名称` 表示一个阶段
- 任务,形如 `mission : score : actor1, actor2`  
    - `mission` 任务名称  
    - `score` 评分,可以为小数,建议取值 `0-5` ,空白表示 `0`  
    - `actor` 参与者,可以有多个

反单引号*3已替换防止冲突 mermaid
journey
    title 昨天的任务完成情况
    section 睡觉
        睡着 : 5 : 我, 我的猫
        做梦 : 4 : 我
    section 醒了
        吃饭 : 2 : 我, 我的猫
        学猫叫 : 3 : 我, 我的猫
        发呆 : 1 : 我
反单引号*3已替换防止冲突

### 饼图  

极其简单:  
- `pie` 表示饼图  
- `showData` 表示在图例之后显示数据值,可选  
- `title` 标题,可选  
- 数据集,形如 `"label" : number`  
    - label 表示一块饼的名称  
    - number 支持最多两位小数  

反单引号*3已替换防止冲突mermaid
pie showData
    title 一天天的都在干什么
    "吃饭喵" : 2.5
    "睡觉喵" : 12
    "发呆喵" : 1.5
    "学猫叫" : 8
反单引号*3已替换防止冲突

### 需求图  

#### 声明  

用 `requirementDiagram` 表示一个需求图  

#### 需求  

需求定义包含需求类型、名称、ID、文本、风险和验证方法。语法如下:  
反单引号*3已替换防止冲突
需求类型 需求名称 {
    id: ID
    text: 文本
    risk: 风险
    verifymethod: 验证方法
}
反单引号*3已替换防止冲突

其中,需求类型包括:  
反单引号*3已替换防止冲突
requirement              需求
functionalRequirement    功能需求
interfaceRequirement     接口需求
performanceRequirement   性能需求
physicalRequirement      物理需求
designConstraint         设计约束
反单引号*3已替换防止冲突

验证方法包括:  
反单引号*3已替换防止冲突
Analysis        分析
Inspection      检验
Test            测试
Demonstration   演示
反单引号*3已替换防止冲突

风险可采用 `Low` 、 `Medium` 、 `High`  

#### 元素  

元素定义包含元素名称、类型和文档引用。语法如下:  
反单引号*3已替换防止冲突
element 元素名称 {
    type: 类型
    docref: 文档引用
}
反单引号*3已替换防止冲突

#### 关系  

关系由源节点、目标节点和关系类型组成。语法如下:  
反单引号*3已替换防止冲突
源节点 -类型-> 目标节点
目标节点 <-类型- 源节点
反单引号*3已替换防止冲突
源节点和目标节点为需求或元素的名称。  
类型可以是包含(contains)、复制(copies)、派生(derives)、满足(satisfies)、验证(verifies)、细化(refines)或跟踪(traces)。

#### 示例  

反单引号*3已替换防止冲突 mermaid
---
title: "需求图示例"  
---
requirementDiagram
requirement "变猫娘" {
    id: "需求1"
    text: "需要变成猫娘"
    risk: high
    verifymethod: demonstration
}
element "变猫猫" {
    type: "元素1"
    docref: "暂无"
}
"变猫娘" -contains-> "变猫猫"
反单引号*3已替换防止冲突

### Git分支可视化图  

#### 声明  

用 `gitGraph` Git分支可视化图  
可以再 `gitGraph` 后添加 `LR`(左到右)、`TB`(从上到下)、 `BT`(自下而上)设置图表方向  

#### 提交 commit

语法:使用 `commit` 创建一个提交,后面可以使用 `参数名: 参数` 来指定参数,其中参数名后紧跟冒号,参数用双引号包裹  
可使用的参数有:  
- 提交ID: `id`  
- 提交类型: `type` 包括NORMAL(默认:实心圆)、REVERSE(反向提交:交叉实心圆)、HIGHLIGHT(高亮:实心矩形)  
- 标签: `tag`  

#### 分支 branch

语法:使用 `branch 分支名称` 创建一个分支并 __置为当前分支__ ,可能与关键字混淆的分支名称需双引号包裹  

#### 检出 checkout

语法:使用 `checkout 分支名称` 检出一个分支  

#### 合并 merge

语法:使用 `merge 分支名称` 将一个分支合并到当前分支,并生成一个合并提交,默认用实心双圆圈表示,可以使用 `commit` 指令的参数修改样式  

#### 从另一分支提交到当前分支 cherry-pick  

语法:使用 `cherry-pick id: 提交ID` 创建一个提交,必须指明提交ID和,另外  
- 指定的提交必须在其他分支  
- 当前分支必须有提交  
- 若指定的提交为合并提交,需使用 `parent: 父级ID` 指定合并提交的直接父级  

#### 其他

__略略略__  

#### 示例  

反单引号*3已替换防止冲突mermaid
---
title: "Git分支图示例"
---
gitGraph
    commit id:"Start" type:HIGHLIGHT tag:"project creat"  
    branch "dev"
    commit id:"0" tag:"变猫猫"  
    branch "bug-fix"  
    commit id:"1" tag:"检查结果"  
    checkout "dev"
    commit id:"2" tag:"变猫娘"  
    merge "bug-fix" id:"3" tag:"成功"  
反单引号*3已替换防止冲突

### 思维导图  

#### 声明  

使用 `mindmap` 声明为思维导图  

使用 `节点名字[节点内容]` 声明节点,其中的 `[]` 代表节点样式,默认为 `[]` 样式  
可使用的节点样式有:  
反单引号*3已替换防止冲突
[]     方形
()     圆角矩形
(())   圆形
))((   爆炸形
)(     云形
{{}}   六边形
反单引号*3已替换防止冲突

使用缩进来辨别不同的层级关系,缩进可以不用很严格,而且思维导图没有标题,如:  
反单引号*3已替换防止冲突 mermaid
mindmap
变猫娘
    1变猫猫
      1.2成精精
        1.3变猫娘
    2参考资料
      没有一点
      也没有两点
反单引号*3已替换防止冲突

### 数据包图(疑似试验)  

极其简单,示例:  
反单引号*3已替换防止冲突 mermaid
---
title: "TCP Packet TCP数据包"
---
packet-beta
0-15: "Source Port 源端口"
16-31: "Destination Port 目标端口"
32-63: "Sequence Number 数据序号"
64-95: "Acknowledgment Number 确认序号ACK"
96-99: "Data Offset 偏移"
100-105: "Reserved 保留"
106: "URG"
107: "ACK"
108: "PSH"
109: "RST"
110: "SYN"
111: "FIN"
112-127: "Window 窗口字段"
128-143: "Checksum 校验和"
144-159: "Urgent Pointer 紧急指针"
160-191: "(Options and Padding) 可选选项 + 8位填充"
192-255: "Data (variable length) 用户数据"
反单引号*3已替换防止冲突
---  
反单引号*3已替换防止冲突 mermaid
packet-beta
title UDP Packet UDP数据包
0-15: "Source Port 源端口"
16-31: "Destination Port 目标端口"
32-47: "Length 长度"
48-63: "Checksum 校验和"
64-95: "Data (variable length) 数据"
反单引号*3已替换防止冲突

## 公式(LaTeX)  

行内公式采用 `$` 包裹显示, 独立显示的公式采用 `$$` 包裹显示  

### 分组  

使用大括号 `{}` 将内容括起来,其将被看做一个整体  

### 上下标  

使用 `^` 表示上标,使用 `_` 表示下标,例如:  

$$ A ^ B _ i $$

### 括号  

小括号与中括号不变,可直接使用  
尖括号使用 `\langle` 和 `\rangle` 表示  
使用 `\lvert` 和 `\rvert` 表示绝对值符号  
使用 `\left括号左` 和 `\right括号右` 可使符号大小与邻近的公式相适应  

### 空格  

公式内会忽略空格,单个空格用反斜杠加空格 `\ ` 表示,四个空格用 `\quad` 表示  

### 数学符号  

#### 矢量  

使用 `\vec` 和 `\overrightarrow` 表示向量,例如:  

$$ \vec a \overrightarrow {XY} $$

#### 求和  

使用 $ \sum _ {下标} ^ {上标} $ 表示  

#### 极限  

使用 $ \lim _ { {变量} \to {值} } $ 表示  

#### 积分  

使用 $ \int _ {下限} ^ {上限} $ 表示  

#### 分式  

使用 $ \frac {分子} {分母} $ 表示  

#### 根式  

使用 $ \sqrt [指数] {被开方数} $ 表示  

#### 其他函数  

如 $ \sin x $ 、 $ \ln x $ 、 $ \max(a,b,c) $ 等  

#### 其他数学符号  

使用 `\` 加名称表示,例如:  
反单引号*3已替换防止冲突
\infty         无穷
\cap           交集
\cup           并集
\subseteq      子集
\supseteq      超集
\subset        真子集
\supset        真超集
\in            属于
\notin         不属于
\varnothing    空集
\exists        存在
\forall        任意
\cdots         横向省略号
\vdots         纵向省略号
\ddots         斜向省略号
反单引号*3已替换防止冲突

### 矩阵  

起始标记 `\begin{样式}` ,结束标记 `\end{样式}`  
每行末尾标记 `\\` ,行间元素之间以 `&` 分隔,例如:  
$$
\begin{matrix}
  A & B & C \\
  D & E & F \\
\end{matrix}
$$

可用的样式有:  
反单引号*3已替换防止冲突
matrix     无样式
pmatrix    小括号边框
bmatrix    中括号边框
Bmatrix    大括号边框
vmatrix    单竖线边框
Vmatrix    双竖线边框
反单引号*3已替换防止冲突

#### 阵列  

起始标记 `\begin{array}{对齐方式}` ,结束标记 `\end{array}`  
对齐方式默认为居中,用 `l` 、 `c` 和 `r` 表示左对齐、居中和右对齐,后跟 `|` 会插入一条竖线  
可用 `\hline` 插入水平线  

#### 方程组  

起始标记 `\begin{cases}` ,结束标记 `\end{cases}` 例如:  
$$
\begin{cases}
    Y = X + 1 \\
    Y = X + 2 \\
\end{cases}
$$


### 希腊字母  

使用 `\` 加字母英文名称表示希腊字母,当名称首字母大写时表示大写字母,在名称前加 `var` 表示斜体字母,例如:  

$$ \alpha \beta \Gamma \varDelta $$  

### 字体  

使用 `\math` 加字体简称设置字体,如 `\mathtt` 例如:  
$$ \mathtt{Y = X} $$  

可用的字体有:  
反单引号*3已替换防止冲突
tt    Typewriter         打字机字体
bb    Blackboard Bold    
sf    Sans Serif         无衬线字体
反单引号*3已替换防止冲突

posted @ 2024-12-03 07:20  public_static_云水  阅读(171)  评论(0)    收藏  举报