前言
Markdown是一种极为简洁的标记语言,使用简洁的语法代替排版,让我们能够专注于文字。Markdown的语法简洁明了、易于学习,而且功能比纯文本强,格式转换方便,能够轻松的导出为HTML、PDF等等格式文件。
Typora是一款免费的轻量级Markdown编辑器,它用创新完全颠覆了这种传统的交互模式,它只使用一个窗口,却能优雅地实现同时将代码编辑与预览「—体化」结合起来!从而为用户带来更加流畅直观的「所见即所得的 Markdown写作体验」。极简的Typora 没有任何多余的功能,纯粹却仍能提供高效自然的写作体验,无论对重度还是轻度用户都是非常理想的工具。
一、基础语法
1.1 分级标题
Typora可以根据当前文档的标题层级,自动生成并显示大纲,窗口的右下角并有字数显示。
写法:
# —级标题 或 快捷键Ctr1+1
## 二级标题 或 快捷键Ctrl+2
### 三级标题 或 快捷键Ctrl+3
#### 四级标题 或 快捷键Ctrl+4
##### 五级标题 或 快捷键Ctrl+5
###### 六级标题 或 快捷键Ctrl+6
1.2 字体格式
文本居中: <center>这是要居中的文本内容</center>
下划线: <u>这是需要下划线的内容</u> 或 快捷键Ctrl+U
斜体: *斜体* 或 _斜体_ 或 快捷键Ctrl+I
粗体: **粗体** 或 快捷键Ctrl+B
加粗粗体: ***加粗粗体***
删除线: ~~删除线~~ 或 快捷键alt+shift+5
显示效果:
下划线: 这是需要下划线的内容
斜体: 斜体
粗体: 粗体
加粗粗体: 加粗粗体
删除线: 删除线
1.3 链接
Markdown支持两种形式的链接语法:行内式和参考式两种形式,行内式一般使用较多。
1.3.1 行内式
语法说明:
[ ] 里写链接文字,( )里写链接地址,( )中的""可以为链接指定 title 屠性,title属性可加可不加。title属性的效果是书表悬停在链接上会出现指定的title文字。快捷键 Ctrl+K
[链接文字](链接地址 "链接标题")这样的形式。链接地址与链接标题前有一个空格
欢迎来到 [百度](https://wWw.baidu.com)
显示效果:
欢迎来到 百度
1.3.2 参考式
参考式超链接一般用在学术论文上面,或者另一种情况:如果一个链接在文章中多处使用,那么使用引用的方式创建链接将方便对链接进行统一的管理。
语法说明:
参考式链接分为两部分,文中的写法[链接文字]
[链接标记]
,在文本的任意位置添加 [链接标记]∶链接地址 "链接标题"
,链接地址和连接标题前有一个空格。
如果链接文字本身可以做为链接标记,也可以写成 [链接文字][]
经常使用的网站有[Google][1]、[csdn][ 2]以及[博客园][3]
[csdn][2]是一个不错的[网站][]
[1]:http:/ /www.google.com "Google"
[2]:https://blog.csdn.net/ "csdin"
[3]:https://www.cnblogs.com/ "博客园"
[网站]:https://blog.csdn.net/
经常使用的网站有Google、csdn以及博客园
csdn 是一个不错的网站
1.3.3 自动链接
语法说明:
Markdown支持以比较简短的自动链接形式来处理网址和电子邮件信箱,只要是用<>
包起来,Markdown就会自动把它转成链接。一般网址的链接文字就和链接地址—样,例如:
自动网页链接: <http://www.baidu.com>
自动邮箱链接: <address@www.baidu.com>
显示效果:
自动网页链接: http://www.baidu.com
自动邮箱链接: address@www.baidu.com
1.4 分隔线
你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
***
---
___
效果显示:
1.5 代码
插入程序代码的方式有两种,一种是利用缩进(Tab),另一种是利用" `` "符号(一般在ESC键下方)包裹代码。
语法说明:
1. 插入行内代码,即插入一个单词或者一句代码的情况,使用 \`code\` 这样的形式插入。
2. 插入多行代码,可以使用“ \`\`\`code\`\`\` ”具体看示例。
注意 : 缩进式插入前方必须有空行
1.5.1 行内式代码
快捷键:Ctrl+Shift+`
如何插入行内式代码:`printf()`?
效果显示:
如何插入行内式代码:printf()
?
1.5.2 多行代码
快捷键:Ctrl+Shift+K
#include<stdio.h>
int main(void)
{
printf("Hello world\n");
}
1.6 引用
语法说明:
多层嵌套:
>这是引用文字
>>这是多重引用文字
>这是一段无法跳出多层嵌套的文字
>>>这是多重引用文字
>这是第一段引用文字
>这是第二段引用文字
效果显示:
多层嵌套:
这是引用文字
这是多重引用文字
这是一段无法跳出多层嵌套的文字这是多重引用文字
这是第一段引用文字
这是第二段引用文字
1.7 列表
1.7.1 无序列表
使用*,+,-,再加一个空格,表示无序列表代码:
* 无序列表项一
+ 无序列表项二
- 无序列表项三
无序列表嵌套有序列表
- 无序列表项一
1. 有序列表项一
2. 有序列表项二
3. 有序列表项三
- 无序列表项二
- 无序列表项
- 无序列表项
显示效果:
- 无序列表项一
- 无序列表项二
- 无序列表项三
无序列表嵌套有序列表
-
无序列表项一
-
有序列表项一
-
有序列表项二
-
有序列表项三
-
-
无序列表项二
- 无序列表项
- 无序列表项
1.7.2 有序列表
有序列表则使用数字接着一个英文句点再加一个空格。
1. 有序列表项一
2. 有序列表项二
3. 有序列表项三
效果显示:
-
有序列表项一
-
有序列表项二
-
有序列表项三
1.7.3 Todo列表
* [x] Java
* [ ] C
* [ ] C++
显示效果:
- Java
- C
- C++
1.8 表格
快捷键:Ctrl + t
或者 |学号|姓名|分数|
之后按回车
学号 | 姓名 | 分数 |
---|---|---|
12 | 小明 | 98 |
18 | 小杰 | 96 |
1.9 插入图像
图片的创建方式与超链接相似,分为行内式和参考式写法。
语法中图片的 Alt 的意思是如果图片因为某些原因不能显示,就用定义的图片Alt文字来代替图片。图片Title表示鼠标悬停于图片上时出现的文字。Alt和Title都不是必须的。
1.9.1 行内式
语法说明: 

显示效果:
1.9.2 参考式
语法说明: 在文档要插入图片的地方写 ![图片Alt][标记]
在文档的最后协商[标记]: 图片地址 “Title”
![美女][girl]
[girl]: https://img-blog.csdnimg.cn/img_convert/fc055b75c5d4ca3161844af3fbd3afb2.png "美女"
显示效果:
1.10 基础语法补充
1.10.1 换行
方法 1:连续两个空格+回车
方法 2:使用html语言换行标签<br>
1.10.2 缩进字符
不断行的空白格 或 
  半角的空白 或 
  全角的空白 或 
显示效果:
不断行的空白格 或
半角的空白 或
全角的空白 或
1.10.3 特殊字符
Markdown中的语法符号,前面加反斜线 \
即可显示符号本身。
\\ 反斜线
\` 反引号
\* 星号
\_ 底线
\{\} 花括号
\[\] 方括号
\(\) 括弧
\# 井号
\+ 加号
\- 减号
\. 英语句点
\! 感叹号
其他特殊字符,更多字符对应的Unicode码,参考网站 https://unicode-table.com/cn/
💙 💘
显示效果:
💙 💘
1.10.4 生成自动目录
@[toc]
显示效果:见上面目录
二、高级用法
2.1 LaTex公式
质能守恒方程可以用一个简洁的方程式表示: $$E=mc^2$$
显示效果
质能守恒方程可以用一个简洁的方程式表示: E = m c 2 E=mc^2 E=mc2
更多公式使用方式参考 mathjax
2.2 流程图
详情请参考 mermaid
2.2.1 横向流程图源码格式
```mermaid
graph LR
A[方形] -->B(圆角)
B --> C{条件a}
C -->|a=1| D[结果1]
C -->|a=2| E[结果2]
F[横向流程图]
```
效果显示:
2.2.2 竖向流程图源码格式
```mermaid
graph TD
A[方形] --> B(圆角)
B --> C{条件a}
C --> |a=1| D[结果1]
C --> |a=2| E[结果2]
F[竖向流程图]
```
2.2.3 标准流程图源码格式
```mermaid
flowchat
st=>start: 开始框
op=>operation: 处理框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 结束框
st->op->cond
cond(yes)->io->e
cond(no)->sub1(right)->op
```
2.2.4 标准流程图源码格式(横向)
```mermaid
flowchat
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
```
2.3 时序图
详情请参考 mermaid
2.3.1 UML时序图源码样例
```mermaid
sequenceDiagram
对象A->>对象B: 对象B你好吗?(请求)
Note right of 对象B: 对象B的描述
Note left of 对象A: 对象A的描述(提示)
对象B-->>对象A: 我很好(响应)
对象A->>对象B: 你真的好吗?
```
2.3.2 UML时序图源码复杂样例
```mermaid
sequenceDiagram
Title: 标题:复杂使用
对象A->>对象B: 对象B你好吗?(请求)
Note right of 对象B: 对象B的描述
Note left of 对象A: 对象A的描述(提示)
对象B-->>对象A: 我很好(响应)
对象B->>小三: 你好吗
小三-->>对象A: 对象B找我了
对象A->>对象B: 你真的好吗?
Note over 小三,对象B: 我们是朋友
participant C
Note right of C: 没人陪我玩
```
2.3.3 UML标准时序图样
```mermaid
%% 时序图例子,-> 直线,-->虚线,->>实线箭头
sequenceDiagram
participant 张三
participant 李四
张三->王五: 王五你好吗?
loop 健康检查
王五->王五: 与疾病战斗
end
Note right of 王五: 合理 食物 <br/>看医生...
李四-->>张三: 很好!
王五->李四: 你怎么样?
李四-->王五: 很好!
```
2.4 甘特图
详情请参考 mermaid
```mermaid
%% 语法示例
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
```
%% 语法示例
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
2.5 锚点
创建到命名锚记的链接的过程分为两步:
首先是建立一个跳转的连接:[说明文字](#jump)
然后标记要跳转到什么位置,注意id要与之前(#)中的内容相同:
<span id = "jump">跳转位置</span>
显示效果:
跳转到前言
2.6 注脚
语法说明:
在需要添加注脚的文字后加上脚注名字 [^注脚名字]
,称为加注。然后在文本的任意位置(一般在最后)添加脚注,脚注前必须有对应的脚注名字。
注意:经测试注脚与注脚之间必须空一行,不然会失效。成功后会发现,即使你没有把注脚写在文末,经Markdown转换后,也会自动归类到文章的最后。
使用Markdown[^1]可以效率的书写文档,直接转换成HTML[^2]
[^1]:Markdiown是—种纯文本标记语言
[^2 ] : HyperText Markup Language超文本标记语言显示效果
显示效果:
使用Markdown1可以效率的书写文档,直接转换成HTML2
2.7 HTML 应用
2.7.1 HTML代码显示效果
在代码区块里面,&、<和>会自动转成HTML实体,这样的方式让你非常容易使用Markdown 插入范例用的 HTML 原始码,只需要复制贴上,剩下的Markdown都会帮你处理,例如:
<table border="1">
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
显示效果:
Header 1 | Header 2 |
---|---|
row 1, cell 1 | row 1, cell 2 |
row 2, cell 1 | row 2, cell 2 |
2.7.2 HTML代码设置宁体、字号与颜色
使用内嵌HTML的方法,使普通文本内容具有一定的格式。
<font face ="黑体">我是黑体字</font>
<font face="微软雅黑">我是微软雅黑</font>
<font color="#0099ff" size=7 face="黑体">html代码</font>
<table><tr><td bgcolor=orange>背景色是: orange</td></tr></table>
显示效果:
我是黑体字
我是微软雅黑
html代码
显示效果:
Header 1 | Header 2 |
---|---|
row 1, cell 1 | row 1, cell 2 |
row 2, cell 1 | row 2, cell 2 |
<section class="footnotes"> </section>