實用工具

Markdown 目錄產生器

為 README 產生目錄,連結指向 GitHub 實際產生的錨點——中文標題和重複標題都對得上。

瀏覽器本機執行格式化1754
免費

輸入

0 B

結果

結果會顯示在這裡。

目錄只有在每個連結都跳得到正確位置時才有用,而手寫錨點總在同樣的地方出錯:GitHub 會去掉標點、保留中文、全部轉成小寫,並依文件順序替重複的標題加上 -1、-2。這個工具讀取你的 Markdown,找出程式碼區塊和 front matter 以外的所有標題,依照 github-slugger(與 github.com 規則一致的函式庫)的規則產生錨點,輸出一份巢狀清單。它也能把目錄寫進 <!-- toc --> 和 <!-- tocstop --> 兩個標記之間——這是 markdown-toc 命令列工具的慣例——再次執行時會取代舊目錄,而不是多加一份。

它是怎麼運作的

  • 以 # 開頭的標題,以及用 === 或 --- 畫底線的標題都會辨識;``` 或 ~~~ 程式碼區塊、YAML front matter 和 HTML 註解裡的內容會略過。
  • 錨點依 GitHub 呈現出來的文字產生:連結、強調和行內程式碼只留下文字,標點去掉,空格變成連字號。
  • 所有標題都算進重複編號 -1、-2,包括超出所選深度、沒列進目錄的標題,因為 GitHub 就是這樣編號的。
  • 可以設定最大深度、清單符號、是否省略文件標題(開頭的 H1),以及是否傳回整份文件並把目錄插入標記之間。

你的資料去了哪裡

哪也沒去。本工具完全在你的瀏覽器裡執行:你貼上的文字由頁面處理,不會傳輸到任何伺服器,也不會寫進任何紀錄。

本工具免費且免登入,執行結果只存在於你目前的頁面裡,不會被儲存到任何地方。

它要花多少

本工具完全免費,不需要登入,也不消耗點數。

常見問題

為什麼中文標題的錨點保留了漢字?
因為 GitHub 就是保留的。它的規則只去掉標點和符號,所以 ## 安裝與使用 的錨點是 #安裝與使用,## FAQ:為什麼選擇 Rust? 則是 #faq為什麼選擇-rust——全形冒號和問號去掉,漢字留下。瀏覽器跳轉時會把連結做百分比編碼,這是正常的。
在 GitLab 或 Gitea 上連結也能用嗎?
大多可以。GitLab 和 Gitea 產生錨點的方式與 GitHub 很接近,簡單的英文標題在哪裡都一樣。差異在邊緣情況——重複標題、部分標點、舊版本對非拉丁文字的處理——所以發布到 GitHub 以外的平臺後,最好把連結點過一遍。
新增章節後要怎麼更新目錄?
在要放目錄的位置單獨寫一行 <!-- toc -->,後面再寫一行 <!-- tocstop -->,開啟「插入到標記之間」,把整份文件貼進來執行。標記之間的內容會被取代,舊目錄裡的標題不會被當成內文,所以重複執行結果不變,目錄不會越來越長。
用 HTML 寫的標題(例如 <h2>)會被辨識嗎?
不會。只會列出 Markdown 標題——以 # 開頭的行,以及用 === 或 --- 畫底線的行。Markdown 裡的 <h2> 標籤不會進入目錄;想讓它出現,就改寫成 ##。

背後的開源專案

本工具是獨立實作,並未打包第三方函式庫。jonschlinkert/markdown-toc(MIT)在程式碼層面做的是同一件事——如果你需要在自己的程式裡實作它,從那裡開始,而不是呼叫一個網頁。

jonschlinkert/markdown-toc

也常被稱作

  • markdown 目錄產生器
  • markdown toc
  • readme 目錄
  • github 錨點連結
  • markdown 中文標題錨點
  • 自動產生目錄