20分钟Markdown入门教程

20分钟Markdown入门教程

Markdown是一种轻量级标记语言,允许人们使用易读易写的纯文本格式编写文档,现在很多Markdown编辑软件还支持各种css(Cascading Style Sheets,层叠样式表)导出成HTML网页或者pdf文件等。

Markdown原生语法支持富文本的各种基本格式:加粗斜体、插入图片、表格、超链接、列表等等,还可以通过扩展语法支持删除线、上^标^、下 、LaTeX公式、流程图等等。

另外,Markdown天生支持HTML语法,比如我常用的一段转pdf文件时用的分页代码如下。

1
<div style="page-break-after: always;"></div>

和类似于Microsoft Word这种文本编辑软件相比,Markdown要轻量的太多了,它不需要特别的软件,使用普通记事本就可以编写,只不过最终渲染后文档效果,依赖于具体软件css样式表呈现。

编辑软件

我们常在各类软件的安装目录或者源代码目录看到*.md,就是Markdown文档格式。

你用文本编辑器打开时这就是个普通的文本文件,有些特殊的符号标记,而换成Markdown编辑器打开时就可以看到最终效果了。

  • 电脑端软件,这里推荐跨平台的免费软件Typora,所见即所得,反应迅速,特别棒。如果简单点,使用印象笔记电脑端也可以新建Markdown,只是时间长了,使用过程中会出现卡顿,好处是各个平台移动端随时查看(无法编辑)比较方便。

  • Android端,推荐坚果云Markdown纯纯写作Memorize,其中只有坚果云Markdown是个单纯的文档编辑软件,后两者一个是写作一个是日记,但对Markdown支持都比较好。之前纯纯写作特价买的,现在比较贵了。

  • iOS端,推荐坚果云Markdown小章鱼MWeb,坚果云的理由还是跨平台同步,MWeb和小章鱼都有自己文档库管理,支持iCloud,MWeb免费版有所限制,没法在网盘创建新文档,但是优势是macOS端软件功能强大。小章鱼真的是让我惊艳,免费软件,界面做的清新优美,和android端的纯纯写作不相伯仲,记得在一开始安装时允许通过邮箱找到,不然会影响iCloud同步,而且似乎找不到重新触发的方式😂。

总的来说,多个平台间同步文档可以用网盘同步文件夹来解决,这时坚果云的优势就出来了,可以把坚果云理解成国内版的dropbox,很强大。

Markdown基本语法

标题与正文

Markdown通过#作为前缀表示标题级别,不带修饰的就是正文格式,通常两个回车换行表示新段落,或者说叫一个block块,(也就是段落间有一个空白行)。

一级标题h1 # 一级标题

二级标题h2 ## 二级标题

三级标题h3 ### 三级标题

四级标题h4 #### 四级标题

五级标题h5 ##### 五级标题

这是正常的普通正文格式,需要一个空白行表示分段。

这是第二段文字。

另外,markdown并不支持首行缩进,一般这是由渲染预览样式的css实现。如果十分迫切的想要加上首行缩进,可以使用html中的&nbsp;来实现,一个&nbsp;代表一个空格。

分割线(---)通常一个空行加上用连续的三个以上短横线或者星号表示分割线。注意短横线前面不应有任何字符,包括空格。

效果如下:


基本格式与扩展

类似html语法,markdown也使用前后标记包裹的方式定义文字格式。

加粗**加粗**)、斜体*斜体*)是markdown文档里最常用的强调格式了。

还有通用扩展语法支持的删除线删除线)和==高亮==(==高亮==)。

而上^角标^(上^角标^)和下角标下~角标~)这些扩展语法和编辑软件支持有关系,并不是很通用,不同编辑器实现并不相同。

行内代码与代码块

语法如下:

1
2
3
4
5
`这是行内代码`

```语言名称(c、cpp、java等)
这是一段代码
会按照语言名称进行高亮显示
1
2
3
4
5
6
7
8
9
10
11

### 引用文字

引用段落以`>`开头,若引用一篇包含多段的文字,建议多段文字以空行间隔开,因为markdown默认以空行作为分段标志,有些软件渲染时会把不加空行的两个段落连接成一段。同时,空行前也加上`>`,否则,会在渲染时视作两个单独段落的引用。

​```markdown
> 这是一个引用段落。
>
> 如果引用一个多段文字,建议多段文字以空行间隔,防止不同软件渲染时认为是一段文字。

> 同时,空行也需要加上`>`,防止不同软件渲染时当作两个段落引用。

效果如下:

这是一个引用段落。

如果引用一个多段文字,建议多段文字以空行间隔,防止不同软件渲染时认为是一段文字。

