Markdown 语法学习笔记
Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。[4]这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。
由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,当前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge等。甚至Markdown能被使用来撰写电子书。
1 基础语法
1.1 分级标题
语法说明:
- 在想要设置为标题的文字前面加
#
来表示 - 一个
#
是一级标题,二个#
是二级标题,以此类推。支持六级标题。 - 标准语法一般在
#
后跟个空格再写文字
# H1 一级标题
## H2 二级标题
### H3 三级标题
#### H4 四级标题
##### H5 五级标题
###### H6 六级标题
显示效果如下:
1.2 文本样式
语法说明:
- 加粗:要加粗的文字左右分别用两个
*
号包起来 - 斜体:要倾斜的文字左右分别用一个
*
号包起来(或用下划线_
包裹) - 斜体加粗:要倾斜和加粗的文字左右分别用三个
*
号包起来 - 删除线:要加删除线的文字左右分别用两个
~~
号包起来
~~这里是删除线~~
**字体加粗**
*字体倾斜*
_字体倾斜_
***倾斜加粗***
显示效果如下:
1.3 列表
语法说明:
- 无序列表:用
-
、+
、*
任何一种都可以,和内容之间都要有一个空格
- 有序列表:数字后加
.
,序号跟内容之间要有空格
- 列表嵌套:上一级和下一级之间敲
三个空格
即可
1. 一级有序列表
* 二级无序列表
* 二级无序列表
1. 三级有序列表
2. 三级有序列表
- 四级无序列表
- 四级无序列表
* 无序列表
2. 一级有序列表
3. 一级有序列表
显示效果如下:
1.4 插入 链接/图片
Markdown 支持两种形式的链接语法: Inline-style
(行内式)和Reference-style
(参考式)两种形式,行内式一般使用较多。
1.4.1 行内式
语法说明:
[ ]
里写链接文字,( )
里写链接地址,( )
中的" "
中可以为链接指定title
属性,title
属性可加可不加。title
属性的效果,是鼠标悬停在链接上会出现指定的title
文字。- 链接地址与链接标题前有一个空格。
欢迎访问[&娴敲棋子&'s Blog](https://HGzhao.github.io/)
欢迎访问[&娴敲棋子&'s Blog](https://HGzhao.github.io/ "&娴敲棋子&'s Blog")
显示效果如下:
欢迎访问&娴敲棋子&’s Blog
欢迎访问&娴敲棋子&’s Blog
1.4.2 参考式
参考式超链接一般用在学术论文上面,或者另一种情况,如果某一个链接在文章中多处使用,那么使用引用 的方式创建链接将非常好,它可以让你对链接进行统一的管理。
语法说明:
- 参考式链接分为两部分,文中的写法 [链接文字][链接标记],在文本的任意位置添加[链接标记]:链接地址 “链接标题”,链接地址与链接标题前有一个空格。
- 如果链接文字本身可以做为链接标记,你也可以写成[链接文字][] [链接文字]:链接地址的形式,见代码的最后一行。
网站推荐[Github][1]、[&娴敲棋子&'s Blog][2]、[&娴敲棋子&'s Blog][]。
[1]:https://github.com/
[2]:https://HGzhao.github.io/ "&娴敲棋子&'s Blog"
[&娴敲棋子&'s Blog]:https://HGzhao.github.io/
显示效果如下:
网站推荐Github、&娴敲棋子&’s Blog、&娴敲棋子&’s Blog。
1.4.3 自动链接
语法说明:
Markdown 支持以比较简短的自动链接形式来处理网址和电子邮件信箱,只要是用<>包起来, Markdown 就会自动把它转成链接。一般网址的链接文字就和链接地址一样,例如:
<http://example.com/>
<address@example.com>
显示效果如下:
http://example.com/
address@example.com
1.4.4 插入图片
图片的创建方式与超链接相似,而且和超链接一样也有两种写法,行内式和参考式写法。
语法中图片Alt的意思是如果图片因为某些原因不能显示,就用定义的图片Alt文字来代替图片。 图片Title则和链接中的Title一样,表示鼠标悬停与图片上时出现的文字。 Alt 和 Title 都不是必须的,可以省略,但建议写上。
![图片alt](图片地址 ''图片title'')
图片alt就是显示在图片下面的文字,相当于对图片内容的解释。
图片title是图片的标题,当鼠标移到图片上时显示的内容。title可加可不加
Inline-style:
![alt text](https://d233eq3e3p3cv0.cloudfront.net/fit/c/256/256/0*njGaeIRG6IiQJqNX.jpeg “Logo Title Text 1")
Reference-style:
![alt text][logo]
[logo]: https://d233eq3e3p3cv0.cloudfront.net/fit/c/256/256/0*njGaeIRG6IiQJqNX.jpeg “Logo Title Text 2"
1.5 代码块和语法高亮
Blocks of code are either fenced by lines with three back-ticks ```, or are indented with four spaces. I recommend only using the fenced code blocks — they’re easier and only they support syntax highlighting.
语法说明:
显示效果如下:
javascript
var s = “JavaScript syntax highlighting”;
alert(s);
python
s = “Python syntax highlighting”
print(s)
HTML
<table><tr><td bgcolor=orange>背景色是:orange</td></tr></table>
不指定语言
No language indicated, so no syntax highlighting.
But let’s throw in a <b>tag</b>.
1.6 表格
语法说明:
| 左对齐标题 | 右对齐标题 | 居中对齐标题 |
| :------| ------: | :------: |
| 短文本 | 中等文本 | 稍微长一点的文本 |
| 稍微长一点的文本 | 短文本 | 中等文本 |
*字体倾斜* | `语法高亮` | **字体加粗**
-- | -- | --
1 | 2 | 3
- 第二行用于分割表头和内容。
-
有一个就行,为了对齐,多加了几个:---
表示所在列的内容居左
对齐:--:
表示所在列的内容居中
对齐---:
表示所在列的内容居右
对齐
- 此外,最外侧的管道符可以省略。
显示效果如下: (第一个表格)
1.7 引用
语法说明:
- 在引用的文字前加
>
即可。 - 引用也可以嵌套,如加两个
>>
,三个>>>
,n个…这可以一直加下去。
> 这是引用的内容
>> 这是引用的内容
>>>>>>>> 这是引用的内容
显示效果如下:
或是如下这种显示方式:
这是第一级引用的内容
这是第二级引用的内容
这是第八级引用的内容
1.8 分割线
语法说明:
- 三个或者三个以上的
-
或者*
即可作出分割线。
---
----
***
****
显示效果如下:(此处仅拿其中一种写法做为展示)
2 进阶技巧
2.1 缩进
语法说明:
- 不断行的空白格
- 半角的空格
- 全角的空格
2.2 换行
语法说明:
- 方法1: 连续两个以上空格+回车
- 方法2:使用html语言换行标签:
<br>
2.3 链接的高级技巧
2.3.1 注脚
语法说明:
- 在需要添加注脚的文字后加上脚注名字[^注脚名字],称为加注。 然后在文本的任意位置(一般在最后)添加脚注,脚注前必须有对应的脚注名字。
- 脚注自动被搬运到最后面,请到文章末尾查看,并且脚注后方的链接可以直接跳转回到加注的地方。
2.3.2 内容目录
语法说明:
- 关于目录生成,只要文章是按照markdown语法写作的。在需要生成目录的地方写
[TOC]
即可。 - 注意,在
[TOC]
上下需要空出一行。 - 有些Markdown编辑器需要使用
@[TOC]
语法。
2.3.3 锚点
名词解释:
锚点是是网页制作中超级链接的一种,又叫命名锚记。命名锚记像一个迅速定位器一样是一种页面内的超级链接,运用相当普遍。
英文名:anchor
使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题处或顶部。然后可以创建到这些命名锚记的链接,这些链接可快速将访问者带到指定位置。
创建到命名锚记的链接的过程分为两步。首先,创建命名锚记,然后创建到该命名锚记的链接。
语法说明:
总之就是用于文章快速定位,点击目录便可直接跳转到指定位置。下面来介绍一下在MarkDown编辑器中怎么使用:
首先是建立一个跳转的连接。注意符号 # 和 target 参数要设置正确:<a href="#jump" target="_self">说明文字</a>
然后标记要跳转到什么位置即可。文字颜色可随意设置,这里以红色为例:
跳转到这里:
2.4 字体设置
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。但是它本身是不支持修改字体、字号与颜色等功能的!
CSDN-markdown编辑器是其衍生版本,扩展了Markdown的功能(如表格、脚注、内嵌HTML等等)!对,就是内嵌HTML,接下来要讲的功能就需要使用内嵌HTML的方法来实现。
字体,字号和颜色编辑如下代码
语法说明:
- 字体:
<font
face= "
xxx">我是
xxx体字</font>
- 字号:
<font
size=
xxx>我是
xxx号字</font>
- 颜色:
<font
color=
xxxx>我是
xxxx色</font>
显示效果如下:
我是黑体字
我是微软雅黑
我是华文彩云
我是红色
我是绿色
我是蓝色
我是5号字
我是等线字,绿色,字号5
我是等线
我是微软雅黑
我是华文彩云
color=#0099ff size=72 face=”幼圆”
color=#00ffff 可以用十六位颜色值
color=gray 在这里也可以用已知的颜色名
2.4 反斜杠转义
Markdown 中可以使用反斜杠转义 Markdown 语法符号为字面量. 例如, 如果你想用星号包围一个单词 (而不是 HTML 的<em>
标签), 你可以在星号前面加反斜杠(\)
, 就像这样:
\*literal asterisks\*
显示效果如下:
2.5 特殊符号
‘https://unicode-table.com/cn/'
2.6 添加背景色
Markdown本身不支持背景色设置,需要采用内置html的方式实现:借助 table, tr, td 等表格标签的 bgcolor 属性来实现背景色的功能。举例如下:
<table><tr><td bgcolor=orange>背景色是:orange</td></tr></table>
显示效果如下:
背景色是:orange |
2.7 emoji表情
3 高级用法
3.1 Latex 数学公式
语法说明:
- 行内公式:使用两个”
$
”符号引用公式:$公式$
- 行间公式:使用两对“
$$
”符号引用公式:$$公式$$
3.2 Todo List
语法说明:
-[ ] 待办事项1
-[ ] 待办事项2
-[x] 已办事项1
显示效果如下:
3.3 绘制流程图
语法说明:
显示效果如下:
3.4 绘制甘特图
3.5 绘制序列图
4 Markdown工具
4.1 快捷键
5 Markdown 的大大小小坑
5.1 Markdown版本演进
5.2 语法差异
语法差异其实就是看支持的是 Markdown 的哪一种实现,以及对应的配置选择。好消息就是,通用的格式 CommonMark 里面基础的标记是都支持的,只是单纯文字和图片几乎是随处可用,样式一致。
有兴趣的话,可以看看这个开源项目,它统计了不同Markdown实现的33个版本差异:
https://babelmark.github.io/faq/
举个例子:支持扩展效果不一致
最典型的就是表格和流程图了。大部分的实现都支持表格的功能,通过 Babelmark 3 可以看到 6 种转换后的 Html,如果表格里面还使用了加粗的话更是惨不忍睹,12 种效果任君猜测在不同网站显示,你绝对想不到的。
5.3 显示效果
这也是个天坑,辛苦的写好后,最终是需要面对读者的。引起的原因无非是实现的扩展功能不一致以及网站的 CSS 样式差异影响到了排版。
- 实现的扩展功能不一致
- CSS 样式差异影响
- 这时候就必须要关注效果了。有预览功能那是最好的,否则需要一次次的发布然后查看,修改。因此选择的工具和你发布的平台的兼容性问题就来了,最好是都是同一个核心源码的变种实现。