Markdown 語法的超快速上手

本文支持WTFPL協議,所以你想往哪轉就往哪轉。html

[TOC]ios

Why markdown?

Markdown是一種可使用普通文本編輯器編寫的標記語言,經過簡單的標記語法,它可使普通文本內容具備必定的格式。 Markdown具備一系列衍生版本,用於擴展Markdown的功能(如表格、腳註、內嵌HTML等等),這些功能原初的Markdown尚不具有,它們能讓Markdown轉換成更多的格式,例如LaTeX,Docbook。Markdown加強版中比較有名的有Markdown Extra、 MultiMarkdown、 Maruku等。這些衍生版本要麼基於工具,如Pandoc;要麼基於網站,如GitHub和Wikipedia,在語法上基本兼容,但在一些語法和渲染效果上有改動。 - Baidu Baike程序員

上述內容告訴你,Markdown是一種標記語言,再粗暴一點說,就是排版用的,再再粗暴一點,就是如何讓你看起來如同記事本通常平淡的文本可以變得花裏胡哨。安全

偷偷告訴你:這篇文章就是用Markdown寫的。服務器

標記語言??我知道HTML啊,有什麼區別麼??

他倆啥關係

Markdown是基於HTML所開發的,與HTML不一樣的是,Markdown(如下簡稱MD)並不受W3C基金會管理,但自己也是開放的。 Markdown容許內嵌HTML代碼(儘管不徹底支持HTML標準下的全部標籤,這是出於安全考慮,並且這也不是倡用的行爲),而在網頁顯示的時候這些Markdown語法也會被轉換成對應的HTML標記文本顯示在你的面前。 可是如今的Markdown並不僅限於能夠轉換爲HTML,新的技術(Pandoc)標明他們實際上還能夠轉換成doc或者pdf之類的……markdown

他倆誰好用

這不是一個能夠很快下定論的東西,無所謂誰更好或者更糟,若是Markdown和HTML真能像這樣一較高下的話恐怕另外一個也就不復存在了不是。 他們兩個的面向是不一樣的,HTML專一於一種通用的,可以在各個設備上在必定的文本協議(HTTP/HTTPS)下正確的進行顯示,因此論強大的話,HTML能夠支持更加花哨強大的功能,可是相對應的,使用起來就要繁瑣一些,而且具有一個至關龐大的語法標準和一些協議性的說明。 而Markdown則是面向於快速標記的,並且對程序員很是友好(由於自己針對代碼的排版作了相關的處理,可比HTML的<code>再配上一堆亂七八糟的CSS方便多了),所以廣受IT行業的青睞,不只如此,最近的Markdown甚至能夠支持部分$\mathrm{\LaTeX}$語法(固然主要用於寫數學公式用,而另外一方面用於HTML的MathML彷佛沒能推廣起來的樣子)網絡

因此簡單來講,Markdown比HTML用起來快,但HTML具備Markdown沒法替代的功能。 Markdown 用起來有多快??看看下面這段話就知道了:編輯器

萬維網聯盟建立於1994年,是Web技術領域最具權威影響力的國際中立性技術標準機構。到目前爲止,W3C已發佈了200多項影響深遠的Web技術標準及實施指南工具

Markdown:網站

> *萬維網聯盟*建立於**1994**年,是Web技術領域**最具權威**和**影響力**的國際中立性技術標準機構。到目前爲止,W3C已發佈了200多項影響深遠的Web技術標準及實施指南

HTML:

<blockquote><p><i>萬維網聯盟</i>建立於<b>1994</b>年,是Web技術領域<b>最具權威</b>和<b>影響力</b>的國際中立性技術標準機構。到目前爲止,W3C已發佈了200多項影響深遠的Web技術標準及實施指南<br /></p></blockquote>

據上述內容統計,當輸入一個HTML標籤的時候,你須要按下若干次的Shift+,+Shift+.+←[+/]+標籤鍵位,而在Markdown裏至多隻須要若干次的Shift+8而已,根據時間複雜度o(n)的分析和人體工學的相關……

How?

本人的資歷尚淺,即使如此本身仍是能但願經過本身綿薄的力量幫助你們快速上手,本身從大二開始常用Markdown記錄筆記,所以用的還算方便和熟練。所以這裏針對一些很是很是經常使用的功能進行說明:。

標題文本(巧了,說的不就是我麼??)

