Markdown 简介
- 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。
- 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档。
- 编写的文档后缀为
.md
,.markdown
。
编辑器
Typora编辑器支持 MacOS 、Windows、Linux 平台,且包含多种主题,编辑后直接渲染出效果。支持导出HTML、PDF、Word、图片等多种类型文件。
Markdown 标题
Markdown 标题有两种格式。
- 使用
=
和-
标记一级和二级标题
一级标题
=
二级标题
-
一级标题
二级标题
=
和 -
写几个的效果都是一样的,但是为了美观,他们的长度通常和标题长度保持一致
一级标题
=======
<------标题和上下文之间要有一行空行 否则正文字体会有影响
二级标题
-------
一级标题
二级标题
- 使用
#
号标记
#
号表示标题,标题的等级与#
号个数一致
注意
#
的后面要加上一个空格
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
字体效果
- 普通段落
markdown没有特殊的段落格式,直接编辑文本就可以。段落的换行使用两个以上的空格
+回车
,或者使用两次回车
来制造一个空行。 - 斜体
斜体使用两个*
分别放在句子两侧,*
和斜体字之间不可以加空格
也可以使用_
代替
*这是一个斜体例句*
_this is an example in italics _
这是一个斜体例句
_this is an example in italics _
- 粗体
和斜体类似, 粗体使用的是两个*
或_
**这是一个粗体例句**
__this is an examples in bold__
这是一个粗体例句
this is an examples in bold
- 粗斜体就是把斜体和粗体结合在一起,使用三个
*
或_
***这是一个粗斜体例句***
___this is a example in bold italics___
这是一个粗斜体例句
this is a example in bold italics
- 分割线
可以在一行中,使用三个或以上的*
或-
或_
,行内不能有其他的字符,但*
、-
或_
之间可以加空格。也可以使用HTML的标签。
***
* * *
------
- - -
_ _ _
______
<hr>
6. 删除线 想要使用删除线,只要在文字两端加上 `~~` 就可以了 ``` ~~这是一个删除线例句~~ ```
这是一个删除线例句
- 下划线
下划线可以通过 HTML 的 标签来实现
<u>这是一条下划线例子</u>
这是一条下划线例子
- 脚注
脚注可以对文本进行及时的补充说明,格式为:[^要注明的文本]
脚注是对文本的一种补充说明[^注1]。点击右上角的1 可以跳转到脚注位置
[^注1]: 这是一个脚注例子
脚注是对文本的一种补充说明1。点击右上角的1 可以跳转到脚注位置
- 角标
和删除线很像,小字体的角标可以在文字两端加上~
小字体很适合用于下角标书写:H~2~O
小字体很适合用于下角标书写:H2O
- 字体颜色
实际上markdown本身并没有字体颜色的设置 但是我们可以利用HTML标签来设置字体颜色
格式:<font color=#色号码>想要修改颜色的字</font>
例如:
<font color=#ff0000>红色</font> <font color=#0000ff>蓝色</font>
<font color=#ffff00>黄色</font> <font color=#00ff00>绿色</font>
红色 蓝色 黄色 绿色
这里附上一张RGB颜色对照表
列表
有序列表
有序列表使用带 .
号的数字序号进行管理,序号后有空格
1. 这是有序列表的例子
2. 这是有序列表的例子
3. 这是有序列表的例子
1. 这是有序列表的例子
2. 这是有序列表的例子
3. 这是有序列表的例子
有序列表的序号是固定递增的, 与编辑时的数字内容无关
1. 这同样是有序列表
1. 这同样是有序列表
1. 这同样是有序列表
1. 这同样是有序列表
无序列表
无序列表使用 *
、 +
或是 -
作为列表标记,同样要添加空格
* 这是无序列表的例子
* 这是无序列表的例子
* 这是无序列表的例子
- 这是无序列表的例子
- 这是无序列表的例子
- 这是无序列表的例子
无序列表的子项可以添加四个 空格
进行标示
* 这是无序列表
* 这是无序列表的子项
+ 这是无序列表的子项
- 这是无序列表的子项
+ 这是无序列表
- 这是无序列表
- 这是无序列表
- 这是无序列表的子项
- 这是无序列表的子项
- 这是无序列表的子项
- 这是无序列表
- 这是无序列表
有序列表和无序列表也可以进行嵌套
* 这是无序列表
1. 这是有序子列表
2. 这是有序子列表
* 这是无序列表
- 这是无序列表
1. 这是有序子列表
2. 这是有序子列表 - 这是无序列表
无序列表可以嵌套有序列表,有序列表嵌套无序时,无序列表会变成有序,且子队列的序号顺序根据无序符号进行区分的
1. 这是有序列表
* 这是无序子列表
* 这是无序子列表
+ 这是无序子列表
+ 这是无序子列表
- 这是无序子列表
2. 这是有序列表
3. 这是有序列表
- 这是有序列表
- 这是无序子列表
- 这是无序子列表
- 这是无序子列表
- 这是无序子列表
- 这是无序子列表
- 这是有序列表
- 这是有序列表
区块
markdown的区块使用 >
进行标示,可以加空格也可以不加
> 这是区块示例
> 这是区块示例
这是区块示例
这是区块示例
区块之间可以进行嵌套,相同数量的 >
代表一个层级,减少嵌套层数时要添加区块内的空行进行区块区分,增加嵌套层数时没有影响
>这是区块1
>>这是区块2
>>这是区块2
>>
>>>这是区块3
>这是区块1吗?
>
>这是区块1
>>>这是区块3
>
>>这是不连续的区块2
>>>这是区块3
>>
>>这是区块2
这是区块1
这是区块2
这是区块2这是区块3
这是区块1吗?这是区块1
这是区块3
这是不连续的区块2
这是区块3
这是区块2
区块里还可以使用其他大部分标识,比如列表、分割线、等
> 1. 区块内的有序列表
> 2. 区块内的有序列表
> * 区块内的无序列表
> * 区块内的无序列表
>
> ---
>
> ==注意==
> 区块内的分割线的上一行应是区块内空行
>
> ---
> 区块内对字体的操作:**加粗** 、 *斜体* 、 ***粗斜体*** 、 ~~删除线~~ 、 ~下角标~ 、<u>下划线</u>等
- 区块内的有序列表
- 区块内的有序列表
- 区块内的无序列表
- 区块内的无序列表
注意
区块内的分割线的上一行应是区块内空行
区块内对字体的操作:加粗 、 斜体 、 粗斜体 、
删除线、 下角标 、下划线等
在列表中也可以使用区块,也是同样的道理, 要添加缩进区分层级
- 这是无序列表
> 这是列表的区块
> 这不是列表的区块
- 这是无序列表
这是列表的区块
这不是列表的区块
代码
使用 `
可以把代码片段包裹起来
`printf()`函数是c语言的一个输出函数
使用三个 `
可以包括一整段代码,后面可以指定语言类型
```cpp
#include <iostream>
int main(int argc,char **argv)
{
std::cout << "Hello World!" << std::endl;
}
```
#include <iostream>
int main(int argc,char **argv)
{
std::cout << "Hello World!" << std::endl;
}
也可以不指定
```
#include <iostream>
int main(int argc,char **argv)
{
std::cout << "Hello World!" << std::endl;
}
```
#include <iostream>
int main(int argc,char **argv)
{
std::cout << "Hello World!" << std::endl;
}
也可以使用4个空格或制表符 Tab
键,有时候可以达到相同的作用
链接
markdown中也可以引入外部链接,格式如下:
[链接名称](链接地址)
或者<链接地址>
例如:[菜鸟教程](https://www.runoob.com)是一个很好用的小白学习网站
我也是在这里学习markdown的:<https://www.runoob.com>
例如:菜鸟教程是一个很好用的小白学习网站
我也是在这里学习markdown的:https://www.runoob.com
我们也可以通过变量来设置一个高级链接,变量赋值可以在文档末尾进行
菜鸟教程的网址如下,这里用1来作为网址变量:[菜鸟教程][1]
这里是google的网址,用google作为网址变量:[Google][google]
菜鸟教程的网址如下,这里用1来作为网址变量:菜鸟教程
这里是google的网址,用google作为网址变量:Google
图片
图片的格式如下:
![alt 属性文本](图片地址)
![alt 属性文本](图片地址 "可选标题")
开头有一个感叹号 !
,后面紧跟着的 []
可以写入图片的替代文字,最后是一个 ()
写入图片的路径,以及可以选择性的添加title属性的文字
这是我在网上随便找的一张图片:
![举个栗子](https://img-blog.csdnimg.cn/20210101153122203.png)
也可以像网址一样使用变量:
![举个栗子][picturetest]
【注】markdown还不能指定图片的宽高 我们可以使用HTML的<img>
标签来指定宽高
表格
使用 |
区分不同单元格,-
用来区分表头和其他行 表的前面不要有空格或缩进
| 表头 | 表头 |
| --- | --- |
| 内容 | 内容 |
表头 | 表头 |
---|---|
内容 | 内容 |
实际上 -
的数量没有特殊要求,只写一个也是可以生成表格的,文字旁边的空格也是因人而异,最两侧的 |
同样没有要求
|表头|表头|
|-|-|
|内容|内容|
|内容|内容|
表头 | 表头 |
---|---|
内容 | 内容 |
内容 | 内容 |
我们可以对表格的对齐方式加以指定,默认的对齐方式就是居中:
左对齐|居中|右对齐
:-|:-:|-:
单元格|单元格|单元格
左对齐 | 居中 | 右对齐 |
---|---|---|
单元格 | 单元格 | 单元格 |
其他方面
想必大家已经多多少少注意到了,markdown是支持一些HTML的,不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 完成。
关于目录
markdown也是可以生成目录的,目录中使用链接可以让读者在几个文章中跳转。目录也可以实现页面内跳转,这样可以精准的跳转到某一部分知识点去查看,非常方便。当然像CSDN这类markdown平台会自动生成目录,但是这里要说的是手动生成的目录。(这里暂时不讨论使用HTML标签的方法)
基本的语法是这样的:[这里是要显示的内容](#这里是实际标题的id)
关于这个id的格式,有很多人说过,比如:"标题题号如果包含.
、_
直接忽略掉,标题文本中如果有空格,使用-
横杠符号替代,标题文本中的大写字母转换成小写"之类的,但是个人觉得最稳妥的方式,就是把你的markdown导出成html格式,然后再打开这个html网页右击鼠标获取网页的源码,就可以看到每个标题后面的真实id了,把这个id粘贴到#
后面就可以了。
以CSDN的博客为例:
保存到桌面,能看到生成了一个网页
打开这个网页 右击鼠标 找到网页源码
这里可以看到标题的名字以及它的id,如果觉得找起来很麻烦,可以使用Ctrl+F
输入id进行查找
当然,只要在你想要生成标题的位置写上@[toc]
,且@[toc]
要在单独的一行上,就可以根据h1~h6的标题级别自动生成目录树了。
但是显然,我这篇文章并不适合这样生成目录(有奇奇怪怪的东西混进去了,这是个反面例子)
@[toc]
(其实直接写[toc]也是一样的效果
文章目录
这里是高级网址的变量赋值,在哪里写都可以
(第一条网址上面要有空行,前面不要有缩进。真正的赋值网址是隐藏的)
网址:
[1]: http://www.runoob.com/
[google]: http://www.google.com/
图片:
[picturetest]:https://img-blog.csdnimg.cn/20210101153122203.png
这是一个脚注例子 ↩︎