之前曾和51CTO的官方人员沟通过,建议在社区全面逐步开始试用markdown来支持博客和论坛等的发布。他们曾承诺会考虑实施。markdown做一种标记语言的应用场景越来越广泛,如今也不是什么新鲜事物了,如果还有一些人不是很熟悉的话,那么正好,请听我一一道来。
首先让我们从IT类文档编写谈起。抛除正式的行政公文,IT类的文档书写一般比较随意,不像毕业或学术论文,不会刻意去要求格式排版。此外该类文档表现形式通常比较丰富,除了标准文字,图片还会有一系列的图、表等,甚至针对一些软件层说明书和文档还会截取部分只有少部分才能看懂的计算机语言(代码)。在这种情况下,传统的文档编辑如下
1、基于无格式的txt文档 这种文档最大的优点是小巧,便捷,很适合编写一些软件的说明文档如readme。但缺点也是非常明显,无法设置格式,如果要进行排版,非常困难。
这是一份某网站的软件下载说明,从格式上说排版已经相当精美,但是要知道如果要修改这份文档是相当困难的,因为你要考虑对齐的问题,而且最大的问题是这种文档在WEB上没法展示。
2、基于大型办公软件word之流的高级文档。优点不用说了,格式编辑强大,支持功能众多。。。 缺点也是很明显的:排版时间长,WEB展示困难。二进制格式损坏修复困难。。。。
3、类似博客这种UEditor-WEB富文本编辑工具。虽然已经很丰富了,最大的问题还是排版困难,文档移植麻烦
说来说去,那边有没有一种方法能够自动排版,且各处通用呢?
答案自然就是markdown.
那markdown究竟是什么?Markdown是一种轻量级标记语言,它以纯文本形式(易读、易写、易更改)编写文档,并最终以HTML格式发布。也就是说markdown有点类似HTML,也是一种标记语言,也是用纯文本形式编写文档。只不过html文件后缀为.html或.htm,而markdown文件后缀默认为.md
关于markdown的历史请参考文献3
这里要谈一下markdown基本语法和扩展语法
由于Aaron Swartz和John Gruber两位大神创建了这种语法后,如果没有高级需求,按理说也就足够了(参见文献2)。但是喜爱的用户多了后需求就越来越大了,而且有些设计其实不符合我们的习惯,比如在标准Markdown语法中,要想换行必须在一行的最后加两个空格才行,否则即使你在一行的末尾插入硬回车,这些文本仍然会被合并为一行,这个特性会导致大量非预期的格式化错误。而我们经常会用到表格、脚注、想要自动生成文章目录等,若是涉及代码的技术文章,我们还希望代码支持高亮以提升阅读体验。这就需要用到Markdown的扩展语法了。而其中最流行的当属Github Flavored Markdown 了。参见参考文献4
最后谈一下目前乱像的markdown编辑工具。由于markdown的流行,越来越多的网站都开始支持,如github、Stack Overflow 国内的如简书,作业部落等。而很多编辑器、网络笔记也不甘落后,纷纷推出了自己的插件以便支持。但是markdown的效果大部分是需要解释引擎进行渲染完成(特别是使用了第三方扩展插件)因为解释效果不尽相同,所以导致一份原始的md文件在A工具编写完成后,在B工具导入浏览产生轻者错行错位,重者无法解析排版反而更混乱的怪现象。特别是一些软件作者植入第三方扩展插件,然后重新封装后,虽然利用按钮简化了书写,但是不公布插件列表,不开发源码从而造成文档移植性变差,而且多数编辑工具呈收费的商业软件,而原作者(在世的创始人之一)又极不赞成统一标准,最后导致像当今多种浏览器访问同一个网站显示页面错乱和部分功能不可用等问题
最后,还是让我们感受一下markdown的魅力吧
左边为原始格式,右边为浏览格式
以上来自作业部落WEB端
参考文献:
1、我为什么要使用markdown?http://7681901.blog.51cto.com/7671901/1942946
2、markdown语法说明
3、Markdown 前世今生
https://github.com/younghz/Markdown
4、Mastering Markdown
https://guides.github.com/features/mastering-markdown/
扩展阅读:Aaron Swartz 生平
https://aarons-law.org/aaronswartzaccomplishments/