Skip to main content

关于 Markdown 的二三事

· 15 min read

使用手机阅读的请注意表格可以左右拖动

Markdown 简介

也许你不能完全看懂,但请认真阅读下面这段话。

Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。
Markdown 具有一系列衍生版本,用于扩展 Markdown 的功能(如表格、脚注、内嵌 HTML 等等),这些功能原初的 Markdown 尚不具备,它们能让 Markdown 转换成更多的格式,例如 LaTeX,Docbook。Markdown 增强版中比较有名的有 Markdown Extra、MultiMarkdown、 Maruku 等。这些衍生版本要么基于工具,如 Pandoc;要么基于网站,如 GitHub 和 Wikipedia,在语法上基本兼容,但在一些语法和渲染效果上有改动。
(摘自百度百科)

Markdown 和 word 哪个好被称为 IT 界三大争论之一,众所周知,word 功能十分丰富,但是需要使用专门的软件才能使用;而 Markdown 的特点则是,你可以使用任何一个编辑器、记事本来写文章,用一些特定的符号来排版,最后使用软件生成成品就可以了。Markdown 与 word 孰优孰劣本身就没有答案。
而 Markdown 的一大优势就是在写的过程中它对使用什么软件并没有要求,即使更换了软件也不会产生奇怪的问题(相对的,经常用 word,powerpoint,excel 的人一定遇到过因为版本不同带来的排版错误)。
当然,只有了解了 Markdown 才能真正理解上面所说的标记是什么。
下面是一个简单的例子,首先我们给出经过处理之后的样子(请仔细观察下面有一条浅浅的分割线):


一个栗子

忘了说明,本博客就使用了 Markdown,每篇博文我都是使用 Markdown 编写的,然后经过服务器处理就变成了你看到的样子。
我们来安利一下魔禁三,下面是撰写文章时魔禁三在 B 站的战绩:

已放送集数总播放总追番总弹幕总评论数
1342.9w177.4w16.8w9w

我只想说,看魔禁三需要理由吗?!
下面给出这个(例子)栗子在编写时的样子:


--- (这里是分割线)

## 一个栗子 (这里是标题)

忘了说明,本博客就使用了 Markdown,每篇博文我都是使用 Markdown 编写的,然后经过服务器处理就变成了你看到的样子。
我们来安利一下**魔禁三**,下面是撰写文章时魔禁三在B站的战绩:

|已放送集数|总播放|总追番|总弹幕|总评论数|
|:---:|:---|:---|---:|---| (注意这里的冒号)
|1|342.9w|177.4w|16.8w|9w|

我只想说,看魔禁三需要理由吗?!
下面给出这个~~(例子)~~栗子在编写时的样子:

步入正题

上面的例子很形象的说明了为什么 Markdown 在编写时不受软件的限制,因为一切你将会看到的格式,都被特定的符号表示出来了。正如引言所说,Markdown 没有标准,没有统一的软件,没有统一的用途,各种各样的软件或程序可以将 Markdown 转换成网页、pdf、word、ppt,没有你做不到的。而你也不需要每换一个用途就要复制粘贴重新排版,这就是 Markdown 的优势。

新建一个 Markdown 文档

目前大家经常用来做笔记的平台就是有道云笔记印象笔记之类的,它们也为 Markdown 提供了更多的增强功能,但前面也说到了,这些增强的功能只能看作是一种变体。我认为想要认识 Markdown,还是要认识它最简单朴素的样子,那个大部分平台通用的最基本的样子。
Markdown 文档的扩展名是.md,文件和 txt 相同是纯文本文档(看不懂的请略过),所以 windows 系统下右键新建文本文档并重命名(例如 日记.md ),你就可以将它称为 Markdown 文档了。
系统提示找不到可以打开本文件的程序时请随便选择一个编辑器(包括记事本)。

基本语法

因为 Markdown 变体过多我也没有一一详细了解过,本文以 Github-Markdown 变体为准。

标题

Markdown 中如果想定义一个标题,可以在前面加上#。1-6 个#分别表示 1-6 级标题。有的变体需要在#和正文之间加一个空格,为了保证效果建议都加上空格。


# 关于 Markdown 的二三事

## 步入正题

### 基本语法

显示结果:


关于 Markdown 的二三事

步入正题

基本语法


文本样式

Markdown 支持四种文本样式,分别是:加粗、斜体、删除线和加粗且斜体,文本样式不止可以用在行中,也可以用在下面要说到的表格、列表中。

样式关键字样例输出
加粗** **或者__ __**加粗文本**加粗文本
斜体* *或者_ __斜体文本_斜体文本
删除线~~ ~~~~删除线~~删除线
加粗且斜体*** ******这个是:加粗且斜体***这个是加粗且斜体

引用文本

本文开头就是一个引用,下面是例子:


> 引用也要有空格哦  
> 引用还可以连起来哦

输出结果:


引用也要有空格哦
引用还可以连起来哦


