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

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

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

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

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

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


当前回答

对于Visual Studio Code用户来说,今天(2020年)使用的最佳选择是Markdown All in One插件(扩展)。

要安装它,启动VS Code快速打开(Control/⌘+P),粘贴以下命令,并按enter。

ext install yzhang.markdown-all-in-one

要生成TOC,打开命令面板(Control/⌘+Shift+P),并选择select Markdown:创建内容表选项。


另一个选择是Markdown TOC插件。

要安装它,启动VS Code快速打开(Control/⌘+P),粘贴以下命令,并按enter。

ext install markdown-toc

要生成TOC,打开命令面板(Control/⌘+Shift+P),并选择Markdown TOC:插入/更新选项或使用Control/⌘+MT。

其他回答

我只是开始做同样的事情(在Markdown做笔记)。我使用Sublime Text 2和MarkdownPreview插件。内置markdown解析器支持[TOC]。

我使用了https://github.com/ekalinin/github-markdown-toc,它提供了一个命令行实用程序,可以从markdown文档自动生成目录。

没有插件、宏或其他依赖项。安装实用程序后,只需将实用程序的输出粘贴到文档中需要目录的位置。使用起来非常简单。

$ cat README.md | ./gh-md-toc -

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

在咕噜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也会生成一个目录。


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

这是一个简短的PHP代码,我用来生成TOC,并丰富任何标题与锚:

$toc = []; //initialize the toc to an empty array
$markdown = "... your mardown content here...";

$markdown = preg_replace_callback("/(#+)\s*([^\n]+)/",function($matches) use (&$toc){
    static $section = [];
    $h = strlen($matches[1]);

    @$section[$h-1]++;
    $i = $h;
    while(isset($section[$i])) unset($section[$i++]);

    $anchor = preg_replace('/\s+/','-', strtolower(trim($matches[2])));

    $toc[] = str_repeat('  ',$h-1)."* [".implode('.',$section).". {$matches[2]}](#$anchor)";
    return str_repeat('#',$h)." <strong>".implode('.',$section).".</strong> ".$matches[2]."\n<a name=\"$anchor\"></a>\n";
}, $markdown);

然后你可以打印经过处理的markdown和toc:

   print(implode("\n",$toc));
   print("\n\n");
   print($markdown);
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)

## Example [](#){name=example}
## Example2 [](#){name=example2}
## [Third Example](#){name=third-example}

如果您使用markdown extra,不要忘记您可以为链接、标题、代码围栏和图像添加特殊属性。 https://michelf.ca/projects/php-markdown/extra/#spe-attr