Markdown 是一種輕量級的 標記語言,相對於復雜的 HTML 標記語言來說,Markdown 易讀易寫,非常容易學習掌握。不過,隨着 Markdown 的不斷發展,其語法格式出現了各種標准,本文以博客園的「Markdown 編輯器」的語法規則為准。
在博客園使用 Markdown 與 \(\LaTeX\) 撰寫博文的方法:
- 選擇 Markdown 撰寫博文:在博客園「設置」-「選項」中,將「默認編輯器」修改為 Markdown;
- 使用 MathJax 書寫 LaTeX 數學公式:在博客園「設置」-「選項」中,勾選「啟用數學公式支持」。
HTML 與 Markdown 的關系
HTML 是一種發布的格式,Markdown 是一種書寫的格式。Markdown 的語法種類很少,只對應 HTML 標記的一小部分。不在 Markdown 涵蓋范圍之內的標簽,都可以直接在文檔里面用 HTML 撰寫。比如:
<!-- 在文檔頂部自定義樣式 -->
<style type="text/css">
cg {color:gray}
fr {float:right;padding-left: 2em;}
.icg {text-indent:2em;color:green}
.acb {text-align:right;color:blue}
</style>
特殊字符的自動轉換
Markdown 讓你可以自然地書寫字符。譬如:如果你使用的 &
字符是 HTML 字符實體 的一部分,它會保留原狀,否則它會被轉換成 &
,即 © AT&T
會被轉化為 © AT&T
,最后得到 © AT&T。
在線 Markdown 編輯器
一、標題與 HTML 標簽
<div class="acb">2 級標題</div>
---
<div class="icg">~~1 級標題~~</div>
===
### <cg>3 級標題</cg>
2 級標題
1 級標題
3 級標題
特別說明幾點:
- HTML 的區段標簽可以在 Markdown 的段落、列表或是標題里隨意使用;
- 但在 HTML 區塊標簽間的 Markdown 格式語法可能不被支持,詳見於此;
#
的數目對應標題的級數,最多支持五級。因此,一級標題也可用# 一級標題
;- 一級標題與二級標題對記號
=
或-
的數目沒有要求。
二、段落、縮進與強制換行
一個 Markdown 段落是由一個或多個連續的文本行組成組成,它的前后要有一個以上的空行。Markdown 允許段落內的強制換行——在行尾插入至少兩個空格。
普通段落
不該用空格
 或制表符來縮進。
