Markdown

2017-02-21 · 🙈Lei · 0条 · 620次

Markdown是一种纯文本格式语法的轻量级标记语言,对于WEB开发者来说是文本向HTML转换的工具。它通常被用来格式化readme文件(Github的README等),在网上论坛留言,使用纯文本创建富文本。Markdown是自由软件,遵循BSD开源协议。

Markdown是John Gruber(wiki, 官网)和Aaron Swartz(wiki,计算机天才,后来因入侵MIT和JSTOR被捕,2013上吊自杀。)合作在2004年创建的。开发者提供了一个Perl写的软件工具,可以将纯文本转换为HTML。Markdown下载地址

对于Markdown来讲,可读性是重中之重。一个Markdown格式的文档应该以纯文本的格式来表现,而不需要带有标签或者格式说明。Markdown语法受到了很多文本向HTML转换的软件的启发,其中最主要的灵感来源是纯文本电子邮件的格式。Markdown尽量采用一些顾名思义的标点符号来作为语法结构。其语法的目的是:作为web写作的一种格式。Html是一种publishing格式,Markdown是一种writing格式。


Markdown学习引导

Markdown项目主页


语法

INLINE HTML

当要使用markdown没有的语法时,可以直接使用HTML标签,不需要指明从Markdown向HTML转换,它可以自己识别。对于像<div>、<table>、<pre>、<p>等block-level块级的HTML元素时,必须使用空行将其和上面和下面的内容分离开。开始和结束标签不能用tabs或者空格进行缩进。不要在HTML块级标签周围添加额外(非期望)的<p>标签,因为Markdown足够聪明来识别段落(普通文本)。

下面的例子是在Markdown文章中添加HTML table。

<code>This is a regular paragraph. 

<table> 
    <tr> 
        <td>Foo</td> 
    </tr> 
</table> 
<span class="redactor-invisible-space">
</span>This is another regular paragraph.
</code>

Markdown格式语法在HTML标签中是无法解释的,所以在HTML块中不要使用Markdown语法。

像<span>、<cite>、<del>这种span-level的HTML标签,可以在Markdown段落、列表项、头header的任何位置使用。你甚至可以使用HTML标签来代替Markdown语法格式。

AUTOMATIC ESCAPING FOR SPECIAL CHARACTERS 特殊字符的自动转义

在HTML中有两个字符需要特殊对待<和&、<是开始标签,&用来表示HTML实体。如果想要在HTML中将他们作为文字字符,需要将他们转义为实体,&lt;和&amp;。

在HTML中,你是需要将这两个特殊字符做转义的,想打印他们的时候,不能直接使用。但是在Markdown中可以直接使用,它会自动做必要的转义。如果你把&作为HTML实体的一部分使用,那么Markdown会保留&不变,如果不是作为HTML实体的一部分,那么Markdown会自动将其转义为&amp;。

正因为markdown可以自动转义,所以使得写HTML代码更加容易。

BLOCK ELEMENTS

Paragraphs and Line breaks 段落和断行

段落就是一行或者多行连续的文本,通过一行或者多行空行进行分隔。空行就是除了空格和Tabs什么都没有的行。正常段落不应该被空格或者Tabs缩进。

Markdown不会把段落的断行符转换为<br/>标签。当需要在Markdown中使用<br/>的时候,只需要在该行的最后输入两个或者更多空格,然后回车即可。这样会更有效率。

在列表和引用中最好使用硬断行hard breaks——一行空行,这样看起来更美观。

Headers 标题

Markdown支持两种类型的header,Setext和atx。

Setext类型的标题使用等号和破折号分别表示H1和H2。任意数量的等号和破折号都是好使的。

Atx类型的标题使用1-6个#来表示H1-H6。也可以使用闭合的#,就是在标题前后都加上#,但是后面的数量不用匹配上前面的数量。

Blockquotes 引用

Markdown使用>作为引用的语法。为了美观,可以在引用的每一行前都加一个>,但是只在引用段的第一行加一个>也是可以的。

>This is a blockquote

引用可以嵌套,引用中的引用只需要再加额外的>即可。

>>Blockquote Level 2

引用中可以包含其他的Markdown元素,包括header,lists和code blocks。


Lists 列表

Markdown支持numbered(有序号的)和bulleted(不用序号,使用强调符号的)列表。

Bulleted列表使用星号(*),加号(+)和连字符(-)。它们是等价的。

Numbered列表使用数字。实际使用的数字,跟HTML输出是没有关系的,即使我全用1,看到的还是排好序的。虽然这样,但最好还是从1来。以后markdown可能会支持从任意数开始,所以不要养成不好的习惯。

列表可以在元素符号后加1个或者多个空格或者是一个tab。为了让文本更好看,可以使用悬挂缩进。


如果列表项之间被空行分割,Markdown会在输出为HTML时在项目内容中加上<p>标签。


