Markdown 表格由三種列組成,每一種都用直線符號 | 搭出來。最上面是標題列,像 | 姓名 | 年齡 |。下面接一列連字號組成的分隔列,像 | --- | --- |。再往下每一行就是一列資料。
對齊由分隔列裡的冒號決定。靠左寫 :---,置中寫 :---:,靠右寫 ---:。除此之外什麼都不用 - 不用外掛、不用 HTML、不用畫表工具。
表格來自 GitHub 風格 Markdown(GFM),不在 2004 年的原始語法裡。它在 GitHub、GitLab、Reddit、Obsidian、VS Code 和我們的編輯器都能正常渲染。少數聊天軟體仍然只會原樣顯示那堆直線符號,下方的對照表會點名。
重點速覽
| 一定要有的列 | 標題列,加上一列連字號組成的分隔列 |
|---|---|
| 對齊方式 | 分隔列的冒號::--- 、:---: 、---: |
| 儲存格內容 | 只能放行內格式,不能放清單或段落 |
| 需要的方言 | GitHub 風格 Markdown,原始 Markdown 不支援 |
| 跳脫直線符號 | 在它前面加一個反斜線 |
三種列組出一張表格
- 資料列之前,一定要先有標題列和一列連字號組成的分隔列。
- 對齊由分隔列的冒號決定,冒號之間有幾個連字號完全不影響結果。
- 儲存格只放得下行內格式,塞清單或空白行會讓表格提早結束。
- 表格是 GFM 的功能,所以 Discord 只會顯示直線符號,不會變成格子。
把下面這段貼進編輯器,看看預覽窗格的變化。
| 方案 | 價格 | 空間 |
| ---- | --------- | ------ |
| 免費 | $0 | 5 GB |
| 專業 | $9 / 月 | 100 GB |
| 團隊 | $29 / 月 | 1 TB |
結果是一張三欄表格,標題列粗體,下面三列資料。第一行變成標題儲存格。連字號那一行會直接消失,因為它唯一的任務就是告訴解析器「這一段是表格」。之後每一行都是一列。
上面對得整整齊齊的欄寬純粹是美觀。寫成 |方案|價格|空間| 結果一模一樣。留白只是讓下一個來改檔案的人比較好讀。
用冒號控制對齊
對齊設定寫在分隔列,一欄一個設定。
| 品項 | 數量 | 單價 |
| :----- | :--: | ------: |
| 筆記本 | 3 | $4.50 |
| 原子筆 | 12 | $1.20 |
三種冒號寫法各是什麼
:---讓整欄靠左。分隔列完全不加冒號時,結果也一樣。:---:讓整欄置中,適合短標籤和個位數。---:讓整欄靠右,價格欄的小數點就會對齊。
不管選哪一種,標題儲存格和它下方的所有資料儲存格都會一起套用。
連字號控制不了的事
冒號之間有幾個連字號完全不影響結果。:-: 和 :-------: 產生一模一樣的置中欄。欄寬由渲染器和內容決定,絕不是由你的原始檔決定。
注意:分隔列的欄位要和標題列一一對應,順序也要一致。少一欄或多一欄,這一段就不再是表格。所有的列都會退回一段滿是直線符號的文字。
儲存格裡放得下什麼
儲存格只接受行內格式,其他都不行。以下這些都沒問題。
| 項目 | 範例 |
| ------ | -------------------------------- |
| 粗體 | **已出貨** |
| 斜體 | *草稿* |
| 程式碼 | `npm install` |
| 連結 | [文件](https://example.com/docs) |
| 圖片 |  |
| 換行 | 第一行<br>第二行 |
儲存格裡永遠不能放的東西
凡是需要第二行的內容都不行。清單、段落、引言區塊、圍欄式程式碼區塊都會直接讓那一列結束,因為解析器讀到換行就收工。要在儲存格裡換行,請用 HTML 標籤 <br>。GitHub、GitLab 和多數渲染器都接受。
空白儲存格與沒跳脫的直線
空白儲存格是合法的。寫成 | | 就會渲染成空白,這比硬塞一個破折號更誠實地表達「沒有資料」。原樣的直線符號則是相反的問題。一定要用反斜線跳脫,否則解析器會把它當成欄位分界,那一列就默默多出一欄。
小提醒:某個儲存格塞滿長篇文字,通常代表這張表格的形狀不對。儲存格控制在幾個字,把解釋移到表格下方的段落,手機螢幕才放得下。
哪些平台真的支援表格
直線表格來自 GFM 規範,所以支援程度取決於平台跟得多緊。以下是大家最常貼表格的幾個地方。
| 平台 | 直線表格 | 冒號對齊 | 說明 |
|---|---|---|---|
| GitHub | 支援 | 支援 | README、議題、留言原生支援 GFM |
| GitLab | 支援 | 支援 | 以 GFM 為基礎,語法和 GitHub 相同 |
| 支援 | 支援 | 現行編輯器的貼文與留言都能渲染 | |
| Discord | 不支援 | 不支援 | 訊息只會原樣顯示那些直線符號 |
| Notion | 貼上時轉換 | 部分 | 貼上的 Markdown 會變成 Notion 原生表格 |
| Obsidian | 支援 | 支援 | 即時預覽,另有內建表格編輯器 |
| VS Code 預覽 | 支援 | 支援 | 內建預覽即可渲染 GFM 表格 |
遇到新工具時的判準
工具只要標榜支援 GitHub 風格 Markdown,表格就沒問題。如果是只有輕量格式的聊天軟體,就先假設不支援。那裡的備案是圍欄式程式碼區塊,至少欄位會以等寬字保持對齊。GFM 指南還列出了其他和表格一起出現的功能。
弄壞表格的三個錯誤
幾乎所有壞掉的表格都逃不出這三種原因。
一、忘了分隔列
少了它,整段會渲染成一段滿是直線符號的文字,而且事前沒有任何警告。
錯誤 正確
| 姓名 | 職務 | | 姓名 | 職務 |
| 小安 | 主管 | | ---- | ---- |
| 小安 | 主管 |
二、表格中間有空白行
Markdown 把空白行視為一個區塊的結束。表格會在那裡中斷,下面的列全部變成一般文字。把空白行刪掉,所有的列就會重新連在一起。
三、儲存格裡的直線沒跳脫
儲存格裡的原樣 | 會把那一列硬生生切出多餘的欄。
錯誤 正確
| 指令 | 意義 | | 指令 | 意義 |
| ------ | ------ | | ------- | ------ |
| a | b | 直線 | | a \| b | 直線 |
還有一個比較安靜的問題值得知道。某一列的儲存格比標題列少時完全不會報錯。渲染器會直接補上空白,於是表格不是明顯壞掉,而是隱隱約約怪怪的。編輯器的即時預覽在你打字的當下就會把這四種情況照出來。
大型表格的快速做法
用手把二十列的表格對齊會浪費掉一個下午。改用這套流程吧。
- 先不管留白直接把每一列打完,原始檔的欄寬對輸出毫無影響。
- 資料本來就在試算表裡的話,把儲存格複製起來丟進表格轉 Markdown 工具,它會替你把定位字元換成直線符號。
- 從零開始?直接在 Markdown 表格產生器裡把格子填好,再把成品複製走。
- 欄數盡量少。九欄的表格在手機上根本讀不了,存成 PDF 時也會被裁掉。
Markdown 表格的天花板
合併儲存格、指定欄寬、表格標題,全都不在語法範圍內。一旦需要其中之一,正確答案就是直接寫一段原生 HTML <table>,GitHub 和本站都會照常渲染。Markdown 表格指南詳細示範了這種備案。
再往下就是取捨問題,而不是語法問題了。Markdown 與 HTML 的比較衡量了兩種寫法,語法速查表則讓你一眼查到分隔列的寫法。
相關問題
立即使用編輯器
開啟編輯器