接触到了一个新的文本编辑器,感觉棒棒哒,所以来把我学习到的东西分享给大家:
概述
可读性,无论如何,都是最重要的;一份使用Markdown格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成;Markdown语法受到一些既有text-to-HTML格式的影响,包括Setext、atx、Textile、reStructuredText、Grutatext 和EtText,而最大灵感来源其实是纯文本电子邮件的格式。Markdown的语法十分简单,常用的标记符号也不超过十个,相对于更为复杂的HTML标记语言来说,Markdown可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。
Markdown使我们专心于码字,用「标记」语法,来代替常见的排版格式;Markdown从写作到完成,你可以导出HTML格式的文件用来网站发布,也可以十分方便的导出PDF格式;甚至可以利用CloudApp这种云服务工具直接上传至网页用来分享你的文章,全球最大的轻博客平台Tumblr也支持使用Mou这类Markdown工具进行编辑并直接上传。
标签使用
说了那么多Markdown的有点,下面来看看Markdown的常用标记到底有哪些吧:
兼容HTML
不在Markdown涵盖范围内的标签,都可以直接在文档里用HTML撰写,不需要额外标注这是 HTML或是Markdown,只要直接加标签就可以了;
例如下面这个普通html语句:
one | two |
three | four |
请注意,在HTML区块标签间的Markdown格式语法将不会被处理。比如,你在HTML区块内使用Markdown样式的强调会没有效果。
HTML的区段(行内)标签如 <span>、<cite>、<del>
可以在Markdown的段落、列表或是标题里随意使用;依照个人习惯,甚至可以不用Markdown格式,而直接采用HTML标签来格式化;和处在HTML区块标签间不同,Markdown语法在HTML区段标签间是有效的。
特殊字符自动转换
在HTML文件中,有两个字符需要特殊处理:< 和 & ; < 符号用于起始标签,&符号则用于标记HTML实体,如果只是想要显示这些字符的原型,你必须要使用实体的形式,像是 < 和 &而且网址中的&符也要转换。Markdown让你可以自然地书写字符,需要转换的由它来处理,如果你使用的&字符是HTML字符实体的一部分,它会保留原状,否则它会被转换成&
例如你要在文档中插入一个版权符号就写成:©
,Markdown会保留它不动,而若你写 AT&T
,Markdown就会将它转为 AT&T
。类似的状况也会发生在 < 符号上,因为Markdown允许兼容HTML
区块元素
段落和换行
一个markdown段落是由一个或多个连续的文本行组成,他的前后要有一个以上的空行;如果你想要依赖markdown来插入
标签的话,在插入处先按入两个以上的空格然后回车。
标题
markdow支持两种标题的语法,类Setext和类atx形式.
类Setext形式是用底线的形式,利用 (最高阶标题) = 和 -(第二阶标题),例如:
This is an H1
This is an H2
类 Atx 形式则是在行首插入 1 到 6 个 # ,对应到标题 1 到 6 阶,例如:
这是 H1
这是 H2
这是 H6
你可以选择性地「闭合」类 atx 样式的标题,这纯粹只是美观用的,若是觉得这样看起来比较舒适,你就可以在行尾加上 #,而行尾的 # 数量也不用和开头一样(行首的井字符数量决定标题的阶数)
区块引用Blockquotes
Markdown 标记区块引用是使用类似email中用>的引用方式;如果你还熟悉在email信件中的引言部分,你就知道怎么在Markdown文件中建立一个区块引用,那会看起来像是你自己先断好行,然后在每行的最前面加上 > :
This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
Markdown 也允许你偷懒只在整个段落的第一行最前面加上 > :
This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
区块引用可以嵌套(例如:引用内的引用),只要根据层次加上不同数量的 > :
This is the first level of quoting.
This is nested blockquote.
Back to the first level.
任何像样的文本编辑器都能轻松地建立 email 型的引用。例如在 BBEdit 中,你可以选取文字后然后从选单中选择增加引用阶层
列表
Markdown 支持有序列表和无序列表。
无序列表使用星号、加号或是减号作为列表标记:
- Red
- Green
- Blue
有序列表则使用数字接着一个英文句点,而且顺序不会因为列表前的数字而改变:
- Bird
- McHale
- Parish
列表项目标记通常是放在最左边,但是其实也可以缩进,最多 3 个空格,项目标记后面则一定要接着至少一个空格或制表符;要让列表看起来更漂亮,你可以把内容用固定的缩进整理好:
如果列表项目间用空行分开,在输出 HTML 时 Markdown 就会将项目内容用
标签包起来,举例来说:
- Bird
- Magic
会被转换为:
<li>Bird</li>
<li>Magic</li>
</ul>
但是这个:
- Bird
- Magic
会被转换为:
<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>
列表项目可以包含多个段落,每个项目下的段落都必须缩进 4 个空格或是 1 个制表符.
如果要在列表项目内放进引用,那 > 就需要缩进:
-
A list item with a blockquote:
> This is a blockquote > inside a list item.
如果要放代码区块的话,该区块就需要缩进两次,也就是8个空格或是2个制表符
代码区块
和程序相关的写作或是标签语言原始码通常会有已经排版好的代码区块,通常这些区块我们并不希望它以一般段落文件的方式去排版,而是照原来的样子显示,Markdown会用 <pre>
和<code>
标签来把代码区块包起来。
要在Markdown中建立代码区块很简单,只要简单地缩进4个空格或是1个制表符就可以,例如,下面的输入:
这是一个普通段落:
<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>
这个每行一阶的缩进(4 个空格或是 1 个制表符),都会被移除
一个代码区块会一直持续到没有缩进的那一行(或是文件结尾);在代码区块里面, & 、 < 和 > 会自动转成 HTML 实体,这样的方式让你非常容易使用 Markdown 插入范例用的 HTML 原始码,只需要复制贴上,再加上缩进就可以了,剩下的 Markdown 都会帮你处理.
代码区块中,一般的 Markdown 语法不会被转换,像是星号便只是星号,这表示你可以很容易地以 Markdown 语法撰写 Markdown 语法相关的文件。
分割线
你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
eg:
***
***
*****
- - -
---------------------------------------
- -
区段元素
链接
Markdown 支持两种形式的链接语法: 行内式和参考式两种形式;不管是哪一种,链接文字都是用 [方括号] 来标记;要建立一个行内式的链接,只要在方块括号后面紧接着圆括号并插入网址链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可,例如:
This is an example inline link.
如果你是要链接到同样主机的资源,你可以使用相对路径:See my About page for details.
参考式的链接是在链接文字的括号后面再接上另一个方括号,而在第二个方括号里面要填入用以辨识链接的标记:This is an example reference-style link;
你也可以选择性地在两个方括号中间加上一个空格:This is [an example] [id] reference-style link;接着,在文件的任意处,你可以把这个标记的链接内容定义出来:[id]: http://example.com/ "Optional Title Here"
链接内容定义的形式为:
方括号(前面可以选择性地加上至多三个空格来缩进),里面输入链接文字
接着一个冒号
接着一个以上的空格或制表符
接着链接的网址
选择性地接着 title 内容,可以用单引号、双引号或是括弧包着
下面这三种链接的定义都是相同:
[foo]: http://example.com/ "Optional Title Here"
[foo]: http://example.com/ 'Optional Title Here'
[foo]: http://example.com/ (Optional Title Here)
请注意:有一个已知的问题是Markdown.pl 1.0.1会忽略单引号包起来的链接 title,链接网址也可以用方括号包起来。
网址定义只有在产生链接的时候用到,并不会直接出现在文件之中;链接辨别标签可以有字母、数字、空白和标点符号,但是并不区分大小写,因此下面两个链接是一样的:
link text
link text
隐式链接标记功能让你可以省略指定链接标记,这种情形下,链接标记会视为等同于链接文字,要用隐式链接标记只要在链接文字后面加上一个空的方括号,如果你要让 "Google" 链接到 google.com,你可以简化成:[Google][]
由于链接文字可能包含空白,所以这种简化型的标记内也许包含多个单词
参考式的链接其实重点不在于它比较好写,而是它比较好读
强调
Markdown使用星号()和底线(_)作为标记强调字词的符号,被 或 包围的字词会被转成用 <em>
标签包围,用两个 * 或 包起来的话,则会被转成 <strong>
,例如:
single asterisks
single underscores
double asterisks
double underscores
但是如果你的 * 和 _ 两边都有空白的话,它们就只会被当成普通的符号;如果要在文字前后直接插入普通的星号或底线,你可以用反斜线:*this text is surrounded by literal asterisks*
代码
如果要标记一小段行内代码,你可以用反引号把它包起来(),例如:Use the
printf()` function.
如果要在代码区段内插入反引号,你可以用多个反引号来开启和结束代码区段:There is a literal backtick (`) here.
在代码区段内,& 和方括号都会被自动地转成 HTML 实体,这使得插入 HTML 原始码变得很容易
图片
很明显地,要在纯文字应用中设计一个「自然」的语法来插入图片是有一定难度的;Markdown 使用一种和链接很相似的语法来标记图片,同样也允许两种样式: 行内式和参考式。
行内式的图片语法看起来像是:
![Alt text](/path/to/img.jpg "Optional title")
详细叙述如下:
一个惊叹号 !
接着一个方括号,里面放上图片的替代文字
接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上 选择性的 'title' 文字;到目前为止, Markdown 还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的 标签。
其他
反斜杠
Markdown 可以利用反斜杠来插入一些在语法中有其它意义的符号,例如:如果你想要用星号加在文字旁边的方式来做出强调效果(但不用 <em>
标签),你可以在星号的前面加上反斜杠
Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号:
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
`
自动链接
Markdown 支持以比较简短的自动链接形式来处理网址和电子邮件信箱,只要是用方括号包起来, Markdown 就会自动把它转成链接。一般网址的链接文字就和链接地址一样,如:
<http://example.com/>
- http://example.com/
邮址的自动链接也很类似,只是 Markdown 会先做一个编码转换的过程,把文字字符转成 16 进位码的 HTML 实体,这样的格式可以糊弄一些不好的邮址收集机器人,例如:
<address@example.com>
Markdown 会转成:
address@example.com
在浏览器里面,这段字串(其实是 <a href="mailto:address@example.com">address@example.com</a>
)会变成一个可以点击的「address@example.com」链接。
(这种作法虽然可以糊弄不少的机器人,但并不能全部挡下来,不过总比什么都不做好些。不管怎样,公开你的信箱终究会引来广告信件的。)