概述
宗旨
<p>Markdown 的目标是实现【易读易写】。</p>
<p>可读性,无论如何都是最重要的。一份使用Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会是由很多标签或是格式命令组成。Markdown 语法受到一些既有 text-HTML 格式的影响,而最大灵感其实是纯文本电子邮件格式的影响。</p>
总之,Markdown 的语法全由一些符号组成,这些符号经过精挑细选,其作用一目了然。比如:在文字两旁加上星号(*),看起来就是强调。Markdown 的列表看起来,嗯,就是列表。Markdown 的区块引用看起来就像是引用一段文字。
兼容HTML
<p>Markdown 语法的目标是:成为一种适用于网络的<em>书写</em>语音。</p>
<p>Markdown 不是要取代 HTML,甚至也不是要和它接近。它的语法种类很少,只占 HTML 标记的一小部分。Markdown 的构想<em>不是</em>要使得 HTML 更易书写。Markdown的理念是,能让文档更容易读、写和随意改。HTML 是一种<em>发布</em>的格式,Markdown 是一种<em>书写</em>的格式。就这样,Markdown 的格式语法只覆盖纯文本可以涵盖的范围。</p>
<p>不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown ;只要直接加标签就可以了。</p>
<p>要制约的只有一些 HTML 区块元素—比如 '<div>'、 <code><table></code> 等标签,必须要在前后加上空行与其他内容区隔开,还要求它们的开始标签与结尾标签不能用制表符或空格来缩进。</p>
<p>例子如下,在 Markdown 文件里加上一段 HTML 表格:</p>
<pre><code>这是一个普通段落。
<table>
<tr>
<td>Foo</td>
</tr>
</table>
这是另一个普通段落。
</code></pre>
<p>请注意,在 HTML 区块标签间的 Markdown 格式语法将不会被处理。比如,你在 HTML 区块内使用 Markdown 样式的强调会没有效果。</p>
HTML 的区段(行内)标签如<code><span></code>、<code><del></code> 可以在Markdown 的段落、列表或是标题里随意使用。依照个人习惯,甚至直接可以用 HTML 标签来格式化。举例说明,如果比较喜欢 HTML 的<code><<img>></code>标签,可以直接使用这些标签,而不用 Markdown 提高的链接或是图像标签语法。</p>
<p>和处在 HTML 区块标签间不同,Markdown 语法在 HTML 区段标签间是有效的。</p>
特殊字符自动转换
在 HTML 文件中,有两个字符需要特别处理:<code><</code>、<code>&</code> 。<code><</code> 用于起始标签,<code>&</code> 用于标记 HTML 实体。如果你只是要使用这个符号,你必须要使用实体的形式,比如,像是 < 、& 。
<code>&</code> 字符尤其让网络文档编写者受折磨,如果你要打 AT&T, 你必须要写成 ‘AT&T’ 。而网址中的 & 也要转换。如果要链接到:
http://images.google.com/images?num=30&q=larry+bird
你必须把网址转换写为
http://images.google.com/images?num=30&q=larry+bird
才能放到链接标签的 href 属性里。不用说也知道这很容易忽略。这也可能是 HTML 标准检验所检查到的错误中,数量最多的。
Markdown 让你可以自然地书写字符,需要转换的由它来处理就好了。如果你使用的 & 字符是 HTML 字符实体的一部分,它会保留原状,否则它会转换成 &
。
所以,如果要在文档中插入一个版权符号©,你可以这样写:
©
Markdown 会保留它不动。
需要注意的是, code 范围内,不论是行内还是区块, <
和 &
两个符号都一定会被转换成 HTML 实体,这项特性让你可以用 Markdown 写 HTML code 。
区块元素
段落和换行
<p>一个 Markdown 段落是由一个或多个连续的文本行组成,它的前后要有一个以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行。比如,若某一行只含空格和 Tab, 则该行业将视为空行)。普通段落不该用空格或 Tab 来缩进。</p>
「一个以上相连接的行句组成」这句话其实暗示了 Markdown 允许段落内的强迫断行,这个特性和其他大部分的 text-to-HTML 格式不一样(包括 MovableType 的「Convert Line Breaks」选项),其它的格式会把每个断行都转成 <br />
标签。
标题
区块引用
Markdown 标记区块引用是使用类似 email 中用 >
的引用方式。
This is a blockquote with two paragraphs.
Markdown也允许你偷懒只在整个段落的第一行最前面加上>
:
区块引用可以嵌套,只要根据层次加上不同数量的 >
:
This is the first level of quoting.
This is nested blackquote.
Back to the first level.
引用的区块内也可以使用其他的 Markdown 语法,包括标题、列表、代码区块等:
This is a header.
This is the first list item.
This is the second list item.
Here's some example code:
return shell_exec("echo $input | $markdown_script");
清单
Markdown 支持有序清单和无序清单。
无序清单使用星号、加号或减号作为清单标记。
* red
* green
* purple
等同于:
- red
- green
- purple
也等同于
- red
- green
- purple
有序清单则使用数字接着一个英文句点:
- bird
- McHale
- Parish
要让清单看起来更漂亮,你可以把内容用固定的缩排整理好:
《 Fantastic animals 》is an impressive movie i have watched in this year.
《神奇动物在哪里》这部电影让我印象深刻,里面的 魔法生物各有各的特点。
如果清单项目用空行隔开,Markdown 会把项目内容在输出时用<p>
标签包起来,举例来说:
-
Bird
-
Magic
会被转换为:
<ul>
<li>Bird</li>
<li><p>Magic</p></li>
</ul>
项目清单很有可能会不小心产生,如:
1986.
It is a great season.
换句话说,在行首出现 数字-句号-空白 ,要避免这样的情况,可以在数字后加斜线:
1986/. It is a great season.
程序区块
和程序相关的写作或者标记语言原始代码通常会有已经排版好的程序区块,通常这些区块我们并不希望它以一般段落文件的形式去排版,而是原来的样子。Markdown 会用<pre>
和<code>
把程序区块包起来。
要在 Markdown 中建立程序区块很简单,只要缩排4个空白或是1个tab即可。
分隔线
用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。
-----
区内要素
链接
Markdown 支持行内和参考两种形式的链接语法。不管是哪一种,链接的文字都是用[方括号]来标记。
要建立一个行内形式的链接,只需要在方括号的后面马上接着括号并插入网页链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可。
参与形式的链接使用另外一个方括号接在链接文字的括号后面,而在第二个方括号后面要填入用以辨别链接的标签。接着,在文章的任意处,你可以把这个标签的链接内容定义出来。
链接定义的形式为:
- 方括号,里面输入链接的辨识用标签
- 接着一个冒号
- 接着一个以上的空白或tab
- 接着链接的网址
- 选择性地接着title内容,可以用单引号、双引号或者括弧包着
你也可以把title属性放到下一行,也可以加一些缩排,网址太长的话,这样比较美观。
举例:
I get 10 traffics from Google than from [Yahoo] [2] or [MSN] [3].
1: http://google.com "Google"
[2]: http://search.yahoo.com "Yahoo"
[3]: http://search.msn.com "MSN"
强调
Markdown 使用星号()和底线(_)作为标记强调字词的符号,被 * 或 _ 包围的字词会被转换成用<em>标签包围,用两个 或 _ 包围的字词会被转换成<strong>.
但是如果*
、_
两边都有空白的话,他们就只会看被当做普通的符号。
如果要在文字前后直接插入普通的星号或底线,可以用反斜线:
\这段文字没有被强调\
图片
图片与链接的插入方法相似,只是在链接的语法前加上了!
。
注:本文内容引用自 Markdown语法说明繁体版, 练习Markdown语法所用。
网友评论