標題文本通常用#開始,#的數量決定標題的等級,這和HTML裏面的<h1><h6>多少有些相似,儘管Markdown的最終渲染結果取決於各服務器提供的CSS文件但通常來講,層級越高(##...## Title)的標題一般字會越小做爲副標題使用。 好比,這段的標題實際上就是這麼寫的

## 標題文本

是的,根據井號的數量來看,這是個二級標題。 如沒有特殊規定,通常標題最大支持到六級(正好對應HTML的<h6>) 在有些Markdown系統下,#能夠(甚至會要求)成對出現

## 標題文本 ##

可是博客園裏的沒作這種要求

標題屬於行級格式,所以標題只能出現於一行的行首,而不容許在行的中間或結尾出現,並且當某一行被標註爲標題的時候,整個一行的文字都會變成標題的格式。位於行中間的井號會被真的處理爲#

位於分割線上方的文本會被自動處理爲標題

粗體、斜體、粗斜體、刪除線

不怕影子

正是這樣,Markdown提供了一種很是快速方式進行這種文字版式的替換,使用若干個成對的*完成: 一對*斜體*斜體*)(不知何種緣由,博客園的MD編輯器彷佛不支持斜體,天然,粗斜體也會一樣變成粗體,好吧,跟皮膚有關係,有的皮膚樣式對應的Markdown渲染樣式就沒有斜體,換個皮膚就行了) 兩對*粗體**粗體**) 我想又粗又斜怎麼辦,很簡單,1+2=3(***粗斜***

此外,Markdown還容許使用一堆雙浪線~~包圍文本做爲刪除線使用,例如: 浪個裏格浪

~~浪個裏格浪~~

不幸的是,Markdown語法裏並未提供<u>下劃線</u>,儘管如此能夠經過內嵌HTML的<u>標籤來實現。

引用

著名的做家魯迅先生曾經在這裏說了不少的東西,好比「我歷來沒說過這句話」……

引用在Markdown裏由一個>開始,值得注意的是,引用是一個塊級結構,這意味着引用不會對文段的一部分進行修飾,而是直接做用於一整個文段 若是想要讓後文內容脫離引用,根據上面的說法就是讓後文內容脫離被引用的文段,也就是在引用文段的最後一行與非引用文段的第一行之間加個回車好比:

魯迅說過:……

魯迅沒說過……

用Markdown寫出來就是:

> 魯迅說過:……

魯迅沒說過……

但若是是

> 魯迅說過:……
魯迅也說過……

就會變成:

魯迅說過:…… 魯迅也說過……

和標題相似,引用也能夠經過增長>的數量進行嵌套引用:

魯迅先生曾經說過

世界上本沒有路,走的人多了,便成了路

> 魯迅先生曾經說過
>> 世界上本沒有路,走的人多了,便成了路

引用內的文段同樣能夠加上其餘的格式標註,好比:

魯迅先生強調過:真的勇士猛士,勇於直面慘淡的人生,勇於正視淋漓的鮮血。

> [魯迅](https://baike.baidu.com/item/魯迅/36231?fr=aladdin)先生**強調**過:**真的~~勇士~~猛士,勇於直面慘淡的人生,勇於正視淋漓的鮮血。**

表格

0 VS 0
×
×
× ×

住手!!大家住手!!不要再下啦!! 這已是大家下的第4294967295盤啦!!

Markdown提供了一個很是簡單的關於表格的格式支持,儘管這本來並不存在於最初的Markdown語法集當中,Markdown對於表格功能上的支持是沒法與HTML的<table>標籤抗衡的,由於它支持最完整的表格,也只有這種格式:

表頭1 表頭2 表頭3
左對齊的文本 居中的文本 右對齊的文本
左對齊 居中 右對齊
左對齊 居中 右對齊

只有表格的第一行能夠做爲表頭使用,其餘的項只能做爲普通的元組使用,表格是向下排開的,因此想寫橫向表格的話也不是一個很好的選擇,和引用相似,表格也是一個塊級結構,而表格要求在其先後都要有一個回車,不然內容不被視爲表格,表格的基本語法以下(這恐怕是Markdown裏最麻煩的語法格式了):

上一段文本……

|表頭1|表頭2|表頭3|
|:---|:---:|---:|
|左對齊的文本|居中的文本|右對齊的文本|
|左對齊|居中|右對齊|
|左對齊|居中|右對齊|

下一段文本

第一行做爲表頭使用表頭的格式與表格其餘項會略有不一樣,他的字更粗並且他所在的單元格與其餘的單元格長得也略有不一樣。 第二行那個很像火星文的東西用於指定整列的對齊方式,橫線的數量不限,冒號肯定文本的對齊錨點位置,表示以下含義:

|:---|:---:|---:|
 左     中    右

並不必定非要指定成這個樣子,也能夠全是左的,也能夠全是右的……總之是這樣。 後面的行就是普通的表格項了,以|分割,不限於3列,能夠更多,每列用|分割,並且請注意,MD中一張表格的列數是固定的,所以,你不能夠指定被合併的單元格,也不能夠弄出那種像磚牆那樣的鋸齒表格,並且表格的列寬是自適應內容的,所以在原生MD中你沒法指定列寬。 但若是真的須要這樣怎麼辦呢,因爲MD容許內嵌HTML代碼,所以可使用HTML的<table><tr><td>...這些標籤來實現(i.e.寫成HTML表格),由於HTML的table功能足夠強大,儘管如此內嵌HTML也不是倡用的作法

代碼塊與行內代碼

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World" << endl;
    return 0;
}

這是Markdown最受IT從業者青睞的地方了,由於一樣的功能若是讓HTML來作會須要用各類各樣的標籤控制等寬文本而後還要用CSS或者JS腳原本控制高亮…… 可是在Markdown裏你徹底不須要考慮這些(固然,高亮與否以及高亮的方式取決於服務器提供的CSS樣式)。

這裏先介紹代碼塊,它由一對三個反單引號包圍```,反單引號在哪呢??在鍵盤Tab鍵的上方你會找到一個標有~的鍵,這個鍵用Shift打出來就是浪線,可是直接敲出來就是反單引號,在中文標點下,這個鍵會打出間隔符· 代碼塊是塊級結構,被修飾的內容即便被寫到某一段內,也會被另起一行做爲新的段落,直至再出現三個反單引號結束,好比本節最開始的那個Hello World其實是這樣嬸兒的:

(請無視反斜線`\`,我沒找到好方法可以讓代碼塊裏顯示代碼塊的寫法)
\```cpp
#include <iostream>

using namespace std;

int main()
{
    cout << "Hello World" << endl;
    return 0;
}
\```

其中,第一個三反單引號後面能夠加入你的語言名稱的縮寫(cpp表示C++),這個有助於文檔確認你這段代碼基於何種語法進行高亮,你也能夠指定JavaScript之類的

在有些Markdown系統中,容許經過另一種方式定義代碼塊,將整個文段向內進行一次Tab(縮進)便可,這個文段整個就被看成代碼塊處理。這裏不對此方法進行描述。

除了代碼塊之外,Markdown還支持行內代碼,對就是這樣,行內代碼和加粗相似,屬於對文段內部的修飾,由一對反單引號包圍,好比這段內容的Markdown語法就是這樣的:

除了代碼塊之外,`Markdown`還支持**行內代碼**,對就是這樣,……

這種寫法在有些時候是很是方便的,好比:

這裏介紹關於System.Collection.Generic所包含的接口和類……

這樣,在文本內排放代碼是很是容易而且美觀的

可比某課設裏面往Word裏面粘代碼來的順暢多了……

連接

這個連接正好就是這篇文章的地址

連接在Markdown中的組織形式也很是簡單,連接有兩部分構成,一個是連接的顯示文本,還有一個就是連接的符號地址: 好比瀋陽航空航天大學官網 Markdown語法就是:

[瀋陽航空航天大學官網](http://www.sau.edu.cn)
[顯示文本](符號地址)

若是顯示文本爲空,則連接將直接取符號地址做爲顯示文本。

圖片

Mona Lisa (上圖來自於百度搜索結果)

在Markdown中因爲圖片也是直接連接網絡資源,所以她的格式多少與連接有些相似:

![圖片描述](圖片地址)
![Mona Lisa](https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1554392569440&di=978dfe9d1b6f5fc3def15e9febbac1ce&imgtype=0&src=http%3A%2F%2Fwww.lvyou168.cn%2Fupload%2F20180519%2F113713872.jpg)

圖片描述一般不會顯示出來,有些頁面容許圖片描述做爲鼠標懸停在圖片上的提示文本出現,圖片描述的另外一個做用在於,當對服務器進行檢索的時候,提供圖片描述的關鍵字能夠直接檢索出該圖片。 圖片地址表示圖片在網絡上的位置(URI),若是圖片存在,則直接顯示圖片,不然圖森破

列表

  1. 吃飯
    • 早飯
    • 午餐
    • 晚飯
      • 夜宵
  2. 睡覺
  3. 打豆豆
    • 紅豆
    • 黃豆
    • 綠豆

有序列表

有序列表就是帶編號的列表,Markdown最基礎的語法只支持這種格式的編號:

  1. 項目1
  2. 項目2
  3. 項目3
1. 項目1
2. 項目2
3. 項目3

是的!你沒看錯,就是這麼寫的!其中,若是手動編號順序錯誤,有些Markdown編輯器會矯正過來(這種矯正可能不會在編輯期間完成,而是在最終顯示的時候被修正),有些編輯器甚至會自動產生編號。 有些編輯器甚至支持下級的編號,以及其餘的編號格式,如abc等,博客園的支持多級編號:

  1. 項目1
    1. 子項目1
      1. 孫子項目1.1
    2. 子項目2
  2. 項目2
  3. 項目3

產生次級編號的方法是對次級編號進行縮進:

1. 項目1
    1. 子項目1
        1. 孫子項目1.1
    2. 子項目2
2. 項目2
3. 項目3

無序列表

無序列表固然也就沒有編號,他們用圓點做爲項目符,在Markdown中可使用加號+,減號-,星號*引領一個無序項,使用哪一個符號的最終結果是同樣的,一樣,無序列表也支持多級列表,例如:

  • Who
    • cares
  • my
  • order
    • out
    • of
      • its
      • own
        • ORDER

寫出來就是:

+ Who
    + cares
+ my
+ order
    + out
    + of
        + its
        + own
            + ORDER

數學公式($\mathrm{\LaTeX}$擴展語法)

$$ E=mc^2 $$ $$ e^{i\pi}+1=0 $$ $$ \Phi (x)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^x e^{-\frac{t^2}{2}} \mathrm{d}t $$ $$ \mathbf{E} = \begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 \ \end{bmatrix} $$ $$ \mathbf{A}\vec{x} = \begin{bmatrix} a_{11} & a_{12} & a_{13} \ a_{21} & a_{22} & a_{23} \ a_{31} & a_{32} & a_{33} \ \end{bmatrix} \begin{bmatrix} x_1 \ x_2 \ x_3 \end{bmatrix}

\begin{bmatrix} b_1 \ b_2 \ b_3 \end{bmatrix} = \vec {b} \implies \begin{equation} \begin{cases} a_{11}x_1+a_{12}x_2+a_{13}x_3 &= b_1 \ a_{21}x_1+a_{22}x_2+a_{23}x_3 &= b_2 \ a_{31}x_1+a_{32}x_2+a_{33}x_3 &= b_3 \ \end{cases} \end{equation} $$

好吧,我估計錯了,博客園的數學公式支持功能須要本身在設置裏面打開。 這裏不介紹關於如何開啓該功能的方法,可自行查找其餘博文。 這裏也不介紹如何控制$\mathrm{\LaTeX}$文本的語法,這不屬於標準Markdown語法而是$\mathrm{\LaTeX}$的語法 這裏只說如何在Markdown中嵌入,相似於代碼塊,公式塊也能夠塊級鍵入或者行內嵌入,塊級嵌入的公式使用一對雙美圓號$$,而行內則使用一對單美圓號$(這裏只用塊級的,有些系統不支持使用行內嵌入,固然,有的系統乾脆不支持這個東西):

$$
E=mc^2
$$

$$
e^{i\pi}+1=0
$$

$$
\Phi (x)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^x e^{-\frac{t^2}{2}} \mathrm{d}t
$$

$$
\mathbf{E} = 
\begin{bmatrix}
    1 & 0 & 0 \\
    0 & 1 & 0 \\
    0 & 0 & 1 \\
\end{bmatrix}
$$

$$
\mathbf{A}\vec{x} =
\begin{bmatrix}
    a_{11} & a_{12} & a_{13} \\
    a_{21} & a_{22} & a_{23} \\
    a_{31} & a_{32} & a_{33} \\
\end{bmatrix}
\begin{bmatrix}
    x_1 \\ x_2 \\ x_3
\end{bmatrix}
= 
\begin{bmatrix}
    b_1 \\ b_2 \\ b_3
\end{bmatrix}
= \vec {b} \implies
\begin{equation}
    \begin{cases}
        a_{11}x_1+a_{12}x_2+a_{13}x_3 &= b_1 \\
        a_{21}x_1+a_{22}x_2+a_{23}x_3 &= b_2 \\ 
        a_{31}x_1+a_{32}x_2+a_{33}x_3 &= b_3 \\
    \end{cases}
\end{equation}
$$
相關文章
相關標籤/搜索