Idle Works, Idle Thoughts

Markdown,一种易写易读的简单标记语言

Markdown是一种简单的标记语言,你可以用你最喜欢的文本编辑器,打开一个空白文件(以.md作为文件后缀),就开始写作。完成编辑后,通过一些工具,就能转换得到HTML文件。通过少量的Markdown标签,就能控制大多数写作排版所需的元素,如标题、表格、引用、代码段、列表(有序列表和无序列表)、链接、嵌入图片等。和直接写HTML代码没什么两样,不过是轻松了许多。

Markdown基本上是这样的一种东西,你只需要花1小时就能掌握,然后就可以坐享其成,终身受益。如果你经常写作,并且没有复杂的排版要求,那么Markdown绝对值得一试。

Markdown以简单著称,因此有许多场合它都无法胜任,如:

1. 有复杂排版需求。

2. 大量的动态内容。

以及其他一切连HTML都不适合的场合,毕竟Markdown只相当于HTML的一个子集罢了。

如果要在Markdown中使用HTML的特殊字符,可将之写在<span>标签中,如:

<span>&sect;</span> 

它将输出一个章节符号:§.

如果你有较多的格式想用CSS控制,可以用JavaScript稍微改写一下Markdown生成的HTML代码。例如每篇文章的写作日期:

<span class="date">2015年10月17日</span>

在Markdown里嵌入这样的标签是很dirty的。稍微好一些的做法是在Markdown里这样写:

@date 2015年10月17日

然后用JavaScript把@date改写为一个HTML标签:

(function(){
  var ps = document.getElementsByTagName('p');
  for(var i = 0; i < ps.length; ++i) {
    var p = ps[i].innerHTML;
    if(p.indexOf("@date ") === 0) {
      ps[i].innerHTML = "<div class='date'>" + p.substring(6) + "</div>";
    }
  }
})();

Markdown语法基础

Markdown 是一种简单标记语言,易写易读,可被转为HTML。

标题:用#表示h1,##表示h2,以此类推。

无序列表:用*-在文本前打头,即展开为无序列表。

有序列表:用1.等数字加.打头,即展开为有序列表。 如果你想保留自己的数字排序,可以写作:

1\.0
1\.1

输出为:

1.0
1.1

这样通过\转义., 会被Markdown保留为文本,而非转为列表。

嵌入链接:

[text](link)

如果链接很长,直接嵌入正文影响美观,有另一种写法:

[text][1]
...
[1]: http://example.com/long-link.html

嵌入图片:

![flower](/images/flower.png)

有两种方式可设置图片样式。

1. 通过CSS selector来设定图片样式,如:

img[alt=flower] { width:1024px; }

2. 使用HTML标签,如:

<img alt="flower" src="/images/flower.png" class="large" />

嵌入代码段:选中代码段,在代码段的每行前输入一个Tab。

引用:在文本段前加>,并留一个空格。

强调:用 _* 包裹文字,将被转为 <em>(emphasis-强调)标签;用 __** 包裹文字,将被转为 <strong>(加重)标签。虽然他们看上去像是斜体或粗体,但Markdown本身不关注文本的展现形式,因此它们与 bold(粗体)、 italics(斜体) 有本质区别。同样的,Markdown 中也没有所谓的下划线。

表格:

| H1 | H2 | H3 |
| -- | -- | -- |
| ab | cd | ef |

输出如:

H1 H2 H3
ab cd ef