{ i.coding }

Enjoy & Love coding, I'm coding.

0%

你應該認識的Markdown標記式語言

Cover

Markdown是一種輕量級標記式語言,主要特性就是易讀易寫的純文字格式,在近幾年已經成為多數網站跟平台用來撰寫文件或訊息的支援格式,尤其受到程式設計師與文字作者的青睞,在使用它之前,你應該對它有個基本的認識。

前言

標記語言(Markup Language),是一種用來將文字與其他資訊結合一起的語法,但它不算是一種程式語言,而是透過標記方式將額外資訊進行標識,最常見的就是HTML和XML,介於純文字與程式語言之間。而所謂輕量級就是相對來說更簡單的語法,更方便地使用,以數據線性化為目標像是JSON或是YAML等,而以表達為目標的則有維基百科的編寫語言Wikipedia(Wiki Markup Language)或今天要介紹的Markdown等。

對於程式設計師而言,標記語言已經不陌生,而Markdown也慢慢成為當前用來撰寫文件或訊息的常見格式,像是GitHub、Trello、Slack、Reddit和Line(電腦版)等平台都支援,也因其簡潔又不失可讀性的特性,部落格相關平台更是將Markdown列為支援格式,儼然成為網路內容寫作的一種主流標記語言。

語法介紹

Markdown之所以稱為輕量級,就是因為其語法格式簡單,適合在一般文字內容撰寫,不需要太複雜的格式,不過各平台支援的Markdown格式還是有些差異,還是以各平台為主。

而Markdown主要分為兩種格式類型,區塊行內格式:

  • 區塊格式: 格式會套用到整個區塊內,像是標題、清單和程式碼區塊等。
  • 行內格式: 可將格式套用至部份文字,像是粗體、斜體、連結和圖片等。

區塊格式

格式會套用到整個區塊內,而區塊內也可以再套用其他語法,像是引言區塊內可以包含標題與程式碼區塊。

段落

Markdown中一個文字段落是由一段文字組成,而每個段落中間透過空行(blank line)分隔,如果要進行斷行,可以在行末輸入兩個空格。

1
2
3
4
段落以空白行分隔。

第二個段落開始,行末兩個空格
強制斷行,此行仍屬於第二個段落

顯示結果:

標題

標題分為兩種格式: SetextAtx

Setext 格式的標題分為兩階,利用 = 表示最高階, - 表示第二階標題,數量多寡不影響。

1
2
3
4
5
標題一
======

標題二
------

Atx 格式則是使用 # 表示,對應1至6階標題。

1
2
3
4
5
6
7
8
9
10
11
# Header 1

## Header 2

### Header 3

#### Header 4

##### Header 5

###### Header 6

顯示結果:

引言

引言語法與Email中引言一樣,透過在每行文字前加上 > ,也支援多階層引言,只要加上不同數量的 > 即可,不過部份不支援多階層引用。

1
2
3
4
5
> 第一層引言,第一段落
>
> 第一層引言,第二段落
>> 第二層引言
>> 內容

顯示結果:
(Codepen不支援多層引言,以下為Hexo渲染結果)

第一層引言,第一段落

第一層引言,第二段落

第二層引言
內容

清單

清單分為有序與無序清單,無序使用 -+* 標記皆可。

1
2
3
- 項目一
- 項目二
- 項目三

有序清單則直接用數字標示即可,這裡數字不一定需要正確,不過仍建議維持正確序號數字。

清單是區塊格式,區塊內可以還有其他區塊格式,所以可以多層清單使用,有序與無序清單可以混合使用,可以透過縮排(三個空白)來呈現子清單。

1
2
3
4
5
6
7
1. 項目1
- 子項目一
- 子項目二
2. 項目2
1. 子項目1
2. 子項目2
3. 項目3

區塊格式內還可以有其他區塊格式,如果清單內需要有段落,可以透過四個空白或是一個TAB的方式縮排,達到文字段落的效果。

1
2
3
4
5
*   項目內有段落示範

項目內的第二個段落

* 這是第二個項目

有時候不一定是使用項目清單,但仍會用到數字與小數點的結合,例如 2020. 年度計畫,則可以加上反斜號 \,就不會被標示為項目清單。

1
2020\. 年度計畫

顯示結果:

程式碼區塊

畢竟Markdown很常在程式相關文件或說明裡運用,所以自然也要提供了程式碼區塊格式,而依平台支援度,甚至提供程式碼高亮的效果,就如程式編輯器般,只要透過四個空白或是一個TAB的方式縮排,就可以使用程式程式碼區塊,本文的範例程式碼就是使用程式碼區塊。

1
2
3
4
5
這是一般文字段落,以下為程式碼區塊

<script>
alert( 'Hello, world!' );
</script>

由於程式碼本身會有縮排,而Markdown又需要透過縮排的方式標示,在使用上不是太方便,因此有了擴充的表示方式,在程式碼區塊第一行與最後一行,使用三個連續的 ` 來將程式碼區塊包起來。

1
2
3
```
print("Goodbye, World!")
```

顯示結果:

分隔線

可以使用至少三個 *-_ 來表示分隔線。

1
2
3
分隔符號前的文字
***
分隔符號後的文字

顯示結果:

行內格式

可將格式套用至部份文字可將格式套用至部份文字,像是粗體、斜體、連結和圖片等。

強調

用以強調文字用途,基本支援粗體與斜體

  • 斜體: 使用* 或是 _ 放在文字前後,不能包含空白。
  • 粗體: 使用* 或是 _ 放在文字前後,不能包含空白。
  • 粗體與斜體同時: 使用* 或是 _ 放在文字前後,不能包含空白。

不過基於各平台支援度,建議只使用 * 符號,閱讀上也較為一致,部分不支援粗體與斜體同時使用,另外如果 * 或是 _ 前後放上空白,則會當視為符號。

1
2
3
需要*斜體*的文字
需要**粗體**的文字
當純顯示 * 符號 * 沒有效果

顯示結果:

連結

如果要顯示連結,需要在 [] 符號後緊接著 () 並插入對應標題與網址即可。

1
我的部落格[連結](https://blog.icoding.tw),歡迎大家瀏覽。

另外也可以在連結上加上標題,只要在網址後面再加上標題,並透過雙引號 " 前後包起來。

1
我的部落格[連結](https://blog.icoding.tw "iCoding blog"),歡迎大家瀏覽。

快速使用連結,可以使用 <> 直接將連結放入其中,尤其有時候需要顯示email信箱時特別方便。

1
我的個人信箱: <[email protected]>

顯示結果:

圖片

圖片用法基本上與連結雷同,僅需要在其前面加上 ! ,不過基本上圖片就僅是插入一張圖片,,因輕量級標記式語言,不支援複雜設定,如長寬等,如需要可以也直接使用html語法。

1
![Logo](https://blog.icoding.tw/images/logo260.png "iCoding")

顯示結果:

行內程式碼

有時候在文字描述時,會順便包含程式碼格式的文字,這時候可以使用 ` 單引號包在程式碼文字前後。

1
使用Git指令`git clone`下載程式碼

顯示結果:

結論

介紹了基本的Markdown語言用法,在主流的平台上可以方便又快速書寫,不過各平台仍有自己擴充的語法,部分支援度也有所差異,有時間另外說明一些進階用法最佳實踐,不過在這之前,有機會不妨趕緊試試看Markdown帶來的書寫體驗吧。


References: