我开始使用mardown做笔记。
我使用标记来查看我的降价笔记及其美观。
但随着我的笔记越来越长,我发现很难找到我想要的东西。
我知道markdown可以创建表格,但是它能够创建目录,跳转到部分,还是在markdown中定义页面部分?
或者,是否有降价读者/编辑可以做这些事情。搜索也是很好的功能。
简而言之,我想把它变成一个很棒的笔记,就像写一本书等工具和功能一样。
答案 0 :(得分:268)
你可以尝试一下。
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
## Example
## Example2
## Third Example
答案 1 :(得分:148)
这是一种有用的方法。应该在任何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样式
第二段文字
答案 2 :(得分:24)
MultiMarkdown Composer似乎确实生成了一个目录,以便在编辑时提供帮助。
可能还有一个或哪个库可以生成TOC:请参阅Python Markdown TOC Extension。
答案 3 :(得分:24)
您可以尝试this ruby script从降价文件生成TOC。
#!/usr/bin/env ruby
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 = title.gsub(" ", "-").downcase
puts " " * (line.count("#")-1) + "* [#{title}](\##{href})"
end
end
答案 4 :(得分:22)
# 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
答案 5 :(得分:22)
对于Visual Studio Code用户,最好使用Markdown TOC插件。
要安装它,请启动VS Code Quick Open( Ctrl + P ),粘贴以下命令,然后按enter键。
ext install markdown-toc
要生成TOC,请打开命令调色板( Ctrl + Shift + P )并选择Markdown TOC:Insert/Update option
或使用 Ctrl + M T 。
答案 6 :(得分:18)
在降价文档中有两种方法可以创建 TOC (摘要)。
# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)
<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2
您可以使用例如为您生成摘要的脚本,在github上查看我的项目 - summarizeMD -
我还尝试了其他脚本/ npm模块(例如doctoc),但没有人使用工作锚重现TOC。
答案 7 :(得分:10)
为了我们这些人在Atom中制作xDoc = xmlread(fullfile(filename));
set_value(xDoc, 'min', 2.5);
set_value(xDoc, 'max', 2.7;
(...)
xmlwrite(output_name,xDoc);
文件的好处(我是如何找到这个帖子的):
README.md
答案 8 :(得分:7)
如果您想使用javascript / node.js工具,请查看markdown-toc。
答案 9 :(得分:5)
我刚编译了python-markdown
的扩展名,它使用其解析器检索标题,并输出TOC作为Markdown格式的无序列表和本地链接。该文件是
...它应该放在markdown安装的markdown/extensions/
目录中。然后,您需要做的就是键入<a>
个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
模块,因此,上述命令行调用对这些版本不起作用。
答案 10 :(得分:5)
您可以使用此bash one-liner生成它。假设您的降价文件名为echo "## Contents" ; echo ;
cat FILE.md | grep '^## ' | grep -v Contents | sed 's/^## //' |
while read -r title ; do
link=$(echo $title | tr 'A-Z ' 'a-z-') ;
echo "- [$title](#$link)" ;
done
。
$pdf = new MyPDF();
$intergine = 10;
$indent = str_repeat(" ", 10);
$indent_html = str_repeat(" ", 10);
$pdf->AddPage("P", array(215.9, 279.4));
$pdf->SetFont('helvetica', 'BU', 14);
$pdf->Cell(0, 6, "TEST CONTRACT", 0, 1, "C");
$pdf->Ln(5);
$pdf->setCellHeightRatio(2.4);
$pdf->SetFont('helvetica', 'B', 12);
//$pdf->MultiCell(0, $intergine, $indent . "Client(s): [contracts.clientName]\n", 0, 'J', 0, 12);
$clientname = "Client(s): <u>". $row['clientName']."</u>";
$pdf->MultiCell(0, $intergine, $indent . $clientname . "\n", 0, 'J', 0, 12, '45', '', true, 0, true);
$paragraph = "I hereby retain and employ the Law Office of John Smith, Attorney ";
$paragraph .= "at Law, 123 Main St, Tallahassee, FL 33333 ";
$paragraph .= "as my attorney to represent me in a cause of action against ";
$paragraph .= $row['insuranceCo'] . " or any other entity based on my flood claim, including any ";
$paragraph .= "and all building, contents and ICC claims, which occurred on or about ";
$paragraph .= $row['lossDate'] . " at or near " . $row['lossLocation'] . ".";
$pdf->MultiCell(0, $intergine, $indent_html . $paragraph . "\n", 0, 'J', 0, 1, '', '', true, 0, true);
$paragraph = "As compensation for their services, I agree that my attorneys may pay ";
$paragraph .= "themselves from the gross amount of the recovery, before any sums whatsoever ";
$paragraph .= "are deducted from said gross amount of recovery for costs or other items, a ";
$paragraph .= "contingent fee based upon the following percentages of the gross amount of such recovery:";
$pdf->MultiCell(0, $intergine, $indent . $paragraph . "\n", 0, 'J', 0);
答案 11 :(得分:5)
由不同Markdown解析器生成的锚标记不均匀。
如果你正在使用Markdown解析器GFM(GitHub Flavored Markdown)或Redcarpet,我写了一个Vim插件来处理目录。
为Markdown文件生成目录。
支持的Markdown解析器:
更新现有的目录。
自动更新保存时的现有目录。
生成目录
将光标移动到要附加目录的行,然后键入下面适合您的命令。该命令将在光标进入目录后生成标题。
:GenTocGFM
以GFM链接样式生成目录。
此命令适用于GitHub存储库中的Markdown文件,如README.md和GitBook的Markdown文件。
:GenTocRedcarpet
以Redcarpet链接样式生成目录。
此命令适用于Jekyll或其他任何地方使用Redcarpet作为其Markdown解析器。
您可以查看here以了解GFM和Redcarpet风格toc链接之间的差异。
手动更新现有目录
通常您不需要这样做,默认情况下,现有的目录会自动更新。如果您想手动执行,只需使用:UpdateToc
命令。
答案 12 :(得分:5)
我写了一个python脚本来解析markdown文件并输出一个目录作为降价列表:md-to-toc
与我发现的其他脚本不同,md-to-toc正确支持重复的标题。它也不需要互联网连接,因此它适用于任何md文件,而不仅仅是公共存储库提供的文件。
答案 13 :(得分:3)
Typora通过在您的文档中添加[TOC]
来生成目录。
答案 14 :(得分:3)
您还可以使用pandoc
,"swiss-army knife" for converting "one markup format into another"。如果提供--toc
参数,它可以在输出文档中自动生成内容表。
提示:如果您想要html
输出中的目录,还需要提供生成独立文档的-s
。
shell命令行示例:
./pandoc -s --toc input.md -o output.html
答案 15 :(得分:3)
我刚刚开始做同样的事情(在Markdown中做笔记)。我使用Sublime Text 2和MarkdownPreview plugin。内置的markdown解析器支持[TOC]
。
答案 16 :(得分:2)
MultiMarkdown 4.7有一个{{TOC}}宏,用于插入目录。
答案 17 :(得分:2)
在Gitlab上,markdown支持以下功能:[[_TOC_]]
答案 18 :(得分:2)
对我来说,@ Tum提出的解决方案就像一个魅力,适用于具有2个级别的目录。但是,对于第3级,它不起作用。它没有显示前两个级别的链接,而是显示纯文本3.5.1. [bla bla bla](#blablabla) <br>
。
我的解决方案是@Tum解决方案的补充(非常简单),适用于需要3级或以上目录的人们。
在第二层,一个简单的选项卡将为您正确地缩进。但它不支持2个标签。相反,您必须自己使用一个标签,并根据需要添加任意数量的
才能正确对齐第三级。
下面是一个使用4个级别的示例(级别越高,效果越糟):
# Table of Contents
1. [Title](#title) <br>
1.1. [sub-title](#sub_title) <br>
1.1.1. [sub-sub-title](#sub_sub_title)
1.1.1.1. [sub-sub-sub-title](#sub_sub_sub_title)
# Title <a name="title"></a>
Heading 1
## Sub-Title <a name="sub_title"></a>
Heading 2
### Sub-Sub-Title <a name="sub_sub_title"></a>
Heading 3
#### Sub-Sub-Sub-Title <a name="sub_sub_sub_title"></a>
Heading 4
这给出了以下结果,其中目录的每个元素都是其相应部分的链接。另请注意<br>
,以便添加新行而不是位于同一行。
标题1
标题2
标题3
子-子-子标题标题4
答案 19 :(得分:2)
基于albertodebortoli回答创建了具有附加检查和替换标点符号的函数。
# @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
答案 20 :(得分:1)
只需将文本编辑器与插件配合使用。
您的编辑器很可能具有程序包/插件来为您处理。例如,在 Emacs 中,您可以安装markdown-toc TOC生成器。然后,在编辑时,只需重复调用M-x markdown-toc-generate-or-refresh-toc
。如果您想经常这样做,则值得进行键绑定。擅长生成简单的目录,而不会用HTML锚点污染文档。
其他编辑器也有类似的插件,因此受欢迎的列表如下:
答案 21 :(得分:1)
答案 22 :(得分:1)
我使用过https://github.com/ekalinin/github-markdown-toc,它提供了一个命令行实用程序,可以从降价文档中自动生成目录。
没有插件,宏或其他依赖项。安装实用程序后,只需将实用程序的输出粘贴到文档中您想要目录的位置。使用非常简单。
Route::get('dziennik_zdarzen', 'Dziennik_zdarzenController@get_datatable');
答案 23 :(得分:1)
有一个名为Commonly Used Deployment Tools的Ruby脚本,可以自动生成GFM降价目录,它与此处发布的某些其他脚本类似但略有不同。
给出一个输入的Markdown文件,例如:
cur.execute("UPDATE db1 SET myhex=? WHERE ID=123", (str(uinput)))
它生成此目录:
# Lorem Ipsum
Lorem ipsum dolor sit amet, mei alienum adipiscing te, has no possit delicata. Te nominavi suavitate sed, quis alia cum no, has an malis dictas explicari. At mel nonumes eloquentiam, eos ea dicat nullam. Sed eirmod gubergren scripserit ne, mei timeam nonumes te. Qui ut tale sonet consul, vix integre oportere an. Duis ullum at ius.
## Et cum
Et cum affert dolorem habemus. Sale malis at mel. Te pri copiosae hendrerit. Cu nec agam iracundia necessitatibus, tibique corpora adipisci qui cu. Et vix causae consetetur deterruisset, ius ea inermis quaerendum.
### His ut
His ut feugait consectetuer, id mollis nominati has, in usu insolens tractatos. Nemore viderer torquatos qui ei, corpora adipiscing ex nec. Debet vivendum ne nec, ipsum zril choro ex sed. Doming probatus euripidis vim cu, habeo apeirian et nec. Ludus pertinacia an pro, in accusam menandri reformidans nam, sed in tantas semper impedit.
### Doctus voluptua
Doctus voluptua his eu, cu ius mazim invidunt incorrupte. Ad maiorum sensibus mea. Eius posse sonet no vim, te paulo postulant salutatus ius, augue persequeris eum cu. Pro omnesque salutandi evertitur ea, an mea fugit gloriatur. Pro ne menandri intellegam, in vis clita recusabo sensibus. Usu atqui scaevola an.
## Id scripta
Id scripta alterum pri, nam audiam labitur reprehendunt at. No alia putent est. Eos diam bonorum oportere ad. Sit ad admodum constituto, vide democritum id eum. Ex singulis laboramus vis, ius no minim libris deleniti, euismod sadipscing vix id.
另请参阅我的博客gen_markdown_toc.rb。
答案 24 :(得分:1)
使用toc.py,这是一个很小的python脚本,可以为您的降价生成目录。
用法:
<toc>
添加到要放置目录的位置。$python toc.py README.md
(使用降价文件名而不是 README.md )干杯!
答案 25 :(得分:1)
这是一个生成目录的简单 bash 脚本。不需要特殊的依赖项,但需要 bash
。
https://github.com/Lirt/markdown-toc-bash
它能很好地处理标题中的特殊符号、标题中的 Markdown 链接并忽略代码块。
答案 26 :(得分:1)
根据您的工作流程,您可能需要查看strapdown
这是原始内容的一个分支(http://strapdownjs.com),用于添加内容表的生成。
如果您不想在html文件中编写,那么repo上有一个apache配置文件(可能还没有正确更新),可以动态包装简单的markdown。
答案 27 :(得分:1)
如果您碰巧使用 Eclipse ,可以使用 Ctrl + O (大纲)快捷方式,这将显示相应的表格内容并允许在章节标题中搜索(自动填充)。
您也可以打开大纲视图(窗口 - &gt;显示视图 - &gt;大纲),但它没有自动完成搜索。
答案 28 :(得分:1)
我不确定,降价的官方文件是什么。
交叉引用可以用括号[Heading]
或空括号[Heading][]
编写。
两者都使用pandoc。 所以我创建了一个快速bash脚本,它将用mOC替换md文件中的$ TOC 。 (你需要envsubst,这可能不是你的发行版的一部分)
#!/bin/bash
filename=$1
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/ /g;s/\. \(.*\)$/. [\1][]/')
export __TOC__
envsubst '$__TOC__' < $filename
答案 29 :(得分:0)
如果使用 Sublime Text编辑器, MarkdownTOC插件可以很好地工作!参见:
一旦安装,请转到“首选项”->“软件包设置”->“ MarkdownTOC”->“设置”-“用户”以自定义设置。您可以选择以下选项:https://github.com/naokazuterada/MarkdownTOC#configuration。
我建议以下内容:
{
"defaults": {
"autoanchor": true,
"autolink": true,
"bracket": "round",
"levels": [1,2,3,4,5,6],
"indent": "\t",
"remove_image": true,
"link_prefix": "",
"bullets": ["-"],
"lowercase": "only_ascii",
"style": "ordered",
"uri_encoding": true,
"markdown_preview": ""
},
"id_replacements": [
{
"pattern": "\\s+",
"replacement": "-"
},
{
"pattern": "<|>|&|'|"|<|>|&|'|"|!|#|$|&|'|\\(|\\)|\\*|\\+|,|/|:|;|=|\\?|@|\\[|\\]|`|\"|\\.|\\\\|<|>|{|}|™|®|©|%",
"replacement": ""
}
],
"logging": false
}
要插入目录,只需在文档顶部单击要插入目录的位置,然后转到工具-> Markdown目录->插入目录。
它将插入如下内容:
<!-- MarkdownTOC -->
1. [Helpful Links:](#helpful-links)
1. [Sublime Text Settings:](#sublime-text-settings)
1. [Packages to install](#packages-to-install)
<!-- /MarkdownTOC -->
请注意它为您插入的<!-- -->
HTML注释。这些特殊的标记可以帮助程序知道ToC的位置,以便每次保存时它都可以自动为您更新它!因此,请保留这些完整性。
要获得更多效果,请在其周围添加一些<details>
和<summary>
HTML标签,以使ToC可折叠/扩展,如下所示:
<details>
<summary><b>Table of Contents</b> (click to open)</summary>
<!-- MarkdownTOC -->
1. [Helpful Links:](#helpful-links)
1. [Sublime Text Settings:](#sublime-text-settings)
1. [Packages to install](#packages-to-install)
<!-- /MarkdownTOC -->
</details>
现在,您将获得如下所示的超酷效果。在我的main eRCaGuy_dotfiles readme here或我的Sublime_Text_editor readme here中查看它的运行情况。
有关其用法和限制的其他信息,请确保也阅读我在that readme中有关 MarkdownTOC 插件的注释。
答案 30 :(得分:0)
答案 31 :(得分:0)
如其他答案所述,有多种方法可以自动生成目录。大多数都是开源软件,可以适应您的需求。
但是,我所缺少的是使用Markdown提供的有限选项的目录格式,其外观具有视觉吸引力。我们提出了以下建议:
## Content
**[1. Markdown](#heading--1)**
* [1.1. Markdown formatting cheatsheet](#heading--1-1)
* [1.2. Markdown formatting details](#heading--1-2)
**[2. BBCode formatting](#heading--2)**
* [2.1. Basic text formatting](#heading--2-1)
* [2.1.1. Not so basic text formatting](#heading--2-1-1)
* [2.2. Lists, Images, Code](#heading--2-2)
* [2.3. Special features](#heading--2-3)
----
在文档中,您将放置目标子部分标记,如下所示:
<div id="heading--1-1"/>
### 1.1. Markdown formatting cheatsheet
取决于在何处以及如何使用Markdown,以下内容也应该起作用,并提供美观的Markdown代码:
### 1.1. Markdown formatting cheatsheet <a name="heading--1-1"/>
内容
您可以根据需要添加任意级别的章节和子章节。在目录中,这些将显示为更深层的嵌套无序列表。
不使用有序列表。这些将创建缩进,不链接数字,并且不能用于创建像“ 1.1。”这样的十进制分类编号。
不使用第一级列表。在这里,可以使用无序列表,但不是必须的:缩进和项目符号只是增加了视觉上的混乱,并且这里没有任何功能,因此我们根本不使用第一个ToC级别的列表。
视觉上通过粗体显示突出显示目录中的第一部分。
简短,有意义的子部分标记在浏览器的URL栏中看起来“漂亮”,例如#heading--1-1
,而不是包含实际标题的变换部分的标记。
该代码将H2标题(## …
)用于部分,将H3标题(### …
)用于子标题等。这使源代码更易于阅读,因为{{1}与部分以H1标题(## …
开头的情况相比,}滚动时提供了更强的视觉提示。当您使用H1标题作为文档标题本身时,它在逻辑上仍然是一致的。
最后,我们添加了一个不错的水平规则以将目录与实际内容分开。
答案 32 :(得分:0)
我正在使用这个网站 Markdown-TOC Creator,其中有些人可以粘贴他的整个 Markdown 条目,并且该网站会自动创建所有必需的标签和 TOC(目录),因此有些人可以轻松地将其复制粘贴到他自己的文档中。
答案 33 :(得分:0)
这是一个简短的 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);
然后您可以打印处理后的降价和目录:
print(implode("\n",$toc));
print("\n\n");
print($markdown);
答案 34 :(得分:0)
如果要将Markdown文件显示在bitbucket.org上的存储库中,则应在想要目录的位置添加[TOC]
。然后它将自动生成。这里有更多信息:
https://confluence.atlassian.com/bitbucket/add-a-table-of-contents-to-a-wiki-221451163.html
答案 35 :(得分:0)
只需添加幻灯片数量即可!它可以与Markdown的ioslides和Revealjs演示一起使用
A1:D2
答案 36 :(得分:0)
您可以在第一行使用[TOC],然后在底部使用[TOC],您唯一需要做的就是确保标题使用相同的较大字体。 内容表将自动出现。 (但这只出现在一些降价编辑中,我没有全部尝试过)
答案 37 :(得分:-10)
嗯......使用Markdown的标题!?
那是:
#这相当于&lt; h1&gt;
##这相当于&lt; H2&GT;
###这相当于&lt; H3&GT;
许多编辑都会向您展示TOC。您还可以grep标题标签并创建自己的标签。
希望有所帮助!
- JF