这几天写了个Python的模块,用Markdown写个个README,传到GitHub,感觉效果还不错,就难抑冲动,打了个包,也想放到PyPI上,结果放上去,发现README变成了源代码。一查,才发现PyPI竟然不支持Markdown格式的README文件,好像支持的README要reStructuredText格式的,对菜鸟的我来说这是个坑啊,好不容易在Emacs下用Markdown用的有点熟路了,结果发现却不被支持。只好重新看看reStructuredText的语法了,因此,也就有了此篇reStructuredText语法快速入门。
先文绉绉的来一段reStructuredText的介绍吧:
reStructuredText是一种轻量级的文本标记语言,直译为:重构建的文本,为Python中Docutils项目的一部分。其一般保存的文件以.rst为后缀。在必要的时候,.rst文件可以被转化成PDF或者HTML格式,也可以有Sphinx转化为LaTex,man等格式,现在被广泛的用于程序的文档撰写。
好了,时间无多,直接正题:
reStructuredText大致分章节,段落,块和列表这几种内容。而在这其中reStructuredText最主要用得到的标记也就是:
标题
段落
列表
表格
块(如:代码块)
样式
下面一一介绍:
标题(Title)
来看看标题的实例:
===================
这就是一个标题
===================
----------------
这也是一个章节标题
----------------
怎么样,看起来不难吧,你只要按这个写法,就能被reStructuredText认识,并被解释为章节标题。reStructuredText可用于作为标题修饰的字符有很多很多:
! " # $ % & ' ( ) * + , - . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~
只要你想,上面的任意一个都可以用来作为标题的修饰符,当然,reStructuredText也是有推荐的,它推荐下面这些字符:
= - ` : . ' " ~ ^ _ * + #
这些字符是上面一堆字符中稍微看起来不会那么奇怪的一部分,当然,个人建议不要那么花哨,尽量用这两个中的一个:
= -
上面实例的写法也许有点复杂,.rst文件中,你还可以只给出下半部分的字符即可:
这个标题和上面的一样
===================
TIPS:作为修饰的字符长度要大于等于文字长度。另外,标题是能够嵌套的。
段落(Paragraphs)
段落一般隶属于某个章节中,是一块左对齐并且没有其他元素体标记的块。在.rst文件中,段落和其他内容的分割是靠空行来完成,如果段落相较于其他的段落有缩进,reStructuredText会解析为引用段落,样式上有些不同。
这里是一段reStructuredText的内容,它可以很长很长。。。。最后,末尾留出空行表示是本段落的结束即可。
这里是另外一段reStructuredText的内容,这段内容和上一段之间,乃至后面的其他内容之间都要留出空行进行分割。
这个也是段落,当时由于缩进了,会变成引用段落。显示和直接的段落有点不同
列表(List)
列表在HTML中被分为两种,一个是有序列表(Enumerated Lists),一种是无序列表(Bullet Lists),在reStructuredText中,我们也能找到这两种列表,还有一种称为定义列表(Definition Lists),这和HTML中的DL一样,在.rst文件中可以支持嵌套列表。
无序列表要求文本块是以下面这些字符开始,并且后面紧跟空格,而后跟列表项的内容,其中列表项比趋势左对齐并且有与列表对应的缩进。
* + - • ‣ ⁃
还是那句话,用最常用的几个字符就好,不用那么花哨。下面是示例:
- 这里是列表的第一个列表项
- 这是第二个列表项
- 这是第三个列表项
- 这是缩进的第一个列表项
注意,这里的缩进要和当前列表项的缩进同步。
- 第一级的第四个列表项
- 列表项之间要用个空格来分割。
有序列表在格式上和无序列表差不多,但是在使用的前缀修饰符上,使用的不是无序列表那种字符,而是可排序的字符,可以识别的有下面这些:
arabic numerals: 1, 2, 3, ... (no...