是否有可能生成一个自动目录使用Github调味Markdown?


当前回答

它不是自动的,但它使用notepad++正则表达式:

用第二个替换所有第一个(删除所有没有标题的行)

^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n

然后(将头III转换为空格)

-##
        -

然后(将标题II转换为空格)

-#
    -

然后(删除链接标题开头和结尾未使用的字符)

\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]

然后(转换最后一个符号小写和破折号而不是空格)

\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2

删除未使用的最后磅和初始破折号:

(?:()[-:;!\?#]+$|(\]#)-)
\1\2

删除链接中无用的字符:

(\].*?)(?:\(|\))
\1

最后在最后链接的周围加上圆括号:

\](?!\()(.*?)$
\]\(\1\)

瞧!如果你重复足够多的时间,你甚至可以把它放在一个全局宏中。

其他回答

GitHub Pages(基本上是Jekyll的包装器)似乎使用了kramdown,它实现了所有Maruku,因此通过atoc属性支持自动生成的目录:

* auto-gen TOC:
{:toc}

第一行只是开始一个无序列表,实际上被丢弃了。

这将使用文档中的头文件生成一组嵌套的无序列表。

注意:这应该适用于GitHub页面,而不是评论或wiki页面中使用的GitHub调味Markdown (GFM)。我想这个问题没有解决办法。

目前还不可能使用markdown语法(参见GitHub上正在进行的讨论),但是你可以使用一些外部工具,例如:

在线内容表生成器(raychenon/play-table-of-contents) arthurhammer/ GitHub -toc -浏览器扩展,添加一个目录到GitHub回购表


或者使用AsciiDoc代替(例如README.adoc)。

:toc: macro
:toc-title:
:toclevels: 99
# Title

## A

### A2

## B

### B2

正如这条评论所建议的。点击这里查看演示。

大多数其他答案需要安装一些工具。 我找到了一个快速简单的在线解决方案https://imthenachoman.github.io/nGitHubTOC。

对于任何markdown输入,它生成内容输出表。 您可以指定最小和最大标题级别。

源代码位于https://github.com/imthenachoman/nGitHubTOC

对于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

我创建了两个选项来生成一个toc的github风味markdown:

DocToc命令行工具(源代码)需要node.js

Installation:

NPM install -g doctoc

Usage:

doctoc。向当前目录和所有子目录中的所有markdown文件添加目录。

DocToc WebApp

如果你想先在网上试试,去doctoc网站, 粘贴标记页面的链接,它将生成一个表 可以插入标记文件顶部的内容。

Github维基和锚

正如Matthew Flaschen在下面的评论中指出的那样,对于其维基页面,GitHub之前并没有生成doctoc所依赖的锚。

更新:但是,他们修复了这个问题。