markdown笔记

  • 语法规范:基本语法,扩展语法和使用规范。
  • GFM:GitHub Flavored Markdown。
  • Markdown是一种轻量级标记语言,Markdown就是由一些简单的符号(如*/->#)组成的用于排版的标记语言,其最重要的特点是可读性强。
  • 目前最流行的markdown扩展语法是GitHub Flavored Markdown,简称GFM。它扩展了包括表格、任务列表、删除线、围栏代码、Emoji等在内的语法。
  • markdown工作流程:markdown源码-->处理-->编辑器-->输出-->文档。
  • markdown会被渲染成HTML页面。

markdown的语法说明如下:

  1. 基础语法有7种:字体段落与空行图片链接行内代码和代码块引用转义
  2. 扩展语法有7种:删除线emoji符号表情自动链接表格任务列表围栏代码块锚点

基础语法

字体

标题

标题支持使用两种标记:底线(-/=)#

  1. 使用底线的语法说明如下:

    • 底线是=表示一级标题。
    • 底线是-表示二级标题。
    • 底线符号的数量至少2个。
    • 这种语法只支持这两级标题。
  2. 使用#的语法说明如下:

    • 在行首插入#可标记出标题。
    • #的个数表示了标题的等级。
    • 建议在#后一个空格(很多编辑器必须要加,否则不识别)。
    • markdown中最多支持六级标题。
  3. 使用规范:

    • 建议使用#标记标题,而不是底线=或-,因为后者会难以阅读和维护。
    • 要保持间距,建议标题的前后都要空1行(除非标题在文档开头);#与标题文本之间也要有1个空格,否则会导致阅读困难。
    • 不要有多余的空格。建议标题要写在一行的开头,结尾不要有空格。
    • 建议标题的结尾不要有标点符号,如句号、逗号、冒号、分号等。
    • 建议标题尽量简短。

粗体和斜体

粗体由2个*2个_包裹,斜体由1个*1个_包裹。

  1. 使用规范:
    • 在粗体和斜体语法标记的内部,建议不要有空格。

段落与换行

段落由一行或多行文本组成,不同的段落之间使用空行来标记。

语法说明如下:

  • 如果行与行之间没有空行,则会被视为同一段落。
  • 如果行与行之间有空行,则会被视为不同的段落。
  • 空行是指行内什么都没有,或者只有空格和制表符。
  • 如果想在段内换行,则需要在上一行的结尾插入2个或者2个以上的空格然后按回车键。

使用规范

  • 当超过80个字符后进行换行。
  • 在一句话结束(。或!或?)之后换行。
  • 当URL较长时换行。
  1. 列表
    在markdown中支持使用有序列表和无序列表,有序列表用数字序号+英文句号+空格+列表内容来标记,无序列表用*/+/-+空格+列表内容来标记。
    有序列表语法说明如下:
    数字序号+英文句号+空格+列表内容
    无序列表语法说明如下:
    */+/-+空格+列表内容
    嵌套列表的语法说明如下:
+ 第一层列表
TAB + 第二层列表
TAB + TAB + 第三层列表
  • 列表中可以嵌套列表。
  • 有序列表和无序列表也可以互相嵌套。

使用规范:

  • 建议使用-来标记无序列表,因为*容易跟粗体和斜体混淆,而+不流行。
  • 如果一个列表中所有的列表项都没有换行,则建议使用1个空格。
  • 如果列表项有换行,则建议给无序列表使用3个空格,给有序列表使用2个空格。
  • 如果一个列表中每个列表项都只有1行,建议列表项之间不要有空行。
  • 如果列表项中有换行,建议在列表项之间空1行, 这样会比较容易区分多行列表项的开始和结束。
  • 建议在列表前/后都空1行。
  • 数字列表,字符列表使用英文半角句号,句号后加空格。
  1. 分隔线
    分隔线由3个或3个以上的*/-/_来标记

使用分隔线的语法说明如下:

  • 分隔线须使用至少3个以上的*/-/_来标记。
  • 行内不能有其他的字符。
  • 可以在标记符中间加上空格。

图片

插入图片的语法如下:
![图片替代文件](图片地址)

语法说明如下:

  • 图片替代文字在图片无法正常显示时会比较有用,正常情况下可以为空。
  • 图片地址可以是本地图片的路径也可以是网络图片的地址。

链接

  1. 文字链接
    文字链接的语法如下:
    [链接文字](链接地址)

  2. 引用链接
    引用链接是把链接地址作为[变量],先在markdown文件的页尾定义好,然后在正文中进行引用,其语法如下:
    在正文中引用链接标记,可以理解为引用定义好的变量:[链接文件][链接标记]
    在底部定义链接标记,可以理解为定义一个地址标量:[链接标记]: 链接地址
    语法说明如下:

  • 链接标记可以有字母、数字、空格和标点符号。
  • 链接标记不区分大小写。
  • 定义的链接内容可以放在当前文件的任意位置,建议放在页尾。
  • 当链接地址为网络地址时要以http/https开头,否则会被识别为本地地址。
  1. 网址链接
    在markdown中,将网络地址或邮箱地址使用<>包裹起来会被自动转换为超链接,其语法如下:
    <URL或邮箱地址>

  2. 使用规范

  • 在markdown中,链接标题的信息应该更丰富,从标题中应该可以知道链接的内容,要使用有意义的链接标题。
  • 建议使用<>包裹自动链接,这种方式更通用。
  • 自动链接要以http/https开头。

行内代码带代码块

  1. 行内代码
    行内代码引用使用`包裹,语法如下:
    `代码`

  2. 代码块
    代码块以tab键或4个空格开头,语法如下:
    以tab键开头:
    def_test_print()
    或者以4个空格开头:
    def_test_print()
    提示:因为代码块使用tab键或4个空格开头的效果不够直观,很多扩展语法(如GFM)提供了围栏代码块,并且支持语法高亮。

  3. 使用规范

    • 除行内代码可以使用包裹以外,如果想转义或强调某些字符,也可以使用包裹。
    • 如果代码超过一行,请使用围栏代码块(扩展语法),并显式地声明语言,如下:
        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也是这样的。
posted @ 2020-03-28 13:55  快乐任我行  阅读(262)  评论(0)    收藏  举报