一個 Markdown 段落是由一個或多個連續的文本行組成組成,它的前后要有一個以上的空行。Markdown 允許段落內的強制換行——在行尾插入至少兩個空格。
普通段落
不該用空格
或制表符來縮進。
三、列表與表格
- Markdown 支持有序列表和無序列表;
* 要使圖表水平居中,又不想使用 HTML,可以參考 [本方法](http://www.cnblogs.com/Pandaman/p/skin.html#tips);
+ 務必在列表、表格、引用區塊、代碼區塊等內容前后保留一空行。
| 默認對齊 | 右對齊 | 居中對齊 |
| ----- | -----: | :----: |
| 斜體 | *斜體* | _斜體_ |
| 強調 | **強調** | __強調__ |
| 刪除線 | ~~刪除線~~ | \- |
1. 無序列表使用 `*`、`+` 或是 `-` 作為列表標記;
2. 有序列表則使用數字接着一個英文句點。
- Markdown 支持有序列表和無序列表;
- 要使圖表水平居中,又不想使用 HTML,可以參考 本方法;
- 務必在列表、表格、引用區塊、代碼區塊等內容前后保留一空行。
默認對齊 | 右對齊 | 居中對齊 |
---|---|---|
斜體 | 斜體 | 斜體 |
強調 | 強調 | 強調 |
刪除線 | - |
- 無序列表使用
*
、+
或是-
作為列表標記; - 有序列表則使用數字接着一個英文句點。
四、圖片、鏈接與分割線
<fr></fr>
你可以在一行中用三個以上的 `*`、`-`、`_` 來建立一個分隔線。
---
[Pandaman](http://www.cnblogs.com/Pandaman/ "[可選] 描述信息") 的博客地址: <http://www.cnblogs.com/Pandaman/> 。
***
如果有圖片的 URL 地址:http://pic.cnitblog.com/avatar/712172/20150109000843.png ,
___
就能用一種和鏈接很相似的語法來標記圖片(右側浮動)。
你可以在一行中用三個以上的 *
、-
、_
來建立一個分隔線。
Pandaman 的博客地址: http://www.cnblogs.com/Pandaman/ 。
如果有圖片的 URL 地址:http://pic.cnitblog.com/avatar/712172/20150109000843.png ,
就能用一種和鏈接很相似的語法來標記圖片(右側浮動)。
五、引用區塊與轉義符號 \
>*Markdown* 標記引用區塊的方法:
>
>1. 每行的最前面加上 `>` ;
>2. 引用區塊可以嵌套,只要根據層次加上不同數量的 `>` 。
>
>>引用區塊內也可以使用其他的 \*Markdown\* 語法,包括標題、列表、代碼區塊等。
>
> Markdown 可以利用反斜杠 `\` 來插入一些在語法中有其它意義的符號,譬如 \\ \` \* \{ \} \# \+ \- \. \! \* 與 \_
Markdown 標記引用區塊的方法:
- 每行的最前面加上
>
;- 引用區塊可以嵌套,只要根據層次加上不同數量的
>
。引用區塊內也可以使用其他的 *Markdown* 語法,包括標題、列表、代碼區塊等。
Markdown 可以利用反斜杠來插入一些在語法中有其它意義的符號,譬如 \ ` * { } # + - . ! * 與 _
六、代碼區塊與 \(\LaTeX\)
行內代碼區塊用反引號 <code>`</code> 包起來即可;行間代碼區塊用 <code>```</code> 包起來,並可指定語言的名稱或者后綴(也可以每行縮進四個空格)。
```latex
\begin{equation}
F(x)=\int_0^t\sin(t)\mathrm{d}\,t+\left[\lim_{x\rightarrow0}g(x)\times\sum_{m=0}^\infty\frac{(-1)^m}{\Gamma(m+{\color{red}α}+1)}\right]
\end{equation}
```
LaTeX 提供了對數學公式的支持。行內公式用 `$` 包起來即可;行間公式用 `$$` 包起來,或使用 `\begin{equation} 帶編號的數學公式 \end{equation}` 等命令。除此之外,數學公式還支持 Unicode 寫法,即不使用 LaTeX 命令,直接鍵入 Unicode 字符,如 α。
$$F(x)=\int_0^t\sin(t)\mathrm{d}\,t+\left[\lim_{x\rightarrow0}g(x)\times\sum_{m=0}^\infty\frac{(-1)^m}{\Gamma(m+{\color{red}α}+1)}\right]$$
如需引用公式,應該先用 `\label{公式名}` 標記被引用的公式,然后在正文中用 `\ref{公式名}` 引用該公式,如(\ref{name})。
行內代碼區塊用反引號 `
包起來即可;行間代碼區塊用 ```
包起來,並可指定語言的名稱或者后綴(也可以每行縮進四個空格)。
```latex
\begin{equation}
F(x)=\int_0^t\sin(t)\mathrm{d}\,t+\left[\lim_{x\rightarrow0}g(x)\times\sum_{m=0}^\infty\frac{(-1)^m}{\Gamma(m+{\color{red}α}+1)}\right]
\end{equation}
```
LaTeX 提供了對數學公式的支持。行內公式用 $
包起來即可;行間公式用 $$
包起來,或使用 \begin{equation} 帶編號的數學公式 \end{equation}
等命令。除此之外,數學公式還支持 Unicode 寫法,即不使用 LaTeX 命令,直接鍵入 Unicode 字符,如 α。
如需引用公式,應該先用 \label{公式名}
標記被引用的公式,然后在正文中用 \ref{公式名}
引用該公式,如(\ref{name})。
Markdown 編輯器在輸入 LaTeX 公式時的 Bug
Markdown 與 LaTeX 的語法規則存在歧義:
- 編輯器支持 Markdown 的語法,如
*斜體*
、_斜體_
以及輸入特殊符號的轉義符號\
; - 編輯器同時也支持 LaTeX 輸入數學公式,數學公式用
*
表示乘法,用_
表示下標,用\\
表示(多行公式與矩陣等)換行;
原因分析與初步解決方法:
- 在 Markdown 編輯器里輸入 LaTex 的矩陣等無法換行,究其原因是由於
\\
會被 Markdown 優先轉化為\
; - 根據上述猜想,發現如果使用
\\\\
替代原 LaTex 命令\\
即可,同理\*
與\_
代替*
與_
; - 但由於 特殊字符的自動轉換,在公式存在多個
*
或_
符號時,有時候也會出現問題。
因此,博客園的 Markdown 編輯器還存在很多不足之處,希望官方盡快推出解決方法(譬如:在 LaTex 環境中禁用 Markdown 語法格式),否則只能采用下面的方法湊合了。
\begin{align}\notag
\dot{x}&=\mathbf{A}x+\mathbf{B}u\\\\
y&=\begin{bmatrix}1&0\\
0&1\end{bmatrix}x+\begin{bmatrix}1&0\\\\
0&1\end{bmatrix}u\label{name}
\end{align}
\begin{align}\notag
\dot{x}&=\mathbf{A}x+\mathbf{B}u\\
y&=\begin{bmatrix}1&0\
0&1\end{bmatrix}x+\begin{bmatrix}1&0\\
0&1\end{bmatrix}u\label{name}
\end{align}
在向博客園官方反映這個 Bug 后,他們迅速給出一個不錯的 解決方案:
如果您在 Mardown 編輯器中不僅輸入 Markdown,還想輸入 LaTeX 數學公式,需要將 LaTeX 數學公式放在某個 HTML 標簽之中,比如
<p> </p>
,這樣可以避免數學公式中的一些字符被 Markdown 引擎處理。
其實這是利用 Markdown 不會處理位於 HTML 區塊標簽間內容這一特點。