Skip to content

通过Python脚本实现 给 Github 的 markdown文件(如 README.md)自动生成 目录TOC

License

Notifications You must be signed in to change notification settings

zhouie/github-md-toc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ps: 在发现了 sublime 的插件 Markdown TOC 之后 , 世界都清晰起来了

看完上面这句话,其实可以忽略下面了 ...ORZ

github-md-toc

GitHub没有提供 [TOC] 类似的功能来为 Markdown 文件(如README.md)自动生成目录(TOC),这一点很遗憾; 这尤其在一些较长的 Markdown 文件中就显得更伤人了,因此造一些辅助工具必不可少。

查阅了很多资料,大致整理分享了一下,可以去下面的Reference查看,有兴趣的可以多看看

总结一下,基础的TOC生成并不难,但其中有很多小细节处理起来有些麻烦:

  • 标题中的特殊字符,如&#.(),甚至空格等的处理是不同的,举例来说,.当做 不存在 来处理(换言之,将其删去),&当做 不存在 来处理;
  • 标题中的所有大写字母应当全部转成小写字母处理。

Usage

支持 python 2.\*python 3.\*,所以python2python3之间的切换随你的意都行

python github-md-toc.py </path/to/your/file.md> [<tab_length>]

相信可以看懂上面几个选项的含义,如 [<tab_length>]指的是TAB键代表的空格数

直接点击run.bat 即可执行脚本,毕竟其中的内容同上面的shell指令是一致的,用文本编辑器打开就知道了

上面动图中用的都是python35(即python3),但若是出现下面这样的问题,建议尝试切回 python2 去试试,如果还是不行,欢迎在 issues 提问交流

$ python35 github-md-toc.py ./test_dir/EXAMPLE.md 2
Traceback (most recent call last):
  File "github-md-toc.py", line 11, in <module>
    lines = f.readlines()
UnicodeDecodeError: 'gbk' codec can't decode byte 0x89 in position 226: illegal multibyte sequence

Description

需要说明的是,目前还只是对大小写、.()空格以及# 正确处理了,所以呢,之后应该还会陆续更新(ps:但其实也没接着更新的必要了,因为一般情况下,我们写个标题都是纯中文或纯英文,哪怕有些特殊符号,也只是()空格之类的,还在可控范围之内)

毕竟我这里也只是为了自己在使用上的方便便捷,如果有想弄个完整便捷操作版的朋友,可以参看我保留收藏的 这几个脚本文件以及相对应的GitHub Repo

License

MIT license

Reference

About

通过Python脚本实现 给 Github 的 markdown文件(如 README.md)自动生成 目录TOC

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published