標籤:

如何實現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

功能/語法:

  1. It downcases the string
  2. remove anything that is not a letter, number, space or hyphen (see the source for how Unicode is handled)
  3. changes any space to a hyphen.
  4. 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語言實現

定義錨點

&

定義跳轉點

&`點這裡從頭再讀一遍`&


TAG: |