概述
Markdown是一种易读易写的标记语言.它能被生成HTML.Markdown的目标是:成为一种适用于网络的书写语言.
1.兼容HTML
Markdown的格式语法涵盖纯文本可以涵盖的范围,不在Markdown涵盖范围内的可以直接使用HTML标签.
HTML的区块标签------比如<div>
,<pre>
,<table>
,<p>
必须在前后文加上空行与其他内容分开,还要求它的开始结尾标签不能有空格缩进或制表符.
HTML的行内标签------比如<span>
,<cite>
,<del>
可以自Markdown的标题,列表,段落里随意使用.
还有一些标签诸如<a>
,<img>
可以不使用Markdown语法,直接使用HTML标签.
2.特殊字符自动转换
HTML中有两个字符需要特殊处理:一个是<
(用于起始标签),一个是&
(用于标记HTML字符实体,即预留字符).
Markdown语法可以将字符在需要使用HTML字符实体的地方自动转换为字符实体.例如:
©
这种&
是字符实体一部分的情况下不会发生转换,而形如AT&T;
,网址中的&
则不需要输入AT&T
,http://images.google.com/images?num=30&q=larry+bird
直接输入&
就会自动转换.
这种情况也发生在<
身上,当<
是字符实体一部分是不会发生转换,而当4 < 5
这种<
为比较符时Markdown会将其转换为4 < 5
.
注:code范围内,无论是区块还是行内都会被转换成字符实体.
区块元素
1.段落和换行
Markdown段落需要空行(只含有空格或制表符也是空行)隔开.普通段落不该用空格或制表符缩进.
两个以上回车就是一个空行,也就是换行.
2.标题
# h1
## h2
### h3
#### h4
##### h5
###### h6
大标题
=
小标题
-
表示
h1
h2
h3
h4
h5
h6
大标题
小标题
区块引用
> 这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
>
> 这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
> 这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
> 这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
> ##标题
>
>> 区块引用嵌套
>
> 1. 苹果
> 2. 香蕉
>
> 例子代码:
> return shell_exec("echo $input | $markdown_script");
区块引用每行开头使用>
等同于每段段首使用>
,区块可以叠加嵌套>>
,区块也可以包含标题,列表,代码片段等等.
这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.这是一个区块引用.
标题
区块引用嵌套
1.苹果
2.香蕉例子代码:
return shell_exec("echo $input | $markdown_script");
3.列表
无序列表可以使用*
,+
,-
,有序列表使用数字+.
的形式,且列表标记上使用的数字不影响输出的HTML结果
* Red
* Green
* Blue
+ Red
+ Green
+ Blue
- Red
- Green
- Blue
1. Bird
2. McHale
3. Parish
1. Bird
1. McHale
1. Parish
3. Bird
1. McHale
8. Parish
输出:
- Red
- Green
- Blue
- Red
- Green
- Blue
- Red
- Green
- Blue
-
Bird
-
McHale
-
Parish
-
Bird
-
McHale
-
Parish
-
Bird
-
McHale
-
Parish
注:如果为了美观,列表可以使用固定缩进,如果列表项之间存在空行的情况下,列表项会被<p>
标签包裹.
列表里面的段落也可以使用缩进,列表段落里面的引用缩进一次,代码片段缩进两次(八个空格).行首出现数字加.
加空格情况会吞掉数字.为避免这种情况要在.
前面加反斜杠.
* 这是一个列表段落.
* 这是一个列表段落
* 这是一个列表段落.这是一个列表段落
这是一个列表段落.这是一个列表段落
1. 这是一个列表段落.
> 这是一个列表引用.
> 这是一个列表引用.
<这是一个代码块>
1949. 新中国成立.
输出:
-
这是一个列表段落.
-
这是一个列表段落
-
这是一个列表段落.这是一个列表段落
这是一个列表段落.这是一个列表段落
-
这是一个列表段落.
这是一个列表引用.
这是一个列表引用. -
这是一个代码块:
<这是一个代码块> -
1949. 新中国成立.
4.代码区块
Markdown只需要简单的缩进4个空格(TAB)或一个制表符就可以建立代码片段.输出时缩进会被清除.
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
会被转换成
<p>Here is an example of AppleScript:</p>
<pre><code>tell application "Foo"
beep
end tell
</code></pre>
输出:
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
在代码区中,&
,<
和>
会自动转换为HTML实体,这样可以使用Markdown很轻易的插入范例用的HTML原始代码,只要粘贴加上缩进就可以了.
<div class="footer">
© 2004 Foo Corporation
</div>
会被转换成:
<pre><code><div class="footer">
&copy; 2004 Foo Corporation
</div>
</code></pre>
输出为:
5.分隔线
可以用三个以上的*
,-
或_
来建立分隔线
***
---
___
输出:
行内元素
1.链接
Markdown支持两种不同的链接语法:行内式和参考式.
行内式:
行内式的链接只要在方括号后面紧接着圆括号并插入网址链接即可,可以在链接后面加title
.
带title
的,不带title
的和相对路径的链接
这是一个行内链接的[例子](http://example.com/ "行内链接") .
[这个链接](http://example.net/) 没有可选标签.
看看我的[About](/about/)页面的详细信息.
输出:
这是一个行内链接的例子 .
这个链接没有标题属性.
看看我的About页面的详细信息.
参考式:
参考式链接是在链接文字的括号后面再接上另一个方括号,而在第二个方括号里面要填入加以识别的id
.
这是一个参考链接的[例子][id] .
这是一个参考链接的[例子] [id] .
[id]: http://example.com/ "可选标签"
链接内容定义的形式:
方括号(前面可以选择性地加上至多三个空格来缩进),里面输入链接文字
接着一个冒号
接着一个以上的空格或制表符
接着链接的网址
选择性地接着 title 内容,可以用单引号、双引号或是括弧包着
下面这三种链接都是一样的:
[foo]: http://example.com/ "可选标签"
[foo]: http://example.com/ '可选标签'
[foo]: http://example.com/ (可选标签)
链接可以用尖括号包起来,也可以把title属性放到下一行.
链接识别标签(id)不区分大小写.
隐式链接标记可以省略链接标记,链接标记会等同于链接文字.
[Google][]
[Google]: http://google.com
等同于
[Google][1]
[1]: http://google.com
综合实例:
[google][1]的流量要比[yahoo][2]或[msn][3]多十倍以上.
[1]:http://google.com "google"
[2]:http://search.yahoo.com/ "yahoo search"
[3]:http://search.msn.com/ "msn search"
等同于
[google][]的流量要比[yahoo][]或[msn][]多十倍以上.
[google]:http://google.com "google"
[yahoo]:http://search.yahoo.com/ "yahoo search"
[msn]:http://search.msn.com/ "msn search"
对比来说,行内式:
[google](http://google.com/ "google")的流量要比[yahoo](http://search.yahoo.com/ "yahoo search")或[msn](http://search.msn.com/ "msn search")多十倍.
参考式链接比较来说比较好读.
2.强调
Markdown使用*
和_
作为标记强调字词的符号,被*
或-
保卫的字词会被转成用<em>
标签包围,用两个*
或-
包起来的话,则会被转成<strong>
.
*叫医生!*
_叫医生!_
**叫医生!**
__叫医生!__
会转成:
<em>single asterisks</em>
<em>single underscores</em>
<strong>double asterisks</strong>
<strong>double underscores</strong>
强调符号可以插在文字中间:
你好*北京*我来了
如果*或_两边都有空白的话,就会被当成普通的星号或底线,你可以用反斜杠插入普通的星号或底线.
你好 * 北京*我来了
*这是一个强调的实例*
输出:
你好 * 北京*我来了
*这是一个强调的实例*
3.代码
行内代码使用`
来标记一小段代码,如果要插入`
可以用多个反引号来开启和结束.在代码区段内&
和<
,>
都会自动转成HTML实体
使用`print()`函数,
使用``(`)``符号
请不要使用`<blink>`标签
`—` 是 `—`的十进制编码.
输出:
使用print()
函数,
使用(`)
符号
请不要使用<blink>
标签
—
是 —
的十进制编码.
4.图片
Markdown 使用一种和链接很相似的语法来标记图片,同样也允许两种样式: 行内式和参考式.
行内式的图片语法看起来像是:
![没有图片显示我](https://www.baidu.com/img/bd_logo1.png)
![没有图片显示我](https://www.baidu.com/img/bd_logo1.png "百度")
详细叙述如下:
一个惊叹号 !
接着一个方括号,里面放上图片的替代文字
接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上 选择性的 'title' 文字。
参考式的图片语法则长得像这样:
![没有图片显示我][2]
「id」是图片参考的名称,图片参考的定义方式则和连结参考一样:
[2]: https://www.baidu.com/img/bd_logo1.png "百度"
输出:
到目前为止, Markdown 还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的 标签。
其它
1.自动链接.
<http://baidu.com>
<address@example.com>
会转换成:
<a href="http://example.com/">http://example.com/</a>
<a href="mailto:addre
ss@example.co
m">address@exa
mple.com</a>
输出:
2.反斜杠
Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号:
反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
可转换为:
`
*
_
{}
[]
()
#
+
-
.
!
3.删除线
~~删除线~~
输出
删除线
4.表格
:----:
代表居中对齐.-----:
代表右对齐
|Tables |Are |Cool |
|-------------|:----------: |----:|
|col 3 is |right-aligned |$1600|
|col 2 is |centered |$12 |
|zebra stripes|are neat |$1 |
输出:
Tables | Are | Cool |
---|---|---|
col 3 is | right-aligned | $1600 |
col 2 is | centered | $12 |
zebra stripes | are neat | $1 |