Markdown语法基础
现在很多的平台都支持使用markdown语法,包括在写hexo博客的时候,文件也是markdown格式(.md)。还有CSDN、石墨文档、Github的README文件、什么印象笔记有道笔记等等都可以使用这个语言。
可以写书、写幻灯片、写邮件、写日记、写便签、记笔记、写博客,让你专注于敲键盘搞内容,顺便用键盘搞定排版和图片啥的。Markdown就被理所当然地称为了“写作语言”。总之很爽。
我是在使用石墨文档的时候第一次接触到这个语法,第一感觉是:真麻烦啊,跟学写代码一样。现在就被打脸了:什么,不能用markdown做笔记?!我还是换一个软件吧😒。
md看起来麻烦,实际掌握十分简单,因为常用的需要的语法就那几个,熟练之后没什么感觉了,完全不用担心。
本文直接开始介绍基本语法。
先推荐一个学习markdown的超详尽书《了不起的markdown》毕小鹏著。这本书对md语言进行了非常详尽的介绍,甚至根据使用平台推荐了不同的编辑器,如何配置这些编辑器。甚至有博客Hexo的搭建方法。看了本文还想深入学高级技巧的可以看看这本书。
不过就我日常使用而言,我下面介绍的语法应该足以应付90%的文字写作情况了。
我个人喜欢在石墨文档写东西,最棒的就是全平台,手机写了电脑、平板立刻同步,很方便。md的适配做得还不错,要有的都有,而且随时在更新自己的功能,现在甚至有了思维导图的功能(还在优化,值得期待),甚至可以多人编辑文档。免费版够用,一下即用,我很喜欢。
一、写作必备语法
1.1 标题
一般可以设置六级标题,使用#
与空格
+ 题目
1 | # 一级标题 |
效果:

