Fork me on GitHub

GitHub Pages:https://zhouie.cn/markdown-doc/

1. 认识 Markdown1.1 Markdown的优点1.2 Markdown 的现状1.3 Markdown官方文档2. 使用Markdown2.1 标题2.2 加粗、斜体 和 删除线2.3 列表2.4 引用2.5 分割线2.6 插入链接2.7 插入图片2.8 表格2.9 角标2.10 上下标2.11 直接链接与邮箱2.12 换行2.13 反斜杠2.14 代码高亮2.15 其他2.15.1 锚点2.15.2 空格2.15.3 图片图床2.15.4 LaTeX公式行内公式(`$`表示)整行公式(`$$`表示)2.15.5 流程图、渲染序列图流程图渲染序列图2.15.6 GitHub Emoji2.16 Markdown的局限性3. Markdown 工具的选择3.1 Windows 平台3.1.1 Sublime3.1.2 简书3.1.3 Cmd Markdown3.1.4 马克飞象3.1.5 为知笔记3.1.6 Simple MarkPad3.1.7 MarkPad3.1.8 Miu3.2 Mac 平台3.2.1 Mou3.2.2 Ulysses3.2.3 Byword3.2.4 typora3.2.5 Quiver3.2.6 Alternote3.2.7 SnippetsLab3.2.8 MarkdownPad3.3 网页版(线上)3.4 Others3.5 More4. 推荐阅读5. 补充

1. 认识 Markdown

HTML ( HyperText Markup Language ) 作为一种超文本标记语言 ( Markup Language ) 应运而生,无数的网页从此有了主次分明,层次清晰的格式。
如果将 HTML 比作一架重机枪,那么 Markdown 就是一把手枪,满足了主要的文本格式标记的需求,可是操作性却大大简化。
秉承 易读易写 的宗旨,Markdown 作为一种轻量级标记语言 ( Lightweight Markup Language ) ,让无数的程序猿和文字工作者爱不释手。

1.1 Markdown的优点

1.2 Markdown 的现状

有时候一件事情的真相,不是来自于对它的思考,而是来自于对它的感觉。
——Stanley Kubrick

这是 John Grumber 最喜欢的用来解释 Markdown 设计初衷的一句话,Markdown 语言希望带来的就是纯粹的写作的感觉,旨在简洁、高效,也由于 Markdown 的易读易写,人们用不同的编程语言实现了多个版本的解析器和生成器。

目前不同的 Markdown 工具集成了不同的功能(但基础功能大致相同),例如 流程图时序图复杂表格复杂公式 的呈现。
我相信随着 Markdown 语法的逐渐普及开来,以后更多的平台会支持 Markdown 书写模式,并集成更加完整的功能模块。

虽然功能的 “丰富” 并没有什么本质的缺点,但这个程度一旦 “过” 了头,终归有些背离初衷,与 “易读易写” 出现矛盾,开始在编写的过程中觉得有些许吃力了。那这个时候,用户可能会觉得,不如使用专业化的工具来撰写更有效率。

1.3 Markdown官方文档

了解一下 John Gruber

2004 年 John Gruber创造 Markdown 语言,14年间,Markdown 语言从程序员圈子中逐渐扩散开来,成为了越来越多的电脑写作者第一选择。

John Gruber 是一个资深果粉,他的个人博客 Daring Fireball 被人戏称为 苹果官方喉舌博客。所以你应该懂为什么最好的 Markdown 编辑器都集中在 Mac 平台上了吧。


2. 使用Markdown

2.1 标题

Markdown 通过在行首添加 1 ~ 6个 # 符号来定义不同级别的标题,最多到六级标题。
注意 :# 后最好是需要加一个空格。

特别的,还可使用 = (高阶标题) 和 - (次阶标题) 标记 一级 和 二级 标题。
注意:=- 的个数在不同 Markdown 工具中都有不同,但这倒不是多大的问题了,简单试试就知道了。

2.2 加粗、斜体 和 删除线

2.3 列表

Markdown支持 无序列表 和 有序列表。
无序列表可以使用 *+- 三者中任意符号来标记;有序列表则使用 数字. 来标记。
注意:标记后面最好是需要加一个空格,有序列表的数字会被按顺序自动更正。通常情况下,无序列表的项目符号是按照实心圆、空心圆、实心方格的层级关系递进的。

2.4 引用

