Markdown 是一種在純文字檔裡寫出帶格式文字的方法。沒有哪個應用程式擁有它、沒有二進位格式、不用擔心版本相容。你寫下那些本身就長得像它所產生之格式的符號,之後由別的東西把它們變成標題和粗體。
它 2004 年被發明出來,是為了不打 HTML 就能寫網誌。二十年後,它是多數筆記軟體、幾乎所有開發文件、聊天工具、靜態網站產生器的輸入格式,也是人們為 AI 工具寫提示和文件的方式。沒有人把它標準化到這個位置;它擴散開來,是因為它在被渲染之前就已經讀得懂。
# 標題——一個井號最大,井號越多越小。**粗體** 和 *斜體*。- 項目 是項目符號;1. 項目 是編號清單。[文字](https://example.com) 是連結。 是圖片——同樣的東西前面加個驚嘆號。> 引用文字 是引言區塊。程式碼。大部分就這些了。你可以在讀完這一節的時間內學會全部,這是它擴散的第二個原因。
兩者都在描述結構化的文字,兩者都是純文字檔。差別在於當一個人去看原始碼時會發生什麼。
HTML 把每樣東西都包在標籤裡。一個只有一個粗體字的段落,標點比語言還多。它毫無歧義、機器很愛,但讀它是件苦差事,手寫它很慢。
Markdown 的符號是挑來長得像它意思的。一份清單在任何東西渲染它之前就已經像一份清單。標題會跳出來。用星號標的強調讀起來就是強調。沒渲染的原始碼本身就讀得懂,這意味著一個 Markdown 檔即使在一台什麼都沒裝的機器上、用最陽春的文字編輯器打開,都還是有用的。
這件事比語法重要,而且是人們幾年之後才會體會到的那一部分。
一則記在封閉軟體裡的筆記,它的代價一直是隱形的,直到你想把所有東西搬出來的那一天。Markdown 沒有那一天。
這是誠實的抱怨,而且是真的。
2004 年最初的描述很鬆散,不同工具各自用不同方式填補空缺。今天你會遇到:
基本語法到哪都一樣。分歧從表格開始,以及表格之後的一切,這就是為什麼一份文件在這個軟體裡看起來沒問題,在另一個裡會有細微的錯。如果這個檔案要流通,就守著核心語法。
Markdown 完全不能控制頁面尺寸、邊界、字型、分欄、精確間距,或在哪裡換頁。這不是疏漏——這就是設計。Markdown 描述的是一個東西是什麼(一個標題、一則引言、一份清單),不是它長什麼樣。外觀由之後渲染它的東西決定。
所以 Markdown 不適合有設計的文件:一份手冊、一張海報、一份表單、一紙版面即意義的合約。它適合結構要緊、而外觀可以在下游再決定的文字。
因為 Markdown 是來源格式,交付通常意味著轉換。要上網就轉 HTML,有人需要固定的頁來列印或簽名就轉 PDF,審閱者要追蹤修訂就轉 Word,要上簡報工具就轉投影片。
值得守住的紀律是:只往外轉,絕不去改輸出然後把它當正本。一旦修正開始住在匯出的 PDF 裡,那個 Markdown 檔就變成過期的副本,優勢也就沒了。
任何希望十年後還留著這些筆記的人、任何在寫文件的人、任何起草的文字最後會出現在好幾個地方的人。學它花一個下午,消掉的是未來一整類的問題。
對一份必須長得跟某個東西一模一樣的文件,以及對需要熟悉的文書處理軟體的協作者,它是錯的工具。那是真實的限制,不是打發掉它的理由。
# 標題、**粗體**、*斜體*、- 清單、[文字](網址)