说明:在 Markdown 中,一行是指由换行符或回车符之外的字符构成的行,而不包含字符的行或仅包含空格或制表符的行则称之为空行。

1、标题

每篇文章都需要标题,不同的层级需要不同大小的标题。要在 Markdown 中实现这种分级标题的效果,只需要在标题前加上井号和空格即可,井号越多,标题越小,最多 6 个井号。具体规则如下:

  • 在文本前加 1 个#和 1 个空格,文本就会变成一级标题(对应 HTML 中的 H1)
  • 在文本前加 2 个#和 1 个空格,文本就会变成二级标题(对应 HTML 中的 H2)
  • 在文本前加 3 个#和 1 个空格,文本就会变成三级标题(对应 HTML 中的 H3)
  • 在文本前加 4 个#和 1 个空格,文本就会变成四级标题(对应 HTML 中的 H4)
  • 在文本前加 5 个#和 1 个空格,文本就会变成五级标题(对应 HTML 中的 H5)
  • 在文本前加 6 个#和 1 个空格,文本就会变成六级标题(对应 HTML 中的 H6)

一般来说,四级标题就足够用了,所以有些 Markdown 的样式默认只对前 4 级标题做区分。

示例一下,输入文本如下:

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

显示效果如下:

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

另外,一级标题还可以在标题的下一行用等号来标识,二级标题还可以在标题的下一行用减号来标识。需要注意的是,这种语法在不同平台会有差异,有些平台只需要一个等号或减号就行,也有些平台至少需要两个,还有些平台则至少需要三个。

换句话说,你至少需要写三个等号或减号才能确保在多数平台上都有效果。当等号或减号的数量达到三个之后,再多写就不会有额外效果了,所以有些人会疯狂的写上很多个等号或减号,其实没必要。

示例一下,输入文本如下:

一级标题
===
二级标题
---

显示效果如下:

一级标题

二级标题

2、强调(粗体 & 斜体)

如果不写任何标记符号,那 Markdown 编辑器对你来说就约等于记事本,可能唯一不同的地方就是无论你在 Markdown 编辑器中输入多少个空格,最终只会呈现一个。

Markdown 默认只支持粗体和斜体,大多数时候这已经足够了。只需要在文本前后都加上星号,星号中的文本就会自动变粗或倾斜。具体规则如下:

  • 1、在文本前后各加 1 个*,文本就会变成斜体
  • 2、在文本前后各加 2 个*,文本就会变成粗体
  • 3、在文前前后各加 3 个*,文本就会变成粗斜体

另外,也可以用下划线来代替星号,效果是一样的。

示例一下,输入文本如下:

科技*改变*生活,代码_改变_世界
科技**改变**生活,代码__改变__世界
科技***改变***生活,代码___改变___世界

显示效果如下:

科技改变生活,代码_改变_世界

科技改变生活,代码__改变__世界

科技改变生活,代码___改变___世界

注意:强调效果可以嵌套到列表行和引用段落中,但不能应用到标题或代码块中。我的理解是因为标题和代码块本身就有强调的意味。

3、列表

Markdown 中的列表有两种,有序列表和无需列表。有序列表的每一行用一个数字、一个英文句点及一个空格来标识,无序列表的每一行用一个减号和一个空格来标识。

有序列表,示例一下,输入文本如下:

1. 长江
2. 珠江
2. 黄河

显示效果如下(你有没有发现黄河前面的 2 被自动纠正为 3 了?):

  1. 长江
  2. 珠江
  3. 黄河

无序列表,示例一下,输入文本如下:

- 重复言说多半是时间上的损失。
- 教育的目的在于使人能够继续教育自己。
- 怕什么真理无穷,进一寸有一寸的欢喜。

显示效果如下:

  • 重复言说多半是时间上的损失。
  • 教育的目的在于使人能够继续教育自己。
  • 怕什么真理无穷,进一寸有一寸的欢喜。

其实,无序列表除了可以用减号来标识之外,还可以用加号或星号来标识。比如上例中的-就可以换成+*,效果完全一样,甚至可以混用这 3 种符号。

列表嵌套,示例一下,输入文本如下:

