Markdown语法入门

2015-09-05  本文已影响649人  SpaceCat

Markdown火了貌似好一阵子了,但一直以来都没有时间好好学习下它的语法。这是我用Markdown写的第一篇文章,是对Markdown: Syntax的概要翻译,希望对大家和自己都有帮助。

1、写在前面

1.1 段和行

Markdown中一段(Pragraph)是一行或多行连续的文本。段与段之间由一个或多个空行隔开。空行就是看起来没有内容的行,只包含空格或者tab的行都叫做空行。Markdown中一般的不包含特殊格式的文本,不应该用空格或者tab缩进。

1.2 "Hard wraped" text paragraph

A paragraph is simply one or more consecutive lines of text, separated by one or more blank lines.
The implication of "one or more consecutive lines of text" rule is that Markdown supports "hard wraped" text paragraphs. This differs significantly from most other text to html formatters(including Movable Type's "Convert Line Breaks" option) which translate every line break character in a paragraph into a
tag.

1.3 如何产生<br/>

在一行的末尾加两个或两个以上的空格,Markdown就会插入一个<br/>标签。尽管这样做不如其它text to html工具方便,但是这样便于后面的列表和引用块排版。

1.4 HTML实体

Markdown会自动将&、>、<等转化为HTML实体,这一特点极大地提高了网络写作的方便性。

2、块元素(block elements)

2.1 标题

  1. Setext风格
    一级标题下面用等号“=”。
    二级标题下面用连字符“-”。
  2. Atx风格
    开头使用1-6个“#”,对应1-6级标题。为了美观,标题的结尾也可以加上相应的“#”,但是其数量没有要求。

2.2 引用块

“>”后面跟至多四个空格,产生引用块。可以在引用块中的每行都添加引用块标识,也可以只在第一行添加。
引用块可以嵌套,如下:

> This is quote item1, level1.
> > This is quote item1, level2.
> > This is quote item2, level2.

引用块中也可以有其它元素,如:

> Headline as following:
> ## Headline Level2

2.3 列表

列表标识后面必须要跟一个或者多个空格或一个tab。

  1. 有序列表
    数字后面跟英文句号开头会产生一个有序列表项,注意,数字的值并不会影响最终生成的文档。
  2. 无序列表
    “*”、“+”和“-”开头会产生一个无序列表项。

说明:

2.4 代码块

开头缩进4个空格或一个tab,会产生一个代码块。Markdown用<pre><code>标签来包裹其中的内容。
说明:

2.5 水平线

三个或者三个以上的“*”、“_”或“-”占一行会产生一条水平线,对应HTML中的<hr/>标签。

3、Span elements

3.1 链接

Markdown的链接有两种类型:inline和reference。

  1. Inline根据有无title可以有两种格式:

     [an example](http://example.com "optional title")
     [an example](http://example.com)
    

    如果引用的资源在同一服务器,可以采用相对路径。

  2. Reference格式:

     [an example][id]
    

    然后,在文档的任意位置,用下面的格式定义:

     [id]:http://example.com/ "Optional title here"
     [id]:http://example.com/ 'Optional title here'
     [id]:http://example.com/ (Optional title here)
     以上三种方式等价。当url过长时,也可以把title放在相邻的下一行。
    

说明:

3.2 强调

  1. 斜体
    “*”和“_”包裹都能够产生斜体格式的文本,对应HTML的<em>标签。

     *这部分是斜体*
     _这部分也是斜体_
    
  2. 粗体
    用两个“*”或两个“_”包裹都可以产生粗体格式的文本,对应HTML的<strong>标签。

强调可以在单词中使用,如:

un**frigging**believable

如果用空格包裹了“*”或“_”,它们就会被当成纯文本。同样,也可以用“\”对“*”或“_”进行转义。

3.3 Code span

反引号包裹可以产生一段code span。和code block不同,code span可以出现在一个段落中,如:

Use `printf()` to say hello world.

为了可以在code span中包含一个反引号,可以使用双反引号来产生code span,如:

``There is a backtick(`) here.``

包裹code span的反引号,开始后和结束前可以紧跟一个空格,这使得可以在code span开头和结尾放一个反引号,如:

` ` `
`` `foo` ``

code span中的“&”、“>”等会自动转义为HTML实体。

3.4 图片

类似于链接,图片也有两种格式:inline和reference。

  1. Inline:

     ![Alt text](/path/to/img.jpg)
     ![Alt text](/path/to/img.jpg "Optional title here")
    

可以看出,和链接非常类似。

  1. Reference:

     ![Alt text][id]
     然后,在文档的任意位置,用下面的格式定义:
     [id]:url/to/img "Optional title here"
    

4、其它

4.1 链接和邮箱地址的简捷方式

  1. 链接

     <http://example.com/>会生成<a href="http://example.com/">http://example.com/<a/>
    
  2. 邮箱地址

     <address@example.com>
    

不但会将其转化为相应的链接,而且为了防止邮箱被恶意爬取,Markdown还会将其中的每个字符都用HTML实体表示。

4.2 转义

为了显示Markdown的标识字符,可以用“\”对它们进行转义。需要转义的字符如下:

4.3 表格

其实,表格不是Markdown标准支持的,但是因为常用,这里说下Github Favored Offline风格的表格写法:

| 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
上一篇 下一篇

猜你喜欢

热点阅读