實用工具
輸入
結果
結果會顯示在這裡。目錄只有在每個連結都跳得到正確位置時才有用,而手寫錨點總在同樣的地方出錯: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 中文標題錨點
- 自動產生目錄