一个 Markdown 段落是由一个或多个连续的文本行组成,它的前后要有一个以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行。比方说,若某一行只包含空格和制表符,则该行也会被视为空行)。普通段落不应该用空格或制表符来缩进。
Markdown 支持两种标题的语法,类 Setext 和类 atx 形式。
类 Setext 形式是用底线的形式,利用 = (最高阶标题)和 - (第二阶标题),例如:
This is an H1
========
This is an H2
-------------
任何数量的 = 和 - 都可以有效果。
类 Atx 形式则是在行首插入 1 到 6 个 # ,对应到标题 1 到 6 阶,例如:
# 这是 H1
## 这是 H2
###### 这是 H6
你可以选择性地「闭合」类 atx 样式的标题,这纯粹只是美观用的,若是觉得这样看起来比较舒适,你就可以在行尾加上 #,而行尾的 # 数量也不用和开头一样(行首的井字符数量决定标题的阶数):
# 这是 H1 #
## 这是 H2 ##
### 这是 H3 ######
Markdown 使用星号(*)和底线(_)作为标记强调字词的符号,被*或 _ 包围的字词会被转成用 标签包围(斜体),用两个* 或_ 包起来的话,则会被转成
(粗体),例如:
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
会转成:
<em>single asterisksem>
<em>single underscoresem>
<strong>double asterisksstrong>
<strong>double underscoresstrong>
single asterisks
single underscores
double asterisks
double underscores
你可以随便用你喜欢的样式,唯一的限制是,你用什么符号开启标签,就要用什么符号结束。
强调也可以直接插在文字中间:
un**frigging**believable
un frigging believable
但是如果你的 * 和 _ 两边都有空白的话,它们就只会被当成普通的符号。
如果要在文字前后直接插入普通的星号或底线,你可以用反斜线:
\*this text is surrounded by literal asterisks\*
*this text is surrounded by literal asterisks*
用三个以上的星号、减号、底线来建立一个分隔线,可以在星号或是减号中间插入空格,例如:
***
* * *
*******
---
_____
Markdown 可以利用反斜杠来插入一些在语法中有其它意义的符号,例如:如果你想要用星号加在文字旁边的方式来做出强调效果(而不用 标签),你可以在星号的前面加上反斜杠:
\*literal asterisks\*
*literal asterisks*
Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号:
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
在写Blog的时候经常需要引用他人的文字,在 Markdown 中,只需要在你希望引用的文字前面加上>就好了,例如:
> 矛盾说:我从来不梦想,我只是在努力认识现实;戏剧家洪深说:我的梦想是明年吃苦的能力比今年更强;鲁迅说:人生最大的痛苦是梦醒了无路可走;苏格拉底说:人类的幸福和欢乐在于奋斗,而最有价值的是为了理想而奋斗。
矛盾说:我从来不梦想,我只是在努力认识现实;戏剧家洪深说:我的梦想是明年吃苦的能力比今年更强;鲁迅说:人生最大的痛苦是梦醒了无路可走;苏格拉底说:人类的幸福和欢乐在于奋斗,而最有价值的是为了理想而奋斗。
项目标记后面则一定要接着至少一个空格或制表符
列表项目可以包含多个段落,每个项目下的段落都必须缩进 4 个空格或是 1 个制表符:
无序列表:只需要在文字前面加上- 、*、+就可以了,它们效果是一样的,例如:
+ 语文
+ 数学
+ 英语
显示效果:
有序列表:用数字加英文的句点,这里数字不会影响输出,比如:
1. 机器学习
5. 模式识别
3. 人工智能
显示效果:
缩进列表:用:标记要缩进的行,例如:
项目1
: 定义 A
: 定义 B
项目2
: 定义 C
: 定义 D
显示效果:
如果要标记一小段行内代码,你可以用反引号`把它包起来,例如:
C语言中使用`printf()`进行格式化输出。
显示效果:
C语言中使用printf()
进行格式化输出。
将要显示的代码块放在3对反引号中间,CSDN提供的编译器支持不同的语法高亮,只要在反引号后接上语言,例如:
``` python
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
```
显示效果:
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
Markdown 支持自动链接形式来处理网址和电子邮件信箱,只要是用尖括号包起来, Markdown 就会自动把它转成链接。例如:
https://www.baidu.com
Markdown 支持两种形式的链接语法: 行内式 和 参考式两种形式。
不管是哪一种,链接文字都是用 [方括号] 来标记。
要建立一个行内式的链接,只要在方块括号后面紧接着圆括号并插入网址链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可,例如:
This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.
This is an example inline link.
This link has no title attribute.
如果你是要链接到同样主机的资源,你可以使用相对路径:
See my [About](/about/) page for details.
See my About page for details.
参考式的链接是在链接文字的括号后面再接上另一个方括号,而在第二个方括号里面要填入用以辨识链接的标记:
This is [an example][id] reference-style link.
This is an example reference-style link.
你也可以选择性地在两个方括号中间加上一个空格:
This is [an example] [id] reference-style link.
接着,在文件的任意处,你可以把这个标记的链接内容定义出来:
[id]: http://example.com/ "Optional Title Here"
链接内容定义的形式为:
下面这三种链接的定义都是相同:
[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。
链接网址也可以用方括号包起来:
[id]: "Optional Title Here"
你也可以把 title 属性放到下一行,也可以加一些缩进,若网址太长的话,这样会比较好看:
[id]: http://example.com/longish/path/to/resource/here
"Optional Title Here"
网址定义只有在产生链接的时候用到,并不会直接出现在文件之中。
链接辨别标签可以有字母、数字、空白和标点符号,但是并不区分大小写,因此下面两个链接是一样的:
[link text][a]
[link text][A]
隐式链接标记功能让你可以省略指定链接标记,这种情形下,链接标记会视为等同于链接文字,要用隐式链接标记只要在链接文字后面加上一个空的方括号,如果你要让 “Google” 链接到 google.com,你可以简化成:
[Google][]
然后定义链接内容:
[Google]: http://google.com/
由于链接文字可能包含空白,所以这种简化型的标记内也许包含多个单词:
Visit [Daring Fireball][] for more information.
Visit Daring Fireball for more information.
然后接着定义链接:
[Daring Fireball]: http://daringfireball.net/
链接的定义可以放在文件中的任何一个地方,我比较偏好直接放在链接出现段落的后面,你也可以把它放在文件最后面,就像是注解一样。
下面是一个参考式链接的范例:
I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
如果改成用链接名称的方式写:
I get 10 times more traffic from [Google][] than from
[Yahoo][] or [MSN][].
[google]: http://google.com/ "Google"
[yahoo]: http://search.yahoo.com/ "Yahoo Search"
[msn]: http://search.msn.com/ "MSN Search"
上面两种写法都会产生下面的 HTML。
I get 10 times more traffic from <a href="http://google.com/"
title="Google">Googlea> than from
<a href="http://search.yahoo.com/" title="Yahoo Search">Yahooa>
or <a href="http://search.msn.com/" title="MSN Search">MSNa>.
下面是用行内式写的同样一段内容的 Markdown 文件,提供作为比较之用:
I get 10 times more traffic from [Google](http://google.com/ "Google")
than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
[MSN](http://search.msn.com/ "MSN Search").
参考式的链接其实重点不在于它比较好写,而是它比较好读,比较一下上面的范例,使用参考式的文章本身只有 81 个字符,但是用行内形式的却会增加到 176 个字元,如果是用纯 HTML 格式来写,会有 234 个字元,在 HTML 格式中,标签比文本还要多。
使用 Markdown 的参考式链接,可以让文件更像是浏览器最后产生的结果,让你可以把一些标记相关的元数据移到段落文字之外,你就可以增加链接而不让文章的阅读感觉被打断。
Markdown 使用一种和链接很相似的语法来标记图片,同样也允许两种样式: 行内式和参考式。
行内式的图片语法看起来像是:
![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")
详细叙述如下:
参考式的图片语法则长得像这样:
![Alt text][id]
「id」是图片参考的名称,图片参考的定义方式则和链接参考一样:
[id]: url/to/image "Optional title attribute"
到目前为止, Markdown 还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的 标签。
项目 | 价格
-------- | ---
Computer | $1600
Phone | $12
Pipe | $1
项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
可以使用冒号来定义对齐方式:
| 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 |
markdown 代码:
生成一个脚注[^footnote].
[^footnote]: 这里是 **脚注** 的 *内容*.
注:footnote是自定义变量
显示效果:
生成一个脚注1.
部分摘自:http://www.appinn.com/markdown/#link