- 1、第一章
- 1.1、第一节
- 1.2、第二节
1. 人不仅有好奇心,还有求知欲
2. 追问事物的原理,是为了控制和利用
3. 人发明了巫术,又从中分离出了科学
- 2、第二章
- 2.1、第一节
- 2.2、第二节
- 3、第三章

显示效果如下:

  • 1、第一章

    • 1.1、第一节
    • 1.2、第二节
      1. 人不仅有好奇心,还有求知欲
      2. 追问事物的原理,是为了控制和利用
      3. 人发明了巫术,又从中分离出了科学
  • 2、第二章
    • 2.1、第一节
    • 2.2、第二节
  • 3、第三章

引用列表,并且在列表中使用标题、粗体和斜体,示例一下,输入文本如下:

> ## 五大联合国常任理事国
- **中华人民共和国**
- *美利坚合众国*
- 俄罗斯联邦
- 大不列颠及北爱尔兰联合王国
- 法兰西共和国

显示效果如下:

五大联合国常任理事国

  • 中华人民共和国
  • 美利坚合众国
  • 俄罗斯联邦
  • 大不列颠及北爱尔兰联合王国
  • 法兰西共和国

列表中还可以包含代码块,需要在代码块的前面加上 8 个空格或 2 个制表符。

4、链接 & 图片

文本链接的写法是用一对中括号包裹链接文本,紧接着用一对小括号包裹链接地址,即[链接文本](链接地址)。另外,还可以给链接加 title,用双引号或单引号包裹并放在链接地址后面,即[链接文本](链接地址 "title文本")

示例一下,输入文本如下:

