ps: 在发现了 sublime 的插件 Markdown TOC 之后 , 世界都清晰起来了
看完上面这句话,其实可以忽略下面了 ...ORZ
GitHub没有提供
[TOC]类似的功能来为 Markdown 文件(如README.md)自动生成目录(TOC),这一点很遗憾; 这尤其在一些较长的 Markdown 文件中就显得更伤人了,因此造一些辅助工具必不可少。
查阅了很多资料,大致整理分享了一下,可以去下面的Reference查看,有兴趣的可以多看看
总结一下,基础的TOC生成并不难,但其中有很多小细节处理起来有些麻烦:
- 标题中的特殊字符,如
&、#、.、(、),甚至空格等的处理是不同的,举例来说,.当做不存在来处理(换言之,将其删去),&当做不存在来处理; - 标题中的所有大写字母应当全部转成小写字母处理。
支持
python 2.\*与python 3.\*,所以python2与python3之间的切换随你的意都行
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需要说明的是,目前还只是对大小写、.、(、)、空格以及# 正确处理了,所以呢,之后应该还会陆续更新(ps:但其实也没接着更新的必要了,因为一般情况下,我们写个标题都是纯中文或纯英文,哪怕有些特殊符号,也只是(、)、空格之类的,还在可控范围之内)
毕竟我这里也只是为了自己在使用上的方便便捷,如果有想弄个完整便捷操作版的朋友,可以参看我保留收藏的 这几个脚本文件以及相对应的GitHub Repo
MIT license