代码块

不要说你不会打代码就不用看这个哦,因为 Markdown 用了很多常见字符,所以包含大量符号的东西有可能被认为是表示格式信息的,而 Markdown 不会把代码块里的字符看作是格式标记,所以放代码块里会更好。
代码块有两种形式,一种是在文本中引入一个代码:使用一个倒引号`括起来;另一种是插入一段代码:使用三个倒引号```括起来,并且在第一行声明代码类型


我需要在文中插入快捷键`ctrl+v`。  

结果:


我需要在文中插入快捷键ctrl+v


```cpp    
int a = 1;
int b = 2;
int c = a+b;
```

结果:


int a = 1;
int b = 2;
int c = a+b;

我们也可以直接在行首使用一个 tab 或四个空格来表示本行是一段代码,比上面的方法更方便,但是这种方法无法声明代码类型,这在我的博客上会导致高亮失效或高亮错误。


```    (这里没有写代码类型)
int a = 1;
int b = 2;
int c = a+b;
```

结果:


int a = 1;
int b = 2;
int c = a+b;

链接与图片

链接和图片的用法非常相似,那是因为在 Markdown 中插入图片时我们一般给出这个图片的链接,有些变体会给出插入本地图片的解决方案。
方括号中填要显示的字,圆括号中填链接,图片方括号中的文本是图片描述,图片描述在鼠标悬停时显示,在图片无法加载时也会显示,虽然你可以选择省略,但我仍然建议认真填写图片描述。


[链接到百度](https://www.baidu.com)  
![百度首页的 logo](https://www.baidu.com/img/bd_logo1.png)

结果:


链接到百度 百度首页的 logo


当文中会重复出现同一个链接的时候就可以用下面的方法:


[链接到百度][1]   
[链接到 Google][2]
[还是链接到百度][1]

[1]:https://www.baidu.com
[2]:https://www.google.com

结果:


链接到百度
链接到 Google
还是链接到百度


参考链接中的标号 1,2 不仅仅可以是数字,也可以是字母或它们的组合。

列表

我们可以使用*,+,-或者数字作为列表的关键字。列表分有序列表和无序列表(直白的说就是有没有序号),同时列表也支持嵌套的形式,嵌套需要用 TAB。


- 主列表1  
- 主列表2
1. 次列表1
2. 次列表2
+ 主列表3

结果:


  • 主列表 1
  • 主列表 2
    1. 次列表 1
    2. 次列表 2
  • 主列表 3

表格

表格的例子在前文已经出现过了,下面详细说明一下(手机显示不完整请左右滑动表格):


|表头|这一行可以没有|  
|:---|---:|
|第二行在左右两边加冒号可以指定|本列的对齐是左对齐还是右对齐|
|左右加冒号分别是左右对齐|两边同时有就是居中对齐|

表头这一行可以没有
第二行在左右两边加冒号可以指定本列的对齐是左对齐还是右对齐
左右加冒号分别是左右对齐两边同时有就是居中对齐

行末空格与多个空行

在 Markdown 中连续的空行会被忽略,这一点使用过就能明白。
在部分变体中,换行需要专门在行末加两个空格,这一点因为难以显示不再展示。

忽略 Markdown 关键字

和 C 语言 printf 函数一样,如果我们不想让某个字符转换成 Markdown 关键字,可以在前面加上\比如我们想输入两个*,就可以用:

\*\*取消 Markdown 关键字\*\*  
**不取消 Markdown 关键字**

输出结果:

**取消 Markdown 关键字**
不取消 Markdown 关键字

结尾杂谈

我们用大量的篇幅讲了如何写 Markdown,可这还不够,你有没有想过,既然 Markdown 没有统一的标准,那使用不同的工具转换出的成品就不尽相同。比如说一级标题二级标题分别使用几号字,行距是多少,段距是多少,字体是什么,背景颜色是什么,有没有额外的互动效果(阅读本文时你应该已经注意到了所谓的互动),这些都不是 Markdown 文本会操心的事。
当然,如果你没有更严格的追求,大部分软件生成的成品都是很好看的,但是如果想要深入 Markdown,或者自己调整这些效果,就要花更多的力气甚至学习 css 语言(别称:层叠样式表,所有的网页都用它排版)。
最后,虽然 Markdown 是标记语言,但它并不是一种计算机语言,所以它很容易学习,但是因为一些原因,Markdown 与计算机语言特别是与网页有关的语言有着千丝万缕的联系,深入 Markdown,很容易就会碰到计算机语言。比如有人说 Markdown 想自定义字体颜色就这么写:

<font color="red">变红的字</font>

我只能提醒你那是一个 HTML 语句(同样是标记语言,但是是计算机语言),如果你使用电脑请右键此处并点击查看页面源代码。


Markdown 的创造者认为 Markdown 的魅力就在于它没有统一的标准,所以,每一个网站,每一个软件,都会创造 Markdown 的新天地。