MarkDown 语法学习笔记
MarkDown,一种让写作者专注于编写的标记式纯文本语言,体验禅意一般的美!
概述
HTML兼容
-
在Markdown涵盖范围之外的标签,都可以直接在文件里面用HTML撰写.
-
区块元素──比如
<div>、<table>、<pre>、<p>
等标签,必需在前后加上空行,以利与内容区隔。而且这些(元素)的开始与结尾标签,不可以用tab或是空白来缩排.在Markdown文件里加上一段HTML表格:
This is a regular paragraph. <table> <tr> <td>Foo</td> </tr> </table> This is another regular paragraph.
-
Markdown语法在
HTML
区块卷标中将不会被进行处理。例如,你无法在HTML区块内使用Markdown形式的*强调*
。 -
HTML的区段标签如
<span>、<cite>、<del>
则不受限制,可以在Markdown的段落、清单或是标题里任意使用。如果比较喜欢HTML的<a>
或<img>
标签,可以直接使用这些卷标,在区段卷标的范围内,Markdown的语法是有效的。
特殊字符处理
在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
才能放到链接卷标的href属性里。在HTML实体中使用&符号的话,它不会被转换,而在其他情形下,它则会被转换成&
。
如果要在文件中插入一个著作权 © 的符号,可以这样写:©
。
MarkDown可能会将 AT&T 转换为 AT&T
,也可能会将 4 < 5 转换为 4 < 5
.
需要注意的是,code范围内,不论是行内还是区块,<和&两个符号都一定会被转换成HTML实体,这项特性让你可以很容易地用Markdown写HTML code。
区块元素
段落和换行
一个段落是由一个以上相连接的行句组成,而一个以上的空行则会切分出不同的段落,
一个以上相连接的行句组成这句话其实暗示了Markdown允许段落内的强迫断行.
如果你真的想要插入<br />
标签的话,在行尾加上两个以上的空白,然后按enter.
标题
Markdown支持两种标题的语法, Setext 和 atx 形式。
Setext形式是用底线的形式,利用=(最高阶标题)和-(第二阶标题),例如:
This is an H1
=============
This is an H2
-------------
任何数量的=和-都可以有效果。
Atx形式则是在行首插入1到6个 # ,各对应到标题1到6阶,例如:
# This is an H1
## This is an H2
###### This is an H6
Atx样式的标题,可以在行尾加上#,而行尾的#数量也不用和开头一样(行首的#数量决定标题的阶数)
区块引言
Markdown使用email形式的区块引言,在每行的最前面加上>:
> 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.
>
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
> id sem consectetuer libero luctus adipiscing.
也允许你只在整个段落的第一行最前面加上>:
> 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.
> > > This is a blockquote.
- 效果:
This is the first level of quoting.
This is nested blockquote.
This is a blockquote.
引言的区块内也可以使用其他的Markdown语法,包括标题、列表、程序代码区块等:
代码:
> ## This is a header.
>
> 1. This is the first list item.
> 2. This is the second list item.
>
> Here's some example code:
>
> return shell_exec("echo $input | $markdown_script");
列表清单
Markdown支持有序列表和无序列表。
无序清单使用星号、加号或是减号作为列表标记:
"* Red
" 等同于 "+ Red
", 也等同于 "- Red
"
有序列表则使用任意整数数字(无需按顺序)接着一个英文句点:1. Bird
如果你使用懒惰的写法,建议第一个项目最好还是从「1.」开始,因为Markdown未来可能会支持有序列表的start属性。
列表项目标记通常是放在最左边,但是其实也可以缩排,最多三个空白,项目标记后面则一定要接着至少一个空白或tab。
如果列表项目间用空行分开, Markdown会把项目的内容在输出时用<p>
标签包起来,如
* Bird
* Magic
会被转换为:
<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>
列表项目可以包含多个段落,每个项目下的段落都必须缩排4个空白或是一个tab,清单中不同的段落用空行隔开,同一段落前面可以缩进也可以不缩进,如:
* This is a list item with two paragraphs.
This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.
* Another item in the same list.
如果要在列表项目内放进引言,那">"就需要缩排:
* A list item with a blockquote:
> This is a blockquote
> inside a list item.
如果要放程序代码区块的话,该区块就需要缩排两次,也就是8个空白或是两个tab:
* A list item with a code block:
<code goes here>
行首出现数字-句点-空白,要避免转化为清单的状况,可以在句点前面加上反斜杠。
1986\. What a great season.
程序代码区块
要在Markdown中建立程序代码区块很简单,只要简单地缩排4个空白或是1个tab就可以,Markdown会用<pre>
和<code>
标签来把程序代码区块包起来,例如,下面的输入:
This is a normal paragraph:
This is a code block.
一个程序代码区块会一直持续到没有缩排的那一行(或是文件结尾)。
<div class="footer">
© 2004 Foo Corporation
</div>
在程序代码区块里面,&、<和>会自动转成HTML实体,这样的方式让你非常容易使用Markdown插入范例用的HTML原始码,只需要复制贴上,再加上缩排就可以了.
程序代码区块中,一般的Markdown语法不会被转换,像是星号便只是星号.
分隔线
可以在一行中用三个或以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号中间插入空白,行的上一行不能有内容,否则可能会变成标题。
* * *
***
*****
- - -
---------------------------------------
区段元素
链接
Markdown支持两种形式的链接语法:行内和参考两种形式。不管是哪一种,链接的文字都是用 [方括号] 来标记。
要建立一个行内形式的连结,只要在方块括号后面马上接着括号并插入网址连结即可,如果你还想要加上链接的title文字,只要在网址后面,用双引号把title文字包起来即可,例如:
This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.
如果你是要链接到同样主机的资源,你可以使用相对路径:
See my [About](/about/) page for details.
参考形式的连结使用另外一个方括号接在链接文字的括号后面,而在第二个方括号里面要填入用以辨识链接的标签,可以选择性地在两个方括号中间加上空白:
This is [an example][id] reference-style link.
接着,在文件的任意处,你可以把这个标签的链接内容定义出来:
[id]: http://example.com/ "Optional Title Here"
连结定义的形式为:
- 方括号,里面输入链接的辨识用卷标(链接辨识卷标可以有字母、数字、空白和标点符号,但是并不区分大小写)
- 接着一个冒号
- 接着一个以上的空白或tab
- 接着连结的网址
- 选择性地接着title内容,可以用单引号、双引号或是括号包着(已知的问题是Markdown.pl 1.0.1会忽略单引号包起来的连结title)
连结网址也可以用方括号包起来:
[id]: <http://example.com/> "Optional Title Here"
你也可以把title属性放到下一行,也可以加一些缩排,网址太长的话,这样会比较好看:
[id]: http://example.com/longish/path/to/resource/here
"Optional Title Here"
默认的链接卷标功能让你可以省略指定链接标签,这种情形下,链接卷标和链接文字会视为相同,要用默认链接卷标只要在链接文字后面加上一个空的方括号:
[Google][]
然后定义连结内容:
[Google]: http://google.com/
由于链接文字可能包含空白,所以这种简化的标签内也可以包含多个文字:
Visit [Daring Fireball][] for more information.
然后接着定义连结:
[Daring Fireball]: http://daringfireball.net/
连结的定义可以放在文件中的任何一个地方,可以直接放在连结出现段落的后面,也可以把它放在文件最后面,就像是批注一样。
参考式的连结其实重点不在于它比较好写,而是它比较好读,使用Markdown的参考式连结,可以让文件更像是浏览器最后产生的结果,你就可以增加连结而不让文章的阅读感觉被打断。
强调
Markdown使用星号(*
)和底线(_
)作为标记强调字词的符号,被*
或_
包围的字词会被转成用<em>
标签包围,用两个*
或_
包起来的话,则会被转成<strong>
,你用什么符号开启卷标,就要用什么符号结束。
但是如果你的 * 和 _ 两边都有空白的话,它们就只会被当成普通的符号。
如果要在文字前后直接插入普通的星号或底线,你可以在它前面加上反斜杠。
\*this text is surrounded by literal asterisks\*
程序代码
如果要标记一小段行内程序代码,你可以用反引号把它包起来(`),例如:
Use the `printf()` function.
如果要在程序代码区段内插入反引号,你可以用多个反引号来开启和结束程序代码区段:
``There is a literal backtick (`) here.``
程序代码区段的前端和后端端都可以放入一个空白.
在程序代码区段内,"&"和"<" ">"都会被转成HTML实体,这样会比较容易插入HTML原始码,Markdown会把下面这段:
Please don't use any `<blink>` tags.
转为:
<p>Please don't use any <code><blink></code> tags.</p>
图片
Markdown使用一种和链接很相似的语法来标记图片,同样也允许两种样式:行内和参考。
行内图片的语法看起来像是:
![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")
详细叙述如下:
- 一个惊叹号!
- 接着一个方括号,里面放上图片的替换文字
- 接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上选择性的'title'文字。
参考式的图片语法则长得像这样:
![Alt text][id]
「id」是图片参考的名称,图片参考的定义方式则和连结参考一样:
[id]: url/to/image "Optional title attribute"
到目前为止, Markdown还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的标签。
其他
自动链接
Markdown支持比较简短的自动连结形式来处理网址和电子邮件信箱,只要是用方括号包起来,Markdown就会自动把它转成链接,链接的文字就和链接地址一样.
<http://example.com/>
邮件连结也很类似,只是Markdown会先做一个编码转换的过程,把文字字符转成16进位码的HTML实体.
<address@example.com>
MD转义字符
Markdown可以利用反斜杠来插入一些在语法中有其他意义的符号,例如:如果你想要用星号加在文字旁边的方式来做出强调效果(但不用<em>
标签),你可以在星号的前面加上反斜杠:
\*literal asterisks\*
Markdown支持在下面这些符号前面加上反斜杠来帮助插入普通的符号:
\ 反斜杠
` 反引号
* 星号
_ 底线
{} 大括号
[] 方括号
() 括号
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
date: 2015-04-18
tags: Markdown; 语法; code; 文本; 编辑;