Markdown 简单介绍及用法

  Markdown 是做什么的呢?其实 Markdown 是一种用于撰写文章的标记语言。很多平台撰写文章可以使用 Markdown 文档直接发表,如知乎、GitHub等。虽然程序员和博客作者用 Markdown 的人比较多,但任何人都可以使用 Markdown 来撰写文章。它并没有那么难。只需要你记几个简单标记就能很快掌握。

  使用 Markdown 的好处(不限于):

  • 专注内容的输出,你不怎么需要先关注排版的格式信息。

  • 轻量化,不需要比较重的编辑器。

  • 在网页上使用方便。

  由于 Markdown 是通过一些常见的符号来标记文档中的内容,因此纯文本编辑器就可以编辑它。比如咱们盲人小伙伴使用的记事本。为了区分普通文本和Markdown 文本,我们一般把Markdown 文档的扩展名设为 .md。但其内容依然是纯文本的文本文档。关于文本编辑的基本知识,您可参考 浅谈文本编辑中的快捷键及其底层逻辑 这篇文章。没错,这篇文章中的表格、段落、标题等格式信息就是用 Markdown 排出来的。

  有的网站天生支持 Markdown 撰写内容,我们直接把我们书写好的 Markdown 文档上传就可以发表了。对于那些不支持 Markdown 的网站,我们可以借助于一些 Markdown 渲染工具。还有的情况可能是这样的,我们不确认我们编写的 Markdown 文档是否显示正确,也需要一个工具实时渲染出结果。这里,我推荐各位使用 VS Code 这款工具。使用方法建议看 VS Code 大材小用之撰写 Markdown 这篇文章。

历史闲话

  进入今天的主题之前,不妨让我们回顾一下人们在计算机中编写文档的历史。

  • 最开端,是纯文本的天下。没有格式的概念,同一种字体同一种字号贯穿全文。更没有排版一说了。如果我们想把一些文字居中对其,那您老就手动敲若干个空格好了。这时候,也创造出了很多神奇的字符,比如制表符,就是用来快速对其表格类的内容而出现的。说是表格吧,其实都是用诸如“-”——横线和“l”——表示竖线等字符描绘出来的。

  • 有人说,这太愚蠢了。我们为什么不多发明一些特殊的字符,帮助我们排版呢?比如需要居中一段文字,把这些文字用一对特殊的字符标记出来就好了啊。需要加粗文字,也指定一对特殊的文字包裹起来。这就蛋生了最初的富文本的概念。

  • 后来,富文本编辑越来越成熟。比如大名鼎鼎的 WPS 最初就是这样一套汉字排版处理系统。不过,用特殊符号包裹需要排版的文本虽解决了排版的问题,但有一个致命的问题。就是电脑屏幕上面依然显示的是普通的纯文本,必须输入到打印机,打印出来才知道有没有打歪。

  • 正当人们争吵文字处理种种不便的时候,微软带着 Windows + Office 闪亮登场了。用户再也不用学习一堆用于排版和格式的特殊字符了。可视化的交互、所见即所得的编辑体验,让人们直接可以通过电脑屏幕看到打印出来的效果。自此,Windows + Office 成为了办公室的标配产品,解救了被压在箱底的打字机。

  这就是文字编辑的历史。但 Word 就完美了吗?未必,有以下问题:

  • 太重了。因为 Word 是解决办公室打文件这一需求蛋生的工具。如果我们并非是打印文件,只是在网上写一点儿小文章,显然不需要用它

  • 过于直观,却影响到了文字输入本身。比如你要加粗一个关键词,你需要选中,然后执行“加粗”功能。太直观了就脱离了输入文字的状态

  Markdown 就是解决这一需求的轻量化文字编写语言。类似于上一个世纪的特殊符号文字编排法。同样使用一些字符表示特定的格式信息,不同的是,表达效果更容易让人理解。它具有:

  • 轻量化。纯文本编写,够简单。

  • 表达易于理解。如加粗文字只需要将要加粗的文字前后用“**”包裹起来就可以了

  • 与互联网文档的语言——HTML 良好兼容。这就便于我们在网上发布我们的小文章。

从标记说起

  Markdown 看名字就跟标记有关系。没错,使用 Markdown 撰写文字的核心就是一些标记。

  那什么是标记呢?在 Markdown 中,有一些特殊的字符,起到一种特殊的格式含义。比如说,你用“*”字符把文字包裹起来,那么就是要让 Markdown 工具斜体包裹文字的意思。所有的标记都是这样,用于提示你和 Markdown 工具,这是一个什么东西。

  总结,万物需要标记。

简单语法概要

段落

  在 Markdown 中,一个段落很简单。只要一行文字前后都留下一个空行就好了。这行文字就会被视为一个段落。但需要我们注意的是,由于默认情况下,段首没有缩进。这就需要我们手动敲两个拳脚空格作为缩进。

换行

  倘若我们一个段落中需要在特定的位置换行的话,就需要在要换行的位置上插入两个空格。

  例如:

  我是一个段落,
我还是这个段落,不过我已经在下一行了。

  我是一个段落,  
