Markdown 排版規範與高階擴展實踐
引言:純文本寫作的優雅力量
2004 年,約翰·格魯伯(John Gruber)與阿隆·斯沃茨(Aaron Swartz)共同發明了 Markdown 標記語言。其設計的初衷非常純粹:「讓人們能夠使用易讀易寫的純文本格式編寫文檔,並能夠將其輕鬆轉換為結構良好的 XHTML 或 HTML。」
在現代軟體工程與技術寫作領域,Markdown 已經成為事實上的通用排版標準。無論是 GitHub 上的開源專案說明(README.md)、技術部落格的文章記錄,還是企業內部的架構設計文檔,Markdown 都以其極輕的語法負擔、極佳的版本控制友好性,贏得了無數開發者的青睞。
然而,在實際寫作中,「寫出 Markdown」和「寫出專業、工整且具高度可讀性的 Markdown」之間,往往存在著巨大的排版差距。本文將從 基礎排版規範、中英文混排美學 以及 高階擴展語法(LaTeX 公式與 Mermaid 架構圖) 三個維度,系統性地梳理 Markdown 的寫作實踐。
一、 Markdown 核心基礎排版規範
1. 語意化標題結構與層級嚴格性
標題是文檔大綱與閱讀目錄(TOC)的單一事實來源。在技術排版中,必須遵守嚴格的層級遞進規則:
- 一級標題 (
#):單篇文章僅建議出現一次,通常由部落格系統的文章元數據(Frontmattertitle)自動作為主標題渲染; - 二級標題 (
##):代表文章的核心獨立大章; - 三級標題 (
###):大章內部的具體知識模組; - 嚴禁跨層級使用:例如在
##下直接跳躍使用####,這會導致自動生成的目錄導航(TOC)結構斷裂。
1<!-- 正確示範:嚴格逐級遞進 -->
2## 1. 架構設計原則
3### 1.1 單一職責
4### 1.2 開放封閉
5
6<!-- 錯誤示範:跳級使用導致大綱解析混亂 -->
7## 1. 架構設計原則
8#### 1.1 單一職責 (跳過了 H3)
2. 清單排版與巢狀縮排規範
清單能將散亂的資訊結構化呈現。但在多級清單混排時,空格與縮排是常見的格式崩塌點:
- 無序清單:推薦統一使用減號
-,同級清單項符號必須全局一致,切勿在同一篇文章中混用*、+和-; - 巢狀縮排:子清單必須相較於父級縮排 2 個空格或 4 個空格(建議全站統一為 2 個空格);
- 清單間距:緊湊型清單項之間無需空行,若某一項包含多段文字或程式碼區塊,則整個清單建議使用鬆散型空行分隔。
1- **核心中介軟體層**
2 - 身分鑑權攔截器(JWT / WebAuthn 校驗)
3 - 存取限流中介軟體(基於 Token Bucket 演算法)
4- **資料持久化層**
5 - SQLite WAL 關聯型儲存
6 - 全局唯讀 KV 快取
3. 程式碼區塊與語法高亮規範
程式碼區塊是技術文檔的核心組成部分。優秀的排版應當滿足可讀性與功能性的雙重要求:
- 顯式宣告語言標識:在三個反引號後,必須明確標明編程語言的代號(如
go、typescript、rust、bash、json、sql等)。這不僅能觸發 Chroma 或 Prism 的語法高亮引擎,更能讓前端程式碼卡片正確顯示語言 Badge 並啟用一鍵複製功能; - 區分行內程式碼與區塊級程式碼:
- 檔案路徑(如
/etc/hosts)、指令選項(如--minify)、變數名稱(如userToken)必須使用單個反引號包裹; - 包含多行邏輯的程式片段,必須使用獨立程式碼區塊。
- 檔案路徑(如
1// 宣告語言標識為 typescript
2interface UserSession {
3 userId: string;
4 role: "admin" | "member";
5 expiresAt: number;
6}
4. 引用區塊(Blockquote)的層次感
引用區塊通常用於引經據典、特別宣告、核心結論或設計準則的突出強調:
- 可以透過多個
>符號實現多級巢狀引用; - 可以在引用區塊內部巢狀使用粗體、斜體、清單甚至程式碼區塊。
核心設計準則:
“簡單性是可靠性的先決條件。在滿足業務需求的前提下,最優秀的程式碼往往是那些被精簡掉的程式碼。”
—— 艾茲格·迪傑斯特拉(Edsger W. Dijkstra)
二、 中英文混排美學與排版細節
一份專業的文檔不僅在於語法無誤,更體現在對標點符號與空白字符等微小細節的雕琢上。
1. 中英文與數字之間的「盤古之白」
在中文排版傳統中,漢字屬於全形方塊字,而英文字母與阿拉伯數字屬於半形字符。當中文字與英文/數字直接貼合在一起時,視覺上會顯得極其擁擠。
- 推薦做法:在中文字符與英文字符、中文字與數字之間,主動保留一個半形空格;
- 排版對比:
- ❌ 差評:
我們在2026年使用Hugo編譯了全站的HTML檔案。 - ✅ 推薦:
我們在 2026 年使用 Hugo 編譯了全站的 HTML 檔案。
- ❌ 差評:
2. 標點符號的準確使用
- 中文主句:必須使用標準的全形標點符號(,。!?;:「」『』());
- 英文短語與程式碼段內:必須使用標準的半形標點符號(
, . ! ? : "" '' ()); - 避免中英標點混用:中文句子結尾切勿使用英文半形句號
.。
三、 Markdown 進階擴展功能實戰
現代純靜態部落格透過整合 KaTeX 與 Mermaid 渲染引擎,使 Markdown 能夠原生渲染複雜的科學公式與軟體架構圖。
1. 原生 LaTeX / KaTeX 數學公式排版
無需截取低解析度的圖片,直接在 Markdown 中書寫標準 LaTeX 語法即可完成高精度排版。
(1) 行內數學公式(Inline Math)
使用單個美元符號 $ 包裹公式,常用於正文中穿插參數或簡短等式:
- 質能方程式:$E = mc^2$
- 歐拉恆等式:$e^{i\pi} + 1 = 0$
- 常態分佈機率密度函數:$f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{1}{2}\left(\frac{x-\mu}{\sigma}\right)^2}$
(2) 區塊級獨立公式(Display Math)
使用雙美元符號 $$ 包裹獨立公式區塊,公式將置中排版並保留完整的上下標與積分範圍:
高斯積分公式: $$ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} $$
離散傅立葉變換 (DFT): $$ X_k = \sum_{n=0}^{N-1} x_n \cdot e^{-i \frac{2\pi}{N} k n} \quad (k = 0, 1, \dots, N-1) $$
馬克士威方程組(微分形式): $$ \begin{aligned} \nabla \cdot \mathbf{E} &= \frac{\rho}{\varepsilon_0} \ \nabla \cdot \mathbf{B} &= 0 \ \nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \ \nabla \times \mathbf{B} &= \mu_0 \mathbf{J} + \mu_0 \varepsilon_0 \frac{\partial \mathbf{E}}{\partial t} \end{aligned} $$
2. Mermaid 向量流程圖與架構圖
在文本中宣告 ```mermaid 程式碼區塊,瀏覽器將在前端動態渲染為向量 SVG 圖表,支援深淺色模式自適應。
(1) 現代邊緣架構流程圖 (graph LR)
flowchart LR
Client["終端訪客"] -->|"HTTPS / HTTP/3"| CDN["Cloudflare 邊緣網路"]
CDN -->|"快取命中 (< 10ms)"| EdgeCache["Edge Cache 邊緣快取"]
CDN -->|"快取未命中"| Pages["Cloudflare Pages 靜態分發"]
Pages -->|"純淨渲染"| Storage["Markdown 內容庫"]
(2) OAuth 2.1 PKCE 狀態機互動時序圖 (sequenceDiagram)
sequenceDiagram
autonumber
actor User as 使用者
participant Client as 前端應用
participant Authz as 認證服務
participant API as 業務 API
User->>Client: 點擊通行金鑰 Passkey 登入
Client->>Client: 生成 code_verifier 與 challenge
Client->>Authz: 發起授權請求 /authorize
Authz->>User: 觸發 WebAuthn 硬體金鑰驗簽
User-->>Authz: 驗證指紋或人臉成功
Authz-->>Client: 返回臨時授權碼 Code
Client->>Authz: 兌換權杖 /token
Authz->>Authz: 校驗簽名與 challenge 一致
Authz-->>Client: 簽發 JWT Access Token
Client->>API: 攜帶 Token 請求業務資料
API-->>Client: 200 OK 返回受保護資源
四、 總結:Docs as Code 的工程哲學
在現代技術實踐中,「文檔即代碼(Docs as Code)」的理念正日益成為共識:
- 版本控制:文檔與原始碼一同保存在 Git 倉庫中,每次修改都有跡可循;
- 規範化治理:透過統一的排版規範與樣式約定,確保團隊產出高標準的知識資產;
- 內容與展示分離:純淨的 Markdown 專注於內容本身的邏輯嚴密性,而視覺呈現交由現代靜態渲染引擎全權處理。
養成規範、嚴謹的排版習慣,不僅能讓技術總結更加清晰,更能讓每一次閱讀都成為一種享受。