1.2 引用
使用>
+内容
1 | > 这是引用 |
效果:
这是引用
这是引用的引用
这是三层
1.3 列表
都是可以相互嵌套的。我懒得写了
(1)有序列表
1 | 1. aaaa |
- aaaa
- bbb
- ccc
(2)无序列表
1 | - aa |
- aa
- bb
- cc
(3)todo list
1 | - [x] 第一件事情 |
- [x] 第一件事情
- [x] 第二件事情
- [ ] 第三件事情
- [ ] 第四件事情
1.4 代码块
英文的三个反引号```,在一行内就是段内嵌入,提行则是代码块。头部的单引号最后加入编程语言的名字,可以根据语言高亮。
这个单引号,在键盘数字1
的左边,记得是英文的。
C语言
1 | int main(){ |
Python
1 | a = 13 |
1.5 数学公式
用四个美元符号包裹内容,是latex的数学公式,在网上可以查到。
看了教程还不知道怎么手写的话,可以先用在线编译器,图像选择需要的公式,再生成latex公式。这里给一个latex在线编译器吧
1 | \frac{\partial f}{\partial x} = a\sqrt{a}x |
$$
\frac{\partial f}{\partial x} = a\sqrt{a}x
$$
1.6 表格
姓名(左对齐) | 年龄(右对齐) | 成绩(居中) |
---|---|---|
周大猛 | 22 | 80 |
周不猛 | 10 | 75 |
1.7 脚注
就像是论文的参考文献,给上标1、2、3,然后可以在文章末尾查到对应的参考文献那样。
首先在正文需要脚注的地方:
1 | 这个内容参考了很多资料[^视频资料] |
在文章末尾:
1 | [^视频资料]:https://www.bilibili.com/video/BV1JA411h7Gw/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=69a3eecb8fce5149ffe1597cbbfc9364 |
效果:
这个内容参考了很多资料[1]
1.8 分割线
使用三根短横线,就是减号那个短横线。---
就是这样↑↓
另外,上面说到的脚注,是会自动生成一个分割线以区分正文和脚注的。
1.9 链接
(1)简单链接
1 | [百度了你一也不一定知道](baidu.com) |
添加提示
1 | [百度了你一也不一定知道](baidu.com "提示") |
鼠标悬停查看效果
(2)引用链接
文章多次使用同一个链接
1 | 我有一个引擎,叫做[百度][baidu],可以用[百度][baidu]来搜索很多的东西,我很喜欢[百度][baidu]。 |
我有一个引擎,叫做百度,可以用百度来搜索很多的东西,我很喜欢百度。
(3)页面内跳转
1 | 我要去[表格](###6.表格) |
我要去6.表格
似乎不行😰
(4)带协议的url
前面带有http或者https的url,会被自动识别为超链接。
https://www.baidu.com/
1.10 字体
1 | *斜体文本* |
斜体文本
斜体文本
粗体文本
粗体文本
粗斜体文本
粗斜体文本
文字高亮
😄
H2O
x2
这里的表情是使用的shortcodes,没搜到官网呢,但是csdn上有人总结了。Emoji
1.11 嵌入视频
如:b站播放器,在分享那里选择嵌入代码,粘贴html格式的播放器代码
1.12 嵌入图片
1 |  |
1.13 很高级的功能
这些的语法还挺复杂,这写都是用语法写出来的,不是图片。
直接搬运了菜鸟教程高级部分的评论区。
1 | $$ |
转换图一样的东西
$$
\begin{Bmatrix}
a & b \
c & d
\end{Bmatrix}
$$
$$
\begin{CD}
A @>a>> B \
@VbVV @AAcA \
C @= D
\end{CD}
$$
流程图一样的东西
1 | 三个代码点 mermaid |
graph LR A[方形] -->B(圆角) B --> C{条件a} C -->|a=1| D[结果1] C -->|a=2| E[结果2] F[横向流程图]
1、横向流程图源码格式:
graph LR A[方形] -->B(圆角) B --> C{条件a} C -->|a=1| D[结果1] C -->|a=2| E[结果2] F[横向流程图]
2、竖向流程图源码格式:
把meraid放在代码框的代码语言那里
graph TD A[方形] --> B(圆角) B --> C{条件a} C --> |a=1| D[结果1] C --> |a=2| E[结果2] F[竖向流程图]
graph TD
A[方形] --> B(圆角)
B --> C{条件a}
C --> |a=1| D[结果1]
C --> |a=2| E[结果2]
F[竖向流程图]
3、标准流程图源码格式:
flow st=>start: 开始框 op=>operation: 处理框 cond=>condition: 判断框(是或否?) sub1=>subroutine: 子流程 io=>inputoutput: 输入输出框 e=>end: 结束框 st->op->cond cond(yes)->io->e cond(no)->sub1(right)->op
st=>start: 开始框
op=>operation: 处理框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 结束框
st->op->cond
cond(yes)->io->e
cond(no)->sub1(right)->op
4、标准流程图源码格式(横向):
flow 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
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
5、UML时序图源码样例:
sequence 对象A->对象B: 对象B你好吗?(请求) Note right of 对象B: 对象B的描述 Note left of 对象A: 对象A的描述(提示) 对象B-->对象A: 我很好(响应) 对象A->对象B: 你真的好吗?
对象A->对象B: 对象B你好吗?(请求)
Note right of 对象B: 对象B的描述
Note left of 对象A: 对象A的描述(提示)
对象B–>对象A: 我很好(响应)
对象A->对象B: 你真的好吗?
6、UML时序图源码复杂样例:
sequence 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: 没人陪我玩
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: 没人陪我玩
7、UML标准时序图样例:
%% 时序图例子,-> 直线,-->虚线,->>实线箭头 sequenceDiagram participant 张三 participant 李四 张三->王五: 王五你好吗? loop 健康检查 王五->王五: 与疾病战斗 end Note right of 王五: 合理 食物
看医生... 李四-->>张三: 很好! 王五->李四: 你怎么样? 李四-->王五: 很好!
%% 时序图例子,-> 直线,–>虚线,->>实线箭头
sequenceDiagram
participant 张三
participant 李四
张三->王五: 王五你好吗?
loop 健康检查
王五->王五: 与疾病战斗
end
Note right of 王五: 合理 食物
看医生…
李四–>>张三: 很好!
王五->李四: 你怎么样?
李四–>王五: 很好!
1.14 正常显示那些符号
比如星号(被用来加粗了) ,可以使用转义字符反斜杠来正常输出*
1 | \* |
graph TD A[起点] --> B{问题?} B -->|是| C[解决] B -->|否| D[放弃]