本教程僅供學習傳播精盅,轉(zhuǎn)載請注明出處@Tianxing Zhang's Blog。
注:教程目前仍在維護中况凉,尚有大量工作沒有完成谨湘,請見諒绽快!
0. 前言
本教程最初來自于我對互聯(lián)網(wǎng)上流傳的各類 Markdown 教程的整理,原意是為供自己遺忘時參考紧阔,但鑒于現(xiàn)有 Markdown 中文教程質(zhì)量參差不齊坊罢、內(nèi)容多有不全,遂撰此教程擅耽,希望能對讀者朋友們有所幫助活孩。
本教程主要參考了以下資料:
- Markdown 入門指南
- Markdown 中文版語法說明
- Markdown 創(chuàng)始人 John Gruber 語法說明
- Markdown Tutorial(內(nèi)含練習)
- Markdown Guide
個人作品,錯誤和疏漏之處在所難免乖仇,懇請讀者批評指正憾儒。
Email:zhangtianxing93@gmail.com
1. 認識 Markdown
1.0 什么是 Markdown
這是 Wikipedia 上對 Markdown 的定義:
Markdown is a lightweight markup language with plain text formatting syntax.
Markdown 是一種輕量級標記語言,可使用純文本編輯器(如Vim乃沙、Emacs等)進行編寫起趾,通過簡單的標記語法,它能為純文本文件添加格式警儒。
使用 Markdown 編輯器/解釋器阳掐,它能夠很方便地被轉(zhuǎn)換為 HTML、PDF冷蚂、LaTex 等格式,從而實現(xiàn)“一次書寫汛闸,到處流通”蝙茶。
John Gruber 在 2004 年與 Aaron Swartz 合作發(fā)明了 Markdown,旨在創(chuàng)造一種“易于閱讀诸老、易于書寫的純文本格式”隆夯。他使用 Perl 語言寫了第一個能夠把 .md 文件轉(zhuǎn)為 .html 文件的解釋器钳恕。
今天,Markdown 已經(jīng)成為世界上最流行的幾種標記語言之一蹄衷。
1.1 為什么使用 Markdown
為什么使用 Markdown忧额?這里有幾個不錯的理由:
- 內(nèi)容和格式分離,專注于寫作本身而不是排版愧口。
- 作為純文本內(nèi)容睦番,兼容于所有文本編輯器和字處理軟件。
- 可以輕松導(dǎo)出成多種格式的文件:.md/.pdf/.html/.tex/.doc等耍属。
- 支持LaTeX公式托嚣,方便進行科技寫作。
- 方便進行版本控制厚骗,不必像字處理軟件那樣生成多個文件導(dǎo)致版本混亂示启。
- 直觀、可讀性好领舰、學習成本低夫嗓。
正因如此,無論是撰寫博客文章冲秽、軟件README文檔舍咖、學術(shù)論文,還是在論壇發(fā)帖子劳跃,Markdown 都是很好的選擇谎仲。
1.2 Markdown 工具
1.2.0 文本編輯器
俗話說得好:磨刀不誤砍柴工。書寫 Markdown 首先需要一款稱手的編輯器刨仑,它不僅可以幫助你將文件導(dǎo)出為各種豐富的格式郑诺,還可以給你“所見即所得”的寫作體驗。
-
桌面端
- Windows 平臺上杉武,建議你使用 MarkdownPad 或 Typora辙诞。
- Mac OS X 平臺上,建議你使用 Ulysess轻抱、Byword 或 Mou飞涂。
- Linux 平臺上,建議你使用 Remarkable 或 ReText祈搜。
-
移動端
- iOS 平臺上较店,建議你使用 Ulysses 和 iA Writer。
- Android 平臺上容燕,建議你使用 MarkdownX梁呈。
- Web端
事實上官卡,這些編輯器很多都是跨平臺的:
關(guān)于軟件的選擇蝗茁,你還可以參考:
另外寻咒,很多常用編輯器如 Vim哮翘、Emacs、Sublime毛秘、Atom 等經(jīng)過配置后饭寺,也非常適合 Markdown 寫作。
1.2.1 圖床
很多人對文本編輯器比較熟悉熔脂,對“圖床”卻沒有概念佩研。
什么是圖床呢?說白了霞揉,圖床就是一種特殊的網(wǎng)盤旬薯,能提供托管個人圖片和圖片外鏈分享的服務(wù),而我們?nèi)粘K褂玫拇蠖鄶?shù)網(wǎng)盤都沒有圖片外鏈分享的功能适秩。
那圖床和 Markdown 又有什么關(guān)系嗎绊序?這就要說到 Markdown 的一個小缺點了:插入圖片。Markdown 中插入圖片得靠鏈接秽荞,因為圖片本身是不可能包含在純文本文件里的骤公。這樣做有兩個缺點:一是本地圖片其他人看不到,二是外鏈圖片有丟失的風險扬跋,你一定不希望有朝一日阶捆,自己寫的博文配圖都不見了吧。
因此钦听,最好的方法就是把文件中要用到的圖片全都上傳到一個私有圖床上洒试,自己搭建服務(wù)器代價太高,只能去網(wǎng)上找相關(guān)的云服務(wù)提供商朴上。所幸目前還是有免費的解決方案的垒棋,我給個鏈接,感興趣的同學可以嘗試一下:
其實大多數(shù)情況下文章的配圖還是能在網(wǎng)上找到的痪宰,而且圖片一般也不太會丟失叼架,所以多數(shù)情況下,要求低一些或者懶得折騰的同學用外鏈圖片也沒什么問題衣撬。
2. Markdown 語法規(guī)則
2.0 標題(Headers)
標題是每篇文章都有的常見格式乖订。將一句話定義為標題,只需在前面加上幾個#
具练,#
越多標題等級越低垢粮。# Header1
表示一級標題,# Header6
表示六級標題:
# 一級標題
## 二級標題
### 三級標題
#### 四級標題
##### 五級標題
###### 六級標題
實際效果:
一級標題
二級標題
三級標題
四級標題
五級標題
六級標題
雖然標題名和#
之間有沒有空格靠粪、有幾個空格無關(guān)緊要蜡吧,但良好的寫作風格要求#
和標題名稱之間保持一個空格距離,這樣能讓源碼讀起來更舒服占键。
更多關(guān)于寫作風格上的建議昔善,會在 Markdown 書寫風格一章中陸續(xù)給出。
2.1 列表(Lists)
列表常用于表示一連串平級的概念畔乙,Markdown 中的列表又可以分成無序列表和有序列表兩大類君仆。
無序列表需要在文字前加上-
或*
,并注意符號和文字之間的空格是必須的:
- 蘋果
- 香蕉
- 梨子
實際效果:
- 蘋果
- 香蕉
- 梨子
有序列表則要在文字前加上1.
2.
3.
等數(shù)字編號牲距,實際上數(shù)字的順序并不會影響最終顯示效果:
2. 蘋果
1. 香蕉
5. 梨子
實際效果:
- 蘋果
- 香蕉
- 梨子
除此以外返咱,列表的嵌套也很常見,只需要
2.2 塊引用(BlockQuotes)
2.3 鏈接(Links)
2.4 圖片(Images)
2.5 短語強調(diào)(Phrase Emphasis)
2.6 表格(Tables)
2.7 代碼(Codes)
2.8 分割線(Horizontal Rule)
使用***
或---
表示水平分割線(*
和-
的數(shù)量必須大于等于三個)牍鞠,分割線能使你的文章看起來結(jié)構(gòu)清晰咖摹、更有條理:
##
實際效果:
事實上,你會發(fā)現(xiàn)有的 Markdown 解釋器會自動在某一等級的標題下方添加一條細橫線(比分割線更細难述,離文字更近)萤晴,比如我所使用的 MarkdownPad 就會在二級標題下方添加橫線,VS Code 會在一級標題下方添加橫線胁后,而簡書則完全不會在標題下加任何東西店读。所以當你移植有分割線的 Markdown 文件時,最好先搞清楚目標解釋器的特點攀芯。
3. Markdown 書寫風格
什么是“書寫風格”屯断?
風格可以理解成做同一件事的不同方法。在 Markdown 里侣诺,同樣的文本可以有多種合法的源碼殖演,比如我想寫一個有序列表,可以這樣寫:
1. 蘋果
2. 香蕉
3. 梨子
也可以這樣寫:
1. 蘋果
1. 香蕉
1. 梨子
兩種寫法顯示效果完全一樣:
- 蘋果
- 香蕉
- 梨子
到底應(yīng)該用哪種寫法呢紧武?我相信聰明的你一定已經(jīng)有了答案剃氧,沒想出來也不要緊,我們很快就會講到阻星,耐心向下看即可朋鞍。
為什么要保持良好的書寫風格?符合語法還不夠嗎妥箕?
遵循特定風格不是必須的滥酥,但有這些好處:
- 良好的書寫風格有助于增加代碼的可讀性,使代碼的維護更加容易畦幢。
- 從讀者角度考慮坎吻,排版美觀的文本閱讀起來也更加高效。
- 不同解釋器對于 Markdown 源碼的解釋有一定出入宇葱,同樣的代碼經(jīng)不同解釋器呈現(xiàn)出的效果可能大不相同瘦真,保持一個標準的書寫風格有利于文本的可移植性刊头。
我們要使用哪種書寫風格呢?
本教程講解的書寫風格主要參考了 Markdown 書寫風格指南以及 Google Markdown Style Guide诸尽,這是兩種比較主流的原杂、被實踐證明行之有效的風格。
事實上您机,如果你認為你自創(chuàng)的書寫風格也有以上優(yōu)點穿肄,使用你自己的風格也是完全可以的,尤其是當使用場景比較特殊的時候际看,更是如此咸产。
書寫風格的哲學
- 如果在 Markdown 中有幾種做事情的方法,請只選擇常見的一種并堅持下去仲闽。
- Markdown 的核心在簡潔實用脑溢,而不是讓自己變得和 Word 一樣全面龐雜,所以不要用 Markdown 去做它不擅長的事情蔼囊,比如畫復(fù)雜的表格乃至流程圖焚志,把這些留給插圖吧。
4. 后記
可以說畏鼓,這篇教程首先是寫給我自己看的
有人說酱酬,Markdown 這么簡單,五分鐘學會的事云矫,有必要寫長篇大論嗎膳沽?為什么不讓 Markdown 只專注內(nèi)容,把樣式留給 CSS 呢让禀?好吧挑社,我承認我有點強迫癥,雖然到最后.md
還是會變成.html
巡揍,但我就是不喜歡用一堆雜交的語法來寫作痛阻。我喜歡做一件事只有一種方法,而 Markdown 本身已經(jīng)能滿足我的要求腮敌。
你當然可以只學五分鐘 Markdown 就開始使用它阱当,這正體現(xiàn)了 Markdown 的簡潔實用,好的工具應(yīng)該有最低的學習成本和最棒的效果糜工。但如果你和我一樣熱愛 Markdown弊添,并希望堅持使用它來寫作,多花一點時間確定寫作風格也是值得的捌木。
學習 Markdown 和學其他知識沒什么不同油坝,一定要多練習多琢磨。當我下決心寫這篇教程的時候,我和你們中的很多人一樣只是個熱愛 Markdown 的新手澈圈,但當我完成這篇 xxx 字的文章后彬檀,我和曾經(jīng)的我已不可同日而語。