减价创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
生产:
目录
- 介绍
- 一些段落
- 分段
- 另一段
这是介绍
一些介绍文本,格式标题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
我写了一个python脚本来parsing一个markdown文件并输出一个目录作为一个markdown列表: md-to-toc
不同于我发现的其他脚本,md-to-toc正确地支持重复的标题。 它也不需要互联网连接,所以它可以在任何md文件上运行,而不仅仅是公共回购的。
由不同的Markdownparsing器生成的锚定标记不是偶数。
如果你正在使用Markdownparsing器GFM(GitHub Flavored Markdown)或者Redcarpet,我写了一个Vim插件来处理目录。
特征
-
生成Markdown文件的目录。
支持的Markdown分析器:
- GFM(GitHub Flavored Markdown)
- 红地毯
-
更新现有的目录。
-
自动更新保存的现有目录。
截图
用法
生成目录
将光标移动到你要添加目录的那一行,然后在下面input一个适合你的命令。 该命令将会在光标移动到目录后生成标题。
-
:GenTocGFM
以GFM链接样式生成目录。
此命令适用于GitHub存储库中的Markdown文件,如README.md和GitBook的Markdown文件。
-
:GenTocRedcarpet
在Redcarpet链接样式中生成目录。
这个命令适用于Jekyll或任何其他地方使用Redcarpet作为其Markdown分析器。
您可以在这里查看知道GFM和Redcarpet风格toc链接之间的差异。
手动更新现有的目录
通常您不需要这样做,现有的目录将自动更新保存默认情况下。 如果你想手动做,只需使用:UpdateToc
命令。
下载和文件
如果您想使用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