减价创build页面和目录?

我开始用mardown做logging。

我使用标记来查看我的降价笔记和它的美丽。

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

我知道减价可以创build表,但是它能够创build目录,跳转到部分,或在降价定义页面部分?

另外,是否有减价的读者/编辑可以做这样的事情。 search也将是一个很好的function。

总之,我想使它成为我写作工具和function非常棒的笔记,就像写书一样。

MultiMarkdown Composer似乎在编辑时会产生一个目录来帮助你。

可能还有可以生成TOC的那个库或其他库:请参阅Python Markdown TOC扩展 。

你可以试试这个。

 # Table of Contents 1. [Example](#example) 2. [Example2](#example2) 3. [Third Example](#third-example) ## Example ## Example2 ## Third Example 

这是一个有用的方法。 应该在任何MarkDown编辑器中产生可点击的引用。

 # Table of contents 1. [Introduction](#introduction) 2. [Some paragraph](#paragraph1) 1. [Sub paragraph](#subparagraph1) 3. [Another paragraph](#paragraph2) ## This is the introduction <a name="introduction"></a> Some introduction text, formatted in heading 2 style ## Some paragraph <a name="paragraph1"></a> The first paragraph text ### Sub paragraph <a name="subparagraph1"></a> This is a sub paragraph, formatted in heading 3 style ## Another paragraph <a name="paragraph2"></a> The second paragraph text 

生产:

目录

  1. 介绍
  2. 一些段落
    1. 分段
  3. 另一段

这是介绍

一些介绍文本,格式标题2风格

一些段落

第一段文字

分段

这是一个分段,以标题3风格格式化

另一段

第二段文字

你可以试试这个ruby脚本从markdown文件生成TOC。

 #!/usr/bin/env ruby File.open("your_file.md", 'r') do |f| f.each_line do |line| forbidden_words = ['Table of contents', 'define', 'pragma'] next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ } title = line.gsub("#", "").strip href = title.gsub(" ", "-").downcase puts " " * (line.count("#")-1) + "* [#{title}](\##{href})" end end 

有2种方法可以在您的降价文档中创buildTOC (摘要)。

1.手动

 # My Table of content - [Section 1](#id-section1) - [Section 2](#id-section2) <div id='id-section1'/> ## Section 1 <div id='id-section2'/> ## Section 2 

2.编程

你可以使用例如一个脚本来为你生成摘要,看看我的项目在github – summarizeMD

我也试过其他脚本/ npm模块(例如doctoc ),但是没有人用工作锚来重现TOC。

我只是编写了python-markdown的扩展,使用它的parsing器来检索标题,并输出一个TOC作为Markdown格式的无序列表与本地链接。 该文件是

  • md_toc.py (是md_toc.py

…它应该被放置在markdown/extensions/安装中的markdown/extensions/目录中。 然后,你所要做的就是键入一个id="..."属性的anchor <a>标签作为参考 – 所以对于这样的input文本:

 $ 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粘贴到您的markdown文档中(或者在文本编辑器中有一个快捷方式,在当前打开的文档上调用脚本,然后将结果TOC插入到同一个文档中)。

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

为了我们这些在Atom中创buildREADME.md文件的好处(我如何find这个线程):

 apm install markdown-toc 

https://atom.io/packages/markdown-toc

我写了一个python脚本来parsing一个markdown文件并输出一个目录作为一个markdown列表: md-to-toc

不同于我发现的其他脚本,md-to-toc正确地支持重复的标题。 它也不需要互联网连接,所以它可以在任何md文件上运行,而不仅仅是公共回购的。

由不同的Markdownparsing器生成的锚定标记不是偶数。

如果你正在使用Markdownparsing器GFM(GitHub Flavored Markdown)或者Redcarpet,我写了一个Vim插件来处理目录。

特征

  1. 生成Markdown文件的目录。

    支持的Markdown分析器:

    • GFM(GitHub Flavored Markdown)
    • 红地毯
  2. 更新现有的目录。

  3. 自动更新保存的现有目录。

截图

VIM  - 降价 -  TOC

用法

生成目录

将光标移动到你要添加目录的那一行,然后在下面input一个适合你的命令。 该命令将会在光标移动到目录后生成标题。

  1. :GenTocGFM

    以GFM链接样式生成目录。

    此命令适用于GitHub存储库中的Markdown文件,如README.md和GitBook的Markdown文件。

  2. :GenTocRedcarpet

    在Redcarpet链接样式中生成目录。

    这个命令适用于Jekyll或任何其他地方使用Redcarpet作为其Markdown分析器。

    您可以在这里查看知道GFM和Redcarpet风格toc链接之间的差异。

手动更新现有的目录

通常您不需要这样做,现有的目录将自动更新保存默认情况下。 如果你想手动做,只需使用:UpdateToc命令。

下载和文件

https://github.com/mzlogin/vim-markdown-toc

如果您想使用javascript / node.js工具,请查看markdown-toc 。

对于Visual Studio Code用户,一个好主意是使用Markdown TOC插件。

要安装它,启动VS Code Quick Open( Ctrl + P ),粘贴以下命令,然后按回车。

ext install markdown-toc

要生成TOC,请打开命令选项板( Ctrl + Shift + P )并selectMarkdown TOC:Insert/Update option或使用Ctrl + M T。

我刚开始做同样的事情(在Markdownlogging)。 我使用Subdown文本2和MarkdownPreview插件 。 内置的markdownparsing器支持[TOC]

你也可以使用“瑞士军刀”“ pandoc ”来转换“一种标记格式” 。 如果提供了--toc参数,它可以在输出文档中自动生成一个内容表。

提示:如果要在html输出中使用目录,则还需要提供生成独立文档的-s

shell命令行示例:

 ./pandoc -s --toc input.md -o output.html 
 # 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} 

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

Typora通过将[TOC]添加到文档来生成内容列表

MultiMarkdown 4.7有一个插入目录的{{TOC}}macros。

根据你的工作stream程,你可能想看看捷联

这是原来的一个分支( http://strapdownjs.com ),增加了内容表的一代。

如果您不想在html文件中编写代码,那么在repo上有一个apacheconfiguration文件(可能还没有正确更新)来简便地将markdown包装起来。

基于albertodebortoli答案创build了function与额外的检查和标点符号的替代。

 # @fn def generate_table_of_contents markdown # {{{ # @brief Generates table of contents for given markdown text # # @param [String] markdown Markdown string eg 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 eg 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 

我不确定,降价的官方文档是什么。 交叉引用可以写在方括号[Heading] ,或者使用空括号[Heading][]

两者都使用pandoc 。 所以我创build了一个快速的bash脚本,它将用TOCreplacemd文件中的$ TOC。 (你将需要envsubst,这可能不是你的发行版的一部分)

 #!/bin/bash filename=$1 __TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/ /g;s/\. \(.*\)$/. [\1][]/') export __TOC__ envsubst '$__TOC__' < $filename 

如果您碰巧使用Eclipse ,则可以使用Ctrl + O (大纲)快捷方式,这将显示目录的等效内容,并允许在部分标题(自动完成)中进行search。

您也可以打开大纲视图(窗口 – >显示视图 – >大纲),但它没有自动完成search。

嗯…使用Markdown的标题!

那是:

#这相当于<h1>

##这相当于<h2>

###这相当于<h3>

许多编辑会告诉你一个目录。 你也可以grep的标题标签,并创build自己的。

希望有所帮助!

–JF