我开始使用标记来做笔记。

我用标记来查看我的笔记,它很漂亮。

但是随着我的笔记变长,我发现很难找到我想要的东西。

我知道markdown可以创建表,但它是否能够创建目录,跳转到部分,或定义页面部分markdown?

或者,是否有降价阅读器/编辑器可以做这些事情。搜索也是一个不错的功能。

简而言之,我想让它成为我很棒的笔记工具,功能就像写一本书一样。


当前回答

作为手工制作链接列表的替代方案,让我们概述所有可用的开箱即用的解决方案来插入目录(请评论和扩展以保持最新):

在咕噜5版本中,markdown支持这一点:

<!-- assure you have a blank line before -->
[[_TOC_]]

这也适用于Azure DevOps wiki。


由于Gitlab将降价引擎从Redcarpet切换到Kramdown,他们现在支持以下语法

- TOC
{:toc}

看到https://about.gitlab.com/handbook/markdown-guide/ table-of-contents-toc


MultiMarkdown在4.7有一个下面的宏:

{{TOC}}

根据Jannik的回答: 如果你的Markdown文件是显示在bitbucket.org上的回购,你可以在你想要你的目录(更多信息在这里)的位置使用以下:

[TOC]

根据Paul Jurczak的回答: 当您在文档中写入[TOC]时,Markdown编辑器Typora也会生成一个目录。


我知道,我的回答有点晚了。然而,我自己却错过了这样一个概述。我对尼古拉斯·特里的回答进行了编辑,将其扩展为概述,但被拒绝了。

其他回答

我刚刚为python-markdown编写了一个扩展,它使用它的解析器来检索标题,并将TOC输出为带有本地链接的markdown格式的无序列表。文件是

Md_toc.py(是Md_toc.py)

... 它应该放在markdown安装的markdown/extensions/目录中。然后,你所要做的就是输入anchor <a> tags,带一个id="…"属性作为引用-对于这样的输入文本:

$ cat test.md 
Hello
=====

## <a id="sect one"></a>SECTION ONE ##

something here

### <a id='sect two'>eh</a>SECTION TWO ###

something else

#### SECTION THREE

nothing here

### <a id="four"></a>SECTION FOUR

also...

... 扩展可以这样调用:

$ python -m markdown -x md_toc test.md 
* Hello
    * [SECTION ONE](#sect one)
        * [SECTION TWO](#sect two)
            * SECTION THREE
        * [SECTION FOUR](#four)

... 然后您可以将这个toc粘贴回您的标记文档中(或者在您的文本编辑器中有一个快捷方式,在当前打开的文档上调用脚本,然后将结果toc插入到同一文档中)。

注意,旧版本的python-markdown没有__main__.py模块,因此,上面的命令行调用将不适用于这些版本。

您可以尝试使用这个ruby脚本从标记文件生成TOC。

 #!/usr/bin/env ruby

require 'uri'

fileName = ARGV[0]
fileName = "README.md" if !fileName

File.open(fileName, 'r') do |f|
  inside_code_snippet = false
  f.each_line do |line|
    forbidden_words = ['Table of contents', 'define', 'pragma']
    inside_code_snippet = !inside_code_snippet if line.start_with?('```')
    next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ } || inside_code_snippet

    title = line.gsub("#", "").strip
    href = URI::encode title.gsub(" ", "-").downcase
    puts "  " * (line.count("#")-1) + "* [#{title}](\##{href})"
  end
end

我使用这个网站markdown -TOC创建者,有些人可以粘贴他的整个markdown条目,网站自动创建所有必需的标签和TOC(内容表),所以有些人可以很容易地复制粘贴到他自己的文档中。

只需使用带有插件的文本编辑器。

你的编辑器很可能有一个包/插件来为你处理这个问题。例如,在Emacs中,可以安装markdown-toc TOC生成器。然后在编辑时,只需反复调用M-x markdown-toc-generate-or-refresh-toc。如果你想经常这样做,那就值得一个键绑定。它擅长生成一个简单的TOC,而不会用HTML锚污染您的文档。

其他编辑器也有类似的插件,所以流行的列表是这样的:

器name: markdown-toc Vim: markdown-toc Atom: markdown-toc VSCode: markdown-toc

你可以使用DocToc从命令行生成目录:

doctoc /path/to/file

要使链接与Bitbucket生成的锚点兼容,请使用——Bitbucket参数运行它。