同时,空行也需要加上>,防止不同软件渲染时当作两个段落引用。

列表与待办

列表包括有序列表和无序列表,待办是无序列表的一种。

有序列表

1
2
3
4
5
1. 数字+英文句号+空格,就组成了有序列表项的基本元素
2. 这就是有序列表的示例
3. 有些软件需要额外空行表示一个列表项结束
1. 可以用`TAB`键缩进,来表示次级列表
2. 这是一个次级列表项

效果如下:

  1. 数字+英文句号+空格,就组成了有序列表项的基本元素
  2. 这就是有序列表的示例
  3. 有些软件需要额外空行表示一个列表项结束
    1. 可以用TAB键缩进,来表示次级列表
    2. 这是一个次级列表项

无序列表

1
2
3
4
5
6
* 无序列表项通常以`-``+``*`开头,加上空格为起始
- 缩进表示次级列表项
+ 我通常习惯一个级别的无序列表统一一种符号起始,但混用也没关系
* 待办列表通常以`- [ ]`加空格为起始,最前面的`- `便是无序列表的起始,也可以改成`+`或者`*`
- [ ] 中括号中包含空格,表示未完成
- [x] 中括号中包含x,则表示已完成

效果如下:

  • 无序列表项通常以-+*开头,加上空格为起始
    • 缩进表示次级列表项
    • 我通常习惯一个级别的无序列表统一一种符号起始,但混用也没关系
  • 待办列表通常以- [ ]加空格为起始,最前面的- 便是无序列表的起始,也可以改成+或者*
    • 中括号中包含空格,表示未完成
    • 中括号中包含x,则表示已完成

链接与图片

链接

基本的网址超链接,语法如下:

1
2
[超链接文本描述](超链接地址 "超链接提示")
[必应](https://www.bing.com "微软必应")

效果如示:必应

图片

图片的本质也是链接,用图片的语法告诉编辑器图片文件的地址,编辑器自己就会处理图片的显示问题。

语法类似超链接,在之前多一个感叹号:

1
2
![图片名称](图片路径 "图片提示")
![I love MD](https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRN4x6j51UkoIw18k0xO_9lm08qBr060A_wbNLg00zLk0666j7S&usqp=CAU "I love markdown")

图片路径可以是本地文件路径,也可以是图片的网址。效果如下:

I love MD

目录与脚注

目录和脚注也可以看成是特殊的链接,只不过由编辑器替你实现。

目录

目录语法超级简单,会按照标题h1、h2等级别自动生成。但是也得看编辑器支持与否。

1
[TOC]

效果如下:

[TOC]

脚注

脚注的语法特殊一些,包含两个部分:

  1. 脚注标号,通常在行末加上[^脚注名称]
  2. 单独写脚注信息,如[^脚注名称]: 这是一条脚注信息注意是英文冒号且后面有一个空格

效果如示:这是一个的脚注示例。[^脚注名称]
[^脚注名称]: 这是一行脚注信息。

表格

表格的语法用一堆-|表示横线和竖线。

1
2
3
4
|  表头1  |表头2  |
| --- | --- |
| 这是表格内容 | 上面短横线表示表头的分隔 |
| blablabla | 想要更多列就在右侧每行多一个英文竖线 |

效果如下:

表头1 表头2
这是表格内容 上面短横线表示表头的分隔
blablabla 想要更多列就在右侧每行多一个英文竖线

流程图

这里画流程图使用的是mermaid(🧜‍♀️)库,其实markdown还支持时序图、甘特图等更复杂的图。

mermaid语法可以看作代码块的扩展,但是mermaid库的支持和编辑器的关系很大,有些不支持有些支持不全,下面示例代码里的语法算是比较通用。

1
2
3
4
5
6
7
8
9
​```mermaid 
graph TD // graph表示流程图,TD表示方向从上到下,LR表示从左到右
A(这是圆角矩形框) --> |短横线*2加右英文书名号表示直线箭头| B[这是直角矩形框]
B --> |双竖线内为线上文字| C{这是菱形框}
C --> |是| D
C --> |否| E
E --> F((这是圆形框))
D --> F
​```

效果如下:

mermaid流程图

结束

以上,大概就可以覆盖markdown日常使用99%的场景了,熟练使用之后,你就会发现写文档不用操心格式是多么美妙的一件事情。

等到使用熟练之后,任何文本编辑器都会是markdown发光发热的地方,你也就可以成为人肉markdown文档渲染器了。


20分钟Markdown入门教程
https://wuruofan.com/2020/05/24/20-minutes-markdown-tutorial/
作者
rf.w
发布于
2020年5月24日
许可协议