如何實現Github markdown 目錄/頁內跳轉?
我在Github上試著翻譯了一篇.md的文章,它從目錄鏈接到小標題是這樣的寫的:
### Table of Contents
* [What is LaTeX?](#what-is-latex)
······之間是其餘內容······
## What is LaTeX?1. 我之間沒遇到過這樣的頁內跳轉,我一般是加id跳轉的,這種方法是針對標題的簡便寫法嗎?
2. 這種寫法的鏈接不能加符號嗎?我試過這樣修改:
[What is LaTeX?](#what-is-latex?)
我在VS Code上可以正常跳轉,但是發布在 Github 上時就不能跳轉了。我感覺即使有網頁的編碼因素在,標題和鏈接使用的是同樣的問號,也應該是可以跳轉的吧?還是說這樣的寫法就是非法的?
感謝~
答案:[What is LaTeX?](#what-is-latex)
詳解:
這個是個有趣的問題,想要獲得答案,正確的搜索姿勢應該是
Google: Github Flavored Markdown Anchor
GitHub支持的語法在標準markdown語法的基礎上做了修改,稱為Github Flavored Markdown,簡稱GFM,其語法可參見guodongxiaren/README。
Github通過Anchor(錨點)來實現頁內跳轉,每個標題就是一個Anchor
實現GFM Anchor的代碼如下: https://github.com/jch/html-pipeline/blob/master/lib/html/pipeline/toc_filter.rb
功能/語法:
- It downcases the string
- remove anything that is not a letter, number, space or hyphen (see the source for how Unicode is handled)
- changes any space to a hyphen.
- If that is not unique, add "-1", "-2", "-3",... to make it unique
如上所示,對於標題為
#What is LaTeX?
正確的鏈接方式是
[What is LaTeX?](#what-is-latex)
同理:[Ready, set, GO!](#ready-set-go)
使用這樣的方式就可以實現Markdown的目錄了。
於是有趣的問題來了,
如何自動生成github README.md 的目錄呢?
github上的一個輕便的工具包可以解決這個問題
ekalinin/github-markdown-toc
如果希望在本地使用GFM的語法,可以使用開源的工具包Markdown-Plus
tylingsoft/markdown-plus
參考:
https://gist.github.com/asabaylus/3071099
用html語言實現
定義錨點
&
定義跳轉點
&`點這裡從頭再讀一遍`&