分级标题
前面提到的#,是我最常用的功能,表示所在的行是一个分级标题。如果你的文章很简单,比如小说,再精彩的小说其实在格式上都很简单,只分几级标题和正文。“书名”用个一级标题(左首加一个#,想用上面说的===形式也可以,但有的MD浏览器只会在大纲视图中显示#分级标题,不会显示===大标题,所以还是建议使用分级标题代替大标题,除非你只是写博客),“作者”用个一级标题或二级标题(左首加俩个#),每个章节也作为二级标题(这个绝对别用----,实在乱套,而且在一些主要的MD阅读器的大纲视图里也和====一样不会显示)。分成多卷/部/篇的(看,叫法和实际写法多不统一),可以让卷部篇作为一级或二级标题,让章节作为二或三级(就是三个#了,至少能用到六个的深度,小说绝对达不到,专业技术报告也够用了)。把那些什么卷什么部什么篇统统去除,只保留名称本身和表示标题深度的#就天下一统了。如果你除了小说就不写别的,那你抱着这一块金砖就可以走了,就这么简单,当然若你耐心看到后面我讲MD工具和编辑技巧,肯定更有收获。
引用
比小说稍微复杂点的是那些含有引用文字的文章,比如引用名人名言,比如论坛里引用了另外一个网友的发言……MD对此规定一个符号来表示(不是强制的,爱用不用,用了当然效果更好),就是>,它后面以及下面紧跟的多行都会作为一个整体的引用内容在支持MD的编辑或阅读器中区别显示,直到碰到一个空行结束(在后面有图片样例显示常用的几个标记)。引用还可以像我们在论坛看到的那样嵌套,就是甲引用了乙的话后又说了自己一堆话,然后你把甲的连同他引用乙的都引用过来,标记方法就是对甲的引用正常标>,对他引用乙的部分标> > ,但别忘了空行的正确使用,这是引用的格式要点。
无序列表与有序列表
对于一些带有列举要点的文章,如技术和管理、财务、法规、通知甚至决心书、保证书等,MD和网页一样提供了两种方式:无序的,有序的。前者就是在每条要点前面加*或+或-,后者是加数字和英文句点再加空格。如果某条下面还有一级子列表的话,就空两个空格再加,无序的可以嵌有序的,反之亦然。
对用*还是+还是-的规定有点随意,但我觉得当存在二或以上的多级列表时,用+表示那些含有下级列表的列表项,用-表示没有下级列表的项目,类似电脑的文件夹树形图结构,会比较好,不过麻烦点,一律*也是可以的。
有序的标记方法也很宽容,不用严格地第一条就是1. 、第二条就是2. (注意,用英文句点,而且后面至少要有一个空格),每一条的数字都可以是任意的数字,即使重复或倒序乱序也可以,数字只是一个表意的通知,实际产生的有序的序号是按照行数计算的从1开始增长的。但第一行的序号以后有望具有实际意义,用来指定从哪个数字开始而不再固定为1,限于本文我已经说得太细写得太多而又没有普遍支持此功能,这个以及其他一些不是很必要知道的就不多说了,保证你够实用为主。
链接
链接是很多提供外链或内链的论文和网页必需的。内链就是跳转到文章内另外的位置,外链就是跳转到另外的文件或者文件夹、设备或者网址(内网或互联网)。
行内链接
相对来说,外链格式其实更简单,比如“这是一个名为 [中央电视台](http://www.cntv.cn/ "CNTV") 的链接”。第一个方括号里是要作为链接的文字,后面圆括号中包括两部分,中间用空格分隔,前面是链接要打开的实际地址,这是必要项,后面用英文双引号括起来的是可选项,作用是在浏览器里用鼠标移到这个链接上时会浮动显示这部分的提示信息,可以作为辅助说明。
外链是HTML的说法,在MD里面称之为行内式,意思就是这个链接的定义和显示,在一行的内部就可以完全解决。
自动链接
自动链接是行内链接的一种特殊简化形式,用来处理需要直接暴露实际网址的电子信箱或任意网址,只要用尖括号把地址包起来,MD转译器或浏览器就会自动把它转成链接或视为链接。例如:<http://www.cntv.cn>,它转译后的结果就是生成一个显示文字和目标地址相同的链接。
参考链接
内链在MD中叫做参考链接,常用于跳转到论文最后的参考资料(一般那里还是一个链接),但并非因此得名,而是它至少需要在不同的两行位置分别定义,一处是给一个真实的链接地址定义一个假名,另外一处或多处是引用这个假名,当MD浏览器处理指向这个假名的链接时,它需要去参考这个假名的原始定义来获得真实的链接地址,写到指向这个假名的所有链接中,故名参考链接,而且实际网址的假名定义只有在生成链接的时候用到,并不会出现在转换的网页中,但在MD编辑器中当然会保留它以供编辑,只是会显示成特殊颜色以作提示。
参考链接的一个主要好处就是可以重复利用简写的假名,避免在需要同一个链接地址的每个地方都很麻烦地输入相同的地址。另外一个好处就是可以让文中的实际链接集中列在文尾的位置,论文文献常用这样的方式,可以便于查阅所有主要链接。当然也可以根据需要跳转到文内任意位置。
参考链接的形式是:把作为链接文字的部分放在一个方括号[]里,后面再跟一个方括号,里面是辨识链接的假名(可以用字母、数字、空白和标点符号,不区分字母的大小写)。比如“这是 [赵亮的简书文章][1]” 和 “这是 [赵亮的博客][赵博]”。然后在其它用到同样链接的地方复用,如“这是 [赵亮的部分文集][1]”……最后再在文内其它位置(一般在文尾)定义这两个链接假名的实际链接内容,如:
[1]: http://www.jianshu.com/users/896326d36ac8/latest_articles "赵亮的简书文集,这是上一行链接的提示信息,因上面链接太长,可以放在下一行,并适当缩进"
[赵博]: http://my.oschina.net/theforever/blog (赵亮的博客之一)
要注意,冒号后面至少要有一或多个空格或制表符。最后的鼠标提示部分可以用双引号也可以用圆括号括起来,这与行内链接不同,因为行内链接的链接部分整个用圆括号括起来,再用圆括号有点混乱。
上面两个链接的例子都是HTTP协议的互联网地址,如果是链接本机地址,比如想让读者听听和这个MD文档在一个文件夹里的音乐文件,可以用 FILE 协议的形式,具体请自行查阅或在本文后留言问我。
当链接的假名和要显示成链接的文字相同时,可以省略链接的假名(叫作隐式链接标记),如:
[CNTV][]
然后定义链接内容:
[CNTV]: http://www.cntv.com/
把某部分内容设为粗体或斜体
上面讲的不涉及对具体某部分文字的修饰,而在网页中我们常会看到对一些重点内容或特殊内容会使用粗体和斜体以及又粗且斜的体,MD也提供了这样的标记功能,规定是:在要强调的部分的两边用星号*或底线_包起来。
*斜体*
**粗体**
***粗斜体***
如果要在文字前后插入普通的星号或底线而不是作为MD标记,可以在星号或底线的前面加上反斜线,如:\*这部分两边是普通的星号,在网页中显示时只显示星号,下划线也是同样\*
图片
很多普通的文档都是纯文字,但在网页上却经常是带有图片的。“有图有真相”,图文结合的确更形象准确。
别看前面介绍的MD的格式很简单,但MD的目标并不仅是对纯文字树立一个规范,它的野心更大,是想要对网页的各种主要信息进行一个简要概括。所以,在MD中完全可以使用网页的所有HTML代码。MD选取了最主要的一些种类的元素制定了既简练又让人感觉比较自然的符号标记规范。但到了图片,就有点难办,只能使用一种和链接比较相似但不太自然的方法来标记,因为图片也属于一种文档本身之外的资源,通过链接的方式就可以指定,但又要让转译器知道这个应该作为能够显示的图片,所以要和链接有所区分,而任何的区分方式都会使它初看起来有点怪怪的,只能熟悉方好。
图片和链接一样也有两种形式:行内式和参考式。
行内式的图片语法例子:
![无法显示图片时显示的替代说明文字](图片地址 "鼠标移到图片上时显示的提示信息")
参考式的图片语法例子:
![无法显示图片时显示的替代说明文字][要参考的假名]
[要参考的假名]: 图片地址 "鼠标移到图片上时显示的提示信息"
目前MD还无法指定图片的宽高和对齐模式(居左/居右/居中),如果实在需要,可以使用普通的<img>标签,和用能控制位置的标签如<div>标签(也可以用<center>标签,虽然新的HTML标准不喜欢它,但直观方便)包起来。
MD的编辑软件和辅助功能
MD很简单,MD工具让写MD更加简单。
编辑软件包括:
* 一些有活力的网站提供的在线编辑器就支持MD模式。
* 一些功能比较多的泛文本编辑器(支持对包括MD在内的多种语法提供高亮和快捷编辑功能)。
* 专业的MD编辑器。
第一项,在即时调整格式(字体大小颜色和粗斜风格等)上有优势(虽然不是都提供了这功能)。
第二项,在即时调整字体显示格式上稍弱(主要是字体库和大小设置,颜色和粗斜设置没问题),链接也大多能看不能点,但也有好处,就是方便修改语法控制和快捷编辑的行为。
第三项,是针对MD编辑和转译的集成环境,较为理想的是兼具前两者的优点并有增强,事实上则各有差距。其中有的无法修改处理逻辑和行为,有的可以修改。
辅助功能主要指语法高亮和快捷编辑。
语法高亮是对不同类型的元素(标题,链接,引用……)显示成不同的颜色,方便区分。
快捷编辑指快速设置格式(比如在一行上按个快捷键就能将其设为二级或三级标题,或者取消标题,以及设置粗体斜体等)和插入稍复杂的元素(链接,图片)。
对MD的本地化改造
代码区块使用四个空格或一个Tab制表符缩进,一直持续到没有缩进的那一行(或是文件结尾)。对非专业人员来说,用不到这个。但是对广大中国普通用户来说,这却是一个灾难,因为我们写汉字文章的时候,正文恰恰都是用四个空格或一个Tab制表符缩进的,这样一来,就都被当成代码区块了。所以你会看到很多使用MD的国人也不得不按照英文习惯顶格书写,空行断行(如果你不空一行,会把它们视为同一行)。
如果你的MD文档不必考虑供非华语人士阅读,比如它本身主要用中文创作,那么有什么理由不进行本地化改造来支持习惯的中文排版呢?
方法是,书写MD文档时照旧用四个空格或一个Tab制表符缩进正文,不必加空行去断行。改造重点是对MD转译器和编辑器进行修改,改变判断逻辑和处理行为。这个比较专业,一般用户无需关心,懂的可以自己做,不懂的只需要用懂的人做出来的成果即可。
如下图,就是我改造过的MD高亮视图。从中可看到,中文式排版不会被认为是代码区块,而且各级标题自带了分割线效果。
(图片上传显示失败,再上传后可以正常显示了,但发布文章总提示还处在图片上传中,无法保存,再试上传又不行了,只能先这样保存)
(赵亮-碧海情天@简书,未经许可不得用于商业用途,个人转载须保留作者信息,不得用于伪原创)