是否有可能生成一个自动目录使用Github调味Markdown?
当前回答
使用coryfklein/doctoc, thlorenz/doctoc的一个分支,它不会在每个目录中添加“由doctoc生成”。
npm install -g coryfklein/doctoc
其他回答
在使用Visual Studio Code时,实现mardown文件目录的一个非常方便的方法是扩展名Markdown-TOC。
它可以向现有的markdown文件添加toc,甚至在保存时保持toc的最新状态。
无耻的“借用”这个SO答案。
你可以用Pandoc做到这一点。
pandoc -s --toc input.md -o input_toc.md
注意:输入和输出文件的顺序在这里很重要。
它不是自动的,但它使用notepad++正则表达式:
用第二个替换所有第一个(删除所有没有标题的行)
^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n
然后(将头III转换为空格)
-##
-
然后(将标题II转换为空格)
-#
-
然后(删除链接标题开头和结尾未使用的字符)
\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]
然后(转换最后一个符号小写和破折号而不是空格)
\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2
删除未使用的最后磅和初始破折号:
(?:()[-:;!\?#]+$|(\]#)-)
\1\2
删除链接中无用的字符:
(\].*?)(?:\(|\))
\1
最后在最后链接的周围加上圆括号:
\](?!\()(.*?)$
\]\(\1\)
瞧!如果你重复足够多的时间,你甚至可以把它放在一个全局宏中。
下面是我今天为此编写的shell脚本。可能需要根据你的需要进行调整,但这应该是一个很好的起点。
cat README.md \
| sed -e '/```/ r pf' -e '/```/,/```/d' \
| grep "^#" \
| tail -n +2 \
| tr -d '`' \
| sed 's/# \([a-zA-Z0-9`. -]\+\)/- [\1](#\L\1)/' \
| awk -F'(' '{for(i=2;i<=NF;i++)if(i==2)gsub(" ","-",$i);}1' OFS='(' \
| sed 's/^####/ /' \
| sed 's/^###/ /' \
| sed 's/^##/ /' \
| sed 's/^#//'
如果有人知道更好的方法来做这些最终的#替换,请添加评论。我尝试了各种各样的方法,但都不满意,所以我就硬着硬着。
对于Github的Texteditor Atom,请查看这个很棒的插件(或Atom术语中的“包”),它可以从解析的markdown文件生成“标题的TOC(目录)”文件:
降价目录
一旦安装为Atom-package,您可以使用快捷键ctrl-alt-c在当前光标位置插入基于markdown-doc-structure的TOC…
截图:
原子Keybindings
markdown-toc为您提供以下默认键绑定来控制Atom中的插件:
ctrl-alt-c =>在光标位置创建TOC ctrl-alt-u =>更新TOC ctrl-alt-r =>删除TOC
插件特性(来自项目的README)
通过锚标记自动链接,例如# A 1→# A -1 深度控制[1-6]使用depthFrom:1和depthTo:6 使用withLinks使能或禁用链接 使用updateOnSave保存时刷新列表 使用有序列表(1. ..., 2. ...) orderedList:0
推荐文章
- Github:导入上游分支到fork
- GitHub上的分叉和克隆有什么区别?
- 如何将现有的解决方案从Visual Studio 2013添加到GitHub
- 是否可以在GitHub上搜索特定的文件名?
- 如何将LaTeX与Markdown混合?
- GitHub -未能连接到GitHub 443 windows/连接到GitHub失败-无错误
- 我怎么能让詹金斯CI与Git触发器推到主人?
- 如何从拉请求中删除提交
- 如何用分发文件发布npm包?
- 如何同步项目到GitHub与Android工作室?
- 跟踪在GitHub上创建的一个新的远程分支
- 如何将一个特定的提交从一个分支合并到Git中的另一个分支?
- 从pull请求中删除一个修改过的文件
- 下载GitHub项目的最快方式
- 乳胶渲染在README。md在Github上