Markdown是一個輕量的標記語言, 主要用於讓人們可以不用HTML複雜繁長的語法就能夠標記格式而達到管理文件的目的. Markdown是由John Gruber跟Aaron Swartz所創造出來的. 他們希望能夠讓人們可以用易讀, 易寫的簡單文件格式, 透過工具格式化轉成HTML. 經過多年的發展, Markdown已經成為許多人做筆記的第一選擇了. 原因除了其簡潔直觀的語法還有就是長期來慢慢累積出來的周邊工具. Markdown已經不再僅僅只是用於標記基礎格式的語言了, 圍繞著Markdown產生出來的工具組已經可以讓這個標記語言作到細緻的排版. 已經有為數不少的人用Markdown來創造他們的數位著作. 知名的源碼版本控制服務網站GitHub用Markdown作為他們預設支援的文本格式. 其它還有許多的服務都支援Markdown作為他們優先支援的格式.
Markdown是一個輕量的標記語言, 主要用於讓人們可以不用HTML複雜繁長的語法就能夠標記格式而達到管理文件的目的. Markdown是由John Gruber跟Aaron Swartz所創造出來的. 他們希望能夠讓人們可以用易讀, 易寫的簡單文件格式, 透過工具格式化轉成HTML. 經過多年的發展, Markdown已經成為許多人做筆記的第一選擇了. 原因除了其簡潔直觀的語法還有就是長期來慢慢累積出來的周邊工具. Markdown已經不再僅僅只是用於標記基礎格式的語言了, 圍繞著Markdown產生出來的工具組已經可以讓這個標記語言作到細緻的排版. 已經有為數不少的人用Markdown來創造他們的數位著作. 知名的源碼版本控制服務網站GitHub用Markdown作為他們預設支援的文本格式. 其它還有許多的服務都支援Markdown作為他們優先支援的格式.
Markdown其實是 (1) 一種文本語法 (2) 一個轉化文件成HTML格式的軟體工具. 他的工具是用Perl寫成. 本文將帶領讀者瞭解關於Markdown的基礎跟基本功能. 本文將會使用Pandoc一個專門用來轉化標記語言的工具來示範Markdown. Pandoc不僅僅只支援Markdown還支援如LaTeX, Textile等標記語言. 有興趣的讀者在閒暇之餘也可以研究一下.
如上述, 本文將用Pandoc來介紹Markdown. 如果有讀者只想要Markdown官方的工具, 請到https://daringfireball.net/projects/markdown/
Pandoc在許多主流的作業系統上都有發佈安裝包方便使用者安裝. 這包含了Linux, Windows, BSD, and Mac OS X.
Linux跟BSD用戶請使用個別的package manager
Mac OS X以及Windows用戶請到: [https://code.google.com/p/pandoc/downloads/list]
在其他的平台上可以安裝Haskell平台再透過Haskell的套件管理軟件安裝pandoc.
cabal update
cabal install pandoc
如果讀者想要自行編譯源碼可以透過[https://code.google.com/p/pandoc/downloads/list] 下載tarball.
在安裝完後請測試安裝是否成功:
pandoc -v
筆者將利用以下的篇幅來說明Markdown的一些語法.
在Markdown中, 只要是連續的行就會被當成HTML中的paragraph. 在使用上, 一般要將paragraph與paragraph之間以一個到數個空行間隔開來. 讀者也可以使用兩個空格加一個return(換行)來區隔. Markdown會把這轉成一個br的標記.
如果想要定義標題元素, Markdown支援數種方式:
This is an H1
=============
This is an H2
-------------
還有如:
# This is an H1
## This is an H2
###### This is an H6
# This is an H1 #
## This is an H2 ##
### This is an H3 ######
Markdown可以用>
來標示文字區塊, 就像在email裡一樣:
> 這是一個block quote的文塊, 用來示範如何使用block quote的一個例子.
> 如果在email裡用過block quote, 就應該覺得這不陌生.
> 下一行空著就變新的一個段落
>
> 新的段落.
在編寫的過程中經常需要列舉, Markdown提供了一個很方便的標記方式:
* item 1
* item 2
- item 3
- item 4
+ item 5
+ item 6
如果需要枚舉的話:
1. pen
2. pencil
3. marker
對於有時候需要寫編碼的人, Markdown也有為這種需求給出一個解決方案. 只要在編碼的每行前面加一個tab或至少4個空格. Markdown還讓使用者可以用`來包圍住所要註釋為編碼的文字區塊
使用者可以用以下幾種方式來製造一個橫軸直線:
* * *
***
*****
- - -
---------------------------------------
如果想要嵌入連結, 可以使用以下的語法:
This is [an example](https://example.com/ "Title") inline link.
[This link](https://example.net/) has no title attribute.
*斜體*
_斜體_
假設想要粗體的話:
**粗體**
__粗體__
學習markdown最好的方式就是實際運用它.讀者在讀完了前一個段落以後應該已經對markdown有了足夠的認識可以開始實用了.以下是以markdown來編撰一個簡單的範例.
# Introduction #
This is an introduction to _markdown_.
1. Chapter 1 Syntax
2. Chapter 2 Advanced Techniques
***
# Chapter 1 - Syntax#
Write the intro for chapter 1 here.
## 1.1 Subsection ##
**Here** comes more details on the subject. Attach some code here:
run _code_
Try to fill in `_code_` with the program that you want to run.
## 1.2 Subsection 2 ##
This is a demo text paragraph
***
# Chapter 2 - Advanced Techniques ##
Intro for chapter 2 here.
看完以上的markdown, 試著想像以上的文檔會產生什麼樣的結果. 如果想驗證, 可以先將以上存進一個文字檔test.markdown, 然後轉成各種輸出格式.
轉成HTML, 請打:
pandoc test.markdown -o test.html
要轉成pdf, 輸入:
markdown2pdf test.markdown -o test.pdf
註:markdown2pdf是包含在pandoc裡的套件
markdown是一個非常易讀, 易寫的標記語言. 相關的資源也非常非常多. 透過工具, markdown可以被轉成各式各樣的輸出格式. 這對節省時間, 有效率地工作非常有幫助. 讀者若是有個15分鐘不妨試試看, 親自試寫markdown看看.