一个列表项中可能有多个段落,每个子段都必须用4个空格或者1个tab来缩进。


如果在列表项中加入引用,那么>需要缩进。


如果在列表项中加入代码,需要缩进两次,即8个空格或者两个tabs。


有时候为了避免错误触发列表,需要将.转义。


Code Blocks 代码块

用4个空格或者1个tab缩进,Markdown就会将其作为代码块。


4个空格或者1个tab就是一种级别的缩进 。

代码块直到遇到没有缩进的那行就会结束,或者文章末尾。

在代码块中,&和<和>会被自动转换为HTML实体,这样再Markdown中加入HTML代码就会变得很容易,不需要再进行转义等操作。

在Markdown的代码块中将不会再处理Markdown语法,所以在代码块中写Markdown文本也是完全可以的。

Horizontal Rules 水平线

放3个或者更多的连字符(-)、下划线(_)、星号(*)会生成水平线。连字符、下划线、星号之间是可以使用空格的。

SPAN ELEMENTS

Links 链接

Markdown支持两种形式的链接:inline和reference。在这两种形式中,链接文本都是通过[]来界定。

Inline类型的链接:在方括号后紧跟小括号(),里面放置链接地址,也可以放title,但title是可选的。

如果是访问同一个服务器上的内容或者资源,可以使用相对地址

See my [About](/about) page to learn more about me.

Reference类型的链接:使用第二对[],在第二对里面放置一个定义了链接的标签。两对[]之间是可以有空格的。在文档的任意位置,在单独一行中定义这个标签即可。

This is [an example][id] of reference-style link. 
This is [an example] [id] of reference-style link. 
[id]: <a href="http://www.geek-era.com">http://www.geek-era.com</a> "Optional Title Here" 

对于标签(label)的定义:

  • · 方括号中放置链接标识符,左边可以放置三个空格的缩进,也可以没有。
  • · 后面紧跟冒号。
  • · 然后紧跟一个或者多个空格,或tabs。
  • · 后面是链接地址。
  • · 最后是可选的Title,用双引号或者单引号或者圆括号括起来。

下面图片中的几行是等价的:

Markdown.pl 1.0.1中有一个BUG,不能使用单引号。

URL也可以使用尖括号括起来。

[id]: <<a href="http://www.geek-era.com">http://www.geek-era.com</a>> "Title Here"

title属性也可以放置在新的一行,使用额外的空格或者tabs来增加缩进,这样在使用长URL的时候看起来更美观。

标签(链接名)可以包含字母,数字,空格和标点符号,非大小写敏感。

隐式链接允许省略链接名,这时链接文本就是连接名。后面跟一个空的方括号对。

因为链接名是可以包含空格的,所以链接文本使用多个词也是可以的。

链接定义可以放置在文档的任意位置,你可以放置在每段的结尾,也可以放置在文章末尾。


这种Reference类型的链接使得文本更清晰可读,而且更接近输出。而且使用这种,不需要打断你文章的叙述。

Emphasis 强调

Markdown使用*和_用来强调。一个*或_表示倾斜<em>,两个*(**)或者两个_(__)表示加粗<strong>。使用*还是_是随意的,但是开始和结束必须相同,也就是说要使用*开始,那么也要用*结束,使用_开始,那么也要用_结束。强调是可以在词的中间部分使用的。

un*frigging*beliebale

如果*或者_周围有空格,那么它们就会被认为是文字字符。

如果需要输出*或者_,但是可能会解释为强调的时候,使用转义。

Code

表明一段代码,可以使用撇号`。

在开始撇号后和结束的撇号前可以各放置一个空格,这样就可以在撇号中放置字符撇号。

在代码块中,ampersands和angle brackets会自动被转为HTML实体,这样在代码段中添加html标签就很容易,不需要手动转义。

Images 图片

Markdown中的图片跟链接一样,有两种方式:inline和reference。

Inline类型:

Reference类型:

Markdown无法指定图片尺寸,如果尺寸很重要的话,直接使用HTML的<img>标签。

MISCELLANEOUS

Automatic Links 自动链接

Markdown支持一种快捷的链接类型来创建URL或者电子邮件地址的自动链接。用尖括号<>将URL或者电子邮件地址括起来。这样会直接将URL或电子邮件地址显示出来。

<http://www.geek-era.com>

电子邮箱也是很类似的,不过Markdown会进行十六进制编码来隐藏邮件地址。这样虽然不会保证绝对安全,但是可以起到一定的安全作用,防止地址捕获代码抓取地址,发送垃圾邮件等。

Backslash Escapes 反斜杠

使用反斜杠可以将那些Markdown可能当做特殊字符来处理的字符作为字符输出,而不进行特殊的解释。像前面提到过的强调,如果不想强调,而是输出*,就可以使用\*。


  0