Markdown语法基础

现在很多的平台都支持使用markdown语法,包括在写hexo博客的时候,文件也是markdown格式(.md)。还有CSDN、石墨文档、Github的README文件、什么印象笔记有道笔记等等都可以使用这个语言。

可以写书、写幻灯片、写邮件、写日记、写便签、记笔记、写博客,让你专注于敲键盘搞内容,顺便用键盘搞定排版和图片啥的。Markdown就被理所当然地称为了“写作语言”。总之很爽。

我是在使用石墨文档的时候第一次接触到这个语法,第一感觉是:真麻烦啊,跟学写代码一样。现在就被打脸了:什么,不能用markdown做笔记?!我还是换一个软件吧😒。

md看起来麻烦,实际掌握十分简单,因为常用的需要的语法就那几个,熟练之后没什么感觉了,完全不用担心。

本文直接开始介绍基本语法。

先推荐一个学习markdown的超详尽书《了不起的markdown》毕小鹏著。这本书对md语言进行了非常详尽的介绍,甚至根据使用平台推荐了不同的编辑器,如何配置这些编辑器。甚至有博客Hexo的搭建方法。看了本文还想深入学高级技巧的可以看看这本书。
不过就我日常使用而言,我下面介绍的语法应该足以应付90%的文字写作情况了。
我个人喜欢在石墨文档写东西,最棒的就是全平台,手机写了电脑、平板立刻同步,很方便。md的适配做得还不错,要有的都有,而且随时在更新自己的功能,现在甚至有了思维导图的功能(还在优化,值得期待),甚至可以多人编辑文档。免费版够用,一下即用,我很喜欢。

一、写作必备语法

1.1 标题

一般可以设置六级标题,使用#空格 + 题目

1
2
3
4
# 一级标题
## 二级标题
### 三级标题
……

效果:

1.2 引用

使用>+内容

1
2
3
> 这是引用
> > 这是引用的引用
> > > 这是三层

效果:

这是引用

这是引用的引用

这是三层

1.3 列表

都是可以相互嵌套的。我懒得写了

(1)有序列表

1
2
3
1. aaaa
2. bbb
3. ccc
  1. aaaa
  2. bbb
  3. ccc

(2)无序列表

1
2
3
- aa
- bb
- cc
  • aa
  • bb
  • cc

(3)todo list

1
2
3
4
- [x] 第一件事情
- [x] 第二件事情
- [ ] 第三件事情
- [ ] 第四件事情
  • [x] 第一件事情
  • [x] 第二件事情
  • [ ] 第三件事情
  • [ ] 第四件事情

1.4 代码块

英文的三个反引号```,在一行内就是段内嵌入,提行则是代码块。头部的单引号最后加入编程语言的名字,可以根据语言高亮。
这个单引号,在键盘数字1的左边,记得是英文的。

C语言

1
2
3
4
5
6
int main(){
int a = 14;
char c = 'a';
printf("Hello World!");

}

Python

1
2
3
4
5
6
7
8
9
a = 13
s = "Hello"
print(str(a) + s)

def print_num(a):
for i in range(a):
print(i)

return

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
2
3
我有一个引擎,叫做[百度][baidu],可以用[百度][baidu]来搜索很多的东西,我很喜欢[百度][baidu]。

[baidu]:https://www.baidu.com/

我有一个引擎,叫做百度,可以用百度来搜索很多的东西,我很喜欢百度

(3)页面内跳转

1
我要去[表格](###6.表格)

我要去6.表格

似乎不行😰

(4)带协议的url

前面带有http或者https的url,会被自动识别为超链接。
https://www.baidu.com/

1.10 字体

1
2
3
4
5
6
7
8
9
10
11
12
*斜体文本*
_斜体文本_
**粗体文本**
__粗体文本__
***粗斜体文本***
___粗斜体文本___

==文字高亮==

:smile:
H~2~O
x^2^

斜体文本
斜体文本
粗体文本
粗体文本
粗斜体文本
粗斜体文本

文字高亮

😄
H2O
x2

这里的表情是使用的shortcodes,没搜到官网呢,但是csdn上有人总结了。Emoji

1.11 嵌入视频

如:b站播放器,在分享那里选择嵌入代码,粘贴html格式的播放器代码

1.12 嵌入图片

1
![百度首页](图片路径 "This is a picutre")

1.13 很高级的功能

这些的语法还挺复杂,这写都是用语法写出来的,不是图片。

直接搬运了菜鸟教程高级部分的评论区

1
2
3
4
5
6
7
8
9
10
11
12
13
$$
\begin{Bmatrix}
a & b \\
c & d
\end{Bmatrix}
$$
$$
\begin{CD}
A @>a>> B \\
@VbVV @AAcA \\
C @= D
\end{CD}
$$

转换图一样的东西

$$
\begin{Bmatrix}
a & b \
c & d
\end{Bmatrix}
$$
$$
\begin{CD}
A @>a>> B \
@VbVV @AAcA \
C @= D
\end{CD}
$$

流程图一样的东西

1
2
3
4
5
6
7
三个代码点 mermaid
graph LR
A[方形] -->B(圆角)
B --> C{条件a}
C -->|a=1| D[结果1]
C -->|a=2| E[结果2]
F[横向流程图]
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[放弃]

  1. https://www.bilibili.com/video/BV1JA411h7Gw/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=69a3eecb8fce5149ffe1597cbbfc9364 ↩︎

作者

Zhou

发布于

2023-04-18

更新于

2025-05-14

许可协议

评论

+ + +