我还是这个段落,不过我已经在下一行了。

加粗与斜体

  用一个 “*”或者“_”包裹起来的文本会被设置为斜体;用两个"*"或者两个“_”包裹起来的文本会被加粗;如果是三个“*”或者三个“_”包裹的文本既会被设置为斜体,也会被加粗。

  例如:

  我喜欢 Markdown。这里有加粗的文本,也有斜体的文本,还有加粗又斜体的文本。

  我喜欢 __Markdown__。这里有**加粗**的文本,也有*斜体*的文本,还有***加粗又斜体***的文本。

标题

  在 Markdown 标记语法中,有两种类型的标题:

  方法1: 在要设置为标题的段首添加1到6个“#”字符,接着一个空格。就会转换成对应等级的标题。

  例如:

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题
# 一级标题

## 二级标题

### 三级标题

#### 四级标题

##### 五级标题

###### 六级标题

  方法2: 在需要设为主标题断后一行添加三个及更多的 “=”字符,副标题则是在下一行添加三个及更多的“-”字符。

  例如:

我是主标题

我是副标题

我是主标题
======

我是副标题
--------

链接与图片

  链接语法也有两种。第一种如下:

[链接文本](链接地址)

  例如:

欢迎来到NVDA中文站

欢迎来到[NVDA中文站](http://nvdacn.com/)。

  观察上面的语法,我们发现网址和内容混在了一起了。为了能让网址和内容分开,我们把链接语法改成这样:

[链接文本][标签名]

  然后在文档的其他地方定义标签,语法如下:

标签名: 标签内容

例如:

百度

[百度][baidu]

[baidu]: https://baidu.com

  至于图片,语法跟链接是一样一样的。只需要在[]前加上一个“!”就好了。

![图片描述](图片地址)

![图片描述][标签名]

引用

  如果一句话是引用来的,只需要在行首添加“>”符号就好了。

世上无难事,只要肯登攀。

> 世上无难事,只要肯登攀。

列表

  列表分有序列表和无序列表。无序列表的格式是在每一个列表项目之前添加一个“-”或者“*”字符,然后空一格。

例如:

我喜欢吃的水果有:

  • 苹果

  • 橘子

  • 香蕉

我喜欢吃的水果有:

- 苹果

- 橘子

- 香蕉

  有序列表项目则以一个数字开头,接着是一个“.”或者一个“)”,然后是一个空格开头。

太阳系的八大行星是:

  1. 水星

  2. 金星

  3. 地球

  4. 火星

  5. 木星

  6. 土星

  7. 天王星

  8. 海王星

太阳系的八大行星是:

1. 水星

2. 金星

3. 地球

4. 火星

5. 木星

6. 土星

7.  天王星

8.  海王星

  不过需要说一嘴的是,有序列表中的数字并非代指序号。数字的目的只是提醒一下,这是一个有序列表的项目。

水平分割线

 在文档中,如果三个或更多的“*”字符或者“-”字符放到单独的一行上,且前后空行,则会生成水平分割线。

例如:



---

代码块

  代码块分为行内代码块和块状代码块。前者用于插入到段落中,后者是独立的一个特殊段落。

  行内代码块用“`”包裹起来。例如:

在 Python 中可使用 print() 函数输出文本。

在 Python 中可使用 `print()` 函数输出文本。

  而块状代码块则是使用三个“”包裹起来的。并且需要把三个“”放到单独一行上。例如:

# 输出 helloworld
print('helloworld')
```
# 输出 helloworld
print('helloworld')
```

  还有另一种块状代码块的写法。是把要作为代码块的内容整体缩进四个空格位置。这里就不演示了。

嵌套语法

  诸如上面提到的:

  • 引用

  • 有序列表

  • 无序列表

 是可以嵌套使用的,请看一个例子:

太阳系的结构

  1. 水星
  2. 金星
  3. 地球
    • 月球
> 太阳系的结构
>    1. 水星
>    2. 金星
>    3. 地球
>       - 月球

与HTML 标签良好兼容

  在  Markdown 文档中,你可以直接使用 HTML 标签。如,插入音频、视频,又或者,使用更复杂的标记等等。

  还有一个问题是,如果你需要在正文中用到诸如"*"这样的字符,并不希望被识别成标记的话。可以在这样的字符之前添加一个“\”字符。其作用就是忽略“*”等字符的特殊含义。

最后

  基本上把最基本的 Markdown 语法写完了。以上这些语法是最基本的,也是最常用的。由于各种场景的不同,也会有其他 Markdown 语法。大家可以按需学习,例如说:

  • 表格,Markdown 是可以写出表格的。

  • 脚注, Markdown 是可以编写脚注的。

  • 大纲,有一些 Markdown 工具可以生成文章的大纲。

  配合其他的一些工具,比如说:

  • MathJax,可编写数学公式。

  • Mermaid,可以在 Markdown 文档中编写流程图。

  这些就需要大伙儿去探索了。

  本文撰写我参考了 https://commonmark.org/help/

  感谢各位的阅读。下次再见!

标签: Markdown

添加新评论