MarkDown语法
宗旨
Markdown的目的是现实–易读易写。可读性,无论如何,都是最重要的。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。Markdown 语法受到一些既有 text-to-HTML 格式的影响,包括 Setext、atx、Textile、reStructuredText、Grutatext 和 EtText,而最大灵感来源其实是纯文本电子邮件的格式。
兼容HTML语法
HTML 是一种发布的格式,Markdown 是一种书写的格式。就这样,Markdown 的格式语法只涵盖纯文本可以涵盖的范围。不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。
例如,添加一个表格
这是一段文本
<table>
<tr>
<td>标题</td>
</tr>
</table>
以下为效果,还可以添加背景颜色,控制表格大小。
标题 | 标题 | 标题 |
特殊字符自动转换
在 HTML 文件中,有两个字符需要特殊处理: < 和 & 。 < 符号用于起始标签,& 符号则用于标记 HTML 实体,如果你只是想要显示这些字符的原型,你必须要使用实体的形式,像是 < 和 &。
& 字符尤其让网络文档编写者受折磨,如果你要打「AT&T」 ,你必须要写成「AT&T」。而网址中的 & 字符也要转换。比如你要链接到:
http://images.google.com/images?num=30&q=larry+bird
你必须把网址格式转换为:
http://images.google.com/images?num=30&q=larry+bird
在Markdown中使用HTML标签需要注意字符转换问题。如&必须要写成¥amp;
才可以,其他的都是如此才可以正确显示。
区块元素
段落和换行
一个 Markdown 段落是由一个或多个连续的文本行组成,它的前后要有一个以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行。比方说,若某一行只包含空格和制表符,则该行也会被视为空行)。普通段落不该用空格或制表符来缩进。
「由一个或多个连续的文本行组成」这句话其实暗示了 Markdown 允许段落内的强迫换行(插入换行符),这个特性和其他大部分的 text-to-HTML 格式不一样(包括 Movable Type 的「Convert Line Breaks」选项),其它的格式会把每个换行符都转成
标签。
如果你确实想要依赖 Markdown 来插入
标签的话,在插入处先按入两个以上的空格然后回车。
的确,需要多费点事(多加空格)来产生
,但是简单地「每个换行都转换为
」的方法在 Markdown 中并不适合, Markdown 中 email 式的 区块引用 和多段落的 列表 在使用换行来排版的时候,不但更好用,还更方便阅读。
标题
Markdown 支持两种标题的语法,类 Setext 和类 atx 形式。
类 Setext 形式是用底线的形式,利用 =
(最高阶标题,数量不限,最少一个)和 -
(第二阶标题,数量最少一个),例如:
this is an H1
===========
this is an h2
----------
类 Atx 形式则是在行首插入 1 到 6 个 #
,对应到标题 1 到 6 阶,例如:
# 这是 H1 #
## 这是 H2 ##
### 这是 H3 ######
注意事项:
- Setext形式的标题只能表示标题1和标题2这两阶,而atx形式的标题可以表示标题1~标题6共6阶。
- 上面#与文本之间的空格不是必需的,不加也可以,但加上是个好的习惯。
- 你可以选择性地「闭合」atx样式的标题,这纯粹只是美观用的,若是觉得这样看起来比较舒适,你就可以在行尾加上
#
,而行尾的#
数量也不用和开头一样(行首的#
数量决定标题的阶数)。
区块引用Blockquotes
Markdown 标记区块引用是使用类似 email 中用>
的引用方式。如果你还熟悉在 email 信件中的引言部分,你就知道怎么在 Markdown 文件中建立一个区块引用,那会看起来像是你自己先断好行,然后在每行的最前面加上 >
:
>第一条
>第二条
Markdown 也允许你偷懒只在整个段落的第一行最前面加上>
:
区块引用可以嵌套(例如:引用内的引用),只要根据层次加上不同数量的 >
:
> This is the first level of quoting.
> > This is nested blockquote.
引用的区块内也可以使用其他的 Markdown 语法,包括标题、列表、代码区块等:
> ## 这是一个标题。
>
> 1. 这是第一行列表项。
> 2. 这是第二行列表项。
>
> 给出一些例子代码:
>
> return shell_exec("echo $input | $markdown_script");
注意事项:
> 这是区块引用的第一层。
>
> > 这是嵌套引用,属于第二层,因此需要再加一个`>`,两个`>`之间的空格不是必需的。
>
> 回到区块引用的第一层。
列表
支持有序列表和无序列表。
无序列表使用星号、加号或是减号作为列表标记:
* Red
* Green
* Blue
等同于:
+ Red
+ Green
+ Blue
也等同于
- Red
- Green
- Blue
有序列表使用一个数字接着一个英文句点:
1.red;
2.green
3.blue
有序列表无序列表也可以使用HTML语法表示。
代码
关于Markdown的代码语法,下面分为行内代码和代码区块两类来说明。
行内代码
Markdown语法说明:
如果要标记一小段行内代码,你可以用反引号"`"
(Windows键盘左上角tab键上方)
例子:
输出:`println("hello world");`
代码区块
和程序相关的写作或是标签语言原始码通常会有已经排版好的代码区块,通常这些区块我们并不希望它以一般段落文件的方式去排版,而是照原来的样子显示,Markdown 会用 <pre>
和 <code>
标签来把代码区块包起来。
Markdown语法说明
要在 Markdown 中建立代码区块很简单,只要简单地缩进 4 个空格或是 1 个制表符就可以。
例子:
这是一个普通段落:
这是一个代码区块。
对应的HTML语法:
<p>这是一个普通段落:</p>
<pre><code>这是一个代码区块。
</code></pre>
这个每行一阶的缩进(4 个空格或是 1 个制表符),都会被移除,举一个具体的代码实例。
例子:
下面是一个简单的Java实例:
public class Test{
public static void main (String[] args){
System.out.println("欢迎访问lanxuezaipiao!");
}
效果:
下面是一个简单的Java实例:
public class Test{
public static void main (String[] args){
System.out.println("欢迎访问lanxuezaipiao!");
}
注意事项:
在代码区块中,一般的 Markdown 语法不会被转换,像是星号便只是星号,即用两个星号将一句话包围起来也不会转化为强调,这表示你可以很容易地以 Markdown 语法撰写 Markdown 语法相关的文件,不用担心代码中包含一些特殊的Markdown语法标记。
分割符
你可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
* * *
***
*****
- - -
---------------------------------------
链接
Markdown的链接可分为自动链接和普通文本链接两种类型。
自动链接(可点击的URL和Email)
Markdown支持以比较简短的自动链接形式来处理网址和电子邮件信箱。
Markdown语法说明:
对于本身是个URL和Email的文本来说,只要是用尖括号包起来,Markdown就会自动把它转成链接。
例子:
这是一个可点击的URL:
<http://www.csdn.net/>
这是一个可点击的Email:
<address@example.com>
对应的HTML语法:
对于上面普通的URL,Markdown会转成下面的HTML语法:
<a href="http://www.csdn.net/">http://www.csdn.net/</a>
而对于Email的自动链接也很类似,只是Markdown会先做一个编码转换的过程,把文字字符转成 16 进位码的 HTML 实体,这样的格式可以糊弄一些不好的邮址收集机器人,例如对于上面的Email,Markdown 会转成:
<a href="mailto:address@example.com">address@example.com</a>
在浏览器里面,这段字串会最终转成下面的HTML语法:
address@example.com
效果:
这是一个可点击的URL:
http://www.csdn.net/
普通文本链接
Markdown支持两种形式的普通文本链接语法: 行内式和参考式两种形式。
行内式链接
Markdown语法说明:
下面三种语法形式都是允许的:
[链接文字](链接URL '可选的链接title')
[链接文字](链接URL "可选的链接title")
[链接文字](链接URL (可选的链接title))
详细说明就是:
* 一个方括号,里面输入链接文本;
* 接着一个圆括号,里面可以包含两部分内容,中间用空格隔开;
* 【必须】 链接的网址;
* 【可选】 链接的title文字,只要用单引号、双引号或者括弧把title文字包起来即可,加上title之后,你用鼠标移到该链接时就会显示title文字,可以把它当作一种提示信息。
例子:
关于Markdown具体语法可以访问[markdown语法说明](http://www.appinn.com/markdown/ "Markdown")(有title,也可无title)
效果:
关于Markdown具体语法可以访问markdown语法说明(有title,也可无title)
对应HTML语法:
<p>想更多的了解敏敏,可以访问<a href="http://weibo.com">新浪微博</a> (无title属性)。</p
反斜扛的用处
Markdown可以利用反斜杠来插入一些在语法中有其它意义的符号,例如:如果你想要用星号加在文字旁边的方式来做出强调效果,你可以在星号的前面加上反斜杠:
\*重点描述文本\*
Markdown支持以下这些符号前面加上反斜杠来帮助插入普通的符号而非Markdown语法标签:
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井号
+ 加号
- 减号
. 英文句点
! 惊叹号