github-flavored-markdown中的自动TOC
是否有可能使用Github Flavored Markdown生成自动目录?
我创build了两个选项来为github-flavored-markdown生成一个toc:
DocToc命令行工具( 源 )需要node.js
安装:
npm install -g doctoc
用法:
doctoc .
将目录添加到当前和所有子目录中的所有降价文件。
DocToc WebApp
如果您想先在线试用,请转到doctoc网站,粘贴降价页面的链接,它会生成一个可以插入到降价文件顶部的内容表格。
Github Wiki和锚点
正如马修· doctoc
Matthew Flaschen)在下面的评论中指出的,对于其wiki页面,GitHub以前没有生成doctoc
依赖的锚。
更新:但是,他们解决了这个问题 。
GitHub页面(基本上是Jekyll的一个包装) 似乎使用了kramdown ,它实现了 Maruku的 所有function ,因此通过toc
属性支持自动生成的目录 :
* auto-gen TOC: {:toc}
第一行只是开始一个无序列表,实际上被扔掉了。
这将导致嵌套的无序列表集,使用文档中的标题。
注意:这应该适用于GitHub页面,而不是GitHub Flavored Markdown(GFM),如注释或维基页面中所使用的。 AFAIK解决scheme不存在的。
这不是自动的,但它使用Notepad ++正则expression式:
首先全部replace(删除所有没有标题的行)
^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z) -\1\2 [\3](#\3)\n
然后(将标题III转换为空格)
-## -
然后(将标题II转换为空格)
-# -
然后(在链接标题的开头和结尾处删除未使用的字符)
\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\] [\1]
然后(转换最后的令牌小写和破折号而不是空格)
\]([^ \r\n]*) ([^\r\n ]*) ]\L\1-\2
删除未使用的最终磅和最初的破折号:
(?:()[-:;!\?#]+$|(\]#)-) \1\2
删除链接中的无用字符:
(\].*?)(?:\(|\)) \1
最后在最终的链接上添加括号:
\](?!\()(.*?)$ \]\(\1\)
瞧! 如果重复足够的时间,甚至可以把它放在全局macros中。
Github Flavored Markdown使用RedCarpet作为Markdown引擎。 从RedCarpet回购 :
:with_toc_data – 将HTML锚点添加到输出HTML中的每个头部,以允许链接到每个部分。
看来你需要在渲染器级别设置这个标志,这在Github上显然是不可能的。 然而,Github页面的最新更新似乎自动锚定打开标题,创build可链接的标题。 不完全是你想要的,但它可以帮助你为你的文档创build一个TOC更容易一些(尽pipe手动)。
如果你用Vim编辑Markdown文件,你可以试试这个插件vim-markdown-toc 。
用法很简单,只需将光标移动到你要添加目录的地方,然后运行:GenTocGFM
,完成!
截图:
特征:
-
为Markdown文件生成toc。 (支持GitHub Flavored Markdown和Redcarpet)
-
更新现有的toc。
-
保存时自动更新toc。
这是不可能的,除了提出的解决办法。
我提议克拉姆丁TOC扩展和其他可能性support@github.com和史蒂文! 拉格纳罗克回答说:
感谢您的build议和链接。 我将把它添加到我们的内部function请求列表中供团队查看。
让我们高兴这个问题,直到它发生。
另一个(通常是不可接受的)解决方法是使用asciidoc而不是Markdown, 它会呈现TOC 。
Grunt自述文件生成器
我刚刚为此写了一个工具。 主要用于我的github项目。 这是一个Grunt插件,用于从多个Markdown文件的小部分和目录生成自述文件。 有许多function和定制。
引自自述文件:
…
比方说,你有一个自述的结构,如:
- Installation - Usage -- Example -- Example Output - Documentation -- Options --- option1 --- option2 -- API - License - Contributing
- 您可以编写一个任务来从
option1.md
和option2.md
生成Options.md
- 然后是一个从
Options.md
和API.md
生成Documentation.md
的任务 - 从
Example.md
和Example Output.md
文件生成Usage.md
另一个任务 - 并通过从
Installation.md
,Usage.md
,Documentation.md
,License.md
和Contributing.md
创buildReadme.md
将其全部包装起来 - 瞧!
强调
- 自动生成目录
- 自动
Back To Top
链接生成 - 高度可定制的许多大部分图片的部分
- 自动标题和描述生成在顶部
- 选项来生成所需的分支顶部的Travis生成状态图像
- 专门为GitHub项目和GFMdevise
- 在顶部可选横幅放置一个标志或ASCII艺术!
这个插件需要~0.4.1
….
我希望这有帮助。 回购站位于GitHub 。 您可以在这里find更多关于如何安装的信息和完整的选项列表。
可以从README.md
文件中使用http://documentup.com/自动生成网页。; 这不是创造一个TOC,但是对于许多人来说,这可能会解决想要创build一个TOC的原因。
Documentup的另一种替代方法是Flatdoc: http: //ricostacruz.com/flatdoc/
Gitdown是Github的降价预处理器。
使用Gitdown你可以:
- 生成目录
- 查找无效的URL和片段标识符
- 包含variables
- 包含文件
- 获取文件大小
- 生成徽章
- 打印date
- 打印有关存储库本身的信息
Gitdown简化了与维护GitHub存储库文档页面相关的常见任务。
使用它很简单:
var Gitdown = require('gitdown'); Gitdown // Gitdown flavored markdown. .read('.gitdown/README.md') // GitHub compatible markdown. .write('README.md');
你可以把它作为一个单独的脚本,或者把它作为构build脚本例程的一部分(比如Gulp )。
使用coryfklein / doctoc ,这是thlorenz / doctoc的一个分支,它不会将“ DocToc 生成的 ”添加到每个目录中。
npm install -g coryfklein/doctoc
我的同事@schmiedc和我创build了一个GreaseMonkey脚本 ,在h1
button左侧安装一个新的TOC
button,它使用卓越的markdown-js
库来添加/刷新目录。
与诸如doctoc之类的解决scheme相比,它的优势在于它集成到了GitHub的wiki编辑器中,并不需要用户在其命令行上工作(并要求用户安装像node.js
这样的工具)。 在Chrome中,它通过拖放到扩展页面来工作,在Firefox中,您将需要安装GreaseMonkey扩展。
它将使用普通的降价(即它不正确处理代码块,因为这是一个GitHub扩展到降价)。 贡献值得欢迎。
这个问题不是直接的答案,因为很多人提供了解决方法。 我不认为生成TOC已经得到了Github官方的支持。 如果您希望GitHub自动在其GFM预览页面上显示目录,请参加关于官方function请求问题的讨论。
目前,使用markdown语法是不可能的 (请参阅GitHub上正在进行的讨论 ),但是您可以使用一些外部工具,例如:
- 在线目录生成器 ( raychenon / play-table-of-contents )
- arthurhammer / github-toc – 在GitHub repos中添加目录的浏览器扩展
或者使用AsciiDoc
代替(例如README.adoc
),例如
:toc: macro :toc-title: :toclevels: 99 # Title ## A ### A2 ## B ### B2
正如本评论所build议的那样。 在这里检查演示。