博客園「Markdown 編輯器」的語法規則


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 字符實體 的一部分,它會保留原狀,否則它會被轉換成 &amp;,即 &copy; AT&T 會被轉化為 &copy; AT&amp;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 允許段落內的強制換行——在行尾插入至少兩個空格。   
普通段落  
&nbsp;不該用空格  
&emsp;或制表符來縮進。

一個 Markdown 段落是由一個或多個連續的文本行組成組成,它的前后要有一個以上的空行。Markdown 允許段落內的強制換行——在行尾插入至少兩個空格。
普通段落
 不該用空格
 或制表符來縮進。

三、列表與表格

- Markdown 支持有序列表和無序列表;
* 要使圖表水平居中,又不想使用 HTML,可以參考 [本方法](http://www.cnblogs.com/Pandaman/p/skin.html#tips);
+ 務必在列表、表格、引用區塊、代碼區塊等內容前后保留一空行。

| 默認對齊 |  右對齊   |   居中對齊  |
| -----  | -----:    |  :----:   |
| 斜體    | *斜體*    |   _斜體_   |
| 強調    |  **強調** |   __強調__ |
| 刪除線  | ~~刪除線~~ |     \-    |

1. 無序列表使用 `*`、`+` 或是 `-` 作為列表標記;
2. 有序列表則使用數字接着一個英文句點。
  • Markdown 支持有序列表和無序列表;
  • 要使圖表水平居中,又不想使用 HTML,可以參考 本方法
  • 務必在列表、表格、引用區塊、代碼區塊等內容前后保留一空行。
默認對齊 右對齊 居中對齊
斜體 斜體 斜體
強調 強調 強調
刪除線 刪除線 -
  1. 無序列表使用 *+ 或是 - 作為列表標記;
  2. 有序列表則使用數字接着一個英文句點。

四、圖片、鏈接與分割線

<fr>![我的頭像](http://pic.cnitblog.com/avatar/712172/20150109000843.png)</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 標記引用區塊的方法:

  1. 每行的最前面加上 >
  2. 引用區塊可以嵌套,只要根據層次加上不同數量的 >

引用區塊內也可以使用其他的 *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 字符,如 α。

\[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})。

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 區塊標簽間內容這一特點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM