如何快速掌握MarkDown 好久没有更新内容了,也好久没有给大家打个招呼了,小白想死你们了。
Markdown
显然已经成为每个IT人的标配了。如果不会点儿Markdown
,真的不好意思跟别人打招呼了。早在几年前,我是非常讨厌Markdown
的,因为我一直在用Emacs
的Org-mode
,一个比Markdown
要高端多得多的玩意,看不起那些使用Markdown
的程序员,觉得他们简直low爆了。
Emacs
的Org-mode
是强大的,但没有很好的客户端工具,用来在不同的设备上同步我们的笔记。不过我们也可以把Emacs
的笔记直接放到GitHub
上,GitHub
也是支持.org
格式的文档的。如果通过手机去查看GitHub
文档,首先,体验不好;其次,速度有点让人着急。基于以上两点,我选择了云笔记产品。绝大多数的云笔记产品也都支持Markdown
格式,让我们使用简单的格式,就可以写出格式化的文档。不过这仅仅是基本的格式化文档。如果要想有更好的排版格式,那就需要更高端的工具了。比如Word
(如果也算高端工具的话)或TeX
。
接下来说说云笔记的好处有哪些。它的好处不用多说,我认为最大的好处是:一处书写,到处可见。这是很屌的。在众多的云笔记产品中,我选择了为知笔记,因为它也直接支持Emacs
的Org-mode
,对,就仅仅因为这个原因。
以下是Markdown
的简明教程,不管有没有使用过Markdown
,10分钟之内完全可以学会(简直就是hand-by-hand啊)。如果你是从Emacs
转过来的,我可以保证你在一分钟之内就可以学会(此言非虚)。
标题以#
开头,一个#
就代表一级标题,两个##
表示二级标题,以此类推,直到六级标题。
一般写文章或论文,三级标题就够用了。不是吗?
一般写文章或论文,三级标题就够用了。不是吗?
上述的MarkDown格式为:
#### 这是四级标题
一般写文章或论文,三级标题就够用了。不是吗?
###### 这是六级标题
一般写文章或论文,三级标题就够用了。不是吗?
1. 简单
2. 列表连数字都自动排好
* 无序列表
* 无序列表
* 嵌套列表
* 自动缩进
如果要插入一段代码块,可以把代码放到一对"
`"
中即可。
int i = 0; i = 1;
for (int i = 0; i < 100; i++)
{
printf("hello markdown!\n");
}
如果要在文档中插入一段引用的文字,可以把要插入的引用文字以>
开头即可。
This is a blockquote with two paragraphs.More than I can say. Crazy English.
上述的MarkDown格式为:
> This is a blockquote with two paragraphs.
> More than I can say.
>
> Crazy English.
当然,块引用还可以嵌套。
This is the first level of quoting. This is nested blockquote.
Back to the first level.
上述的MarkDown格式为:
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.
块引用中,还可以包含其他MD元素,如headers,lists,code blocks
This is a header.
Here's some example code:
return shell_exec("echo $input | $markdown_script");
有时,我们想要强调某一句话或某个词语,那么把相应的文字强调显示将是很好的效果。在MarkDown中,要想强调文字,如果要想把强调的文字以斜体的形式呈现,只需要把要强调的文字放到一对*
或一对_
之间即可。同理,如果要想把强调的文字以粗体的形式呈现,只需要把要强调的文字放到一对**
或一对__
之间即可。以下是示例:
这是斜体
这个也是斜体
这是粗体
这个也是粗体
插入图片的语法为:

要想让MarkDown支持流程图,需要一些插件的支持,这就要看网站或笔记厂商是否支持了。
StartMy OperationYes or No?catch something...EndMy Subroutineyesno
UML流程图:
Alice->小雪: 你是个SB?
Note right of Bob: Bob thinks
小雪-->Alice: 就是,怎么了!
复杂一点的:
PXE客户端 -> DHCP服务端: 请求IP地址
DHCP服务端 -> DHCP服务端: 是否为合法的\n来自PXE客户端\n的DHCP请求?
PXE客户端 <-- DHCP服务端: 返回IP地址和bootstrap的位置
PXE客户端 -> TFTP服务端: 请求传送bootstrap
PXE客户端 <-- TFTP服务端: 同意指定传输块大小(blksize)?
PXE客户端 -> TFTP服务端: 同意
PXE客户端 <-- TFTP服务端: 发送bootstrap
PXE客户端 -> PXE客户端: 执行bootstrap(pxelinux.0)
PXE客户端 -> TFTP服务端: 请求传送配置文件\n(pxelinux.cfg/<IP_ADDR>)
PXE客户端 -> PXE客户端: 读配置文件
PXE客户端 -> PXE客户端: 用户根据情况选择
PXE客户端 -> TFTP服务端: 请求传送Linux内核
PXE客户端 <-- TFTP服务端: 发送Linux内核
PXE客户端 -> TFTP服务端: 请求传送Linux根文件系统
PXE客户端 <-- TFTP服务端: 发送Linux根文件系统
PXE客户端 -> PXE客户端: 启动Linux内核(带参数)
如果是使用Emacs
的Org-mode
的话,它绘制出来的图形是这个样子的:
这里把源码给大家贴出来:
hide footbox
title PXE工作流程
participant PXE_Client
participant TFTP_Server
participant DHCP_Server
PXE_Client -> DHCP_Server: 请求IP地址
activate PXE_Client #FFBBBB
activate DHCP_Server #FFBBCC
DHCP_Server -> DHCP_Server: 是否为合法的\n来自PXE_Client\n的DHCP请求?
PXE_Client <-- DHCP_Server: 返回IP地址和bootstrap的位置
deactivate DHCP_Server
PXE_Client -> TFTP_Server: 请求传送bootstrap
activate TFTP_Server #FFAABB
PXE_Client <-- TFTP_Server: 同意指定传输块大小(blksize)?
PXE_Client -> TFTP_Server: 同意
PXE_Client <-- TFTP_Server: 发送bootstrap
PXE_Client -> PXE_Client: 执行bootstrap(pxelinux.0)
PXE_Client -> TFTP_Server: 请求传送配置文件\n(pxelinux.cfg/<IP_ADDR>)
PXE_Client -> PXE_Client: 读配置文件
PXE_Client -> PXE_Client: 用户根据情况选择
PXE_Client -> TFTP_Server: 请求传送Linux内核
PXE_Client <-- TFTP_Server: 发送Linux内核
PXE_Client -> TFTP_Server: 请求传送Linux根文件系统
PXE_Client <-- TFTP_Server: 发送Linux根文件系统
deactivate TFTP_Server
PXE_Client -> PXE_Client: 启动Linux内核(带参数)
deactivate PXE_Client
这是标题 | 这是说明 |
---|---|
这是一列 | 这是一列 |
这是标题
脚注的写法为:在需要备注的地方后面写上:[^something]
,然后还需要定义[^something]
。一个例子1。
如,一个例子[^example]。
截图为: