排版利器 —— Markdown 语法总结

Markdown 是什么?

  昨晚彻夜难眠,一方面是因为网站建好后的喜悦,另一方面是因为不知道第二篇文章写什么好的茫然。不好写的原因是这篇文章既要让大家感兴趣,又要让大家马上能够用上,太难了。思索了好久,到最后才想起 Markdown 来。
  引用百度百科的介绍:

Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。世界上最流行的博客平台 WordPress 和大型 CMS 如 Joomla、Drupal 都能很好的支持 Markdown。完全采用 Markdown 编辑器的博客平台有 Ghost 和 Typecho。

  看完后你可能还是一头雾水,只知道 Markdown 看上去很厉害,好多博主都用它写文章。心里可能在想,我可没有博主们厉害,一定学不会的。但博主们也是普通人,他们原来也是小白,很多都是通过写博客才了解 Markdown 的。但当他们熟悉了 Markdown 后,没有人再用传统的富文本方式写博客了,平常的文档也不再用 Word 排版了。想知道为什么他们放弃了使用这么久的写作习惯吗,那继续往下看吧。我相信,你看完这一系列的文章后,你也会加入到我们的队伍里的。

举个例子

  在阅读本文之前,大家在写作时,一般都会用 Word 或 WPS 写作,文档也大都以微软的 doc, docx 格式储存。还有人为了保证文档在任何电脑上都能正常打开,会用 txt 格式。但是 doc 或 docx 格式有如下问题:

  1. 不一定能打开。比如旧版的 Word 就打不开新版的 Word 文档。
  2. 对方看到的文档的样子和你自己看到的可能差别很大,尤其是 WPS 和 Word 之间。
  3. 大部分人电脑上的 Office 都是盗版的,使用时很容易出问题。
  4. 用 txt 写的文档没有格式,这就给编辑你文档的人带来困扰了。

  可能有的人会说,将 Word 文档转成 pdf 格式不就就解决了吗。对,没错,pdf 格式文档确实是比较完美的解决办法。为什么说是比较完美的呢,我相信各位在生活中一定遇到过这样的场景,需要修改 pdf 文档里面的内容,或者是删除某些页面,或者是从其他文档里面添加新的页面,等等等等。这个时候,pdf 文档的劣势就出现了,对于一般人来说,这会很麻烦,pdf 不像 docx 或者 txt 文件一样,可以轻易地修改,它需要专门的软件来处理。但 pdf 文档又有特别多的优点,比如阅读方便、特别适合打印、特别适合屏幕上阅览、加密特性等等,那有没有什么格式的文档既能有 txt 文档一样方便打开,又能像 docx 文档一样便于调节格式,还能特别方便地转化成 pdf 文档呢。

Markdown 闪亮登场

  首先,千万不要被「标记」、「语言」吓到,其实 Markdown 的语法十分简单,常用的标记符号不超过十个,用于日常写作记录绰绰有余,不到半小时就能完全掌握。但就是这十个不到的标记符号,却能让人优雅地沉浸式记录,专注内容而不是纠结排版,达到「心中无尘,码字入神」的境界。

Markdown 的优点

  说了这么多,那 Markdown 格式的文档相较于其他格式的文档到底有什么优点呢:

  1. 纯文本,所以兼容性极强,可以用所有文本编辑器打开。
    • 兼顾了「什么人都能打开」和「样式」两个方面。Markdown 就是纯文本,就是 txt,所以什么人都能打开。而如上所述,你可以用它来标记文本的样式,而且语法非常简单。
    • 由于是纯文本格式,Markdown 文稿也不会因为未来软件升级而产生不同版本之间的兼容问题,即,不会出现「我这篇稿子是用旧版 Word 写的,你用新版 Word 看可能格式会有点问题」的情况。
  2. 让你专注于文字而不是排版,内容与格式分离。
  3. 格式转换方便。Markdown 的文本格式为 md,你可以轻松地将 md 转换为 html、pdf 等。
    • Markdown 转 HTML 非常方便。HTML 是整个万维网(web)的标记语言,但更重要的是,它也是目前主流电子书格式所用的标记语言。无论是 epub,mobi,还是 Kindle 用的专有格式 azw,都只是把一堆 HTML 文件打包而已。如果你写的是书,用 Markdown 标注格式之后,可以很方便地转为以上格式(当然这个转换工作不需要由你来做);如果你写的是单篇的文章(例如论文或者报告),未来也不排除结集出书的可能。若采用 Markdown,对于日后的文件转换工作也大有裨益。
    • 如何开始用 Markdown?继续用你习惯的写作软件即可。记事本、Word、Pages 都没问题,但请记得存成纯文本格式。就这么简单。
  4. Markdown 的标记语法有极好的可读性。

