一、什么是 Markdown?
Markdown 是一种轻量级的 标记语言,相对于复杂的 HTML 而言,M↓ 易读易写,非常容易学习掌握。
所谓标记语言,就是标识一段文本在文档中的性质的代码。譬如上文中加粗的 标记语言
四个字,在 HTML 中就用 <strong>标记语言</strong>
来标识;又比如一级标题 一、什么是 Markdown?
在 HTML 中就用 <h1>一、什么是 Markdown</h1>
来标识。
从上述例子中可以看出,使用 HTML 非常繁琐。M↓ 对这些标记符号进行了简化处理,非常容易掌握,同时让作者更专注于内容而不是格式,并且源文件阅读起来清晰明了。
可见 M↓ 来源于 HTML,但它不会取代 HTML。因为 M↓ 只对应 HTML 标记的一小部分。但是,不在 M↓ 涵盖范围之内的 HTML 标签,都可以直接在文档里直接撰写。如使用 <kbd>M</kbd>
标签输入 M 键。
二、标准 Markdown 的语法规范
M↓ 语法形式并不单一,譬如 -
、 +
与 *
都可以作为无序列表的标记。本文只选取其中一种形式介绍。
1、标题
# 1级标题
## 2级标题
### 3级标题
根据 #
的数目可以支持 1-6 级标题。
2、段落与强制换行
一行后紧跟两个空格
可以实现换行,否则
只视作一个空格,无法完成换行。
新段落需要额外空一行。
一行后紧跟两个空格
可以实现换行,否则
只视作一个空格,无法完成换行。
新段落需要额外空一行。
3、加粗、斜体以及删除
__加粗__ 、 _斜体_ 以及 ~~删除~~
加粗 、 斜体 以及 删除
4、列表
- Markdown 支持:
1. 有序列表;
2. 无序列表;
- 列表允许嵌套。
- Markdown 支持:
- 有序列表;
- 无序列表;
- 列表允许嵌套。
5、引用与转义符号 \
> Markdown 使用 `\` 插入一些特殊符号,如 \`
Markdown 使用
\
插入一些特殊符号,如 `
6、代码与强制换行
```markdown
区块代码有两种方式:
1、左侧统一缩进四个空格;
2、用```包围,并可注明语言。
```
段内代码由 ` 包围,如上述的「Markdown 使用 \
插入一些特殊符号」。
7、超链接、分割线与图片
[博客地址](http://blog.zhaohengbo.com/)
---

三、扩展的 Markdown 方言
随着 M↓ 的不断发展,不断有人对其语法进行扩展,其中最重要的就是对表格的支持:
| 项目 | 单价 | 数量 |
| :-- | :--: | --: |
| 计算机| \$1600| 15 |
| 手机 | \$120 | 340 |
项目 | 单价 | 数量 |
---|---|---|
计算机 | $1600 | 15 |
手机 | $120 | 340 |
不少 Markdown 方言用 [TOC]
生成文章导航目录,而 kramdown 则使用下面的方法:
* TOC
{:toc}
默认生成的目录列表会添加 id 值 markdown-toc
,可以通过 {:toc #my-id}
自定义;目录深度可以通过往 _config.yml 文件中添加 toc_levels 选项来定制,默认为 1..6
,表示标题一至标题六全部渲染;如果要把某一标题从文章导航中排除,则在该标题的下一行写上 {:.no_toc}
。
从上述示例可见 M↓ 扩展语法的实现方法并不统一;除此之外,不同方言支持的语法类型并不完备。
- 常见的扩展语法类型
- 脚注1、缩略语(如 M↓)、流程图、时序图、定义型列表(如本例)、上下标、任务清单等等。
常见的扩展语法类型
: 脚注[^footnote]、缩略语(如 M↓)、流程图、时序图、定义型列表(如本例)、上下标、任务清单等等。
[^footnote]: 这里是脚注
*[M↓]: Markdown
四、Markdown 编辑平台简介
M↓ 已被许多平台支持,如 Typora2、StackEdit3、Classeur4、、GitHub5、Pandoc6、作业部落7、为知笔记8、博客园9、简书10、小书匠11、马克飞象12等。
其中,简书暂不支持 LaTex 公式13,如 $c^2=a^2+b^2$ 。需要与数学公式打交道的可以直接排除;StackEdit、小书匠功能虽然强大到爆炸,但遗憾的是没有移动端;为知笔记可以实现手机电脑同步,并且也拥有多样化的功能,推荐普通用户使用。
值得一提的是 Pandoc,Pandoc 支持多种格式的互相转化。如命令 pandoc file.md -o file.docx
可将 M↓ 编辑的文档转化为 word 格式。