[万能的淘宝](https://www.taobao.com/)
[百度一下](https://www.baidu.com/ "你就知道")

显示效果如下:

万能的淘宝

百度一下

图片链接的写法只需要在文本链接的前面加上一个感叹号即可。当然链接地址得是图片地址,链接文本可写可不写,因为不会显示出来,而且不写也不影响图片的显示。

示例一下,输入文本如下:

![博客园Logo](https://www.cnblogs.com/images/logo_small.gif)
![百度Logo](https://www.baidu.com/img/baidu_jgylogo3.gif "百度一下,你就知道")

显示效果如下:



如果你在本地写作,也想看图片链接的效果,那么你需要把图片拷贝到 Markdown 文件所在的目录中,假如这个图片名称是kid.jpg,那么写法就是![](kid.jpg)。或者拷贝到所在目录的子目录中也行,加入子目录名称是imgs,那么写法就是![](imgs/kid.jpg)

引用链接

在实际应用中,链接地址往往是比较长的,而且有时候还需要文章中多次引用某个链接,这时候可以在 Markdown 文件末尾定义一下该链接,并设置一个简短的链接文本,然后就可以在上文中通过链接文本来引用该链接了。

示例一下,输入文本如下:

部分中文搜索用[百度][bd]效果更好,多数英文搜索用[谷歌][gg]效果更好,技术搜索[谷歌][gg]的效果往往要比[百度][bd]的效果好很多。
然而遗憾的是,在中国访问[谷歌][gg]需要翻墙。
[bd]: https://www.baidu.com/ "百度一下,你就知道"
[gg]: https://www.google.com/ "墙外更精彩"

显示效果如下:

部分中文搜索用[百度][bd]效果更好,多数英文搜索用[谷歌][gg]效果更好,技术搜索[谷歌][gg]的效果往往要比[百度][bd]的效果好很多。

然而遗憾的是,在中国访问[谷歌][gg]需要翻墙。

[bd]: https://www.baidu.com/ "百度一下,你就知道"

[gg]: https://www.google.com/ "墙外更精彩"

上面示例的是如何引用文本链接,引用图片链接的方式与引用文本链接的方式完全相同。

自动链接指的是当你输入一个 url 或邮箱地址等链接时,Markdown 会自动将其转换为可访问的链接,写法是将链接地址置于一对尖括号之中。

示例一下,输入文本如下:

<https://www.cnblogs.com/>
https://www.cnblogs.com/ 效果对比行
<luck@qq.com>
luck@qq.com 效果对比行

显示效果如下:

https://www.cnblogs.com/

https://www.cnblogs.com/ 效果对比行

luck@qq.com

luck@qq.com 效果对比行

可能你会发现,在你使用的编辑器中写不写尖括号效果都一样,那是因为你使用的编辑器自带了链接识别功能。在很多博客或网络笔记中,要想链接显示成链接的效果,还是得加尖括号。

5、代码块

在 Markdown 的所有语法中,代码快大概是最能打动程序员的。尽管在程序员之外的人看来,代码快的效果不过是给文本加了个框,但写过文档的程序员都知道 Word 等文字处理软件中代码的显示效果和编辑效果有多糟糕。

代码块有两种:一种是行内代码块,用两个反单引号(也称重音符)包裹一下即可;另一种是多行代码快,在每行代码前加四个空格或一个制表符(Tab)的缩进,然后与上一行文本之间保留一个空行即可。

行内代码块,示例一下,输入文本如下:

JavaScript 在控制台输出消息的语法是 `console.log(message)`。

显示效果如下:

JavaScript 在控制台输出消息的语法是 console.log(message)

多行代码快,示例一下,输入文本如下:

    class Program {
static void Main(string[] args) {
Console.WriteLine("Hello World!");
}
}

显示效果如下:

class Program {
static void Main(string[] args) {
Console.WriteLine("Hello World!");
}
}

有些工具或平台支持很多语言的代码高亮,现实效果非常好。常见标准中都没有规定这一块,所以如果你想要代码高亮,就得按你所用工具的语法规则来写了。

关于多行代码快,CommonMark 标准中定义了一个相对来说更加方便书写的语法,就是以三个独占一行的反单引号开头,并且以三个独占一行反单引号结尾。这样就不用写缩进了,而且代码块与上一行之间也不必再保留一个空行了。而且常见的各种工具基本都支持,似乎已经成为事实上的标准了。

示例一下,输入文本如下:

class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } }

显示效果如下:

class Program {
static void Main(string[] args) {
Console.WriteLine("Hello World!");
}
}

6、引用

如果需要在文中引入一段有出处的话,就可以采用引用的方式实现。实现的方式是在这段话的开头或上一行加上一个尖括号和一个空格。虽然 Markdown 的引用语法很简洁,但用法却很灵活,几乎可以和任何语法连用,而且很强大,能够逐级嵌套引用。

普通引用,示例一下,输入文本如下:

> 普通文本 **加粗文本** *斜体文本*
> ## 二级标题
> #### 四级标题

显示效果如下:

普通文本 加粗文本 斜体文本

二级标题

四级标题

嵌套引用,示例一下,输入文本如下:

> 一层引用
>> 两层引用
>>> 三层引用
>>>> 四层引用
>>>>> 五层引用

显示效果如下:

一层引用

两层引用

三层引用

四层引用

五层引用

7、分割线

有些作者很喜欢用水平分割线,也称分隔符或横线,在 Markdown 中,分割线的写法与标题的第二种写法十分相似,在新的一行连续输入 3 个或 3 个以上的星号即可。

星号之间可以有空格,且星号还可以用减号或下划线来代替。需要注意的是,如果用减号,那分割线与上面的段落之间需要空出一行,否则分割线就会与上面的段落组成二级标题了。

示例一下,输入文本如下:

***
* * * ---(注意:此行的上一行是空着的)
___

显示效果如下:





8、总结

本文主要讲解了 Markdown 的七大标准语法的用法。掌握了这七大标准语法,就足够应对 Markdown 的一般写作需求了。

通过本文示例可见,Markdown 的语法完全由标点符号构成,且标点符号经过精心挑选,看起来比较直观形象。例如,文本周围的*看起来像是在强调,分割线看起来就像是横线,列表排列看起来就像是列表。

本文链接http://www.cnblogs.com/hanzongze/p/markdown-standards.html

版权声明:本文为博客园博主 韩宗泽 原创,作者保留署名权!欢迎通过转载、演绎或其它传播方式来使用本文,但必须在明显位置给出作者署名和本文链接!个人博客,能力有限,若有不当之处,敬请批评指正,谢谢!

Markdown温故知新(2):详解七大标准语法的更多相关文章

  1. Angular6 学习笔记——组件详解之模板语法

    angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...

  2. 详解Python 切片语法

    Python的切片是特别常用的功能,主要用于对列表的元素取值.这篇文章主要介绍了详解Python 切片语法,需要的朋友可以参考下 Python的切片是特别常用的功能,主要用于对列表的元素取值.使用切片 ...

  3. Kotlin——高级篇(二):高阶函数详解与标准的高阶函数使用

    在上面一个章节中,详细的讲解了Kotlin中关于Lambda表达式的语法以及运用,如果还您对其还不甚理解,请参见Kotlin--高级篇(一):Lambda表达式详解.在这篇文章中,多次提到了Kotli ...

  4. 机器学习——SVM详解(标准形式,对偶形式,Kernel及Soft Margin)

    (写在前面:机器学习入行快2年了,多多少少用过一些算法,但由于敲公式太过浪费时间,所以一直搁置了开一个机器学习系列的博客.但是现在毕竟是电子化的时代,也不可能每时每刻都带着自己的记事本.如果可以掏出手 ...

  5. XML详解一XML语法

    XML指可扩展标记语言很类似 HTML,被设计用来传输和存储数据而非显示数据,XML标签没有被预定义需要自行定义标签,标签具有自我描述性,同时XML也是 W3C 的推荐标准. 先来写一个XML脚本de ...

  6. 【转】详解Java正则表达式语法

    (转自: http://www.jb51.net/article/76354.htm) 这篇文章主要介绍了Java正则表达式语法,包括常用正则表达式.匹配验证-验证Email是否正确以及字符串中查询字 ...

  7. DOCTYPE与浏览器模式详解(标准模式&混杂模式)

    关于渲染模式: 在多年以前(IE6诞生以前),各浏览器都处于各自比较封闭的发展中(基本没有兼容性可谈).随着WEB的发展,兼容性问题的解决越来 越显得迫切,随即,各浏览器厂商发布了按照标准模式(遵循各 ...

  8. Linux目录文件详解FHS标准(2013.09.05)

    Linux 目录配置的依据FHS(Filesystem Hierarchy Standard)标准,将目录分成为四种交互作用的形态: 四种形态的具体解释: 可分享的:可以分享给其他系统挂载使用的目录, ...

  9. MySQL(九)之数据表的查询详解(SELECT语法)二

    上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1 ...

随机推荐

  1. idea把菜单栏给点没了...(File、Edit、View、Navigate.......)

    第一种方法 找到idea的C盘的配置文件ui.lnf.xml文件 第二种方法 如果是高版本idea,我的是2019.3,双击shift选择Actions,搜索menu 然后重启idea

  2. [基础]斯坦福cs231n课程视频笔记(二) 神经网络的介绍

    目录 Introduction to Neural Networks BP Nerual Network Convolutional Neural Network Introduction to Ne ...

  3. Transformer模型---decoder

    一.结构 1.编码器 Transformer模型---encoder - nxf_rabbit75 - 博客园 2.解码器 (1)第一个子层也是一个多头自注意力multi-head self-atte ...

  4. 201871010121-王方《面向对象程序设计JAVA》第十五周实验总结

    项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p/ ...

  5. Node.js到底是做什么的?这是我看到最好的解释了

    作者:贾厂长链接:https://www.zhihu.com/question/33578075/answer/56951771来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  6. Oracle告Google输了

    Oracle告Google输了 boxi • 2016-05-27 • 大公司 Google表示,陪审团的认定代表了Android生态体系.Java开发社区以及依靠开放免费编程语言开发创新消费者产品的 ...

  7. selenium 定位 页面上两个完全一样的元素

    在测试过程中发现页面上有两个保存按钮的元素的xpath一模一样,如下图: google了好久才找到解决办法,发现自己还是比较弱!!!解决方法如下: selenium.click("xpath ...

  8. (day43)form表单、css

    目录 昨日回顾 一.HTTP协议 (一)四大特性 (二)数据格式 (1)请求格式 (2)响应格式 (三)响应状态码 二.HTML (一)什么是HTML (二)注释 (三)文档结构 (四)head内标签 ...

  9. <console>:14: error: not found: value spark import spark.implicits.

    启动 ./spark-shell 出现问题 启动 hadoop, 并创建,解决 hadoop fs -mkdir /directory 解决了

  10. USACO 利润Profits

    洛谷P3009 [USACO11JAN]利润Profits 题解  https://www.luogu.org/problemnew/solution/P3009 JDOJ 2727: USACO 2 ...