Markdown 的缺点

  Markdown 好像没有啥缺点,但如果说真要有的话,可能是没有 Word 那样支持特别多的格式。什么意思呢,比如你想要修改某些字的颜色,标准的 Markdown 语法是不支持的,当然,这是可以解决的,就是引入 HTML 的语法了。不过我感觉没有必要,因为,大家用 Markdown 写作一般都是为了记笔记日记这些东西,并不需要很多格式,而需要的是提供一个安静写作的场景,在这个场景里你不必为了排版而经常打断你的思绪。
  我相信,很多人看到这篇文章是为了论文排版。博主我曾经也尝试过用 Markdown+R 的方式排版过论文,不过,排出来的效果并不如 Word 排出来的符合论文标准。如果,大家想排出一份漂亮的科技论文,我在这里向大家隆重推出排版界的王者,LaTex。后面我也会出 LaTex 系列的文章和论文模板的。
  回到正题,虽然没有任何一个事物是完美的,也没有任何一个软件可以完成你所有的需求,但是如果你想找一个适合快速写作的软件,或者说是语法,那么 Markdown 绝对是你的不二之选。

Markdown 的基础语法

  听了这么多,是不是特别想学习呢。那话就不多说,下面正式开始我们的学习之旅。不过要注意一点的是,你自己做出来的效果可能和我不一样,这是因为我们采用了不同的主题,或者说是不同的 CSS 样式表所导致的。样式表的内容会在后面的教程里谈到的。

标题

  这是最为常用的格式,在平时常用的的文本编辑器中大多是这样实现的:输入文本、选中文本、设置标题格式。而在 Markdown 中,你只需要在文本前面加上 # 即可,同理、你还可以增加二级标题、三级标题、四级标题、五级标题和六级标题,总共六级,只需要增加 # 即可,标题字号相应降低。Markdown 支持 6 种级别的标题,对应 HTML 标签 h1 ~ h6。l例如:

# h1
## h2
### h3
#### h4
##### h5
###### h6

注意:

  1. # 和标题之间建议保留一个字符的空格,这是最标准的 Markdown 写法。以上标记效果如下:(为了不破坏本文的结构,采用图片的形式进行展示。采用 Typora 的 Pyxill 主题进行渲染。)

标题

  除此之外,Markdown 还支持另外一种形式的标题展示形式,其类似于 Setext 标记语言的表现形式,使用下划线进行文本大小的控制

这是一级标题
===
这是二级标题
---

  以上标记效果如下:(为了不破坏本文的结构,采用图片的形式进行展示。采用 Typora 的 Pyxill 主题进行渲染。)

标题

  这种处理方式在 Github 的一些开源工程上面比较常见,显而易见的缺点是:文字大小控制级别有限。

段落及区块引用

  需要记住的是,Markdown 其实就是一种易于编写的普通文本,只不过加入了部分渲染文本的标签而已。其最终依然会转换为 HTML 标签,因此使用 Markdown 分段非常简单,将你要分段的部分前后至少保留一个空行即可。
  而另外一个比较常见的需求就是,我们可能希望对某段文字进行强调处理。Markdown 提供了一个特殊符号 > 用于段首进行强调,被强调的文字部分将会高亮显示。例如:

> 如果你不相信努力和时光,那么时光第一个就会辜负你。不要去否定你的过去,也不要用你的过去牵扯你的未来。不是因为有希望才去努力,而是努力了,才能看到希望。

  其显示结果如下:

如果你不相信努力和时光,那么时光第一个就会辜负你。不要去否定你的过去,也不要用你的过去牵扯你的未来。不是因为有希望才去努力,而是努力了,才能看到希望。


注意:

  1. 聪明的你可能已经发现了,上面显示的引用效果和文章开头引用百度百科的效果是一样的。没错,本站所有文章均采用 Markdown 语法写作,而且大家在评论时也可以采用 Markdown 语法进行评论。这也是为什么第二篇文章写 Markdown 的原因之一了。至于我渲染出来的结果为什么跟你不一样,这是因为我们采用了不同的 CSS 进行调节,这一内容会在后面的教程进行讲解。
  2. 引用完后,一定记得空出一行再写其他东西,不然,你接下来写作的内容也都在引用内容里。
  3. > 与你要引用的文字之间一定有一个空格,不然会被认为是普通的文本。> 前面不能有文字,必须单独一行才能引用。

目录

  Markdown引入目录非常简单,只需要在你想加入目录的地方输入 [TOC] 就可以了。

