[TOC]
寫在前面
最終艘策,我的博客還是回歸到了起點(diǎn)。
博客斷斷續(xù)續(xù)幾年撕贞,盡是折騰界面美化和各種網(wǎng)站框架或者建站工具霎挟,最終,失去了其核心價(jià)值麻掸,即內(nèi)容和思想的沉淀酥夭。這更使得我的博客流于表面,對于自己的成長脊奋,也沒有起到太多正面的作用描睦。
反思后幔烛,決心回歸最簡單的格式外觀嗡贺,將重點(diǎn)集中于高質(zhì)量內(nèi)容的沉淀上赎懦。
這也是為什么又回到了 Markdown 的懷抱。
至于編輯器久又,我用過了眾多純編輯器巫延,眾多 Web 版的富文本編輯器,以及許許多多Markdown 編輯器后地消,決定使用最的 Vim炉峰。同時(shí),也推薦一款 Markdown 編輯器Typora
脉执。這款軟件足夠輕量級疼阔,同時(shí)功能做到了盡可能的簡單。至于 Web 編輯器,我使用簡書
婆廊。
Markdown 概述
Markdown 是一種輕量級的 “標(biāo)記語言”迅细,創(chuàng)始人為約翰·格魯伯(John Gruber)。它允許人們“使用易讀易寫的純文本格式編寫文檔淘邻,然后轉(zhuǎn)換成有效的XHTML(或者HTML)文檔”茵典。
——Wikipedia
Markdown 擁有這眾多的優(yōu)點(diǎn)
- 純文本編輯
- 學(xué)習(xí)成本低
- 廣泛的軟件支持
- 在碼農(nóng)界有深厚的基礎(chǔ)
基礎(chǔ)語法
強(qiáng)調(diào)
星號與下劃線都可以,單是斜體宾舅,雙是粗體统阿,符號可跨行,符號可加空格
代碼 | 效果 |
---|---|
*這是斜體* |
這是斜體 |
_這是斜體_ |
這是斜體 |
**這是粗體** |
這是粗體 |
__這是粗體__ |
這是粗體 |
標(biāo)題
代碼:
# 一級標(biāo)題
## 二級標(biāo)題
### 三級標(biāo)題
#### 四級標(biāo)題
##### 五級標(biāo)題
###### 六級標(biāo)題
效果如下:
一級標(biāo)題
二級標(biāo)題
三級標(biāo)題
四級標(biāo)題
五級標(biāo)題
六級標(biāo)題
注意
- 最后一個(gè)
#
字符與標(biāo)題中間要留有一個(gè)空格 - 標(biāo)題共提供 6 級
- 一般行文中贴浙,標(biāo)題應(yīng)置于行首。若置于表格中署恍,可能無法正確解析
引用
Markdown 中引用通過符號 '>' 來實(shí)現(xiàn)崎溃。'>' 符號后的空格,可有可無盯质。
在引用的區(qū)塊內(nèi)袁串,允許換行存在,換行并不會(huì)終止引用的區(qū)塊呼巷。如果要結(jié)束引用囱修,需要一行空白行,來結(jié)束引用的區(qū)塊王悍。
代碼:
> 這是一句引用
> 這句仍然在引用區(qū)塊內(nèi)
>> 這是一句嵌套引用
>> 這句仍然在嵌套引用區(qū)塊內(nèi)
>
> 另起一行的引用破镰。前面需要一個(gè)視覺上的空行表示內(nèi)層嵌套的結(jié)束,空行前面的('>')可以有可以沒有压储。
效果如下:
這是一句引用
這句仍然在引用區(qū)塊內(nèi)這是一句嵌套引用
這句仍然在嵌套引用區(qū)塊內(nèi)另起一行的引用鲜漩。前面需要一個(gè)視覺上的空行表示內(nèi)層嵌套的結(jié)束,空行前面的('>')可以有可以沒有集惋。
列表
有序列表
數(shù)字不能省略但可無序孕似,點(diǎn)號之后的空格不能少。
雖然下面代碼的序號是 1刮刑,2喉祭,4,但是在顯示時(shí)雷绢,仍然為自然數(shù)序列泛烙,并不是完成與編號一致。
同樣的翘紊,在列表的最后需要留有一行空行胶惰,以表達(dá)列表的結(jié)束,不然將作為一個(gè)無編號的列表存在霞溪。
代碼:
1. 列表 A
2. 列表 B
4. 列表 C
效果如下:
- 列表 A
- 列表 B
- 列表 C
無序列表
符號之后的空格不能少孵滞,-+*
效果一樣中捆,但不能混合使用
代碼:
- 列表 A1
- 列表 B1
+ 列表 A2
+ 列表 B2
* 列表 A3
* 列表 B3
效果如下:
- 列表 A1
- 列表 B1
- 列表 A2
- 列表 B2
- 列表 A3
- 列表 B3
嵌套列表
有序與無序,以及有序和無序列表本身都是可以自由的嵌套的坊饶。
Markdown 中的列表嵌套泄伪,通過在符號前增加空格來表示。同一級別下匿级,前面的空格數(shù)目應(yīng)該保持一致蟋滴。每遞進(jìn)一級,我習(xí)慣上使用 2 個(gè)空格縮進(jìn)來表示痘绎。
代碼:
- 一級列表 A
- 一級列表 B
- 二級列表 A
* 二級列表 B
+ 三級列表 A
- 一級列表 C
效果如下:
- 一級列表 A
- 一級列表 B
- 二級列表 A
- 二級列表 B
- 三級列表 A
- 一級列表 C
注意津函,有序列表的嵌套,也是通過預(yù)留空格實(shí)現(xiàn)
- 有序一級列表 A
- 有序一級列表 B
- 有序二級列表 A
- 有序二級列表 B
- 無序三級列表 A
- 無序三級列表 B
- 有序一級列表 C
分割線
三個(gè)或更多-_*
孤页,必須單獨(dú)一行尔苦,可含空格。
例如以下形式行施,都可以表示為分割線允坚。
代碼:
---
- - -
___
_ __
***
* **
* * *
進(jìn)階語法
超鏈接
圖片與鏈接,在 Markdown 語法中表達(dá)類似蛾号,都是 [鏈接文字](鏈接地址)
這樣的形式稠项。
普通鏈接
代碼:
[Wikipedia Markdown 條目](https://zh.wikipedia.org/wiki/Markdown)
[Wikipedia Markdown 條目](https://zh.wikipedia.org/wiki/Markdown "Markdown 條目")
效果如下:
Wikipedia Markdown 條目
Wikipedia Markdown 條目
圖片鏈接
圖片需要在 []
前增加一個(gè) !
以使得圖片在網(wǎng)頁上直接顯示,而不僅僅是個(gè)鏈接形式鲜结。
代碼:
![維基百科 Logo](https://zh.wikipedia.org/static/images/project-logos/zhwiki.png)
![維基百科 Logo](https://zh.wikipedia.org/static/images/project-logos/zhwiki.png "維基 Logo")
效果如下:
![維基百科 Logo](https://zh.wikipedia.org/static/images/project-logos/zhwiki.png)
![維基百科 Logo](https://zh.wikipedia.org/static/images/project-logos/zhwiki.png)
上面分別有兩個(gè)超鏈接和兩張圖片展运,兩個(gè)超鏈接的區(qū)別在于一個(gè)增加了說明注釋,而另一個(gè)沒有精刷,圖片同理乐疆。
索引鏈接
索引鏈接,本質(zhì)上與前兩種鏈接一致贬养,只是索引鏈接將 [鏈接文字](鏈接地址)
分離為[鏈接文字][索引]
, [索引]:鏈接地址
的形式挤土。
代碼:
[Wikipedia Markdown 條目][1]
[1]:https://zh.wikipedia.org/wiki/Markdown
效果如下:
[Wikipedia Markdown 條目][markdown]
[markdown]:https://zh.wikipedia.org/wiki/Markdown
表格
對于表格的支持,要根據(jù)具體的 Markdown 解釋器來判定误算。在 hexo 中仰美,支持以下 Markdown 形式的表格。
需要注意以下幾點(diǎn):
- 表格第一行為標(biāo)題儿礼,樣式會(huì)被特殊處理
-
|
前后要留有空格 - 只要是三個(gè)
-
字符表示分隔線 - 通過
:
來區(qū)分咖杂,左對齊、居中蚊夫、右對齊
代碼:
| 1 | 2 | 3 |
| --- |:---:| ---:|
| aaa | bbbbbb | c |
| aaaaaa | b | ccc |
效果如下:
1 | 2 | 3 |
---|---|---|
aaa | bbbbbb | c |
aaaaaa | b | ccc |
代碼
行內(nèi)代碼
如果要標(biāo)記一小段行內(nèi)代碼诉字,可以用反引號 ` 把它包起來
代碼:
這是一段行內(nèi)代碼,`System.out.println("article id: " + articleId);` 摘自 Redis 工程。
效果如下:
這是一段行內(nèi)代碼壤圃,System.out.println("article id: " + articleId);
摘自 Redis 工程陵霉。
區(qū)塊代碼
如果要成塊的引用代碼,有兩種方法伍绳,一種是用制表符縮進(jìn)踊挠,另一種,則是用三個(gè)反引號 ```冲杀,將代碼塊包起來效床。
在三個(gè)反引號后,加上語言說明权谁,例如 ```java 這樣剩檀,便指定了之后的代碼采用 java 的高亮。
效果如下:
public int genRandPost(int bound) {
Random rand = new Random();
int cnt = rand.nextInt(bound);
Map<String, String> map = new HashMap<String, String>();
long articleId;
for (int i = 0; i < cnt; i++) {
articleId = jedis.incr("article:");
map.put("author", "author" + i);
map.put("article", "This is article " + i);
jedis.hmset("article:" + articleId, map);
map.clear();
}
System.out.println("Insert " + cnt + " posts.");
return cnt;
}
公式
大神提供了 hexo 下自動(dòng)部署 MathJax 插件旺芽。安裝好插件后沪猴,遍可以使用 \(LaTex\) 來顯示數(shù)學(xué)公式了。
在行內(nèi)輸入公式甥绿,需要在公式前后加上兩個(gè)反斜杠 '' 以及一個(gè)括號字币,前后兩個(gè)括號要成對则披。
而獨(dú)立成行的公式共缕,則使用兩個(gè)美元符 '$'。
代碼:
在行內(nèi)插入公式 \\(x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\\) 是這樣的士复。
$$x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$
$$
\begin{eqnarray}
\nabla\cdot\vec{E} &=& \frac{\rho}{\epsilon_0} \\
\nabla\cdot\vec{B} &=& 0 \\
\nabla\times\vec{E} &=& -\frac{\partial B}{\partial t} \\
\nabla\times\vec{B} &=& \mu_0\left(\vec{J}+\epsilon_0\frac{\partial E}{\partial t} \right)
\end{eqnarray}
$$
效果如下(簡書下不可用):
在行內(nèi)插入公式 \(x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}\) 是這樣的图谷。
$$x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}$$
$$
\begin{eqnarray}
\nabla\cdot\vec{E} &=& \frac{\rho}{\epsilon_0} \
\nabla\cdot\vec{B} &=& 0 \
\nabla\times\vec{E} &=& -\frac{\partial B}{\partial t} \
\nabla\times\vec{B} &=& \mu_0\left(\vec{J}+\epsilon_0\frac{\partial E}{\partial t} \right)
\end{eqnarray}
$$
參考資料
[1] Wikipedia Markdown 條目,https://zh.wikipedia.org/wiki/Markdown
[2] 不如的博客阱洪,http://ibruce.info/2013/11/26/markdown/
[3] Markdown 語法說明 (簡體中文版)便贵,http://wowubuntu.com/markdown/index.html
[4] Markdown:讓書寫更美好,http://www.reibang.com/p/17fdcf17bbb4
[5] Markdown中插入數(shù)學(xué)公式的方法, http://blog.csdn.net/xiahouzuoxin/article/details/26478179