<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: {inlineMath: [['$', '$']]}, messageStyle: "none" }); </script> ###### tags: `CODING` # Markdown 常用語法示例 (含Mathjax) Markdown為簡潔現代的筆記方法,僅需為文字添加簡單的標符,即可達到相當功能性的筆記效果,在此將使用VS Code介紹一個相當方便的筆記工具。 > We believe that writing is about content, about what you want to say – not about fancy formatting. — Ulysses >「我們相信寫作是關於內容,是專注在你的所思所想,而不是花俏的格式。」 ### 一、安裝編輯工具 Visual Studio Code並配置編輯環境 1. 使用下方連結,選擇對應的作業系統安裝VS Code,安裝過程可以使用默認設置。 [VS Code 安裝連結](https://code.visualstudio.com/download) 2. 進入VS Code視窗後,在左側工具列中找到延伸模組圖標,點擊之。 ![延伸模組圖標](https://i.imgur.com/C2aSqXz.png =50x50) 3. 安裝延伸模組。在搜索欄中輸入下面關鍵字,找到對應模組並安裝 * Chinese (Traditional) Language Pack for Visual Studio Code * Markdown All in One * Markdown PDF * Markdown Preview Enhanced 如果有其他程式語言編譯需求,也可以在搜索欄內輸入相關關鍵字,進行相應的安裝,在此不多做介紹。安裝完畢後,重啟VS Code以載入安裝的模組。 4. 完成延伸模組安裝後,在左測工具列中點擊檔案總管圖標,選擇預設資料夾以存放往後的工作檔案。 ![檔案總管圖標](https://i.imgur.com/1uIBcGD.png =50x50) 5. 在檔案總管區,點擊下面圖標中最左方的新增檔案鍵,建立以副檔名為`.md`的Markdown檔案,在此以`demo.md`為例。 ![檔案新增圖標](https://i.imgur.com/U3BTuja.png =200x50) ![demo.md圖標](https://i.imgur.com/p3JiJ38.png =230x50) 注意,如果創建成功,檔頭圖標應為如圖所示樣,若非,則需手動將此檔案環境改為Markdown語言:在視窗右下方找到並點擊`gcc-md`鍵,此時視窗上方將出現語言選擇欄,在搜索欄中輸入`Markdown`或在下方滑動選取欄找到它並點選。 ![語言選取菜單](https://i.imgur.com/RgnZM5H.png =400x200) 6. 現在,編寫Markdown基本環境已配置完成,你可以點選視窗右上角圖標中最左邊打開側邊預覽的按鈕,此時畫面將被分割為左右兩部分,左側為程式編輯區,右邊為結果預覽區,你可以在左側編寫的同時注意右側預覽區的預覽結果。 ![配置預覽區菜單](https://i.imgur.com/ld89qm9.png =200x50) --- ### 二、Markdown基本語法 #### 之一:為文檔建立一個顯目的標題 一個文檔必然存在顯目的標題,在Markdown筆記中更是如此,只要透過簡單的標題語法就能達到相應的效果。若想要將文字設為標題,僅需在文字前加上`#`即可,其數量會決定該文字標題的等級,在Markdown筆記中標題可分為六級,一級標題最大,僅須在標題文字前前綴`#`;六級標題最小,僅需在文字前加上`######`,其餘分級依此類推。下面所示為左側編輯區輸入的文字與右側預覽區呈現的結果: ```Markdown # 一級標題(最大) ## 二級標題 ### 三級標題 #### 四級標題 ##### 五級標題 ###### 六級標題(最小) ``` > # 一級標題(最大) > ## 二級標題 > ### 三級標題 > #### 四級標題 > ##### 五級標題 > ###### 六級標題(最小) #### 之二:為文檔建立一般內文 文檔中最重要的還是內文,在Markdown中,對於編輯區未加上前綴與後綴的文字將判別為一般文字。此外,如果需要將部分內文標註以醒目的文字,可以使用`**`前後綴標註文字,達到**粗體效果**,或使用`*`前後綴文字以達到*斜體效果*,這兩個效果也可以疊加使用。如果想要將內文文字以刪除線標示,可以使用`~~`前後綴刪除文字,達到刪除的效果。以下為相關範例: ```Markdown 一般內文 Text **粗體效果** 和 *斜體效果* 可 ***疊加使用*** ~~刪除文字~~ ``` >一般內文 Text >**粗體效果** 和 *斜體效果* 可 ***疊加使用*** >~~刪除文字~~ 此外,Markdown也提供了變更內文文字顏色的功能,只需使用下面語法就能達成,`color: red;`內的顏色可依需求進行修改: ```Markdown <span style="color: red;"> 紅色文字 </span> ``` ><span style="color: red;"> 紅色文字 </span> #### 之三: 建立清單及勾選欄 在文檔編寫時,經常需要使用到條列式清單以方便內文的陳述,在Markdown語法中,使用前綴`* `或`- `或`+ `以達到**無序清單** 裡的行首子彈(Bullet)效果,請`*`與文字間必須以空格區隔,才會被Markdown辨識為無序清單。使用`tab`鍵後再加上前綴,即可為無序清單建立子清單。如下面範例: ```Markdown * 無序清單1 * 無序清單2 * 無序子清單 ``` >* 無序清單1 >* 無序清單2 > * 無序子清單 如果想以具有序號的方式將清單條列,我們也可以使用直觀的編號語法`1. `、`2. `...建立**有序清單**,使用方法與無序清單相同,透過`Enter`鍵換行時,也能自動生成接續序號,如下所示。 ```Markdown 1. 有序清單1 2. 有序清單2 1. 有序子清單 3. 有序清單3 ``` > 1. 有序清單1 > 2. 有序清單2 > 1. 有序子清單 > 3. 有序清單3 此外,應情況需求,我們也可以利用Markdown編輯文檔時,為文檔加上勾選清單,語法為`- [ ]`,注意,中括號前與其內必須各含有一個空格。如果需要核選該選項,則只需在中括號內加入`X`即可,例如: ```Markdown - [ ] 選項1 - [X] 選項2 - [ ] 選項3 ``` - [ ] 選項1 - [X] 選項2 - [ ] 選項3 #### 之四: 引入框 在部份情境下,可能有在筆記中插入引文的需求。在Maskdown的語法中,我們使用`>`字符前綴引文內容,並且具有能層層疊加的功能,如下示範: ```Markdown > 第一層引文 >> 第二層引文 >>> 第三層引文 ``` > 第一層引文 >> 第二層引文 >>> 第三層引文 #### 之五: 插入程式碼 對於部分使用者而言,文檔中時常需要插入程式碼標註,此時若使用一般筆記工具,容易出現格式錯位等問題,不易後續閱讀及處理,在這裡Markdown提供了簡單的插入方法,僅需使用反引號將程式碼前後綴,達到良好的閱讀效果。使用單反引號能將單字或單行程式碼插入,使用三個連續單反引號則可達到多行程式碼插入效果。以下為您簡單展示: ```Markdown 在一段內文中插入單字或單行`function()`程式片段,或插入多行程式碼 ``` import math n = round(math.pi) for i in range(n): if i == 1 : print("Hello World") else: print("Goodbye World") ``` ``` >在一段內文中插入單字或單行`function()`程式片段,或插入多行程式碼 > ``` > import math > n = round(math.pi) > for i in range(n): > if i == 1 : > print("Hello World") > else: > print("Goodbye World") > ``` 更甚至,也可以為插入的程式碼標註程式語言,Markdown支援了市面上多數的程式語言,例如: ```Markdown ```python import math n = round(math.pi) for i in range(n): if i == 1 : print("Hello World") else: print("Goodbye World") ``` ``` 此時,預覽區便會出現如下結果: > ```python > import math > n = round(math.pi) > for i in range(n): > if i == 1 : > print("Hello World") > else: > print("Goodbye World") > ``` #### 之六:插入更多 在一般文檔編輯過程中,經常會插入圖片或超連結,在Markdown筆記中提供了便捷的插入方法。如需插入圖片,則將圖片檔案拖曳至.md文檔所在的資料夾位置,再透過以下語法,即可將圖片插入檔案中: ```Markdown ![圖片註記文字](檔名.png "圖名") ``` 或使用下面方法,並可針對圖片尺寸(像素)進行適當的調整設定 ```Markdown <img src="檔名.png" alt="smiley" height="36px" width="168px"> ``` 此外,我們只要指定超連結目的位置,也可以使用下面語法插入網頁的超連結,並且透過顯示中括號內的文字,來取代網址成為超連結按鍵,更利於閱讀使用。語法如下所示: ```Markdown [Google超連結](https://www.google.com.tw/) ``` 在預覽區中,只會呈現出中括號內的文字,點擊文字便可前往指定網址: > [Google超連結](https://www.google.com.tw/) #### 之七: 分隔 如果在筆記內文的段落間,想要插入分隔線或空行,可以分別使用`---`和` <br />`語法。 --- ### 三、Markdown其他語法與輸出 #### 之一: 文字設置 在Markdown筆記中,預設文字皆會靠左,字級大小為3,若想將文字設定為置中、置右,或改變字級大小(1~6級),可以透過以下語法實現: ```Markdown <p align="center"> 置中文字 </p> <p align="right"> 置右文字 </p> <font size="1"> 一級字 Text </font> <font size="2"> 二級字 Text </font> <font size="3"> 三級字 Text </font> <font size="4"> 四級字 Text </font> ``` ><p align="center"> > 置中文字 ></p> ><p align="right"> > 置右文字 ></p> > <font size="1"> 一級字 Text </font> > <font size="2"> 二級字 Text </font> > <font size="3"> 三級字 Text </font> > <font size="4"> 四級字 Text </font> 如果需要對特定文字執行聚光文字效果,則可使用下面語法: ```Markdown <mark >聚光文字</mark> 或 ==聚光文字== ``` ><mark >聚光文字</mark> >或 >==聚光文字== #### 之二: 製作簡易表格 與多數筆記工具相同,Markdown也提供了表格功能。只要使用`|`字符區隔每項元素即可,需要注意的是,在欄名的下方需添加一行每個項目都是`:----:`的欄位,以觸發Markdown辨識功能。以下3$\times$3的表格為例: ```Markdown | 欄名一 | 欄名二 | 欄名三 | |:----:|:----:|:----:| | 元素一 | 元素二 | 元素三 | | 元素四 | 元素五 | 元素六 | ``` >| 欄名一 | 欄名二 | 欄名三 | >|:----:|:----:|:----:| >| 元素一 | 元素二 | 元素三 | >| 元素四 | 元素五 | 元素六 | 在此為讀者說明,Markdown筆記強調以簡約為主,故簡易表格不建議用以呈現尺寸過大或過為複雜的表格資料。 #### 之三: Callout有色區塊 Markdown擴充版中提供了Callout有色區塊的編輯效果,具有增強視覺閱讀的功能,預設版本有四,使用`:::`前後綴內文的語法,即可成功實現: ```Markdown ::: success Success 內文 ::: ::: warning Warning內文 ::: ::: info Info 內文 ::: ::: danger Danger 內文 ::: ``` ::: success Success ::: ::: warning Warning ::: ::: info Info ::: ::: danger Danger ::: 如果想建立可開合之目錄,則使用相似的語法,只是需要把區塊種類設為`spoiler`即可。 ```Markdown ::: spoiler 目錄 Toggle Spoiler 收起項目1 Toggle Spoiler 收起項目2 ::: ``` ::: spoiler 目錄 Toggle Spoiler 收起項目1 Toggle Spoiler 收起項目2 ::: 請注意,VS Code不提供這部分的功能,如果需要使用,建議使用支援Markdown的線上編輯平台。 #### 之四: Markdown註解 在編輯.md文檔時,為了使開發者能夠更快速識別程式碼,我們可以使用Markdown本身的註解功能,雖然程式不會執行、顯示該行,但能讓往後閱讀程式碼時更加方便,其語法只需將註解文字天加上前後綴,語法如下: ```Markdown <!-- 註解文字 --> ``` #### 之四: 檔案輸出 以上已完整介紹Markdown常見的語法,當文檔編輯告一段落,你可以使用快捷鍵`ctrl+S`儲存檔案,也可以使用快捷鍵`F1`或`ctrl+shift+P`或點選滑鼠右鍵選單輸出.md文檔,有多種輸出方式可依照不同使用需求選擇,輸出後會直接存入目前資料夾位置內。 --- ### 四、格式化數學方程 在筆記中,可能需要使用數學方程式,如果使用非格式化輸入方法,不免對讀者閱讀文檔上造成困難,為此,Markdown提供了MathJax格式化數學方程的整合插件,在單行方程`$`前後綴或多行方程`$$`前後綴中輸入對應的語法就能輸出工整的格式化結果。 在介紹相關格式化數學方程之前,為確保能正確格式化輸出.md文檔,我們必須在文檔最前面設定格式化數學方程,語法如下,僅需完整複製到文檔最前面幾行即可: ```Markdown <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ tex2jax: {inlineMath: [['$', '$']]}, messageStyle: "none" }); </script> ``` 設置完畢後,下面將開始介紹常用的格式化數學方程。請注意,Markdown僅支援一般內文格式下的格式化數學方程,在格式化內容的前後,除`$`外,**不允許**出現其他前後綴字符。 #### 之一: 單行數學方程 在使用格式化數學方程時,將格式化內容前後綴`$`適用於單行之數學方程,且通常參入內文當中使用,因此此語法適合較為簡單的數學式。例如: ```Markdown 在計算 $ x^2 $ 時,我們會將底數 $ x $ 相乘。 ``` #### 之二: 多行數學方程 與單行數學方程不同,多航數學方程適用於多行、整行、獨立或冗長的數學式,我們使用前後綴`$$`的技巧格式化數學方程,以下簡單呈現常見的格式化數學方程語法: ##### 其一:基本算符 | MathJax語法 | 對應輸出 | MathJax語法 | 對應輸出 | |:----:|:----:|:----:|:----:| | + | $+$ | \ne | $\ne$ | | - | $-$ | > | $>$ | | \times | $\times$ | < | $<$ | | \div | $\div$ | \geq | $\geq$ | | = | $=$ | \leq | $\leq$ | | \pm | $\pm$ | \gg | $\gg$ | | \mp | $\mp$ | \ll | $\ll$ | | \equiv | $\equiv$ | \cdot | $\cdot$| | \approx | $\approx$ | \cdots | $\cdots$| 此外,常見的分數符號,使用`\frac`語法,以下為簡單範例: ```Markdown $$ \frac{分子}{分母} = 1 $$ ``` 預覽結果即顯示: $$\frac{分子}{分母} = 1$$ ##### 其二:邏輯推演字符與括弧 | MathJax語法 | 對應輸出 | MathJax語法 | 對應輸出 | |:----:|:----:|:----:|:----:| | \forall | $\forall$ | \exists | $\exists$ | | \because | $\because$ | \left( \right) | $\left( \right)$ | | \therefore | $\therefore$ | \left<> \right> | $\left< \right> $ | | \implies | $\implies$ | \left[ \right] | $\left[ \right]$ | | \iff | $\iff$ | \\{ \\} | {} | 此外,若欲設置不對稱括號(隱藏單邊括號),則可更改單邊的括號為`\left.`或`\right.`達成。 ##### 其三:特殊字符、字母 使用斜線後加上希臘字母英語拼音即可顯示相應的希臘字母,首字母大小寫決定希臘字母的大小寫。 | MathJax語法 | 對應輸出 | MathJax語法 | 對應輸出 | |:----:|:----:|:----:|:----:| | \gamma | $\gamma$ | \nabla | $\nabla$ | | \Gamma | $\Gamma$ | \circ | $\circ$ | | \delta | $\delta$ | \prime| $\prime$ | | \Delta | $\Delta$ | \star | $\star$ | ##### 其四:上下標與根號 使用指數或上下標時,依照下面與法即可達到相應的格式化效果。上標使用`^{}`語法,下標使用`_{}`語法。其中`{}`為上下標超過一個字符時使用,若省略之,則只有第一個字符有上下標之效果。以下簡單演示: ```Markdown $$ x_angle \ne x_{angle}=20^{\circ}  $$$$ x^2_1,x^2_2,x^2_3, \cdots, x^2_{n-1},x^2_n $$ ``` 預覽區顯示的結果: $$ x_angle \ne x_{angle}=20^{\circ}  $$$$ x^2_1,x^2_2,x^2_3, \cdots,x^2_{n-1},x^2_n $$ 此外,使用`\sqrt{}`語法以顯示根號內容,例如: ```Markdown $$ \sqrt{2} \approx 1.414 $$ ``` $$ \sqrt{2} \approx 1.414 $$ ##### 其五:矩陣與向量 在MathJax中,有專門對矩陣與向量設計的語法,其結構相對複雜,請參見以下範例: ```Markdown 矩陣: $ \quad \begin{vmatrix} 1 & 2 \\ 3 & 4 \\ \end{vmatrix} $ 向量: $ \vec{r} = \left< Q,R \right> $ ``` 顯示結果: 矩陣: $$ \quad \begin{vmatrix} 1 & 2 \\ 3 & 4 \\ \end{vmatrix} $$ 向量: $ \vec{r} = \left< Q,X \right> $ ##### 其六:大型算子 大型算子大多套用上下標的語法,再搭配其專屬的開頭字串組合而成,以下將一一簡單陳列。 1. **求和級數** 語法: `sum_{}^{}` ```Markdown $$ \sum_{i=1}^n \frac{1}{i^2} $$ ``` $$\sum_{i=1}^n \frac{1}{i^2} $$ 2. **極限算子** 語法: `lim_{}` 在此介紹兩個常見於極限算子中的符號: | MathJax語法 | 對應輸出 | |:----:|:----:| | \to | $\to$ | | \infty | $\infty$ | ```Markdown $$ \lim_{n \to +\infty} \frac{1}{n(n+1)} $$ ``` $$ \lim_{n \to +\infty} \frac{1}{n(n+1)} $$ 3. **微分算子** 微分語法類似分數,偏微分語法為分數與`\partial`的結合 ```Markdown $$ \left. \frac{dy}{dx} \right| _{x=0} = f^\prime(0) $$$$ \frac{\partial x}{\partial y} $$ ``` $$ \left. \frac{dy}{dx} \right| _{x=0} = f^\prime(0) $$$$ \frac{\partial x}{\partial y} $$ 4. **積分算子** 語法`int_{}^{}`或重積分`iint`、`iiint`等 ```Markdown :::danger **定積分** $$ \int_1^\infty {\log(p)} dp $$ ::: ``` :::danger **定積分** $$ \int_1^\infty {\log(p)} dp $$ ::: ### 五、Mermaid繪圖工具 Mermaid是Markdown筆記中常用來進行簡易繪製的插件工具,在這個套件中,我們使用```前後綴繪圖程式碼,並且使用`graph `標註繪製方向。 | Mermaid方向縮語 | 對應方向 | |:----:|:----:| | T | 上方 | | B 或 D | 下方 | | L | 左方 | | R | 右方 | #### 繪製樹狀圖 此處以由上至下為例,依照指定繪製方向、宣告所有元素、指定箭號指向之順序,繪製含有五個元素的樹狀圖。 ```Markdown ```mermaid graph TB A[A矩形] B((B圓形)) C(C圓角矩形) D{D菱形} E((E圓形)) A-->B A-->C B-->D B-->E ``` ``` 預覽區樹狀圖結果顯示: ```mermaid graph TB A[A矩形] B((B圓形)) C(C圓角矩形) D{D菱形} E((E圓形)) A-->B A-->C B-->D B-->E ``` 此外,Mermaid亦提供流程圖繪製,以及其它多樣細節設置功能,在此不多加贅述。 ### 六、其他編輯器 除了VS Code編輯器外,市面上有許多免費且支援Markdown的編輯器,以下列舉常見的編輯器,上述部分插件功能的支援上有所不同,各有優劣差異,故以下一同納入比較,以供使用者視自身需求選擇: | 編輯器種類 | Callout區塊 |Mermaid繪圖 | MathJax格式 | MathJax輸出 | |:--------:|:--------:|:--------:|:--------:|:--------:| | VS Code | 不支援 | 支援 | 支援 | 支援 | | Obsidian | 支援 | 支援 | 不支援 | 不支援 | | HackMD | 支援 | 支援 | 部分支援 | 部分支援 |