markdown笔记
- 语法规范:基本语法,扩展语法和使用规范。
- GFM:GitHub Flavored Markdown。
- Markdown是一种轻量级标记语言,Markdown就是由一些简单的符号(如*/->#)组成的用于排版的标记语言,其最重要的特点是可读性强。
- 目前最流行的markdown扩展语法是GitHub Flavored Markdown,简称GFM。它扩展了包括表格、任务列表、删除线、围栏代码、Emoji等在内的语法。
- markdown工作流程:markdown源码-->处理-->编辑器-->输出-->文档。
- markdown会被渲染成HTML页面。
markdown的语法说明如下:
- 基础语法有7种:字体、段落与空行、图片、链接、行内代码和代码块、引用和转义。
- 扩展语法有7种:删除线、emoji符号表情、自动链接、表格、任务列表、围栏代码块和锚点。
基础语法
字体
标题
标题支持使用两种标记:底线(-/=)和#。
-
使用底线的语法说明如下:
- 底线是=表示一级标题。
- 底线是-表示二级标题。
- 底线符号的数量至少2个。
- 这种语法只支持这两级标题。
-
使用#的语法说明如下:
- 在行首插入#可标记出标题。
- #的个数表示了标题的等级。
- 建议在#后一个空格(很多编辑器必须要加,否则不识别)。
- markdown中最多支持六级标题。
-
使用规范:
- 建议使用#标记标题,而不是底线=或-,因为后者会难以阅读和维护。
- 要保持间距,建议标题的前后都要空1行(除非标题在文档开头);#与标题文本之间也要有1个空格,否则会导致阅读困难。
- 不要有多余的空格。建议标题要写在一行的开头,结尾不要有空格。
- 建议标题的结尾不要有标点符号,如句号、逗号、冒号、分号等。
- 建议标题尽量简短。
粗体和斜体
粗体由2个*或2个_包裹,斜体由1个*或1个_包裹。
- 使用规范:
- 在粗体和斜体语法标记的内部,建议不要有空格。
段落与换行
段落由一行或多行文本组成,不同的段落之间使用空行来标记。
语法说明如下:
- 如果行与行之间没有空行,则会被视为同一段落。
- 如果行与行之间有空行,则会被视为不同的段落。
- 空行是指行内什么都没有,或者只有空格和制表符。
- 如果想在段内换行,则需要在上一行的结尾插入2个或者2个以上的空格然后按回车键。
使用规范:
- 当超过80个字符后进行换行。
- 在一句话结束(。或!或?)之后换行。
- 当URL较长时换行。
- 列表
在markdown中支持使用有序列表和无序列表,有序列表用数字序号+英文句号+空格+列表内容来标记,无序列表用*/+/-+空格+列表内容来标记。
有序列表语法说明如下:
数字序号+英文句号+空格+列表内容
无序列表语法说明如下:
*/+/-+空格+列表内容
嵌套列表的语法说明如下:
+ 第一层列表
TAB + 第二层列表
TAB + TAB + 第三层列表
- 列表中可以嵌套列表。
- 有序列表和无序列表也可以互相嵌套。
使用规范:
- 建议使用-来标记无序列表,因为*容易跟粗体和斜体混淆,而+不流行。
- 如果一个列表中所有的列表项都没有换行,则建议使用1个空格。
- 如果列表项有换行,则建议给无序列表使用3个空格,给有序列表使用2个空格。
- 如果一个列表中每个列表项都只有1行,建议列表项之间不要有空行。
- 如果列表项中有换行,建议在列表项之间空1行, 这样会比较容易区分多行列表项的开始和结束。
- 建议在列表前/后都空1行。
- 数字列表,字符列表使用英文半角句号,句号后加空格。
- 分隔线
分隔线由3个或3个以上的*/-/_来标记
使用分隔线的语法说明如下:
- 分隔线须使用至少3个以上的*/-/_来标记。
- 行内不能有其他的字符。
- 可以在标记符中间加上空格。
图片
插入图片的语法如下:

语法说明如下:
- 图片替代文字在图片无法正常显示时会比较有用,正常情况下可以为空。
- 图片地址可以是本地图片的路径也可以是网络图片的地址。
链接
-
文字链接
文字链接的语法如下:
[链接文字](链接地址) -
引用链接
引用链接是把链接地址作为[变量],先在markdown文件的页尾定义好,然后在正文中进行引用,其语法如下:
在正文中引用链接标记,可以理解为引用定义好的变量:[链接文件][链接标记]
在底部定义链接标记,可以理解为定义一个地址标量:[链接标记]: 链接地址
语法说明如下:
- 链接标记可以有字母、数字、空格和标点符号。
- 链接标记不区分大小写。
- 定义的链接内容可以放在当前文件的任意位置,建议放在页尾。
- 当链接地址为网络地址时要以http/https开头,否则会被识别为本地地址。
-
网址链接
在markdown中,将网络地址或邮箱地址使用<>包裹起来会被自动转换为超链接,其语法如下:
<URL或邮箱地址> -
使用规范
- 在markdown中,链接标题的信息应该更丰富,从标题中应该可以知道链接的内容,要使用有意义的链接标题。
- 建议使用<>包裹自动链接,这种方式更通用。
- 自动链接要以http/https开头。
行内代码带代码块
-
行内代码
行内代码引用使用`包裹,语法如下:
`代码` -
代码块
代码块以tab键或4个空格开头,语法如下:
以tab键开头:
def_test_print()
或者以4个空格开头:
def_test_print()
提示:因为代码块使用tab键或4个空格开头的效果不够直观,很多扩展语法(如GFM)提供了围栏代码块,并且支持语法高亮。 -
使用规范
- 除行内代码可以使用
包裹以外,如果想转义或强调某些字符,也可以使用包裹。 - 如果代码超过一行,请使用围栏代码块(扩展语法),并显式地声明语言,如下:
def print_name(): print("markdown")- 很多shell命令都要粘贴到终端中去执行,因此最好避免在shell命令中使用任何换行操作;可以在行尾使用一个字符串连接符\,这样既能避免命令换行,又能提高源码的可读性。
- 建议不要在没有输出内容的shell命令前加$,在命令没有输出内容的情况下,$是没有必要的,因为内容全是命令,我们不会把命令和输出的内容混淆。
- 建议在有输出内容的shell命令前加上$,这样会比较容易区分命令和输出的内容。
- 除行内代码可以使用
引用
在markdown中,引用由>+引用内容来标记,如:>引用内容
语法说明如下:
- 多行引用也可以在每一行的开头都插入>。
- 在引用中可以嵌套引用。
- 在引用中可以使用其他的markdown语法。
- 段落与换行的格式在引用中也是使用的。
使用规范: - 建议在引用的标记符号>之后添加一个空格。
- 建议每一行引用都使用符号>。
- 不要在引用中添加空行。
转义
在markdown文件中插入一些标记符号,但又不想让这些符号被渲染时,可以使用\进行转义,语法为:\特殊符号。
实例:\->\;[]->[];
扩展如法
在众多markdown扩展语法中,GitHub Flavored Markdown(简称GFM)无疑是目前最流行的,它提供了包括表格、任务列表、删除线、围栏代码和Emoji表情符号等在内的标记语法。
删除线
删除线的语法如下:
~~被删除的文字~~
emoji表情符号
使用:包裹表情代码即可,语法如下:
:表情代码:
自动链接
在标准语法中,由<>包裹的URL地址被自动识别并解析为超链接,使用GFM扩展语法则可以不使用<>包裹。
注意:自动链接只识别以www或http(s)😕/开头的URL地址。如果不想使用自动链接,可以使用`包裹URL地址作为行内代码块去掉链接属性。
表格
表格的语法如下:
|表头1|表头2|
|----|----|
|内容1|内容2|
语法说明如下:
- 单元格使用|来分隔,为了阅读更清晰,建议最前和最后都使用|。
- 单元格和|之间的空格会被移除。
- 表头和其他行使用-来分隔。
- 表格对其格式如下:
- 左对其(默认):
:- - 右对齐:
-: - 居中对齐:
:-:
- 左对其(默认):
- 块级元素(代码区块、引用区块)不能插入表格中。
创建表格的建议如下: - 在表格的前、后各空1行。
- 在每一行最前和最后都使用|,每一行中的|尽量都对齐。
- 不要使用庞大复杂的表格,难以维护和阅读。
任务列表
任务列表的语法如下:
- [ ] 未勾选
- [x] 已勾选
语法说明如下:
- 任务列表以-+空格开头,由[+空格/x+]+空格组成。
- x可以小写,也可以大写,有些编辑器可能不支持大写,所以为避免解析错误,推荐使用小写的x。
- 当方括号中的字符为空格时,复选框是未选中状态,未x时是选中状态。
围栏代码块
在基础语法中,代码块使用tab键或4个空格开头;在扩展语法中,围栏代码块使用连续3个`或3个~包裹,还支持语法高亮。
语法说明如下:
- 围栏代码块使用连续3个`或3个~包裹,支持语法高亮并可以加上编程语言的名字。
- 前后的连续3个`或3个~独占一行,其中开头的连续3个`或3个~后面一般都加上编程语言的名字(也可不加)。
锚点
锚点也称为书签,用来标记文档的特定位置,使用锚点可以跳转到当前文档或其他文档中指定的标记位置。
markdown会被渲染成HTML页面,在HTML页面中可以通过锚点实现跳转;GitHub、GitBook项目文档中的目录也是通过锚点实现跳转的。
锚点的语法如下:
[锚点描述](#锚点名)
语法说明如下:
- 锚点名建议使用字母和数字,当然中文也是被支持的,但不排除有些网站支持的不够好。
- 锚点名是区分英文大小写的。
- 在锚点名中不能含有空格,也不能含有特殊字符。
排版技巧
空格
建议中文和英文之间加空格,中文/英文和数字之间也要加空格,不过有些编辑器和输入法(如百度输入法)会自动添加空格。
一些需要加空格的情况:
- 英文标点符号(如,.;:?)与后面的字符之间需要加空格,与前面的字符之间不需要加空格。
- 当在中文、英文中使用>(半角)标识路径时,两边都需要加空格。
不加空格的情况: - 中文标点符号和数字、中文、英文之间不需要添加空格。
- 数字和百分号之间不需要添加空格。
- 数字和单位符号之间不需要添加空格。
- 英文和数字组合成的名字之间不需要添加空格。
- 当/(半角)标识或,路径时,与前后的字符之间均不加空格。
- 货币符号后不加空格。
- 负号后不加空格。
全角和半角
全角:中文标点符号是全角,占2个字节。
半角:英文标点符号和数字是半角,占1个字节。
- 在中文排版中,要使用全角标点符号。
- 在英文排版中,要使用半角标点符号。
pandoc
pandoc是一个标记语言转换工具,可实现不同标记语言间的格式转换。
typora的文件导入/导出功能是使用pandoc把markdown文件转换成不同格式的文件,所以如果想使用文件导入/导出功能,必须要先安装pandoc。如果不安装pandoc,typora只支持导出HTML和PDF格式的文件。
typora最通用的插入强制换行符的方法有2种:
- 在行尾加2个空格然后按回车键。
- 使用HTML标签
<br/>实现换行。
以上2种方式在atom也是这样的。

浙公网安备 33010602011771号