首行缩进方法

  在用中文写文章时,我们通常习惯段首缩进两个字,但是使用 Markdown 编辑时我们手打空格缩进是不起作用的,因此我们需要通过使用 HTML 中的空格实体来帮助我们实现缩进效果。
  为了让本文不那么难以理解,这一部分我只打算讲一个,也是我比较推荐的一个, 。一个汉字占两个空格大小,所以使用四个空格就可以达到首行缩进两个汉字的效果。而一个   代表两个空格,所以用两个   就代表两个汉字、四个空格了。

分割线

  分割线可以由 *-_ (星号,减号,底线)这 3 个符号的至少 3 个符号表示,注意至少要 3 个,且不需要连续,有空格也可以。例如:

***
---
___
* * *
****

  其显示结果如下:






粗体和斜体

  Markdown 的粗体和斜体也非常简单,用 ** 或者 __ 包含一段文本就是粗体的语法,用 * 或者 _ 包含一段文本就是斜体的语法。例如:

*始于颜值、陷于才华、忠于人品*
_始于颜值、陷于才华、忠于人品_
**始于颜值、陷于才华、忠于人品**
__始于颜值、陷于才华、忠于人品__

  其显示结果如下:

始于颜值、陷于才华、忠于人品

始于颜值、陷于才华、忠于人品

始于颜值、陷于才华、忠于人品

始于颜值、陷于才华、忠于人品

删除线

  用 ~~ 包含一段文本就是删除线了。例如:

~~请删除我~~

  其显示结果如下:请删除我

列表

  Markdown 支持有序列表和无序列表两种形式:无序列表使用 *+- 标识;有序列表使用数字加 . 标识。例如:

* 黄瓜
* 玉米
* 茄子

+ 黄瓜
+ 玉米
+ 茄子

- 黄瓜
- 玉米
- 茄子

1. 黄瓜
2. 玉米
3. 茄子

1. 黄瓜
1. 玉米
1. 茄子

3. 黄瓜
2. 玉米
1. 茄子

  其显示结果如下:

  • 黄瓜
  • 玉米
  • 茄子

  • 黄瓜
  • 玉米
  • 茄子

  • 黄瓜
  • 玉米
  • 茄子

  1. 黄瓜
  2. 玉米
  3. 茄子

  1. 黄瓜
  2. 玉米
  3. 茄子

  1. 黄瓜
  2. 玉米
  3. 茄子

注意:

  1. 有序表不用 1. 2. 3. 这样排下去,可以直接 1. 1. 1. 这样,如果以 3. 开头,如 3. 2. 1. 这样,那么结果是 3. 4. 5.。即以什么数字开头,结果就以什么数字开头,后面的数字可以随便写。如果中间要再插入一项,就不用修改整个列表的序号了。

  如果需要写多级列表,这可以用缩进的办法实现,例如:

1. 动物
  1. 哺乳动物
  1. 爬行动物
  1. 鸟类
  1. 其他
1. 植物
  1. 被子植物
  1. 裸子植物
  1. 其他

  其显示结果如下:

  1. 动物
    1. 哺乳动物
    2. 爬行动物
    3. 鸟类
    4. 其他
  2. 植物
    1. 被子植物
    2. 裸子植物
    3. 其他

代办清单 To-do List

  你可以在 Markdown 中编写代办清单,相关代码如下:

- [x] 已完成项目1
  - [x] 已完成事项
  - [ ] 代办事项
- [ ] 代办项目2
- [ ] 代办项目3

  其显示结果如下:

  • 已完成项目1
    • 已完成事项
    • 代办事项
  • 代办项目2
  • 代办项目3

插入链接

  Markdown 针对链接的处理比较简单,可以使用下面的语法进行标记:

[点击跳转至百度](http://www.baidu.com)

  其显示结果如下:点击跳转至百度

Markdown 的高级语法

  通过上一节的讲解,我们现在已经可以进行简单的纯文字写作了。你可能想问,Markdown 只能处理纯文本吗,那如果我想插入表格,图片,公式等等该怎么办。不要急,Markdown 虽然语法简单,但是功能很强大的,上面的这些需求完全可以满足。

插入图片

基本用法

![当链接内容不存在时显示的内容](http://i1.fuimg.com/695542/42e94e685ed0a68f.jpg)

  其显示结果如下:
当链接内容不存在时显示的内容

加入图名和居中对齐

  Markdown 图片默认左对齐,如果需要居中对齐,就需要采用 HTML 的语法了(注:博主采用了样式表,使图片默认居中,显示图名)。语法如下:

<div align="center"><img src="http://i1.fuimg.com/695542/42e94e685ed0a68f.jpg"></br>鬼刀</div>

鬼刀

控制图片大小

<img src = "http://i1.fuimg.com/695542/42e94e685ed0a68f.jpg" width = 50%/>

  其显示结果如下:

其他

  主要采用的是HTML标记语言和CSS样式表来控制图片格式的。本系列教程不涉及这些,如果你有需要,可以点击HTML图片 | 菜鸟教程CSS图片 | 菜鸟教程 进行学习。

图床

  如果你要分享你的 Markdown 文档,那么为了保证你精心编排的图片能够正常显示,你只能用网上的图片,因为你分享的 Markdown 文档里面只有图片的地址,却没有图片本身。可这就带来了一个问题,你不可能只插入网上的额图片,你的照片,图纸等等文件都只在你的个人电脑里,而没有在网上,所以这影响分享。
  解决办法有两个:

  1. 转成 PDF。方便分享,但不易修改。
  2. 将图片上传到图床(类似于网盘的东西),然后引用图床提供的图片链接。

表格

  表格是 Markdown 语法中比较复杂的一个,也是我们平常常用的样式之一,但也不是无迹可寻。

基本用法

  • 使用 | 来分隔不同的单元格,使用 - 来分隔表头和其他行。
  • 为了美观,可以使用空格对齐不同行的单元格,并在左右两侧都使用 | 来标记单元格边界。
  • 在表头下方的分隔线标记中加入 :,即可标记下方单元格内容的对齐方式。
    • :--- 代表左对齐
    • :--: 代表居中对齐
    • ---: 代表右对齐

  例如:

| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is      | right-aligned | $1600 |
| col 2 is      | centered      |   $12 |
| zebra stripes | are neat      |    $1 |

  其显示结果如下:

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

  例如:

dog | bird | cat
----|------|----
foo | foo  | foo
bar | bar  | bar
baz | baz  | baz

  其显示结果如下:

dog bird cat
foo foo foo
bar bar bar
baz baz baz

注意:

  1. |-: 之间的多余空格会被忽略,不影响布局。
  2. 默认标题栏居中对齐,内容居左对齐。
  3. -: 表示内容和标题栏居右对齐,:- 表示内容和标题栏居左对齐,:-: 表示内容和标题栏居中对齐。
  4. 内容和 | 之间的多余空格会被忽略,每行第一个 | 和最后一个 | 可以省略,- 的数量至少有一个。

加入表头

  Markdown 默认语法里面没有关于表头的,但如果我们需要有表头,那该怎么办呢。通过图片章节的学习,我想你应该知道解决办法了。对,没错,就是 HTML + CSS。点击 HTML 表格 | 菜鸟教程 进行学习。

其他

  相信学到这里,已经有很多人有这样的疑问了。既然 Markdown 能干的事,HTML 能干,Markdown 不能干的事,HTML 也能干,那我为什么不直接学 HTML 呢。下面引用CSDN用户哈哈哈哈哈哈哈哈哈哈哈哈哈的对比进行说明,点击原文进行查看。

  Markdown 是标记语言,类似于 HTML,和 CSS 没关系。你所看到的各种 Markdown 编辑器显示的样式都是转换为 HTML 后加上 CSS 显示的。
  Markdown 流行起来就是因为它简单。不知道有没有直接用 HTML 写文章或是论文的,反正我是没见过,但是 Markdown 可以。更容易理解的解释是,当你想快速写篇丰富格式且又美观的文章,却又不想打开 Word 时,你可以用 Markdown,手不离键盘,快速高效。而转换为 HTML 只是它的实现形式而已。
优点

  1. 它语法简单,能快速编写,几分钟就能了解它的全部语法。相对另一种标记语言 HTML 各种复杂的标签,Markdown 对使用者更加友好。相对于平时用的 Word 的各种密密麻麻的按钮(你肯定见过好多 Word 培训的书),它编写起来更快,更简单。
  2. 它能直接阅读,而没有 HTML 的各种标签的干扰。就算不转换成 HTML 看起来也毫无压力啊!语法简单,能快速编写,直接阅读,这就是我指的简单直观。

缺点

  1. 也是它的简单直观。

  Markdown 表格的绘制比较麻烦,需要输入很多符号。我会在后面的文章介绍与 Markdown 搭配的软件,这些软件会极大的提高你写作的效率。

插入代码块

  Markdown 在 IT 圈子里面比较流行的一个重要原因是,它能够轻松漂亮地插入代码,其实我在前面已经多次向大家展示了代码块的最终效果。代码块的语法特别简单,只要把你想要展示的代码片段用 ` 包裹就可以了。
  行内代码用一个 ` 包裹,如 var y=x^3+2
  如果要插入一整段代码,就需要至少三个 ` 进行包裹,如:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

num=[];
i=2
for i in range(2,100):
  j=2
    for j in range(2,i):
      if(i%j==0):
        break
      else:
        num.append(i)
print(num)

  上面的例子就是输出100以内的素数的Python代码。


注意:

  1. 在代码前面,三个反引号后面填写你插入代码的类型,如 Markdown、Python,这样就可以高亮你的代码块了。
  2. 很多人不知道怎么输入反引号。在英文模式下,找到键盘最左侧 esc 键下面的第一个键点击即可。

数学公式

  Markdown 可以插入 LaTex 数学公式,这一点我非常的喜欢,因为我是先学习了 LaTex,然后再接触到 Markdown 的,Markdown 几乎支持 LaTex 的所有数学公式语法。至于 LaTex 是什么,我会在后面的文章进行介绍,现在你只要知道 Markdown 适合记一些笔记,写一些文字,但它并不适合写论文,而 LaTex 就是为排版而生的。
  下面引用百度百科的介绍:

  LaTeX(LATEX,音译 “拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利・兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。

  从百度百科的介绍中我们可以知道,LaTex 非常适合生成复杂的数学公式,理工科的同学看到这点是不是很激动啊。在 Word 里面输入公式,我们一般会用到 Mathtype 这个插件,但每次都需要点很多次才能输入我们想要的公式,这严重影响到了我们的思绪。而 LaTex 只需要记住少量的代码,就可以非常流畅且快速的书写数学公式了。我曾在知乎上面看到过这样的介绍,「1700 页数学笔记火了!全程敲代码,速度飞快易搜索,硬核小哥教你上手 LaTeX+Vim」,虽然有 Vim 这样的编辑器之神(此处多说几句,自从用上Vim后,对其他编辑器的操作方式再也没正眼瞧过,看我文章的应该没有Emacs党吧)加持,但依然从侧面说明了 LaTex 在书写数学公式方面的强大和易用。
  由于数学公式语法较多,后面我会在 LaTex 系列专门写一篇文章进行介绍,这里就展示几个例子。

  • 行内公式:将公式插入到本行内,用一个美元符号包裹公式。
  • 独行公式:将公式插入到新的一行内,并且居中,用两个美元符号包裹公式。
%欧拉公式
$$e^{i\pi}+1=0$$

%薛定谔方程
$$
i \hbar \frac{\partial}{\partial t} \Psi(\boldsymbol{r}, t)=-\frac{\hbar^{2}}{2 m} \nabla^{2} \Psi(\boldsymbol{r}, t)+V(\boldsymbol{r}, t) \Psi(\boldsymbol{r}, t)
$$

$$e^{i\pi}+1=0$$

$$
i \hbar \frac{\partial}{\partial t} \Psi(\boldsymbol{r}, t)=-\frac{\hbar^{2}}{2 m} \nabla^{2} \Psi(\boldsymbol{r}, t)+V(\boldsymbol{r}, t) \Psi(\boldsymbol{r}, t)
$$

特殊符号处理

  Markdown 使用反斜杠 \ 插入语法中用到的特殊符号。在 Markdown 中,主要有以下几种特殊符号需要处理:

  1. \ 反斜线
  2. ` 反引号
  3. * 星号
  4. _ 底线
  5. {} 花括号
  6. [] 方括号
  7. () 括弧
  8. # 井字号
  9. + 加号
  10. - 减号
  11. . 英文句点
  12. ! 惊叹号

总结

  Markdown 的语法简洁明了,但功能却很强大。半个小时了解语法,一天就可以掌握了,性价比简直不要太高。

Markdown 软件推荐

  对于初学者,我推荐你使用Typora,无论是 OS X 系统,还是 Windows 系统,还是 Linux 系统,都有相应的版本。Typora 的优点太多了,我列举了几点:

  • 简洁美观
  • 实时预览
  • 扩展语法
  • 跨平台
  • 免费

  点击 Markdown 编辑器介绍了解更多优秀的工具。顺手的编辑器会让你的写作更加丝滑,快来挑选属于你的编辑器吧。

Markdown 转 PDF

  写完 Markdown 后,如果我想和别人分享我的文章怎么办呢,如果别人没有 Markdown 渲染的软件又该怎么办呢。不要急,点击 Markdown 转 PDF 链接进行学习。


   转载规则


《排版利器 —— Markdown 语法总结》 Huang Pan 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录