我开始使用标记来做笔记。
我用标记来查看我的笔记,它很漂亮。
但是随着我的笔记变长,我发现很难找到我想要的东西。
我知道markdown可以创建表,但它是否能够创建目录,跳转到部分,或定义页面部分markdown?
或者,是否有降价阅读器/编辑器可以做这些事情。搜索也是一个不错的功能。
简而言之,我想让它成为我很棒的笔记工具,功能就像写一本书一样。
我开始使用标记来做笔记。
我用标记来查看我的笔记,它很漂亮。
但是随着我的笔记变长,我发现很难找到我想要的东西。
我知道markdown可以创建表,但它是否能够创建目录,跳转到部分,或定义页面部分markdown?
或者,是否有降价阅读器/编辑器可以做这些事情。搜索也是一个不错的功能。
简而言之,我想让它成为我很棒的笔记工具,功能就像写一本书一样。
当前回答
我使用了https://github.com/ekalinin/github-markdown-toc,它提供了一个命令行实用程序,可以从markdown文档自动生成目录。
没有插件、宏或其他依赖项。安装实用程序后,只需将实用程序的输出粘贴到文档中需要目录的位置。使用起来非常简单。
$ cat README.md | ./gh-md-toc -
其他回答
由不同Markdown解析器生成的锚标记是不相等的。
如果你正在使用Markdown解析器GFM (GitHub调味Markdown)或Redcarpet,我写了一个Vim插件来处理目录。
特性
生成Markdown文件的目录。 支持的Markdown解析器: GFM (GitHub调味Markdown) Redcarpet 更新现有的目录。 自动更新现有的目录保存。
截图
使用
生成目录
将光标移动到要添加目录的行,然后在下面键入适合您的命令。该命令将在光标进入目录后生成标题。
: GenTocGFM 生成GFM链接样式的目录。 此命令适用于GitHub存储库中的Markdown文件,如README。和Markdown文件的GitBook。 : GenTocRedcarpet 生成红地毯链接样式的目录。 这个命令适用于Jekyll或任何其他使用Redcarpet作为Markdown解析器的地方。 你可以在这里查看GFM和Redcarpet风格的toc链接之间的区别。
手动更新现有的目录
通常你不需要这样做,现有的目录将自动更新保存默认情况下。如果您想手动执行,只需使用:updatettoc命令。
下载和文档
https://github.com/mzlogin/vim-markdown-toc
基于albertodebortoli answer创建了附加检查和标点符号替换功能。
# @fn def generate_table_of_contents markdown # {{{
# @brief Generates table of contents for given markdown text
#
# @param [String] markdown Markdown string e.g. File.read('README.md')
#
# @return [String] Table of content in markdown format.
#
def generate_table_of_contents markdown
table_of_contents = ""
i_section = 0
# to track markdown code sections, because e.g. ruby comments also start with #
inside_code_section = false
markdown.each_line do |line|
inside_code_section = !inside_code_section if line.start_with?('```')
forbidden_words = ['Table of contents', 'define', 'pragma']
next if !line.start_with?('#') || inside_code_section || forbidden_words.any? { |w| line =~ /#{w}/ }
title = line.gsub("#", "").strip
href = title.gsub(/(^[!.?:\(\)]+|[!.?:\(\)]+$)/, '').gsub(/[!.,?:; \(\)-]+/, "-").downcase
bullet = line.count("#") > 1 ? " *" : "#{i_section += 1}."
table_of_contents << " " * (line.count("#") - 1) + "#{bullet} [#{title}](\##{href})\n"
end
table_of_contents
end
MultiMarkdown 4.7有一个{{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
嗯…使用Markdown的标题!?
那就是:
#这相当于< h1 >
这相当于< h2>
这相当于< h3>
许多编辑器会向您展示TOC。您还可以为标题标记提供grep,并创建自己的标题标记。
希望有帮助!
--JF