CSDN-MarkDown 之markdown语法详解
1 MarkDown概述
设计哲学
MarkDown当初就是为了方便以纯文本写作而发明的,其设计宗旨是尽可能的易读、易写。其中易读的重要性高于其他,要达到的目的就是让读者意识不到标记符号的存在。MarkDown并没有设置最终显示样式的功能,只是规定了一篇文章的基本结构。所以同样一篇使用MarkDown写成的文章,在不同的网站上显示效果可以完全不同。这也算是内容和样式的分离,MarkDown只关注内容和结构,不关心最终显示样式。
与html的关系
MarkDown设计之初就是为了在Web上写文章。但MarkDown绝不是为了取代html,也不是为了模仿html。实际上MarkDown的标签功能只是HTML标签功能的小小子集,这些标签都是经过精挑细选出来的,只为了易读易写。
MarkDown最终要在Web上发布,发布之前必须转换为html标签,这个过程是有软件完成的。从这个概念上说,MarkDown是书写语言,而HTML是发布语言。
在MarkDown文件中,所有html标签都可以直接使用,无需任何特殊处理,唯一限制是,html块元素前后要空出一行,如:
这里是一个段落。
<div>
这里的代码不会被MarkDown解析。如*好人*,并不会斜体显示。
</div>
这里是后续段落
与bbcode等的区别
除了MarkDown之外,还有很多用于Web书写的标记语言,国内Discuzz论坛用户都还记得其使用的BBcode吧。过去BBS、论坛、Blog也曾经设计开放HTML语法让用户使用,但却衍生出语法输入错误时造成整页排版错乱、有心人利用HTML语法进行XSS式的攻击与破坏等问题。由于BBcode的转换为系统机械式的行为,所以可以有效避免人为输入错误的问题,而BBcode为预先设计好的语法,也就是说意图以BBcode达成所有的HTML语法效果是不可能的,相当于一种语法过滤,如此便可避免所有可能发生的恶意破坏。
可见,BBCODE和MarkDown当初设计的出发点就是不同的。BBCODE更多是为了安全,而MarkDown是为了书写创作,两者可比性不强。
2 基本MarkDown语法
MarkDown是一种标准,所有实现都应该遵循一些基本的规范。
2.1 块元素
段落和换行
什么是段落,如何定界段落,是任何一个编辑器必须解决的问题。在微乳Word里回车表示一个段落的开始,在HTML里,<p></p>
内封装的文本是一个段落。在MarkDown里,段落的分界标记是一个或者多个连续的空行。空行在这里的含义是:看起来是空白的行,也就是说空行可以包含空格和Tab等看不见的字符。