在段落前添加一个 > 符号即可将该段落标记为引用
注意: > 后最好是需要加一个空格;>>>>>> 等多层嵌套的使用,有点不太好总结,不要问我为什么,实践出真知。

2.5 分割线

分割线最常使用就是三个或以上 * ,还可以使用 -_
注意:使用 --- 作为水平分割线时,要在它的前面空一行,防止 --- 被当成标题标记的表示方式。

2.6 插入链接

markdown文本中插入链接非常方便,有 文内链接引用链接 两种方式。

注意:文内链接 和 引用链接 显示效果是一样的,但是在编辑状态下的使用情况不一样。文内链接紧跟链接文字,可以在看到链接文字的同时清楚的知道链接地址,但是不便于多次重复利用。

引用链接可以重复使用,但一般都是将一些链接放在一起统一管理,如一段文字后面或文章结尾,因此在找到链接和链接文字的对应关系上有些麻烦,各有利弊,分情况使用吧。

2.7 插入图片

插入图片和插入链接非常类似,只是在方括号前多一个 !

![Alt text](/path/to/img.jpg "Optional title")

注意:Markdown 语法目前还没有某种合适的办法指定图片的宽高,但据我所知,很多平台以及在这个方向作出相当多的改进了,一起期待吧!

文内链接
![idol](http://upload-images.jianshu.io/upload_images/9934558-b0c6b00935a0af53.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
引用链接
![idol][idol]
[idol]: http://upload-images.jianshu.io/upload_images/9934558-fb9d1c8bfee4bb02.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

2.8 表格

表格的书写格式一目了然,还是很方便简洁的。

2.9 角标

不同于前面说的链接,这里的角标内容会被放在文末,点击可以实现跳转,使用 [^] 来定义脚注。

2.10 上下标

<sub><sup> 用作表示上下标

2.11 直接链接与邮箱

在 markdown 中将 链接地址 或 邮箱地址 用 <> 包围,则会被自动转换成可点击的链接地址。

2.12 换行

使用html标签 <br/><br> 换行

2.13 反斜杠

如果需要避免文本中的符号被当做 markdown 标识符而发生不必要的格式转化,可以在符号前加 \ 来避免。

整理一下,Markdown 支持以下这些符号前面加上 反斜杠 \ 来帮助插入普通的符号:

符号 含义
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号

2.14 代码高亮

使用栅栏标记代码块的一个好处是可以标明代码的语种,然后实现代码的高亮。

    ```ruby
    require 'redcarpet'
    markdown = Redcarpet.new("Hello World!")
    puts markdown.to_html
    ```

2.15 其他

2.15.1 锚点

网页中,锚点 其实就是页内超链接,也就是 链接本文档内部的某些元素 ,实现当前页面中的跳转,最典型的例子就是 目录 这种结构了。比如我这里写下一个锚点,点击 回到目录,就能跳转到 目录。 在 目录 中点击 这一节,就能跳过来。

Githubmd 文件中,会为每个 h1~h6 标签(即 # ... ###### ),自动塞入一个 a 标签,并渲染好 id

比如 # h1,被渲染成html如下:

<h1>
  <a id="user-content-h1" class="anchor" href="#h1" aria-hidden="true">
      <svg aria-hidden="true" class="octicon octicon-link" height="16" role="img" version="1.1" viewBox="0 0 16 16" width="16">
        <path d="M4 9h1v1h-1c-1.5 0-3-1.69-3-3.5s1.55-3.5 3-3.5h4c1.45 0 3 1.69 3 3.5 0 1.41-0.91 2.72-2 3.25v-1.16c0.58-0.45 1-1.27 1-2.09 0-1.28-1.02-2.5-2-2.5H4c-0.98 0-2 1.22-2 2.5s1 2.5 2 2.5z m9-3h-1v1h1c1 0 2 1.22 2 2.5s-1.02 2.5-2 2.5H9c-0.98 0-2-1.22-2-2.5 0-0.83 0.42-1.64 1-2.09v-1.16c-1.09 0.53-2 1.84-2 3.25 0 1.81 1.55 3.5 3 3.5h4c1.45 0 3-1.69 3-3.5s-1.5-3.5-3-3.5z">
        </path>
      </svg>
    </a>
    h1
</h1>

不去管 svg 部分,可以看到 h1 标签内嵌入了一个 id"user-content-h1"a 标签,如果标题为 # h5 ,那么 id 就会是 user-content-h5

2.15.2 空格

在段首加入 &emsp;&ensp;&nbsp; 来输入空格,其中,&emsp; 是一个中文字符,&ensp; 是半个中文字符 ,&nbsp; 是1/4中文字符。

2.15.3 图片图床

插入图片的地址需要图床,那么,究竟什么是图床呢?

图床,顾名思义,图片床,即大量图片汇聚地,每一张图片都有一个url,供所需站点使用。

详情可以参考我之前写的博文 图床工具分享

另外,越来越多的 Markdown 工具现在开始支持 一键上传图片至云端并生成 Markdown 引用链接至剪切板,可以看看最近的我最近在这方面的 收获总结 —— Md2All Markdown排版利器 以及 qiniu_upload windows工具

ps:七牛云邀请注册链接:https://portal.qiniu.com/signup?code=3lowm9s25ur82

2.15.4 LaTeX公式

行内公式(`$`表示)
    爱因斯坦发明的质能方程是:$E=mc^2$
整行公式(`$$`表示)
    $$\sum_{i=1}^n a_i=0$$
    $$f(x_1,x_x,\ldots,x_n) = x_1^2 + x_2^2 + \cdots + x_n^2 $$
    $$\sum^{j-1}_{k=0}{\widehat{\gamma}_{kj} z_k}$$

2.15.5 流程图、渲染序列图

流程图
    ```flow
    st=>start: Start:>https://www.zybuluo.com
    io=>inputoutput: verification
    op=>operation: Your Operation
    cond=>condition: Yes or No?
    sub=>subroutine: Your Subroutine
    e=>end

    st->io->op->cond
    cond(yes)->e
    cond(no)->sub->io
    ```
流程图 显示效果图
流程图 显示效果图
渲染序列图
    ```sequence
    Alice->Bob: Hello Bob, how are you?
    Note right of Bob: Bob thinks
    Bob-->Alice: I am good thanks!
    `
``
渲染序列图 显示效果图
渲染序列图 显示效果图

2.15.6 GitHub Emoji

Github 的 Markdown 语法支持添加 emoji 表情,输入不同的符号码(两个冒号包围的字符)可以显示出不同的表情。
我在 github 上分享了 markdown-emoji 列表,可以去看看。

markdown-emoji 列表
markdown-emoji 列表

可是奇怪的是,我的GitHub Pages 采用 Hexo框架,渲染不出 emoji 表情(不支持),这是为什么呢?

这是因为 Hexo 默认的 markdown 渲染引擎不会渲染 emoji 表情,详情可参阅 搭建Hexo博客进阶篇

2.16 Markdown的局限性


3. Markdown 工具的选择

还是那句话,编辑器的兴盛固然是好事,但工具的过度丰富也是一种麻烦,如何选出适合自己的 Markdown 编辑器让很多人大伤脑筋,甚至在很多时候,一个设计不佳的 Markdown 编辑器会让初次尝试 Markdown 的写作者放弃使用 Markdown 来写作。

3.1 Windows 平台

3.1.1 Sublime

3.1.2 简书

3.1.3 Cmd Markdown

3.1.4 马克飞象

3.1.5 为知笔记

3.1.6 Simple MarkPad

3.1.7 MarkPad

3.1.8 Miu

3.2 Mac 平台

3.2.1 Mou

3.2.2 Ulysses

3.2.3 Byword

3.2.4 typora

3.2.5 Quiver

3.2.6 Alternote

3.2.7 SnippetsLab

3.2.8 MarkdownPad

3.3 网页版(线上)

同时,也有一些 Markdown 相关浏览器插件也是很棒的,最典型的便是:Markdown-Here,我也有写一篇博文专门介绍分享了它 —— Markdown-Here md-2-html渲染

3.4 Others

3.5 More

如有更好的 Markdown 免费编辑器推荐,请到这里留言反馈,谢谢~


4. 推荐阅读


5. 补充

2018/04/20 07:12

Markdown_desktop_tool_rank.png
Markdown_desktop_tool_rank.png

2018/08/05 20:36

整理于2015年
整理于2015年

1: Markdown是一种纯文本标记语言

2: HyperText Markup Language 超文本标记语言

[Le]: 开源笔记平台,支持Markdown和笔记直接发为博文