如何链接到Markdown中的相同文档的一部分?

我正在写一个大型的Markdown文档,并且希望在开始的时候放置一个目录,提供到文档中不同位置的链接。 我怎样才能做到这一点?

我试过使用

[a link](# MyTitle) 

MyTitle是文档中的标题,这不起作用。

在pandoc中 ,如果使用选项--toc生成html,则会生成一个目录表,其中包含指向部分的链接,并返回到部分标题中的目录。 它与其他格式的pandoc写法类似,如LaTeX,rtf,rst等等,所以用命令

 pandoc --toc happiness.txt -o happiness.html 

这一点markdown:

 % True Happiness Introduction ------------ Many have posed the question of true happiness. In this blog post we propose to solve it. First Attempts -------------- The earliest attempts at attaining true happiness of course aimed at pleasure. Soon, though, the downside of pleasure was revealed. 

将产生这个作为HTML的主体:

  <h1 class="title"> True Happiness </h1> <div id="TOC"> <ul> <li> <a href="#introduction">Introduction</a> </li> <li> <a href="#first-attempts">First Attempts</a> </li> </ul> </div> <div id="introduction"> <h2> <a href="#TOC">Introduction</a> </h2> <p> Many have posed the question of true happiness. In this blog post we propose to solve it. </p> </div> <div id="first-attempts"> <h2> <a href="#TOC">First Attempts</a> </h2> <p> The earliest attempts at attaining true happiness of course aimed at pleasure. Soon, though, the downside of pleasure was revealed. </p> </div> 

Github会自动parsing标​​头外的锚标签。 所以你可以做到以下几点:

 [Foo](#foo) # Foo 

在上面的例子中, Foo头部生成了一个名字为foo的锚标签

注意 :所有标题大小只有一个##和锚点名称之间没有空格,锚点标记名称必须是小写字母,如果是多字,则使用破折号分隔。

 [click on this link](#my-multi-word-header) ### My Multi Word Header 

更新

pandoc开箱即用。

试验中,我find了一个使用<div…/>的解决scheme,但是一个明显的解决scheme是将自己的锚点放在任何你喜欢的页面中,这样:

 <a name="abcde"> 

之前

 </a> 

之后你要“连结”到这一行。 然后一个降价链接,如:

 [link text](#abcde) 

文档中的任何位置都可以带您到达。

<div…/>解决scheme只是为了添加id属性而插入一个“虚拟”部分,这对于页面结构可能是破坏性的,但是<a name="abcde"/>解决scheme应该是相当无害的。

(PS:把锚点放到你想要链接的行可能是可以的,如下所示:

 ## <a name="head1">Heading One</a> 

但这取决于Markdown如何对待这一点。 我注意到,例如,堆栈溢出答案格式化师很高兴!)

这可能是过时的线程,但在Github使用降价创build内部文档链接…
(注意:小写#title)

  # Contents - [Specification](#specification) - [Dependencies Title](#dependencies-title) ## Specification Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. ## Dependencies Title Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. Example text blah. 

有一个很好的问题,所以我编辑了我的答案。

内部链接可以使用任何标题大小 – ##########我在下面创build了一个快速示例… https://github.com/aogilvie/markdownLinkTest

是的,减价做到这一点,但你需要指定名称锚点(name=' <a name='xyx'>

一个完整的例子,

这创build了链接
[tasks](#tasks)

稍后在文档中,您将创build指定的锚(不pipe它是否被调用)。

 <a name="tasks"> my tasks </a> 

请注意,您也可以将其封装在标题中。

 <a name="tasks"> ### Agile tasks (created by developer) </a> 

pandoc手册介绍了如何使用标识符链接到您的标题。 我没有检查其他parsing器的支持,但据报道,它不能在github上工作

标识符可以手动指定:

 ## my heading text {#mht} Some normal text here, including a [link to the header](#mht). 

或者您可以使用自动生成的标识符。 两者在pandoc手册中详细解释。

注意这只适用于转换为HTMLLaTexConTeXtTextileAsciiDoc

Markdown规范中没有这样的指令。 抱歉。

使用kramdown,这似乎很好运作:

 [I want this to link to foo](#foo) .... .... {: id="foo"} ### Foo are you? 

我看到它被提及

 [foo][#foo] .... #Foo 

有效的工作,但前者可能是一个很好的select,除了标题或多个词的标题。

由于在评论中提到了MultiMarkdown作为一个选项。

在MultiMarkdown中,内部链接的语法很简单。

对于文档中的任何标题,只需以这种格式[heading][]给出标题名称来创build一个内部链接。

阅读更多: MultiMarkdown-5交叉引用 。

交叉引用

经常要求的function是让Markdown自动处理文档内链接,就像处理外部链接一样容易。 为此,我添加了将[Some Text] []解释为交叉链接的function,前提是名为“Some Text”的标题存在。

例如,[元数据] []会带您进入#元数据(或##元数据,###元数据,####元数据,#####元数据,######元数据中的任何一个)。

或者,您可以包含您select的可选标签,以帮助消除多个标题具有相同标题的情况:

###概述[MultiMarkdownOverview] ##

这允许您使用[MultiMarkdownOverview]来特别参考此部分,而不是另一个名为Overview的部分。 这适用于atx或settext样式的头文件。

如果您已经使用标头使用的相同标识定义了一个定位点,则定义的定位点优先。

除了文档中的标题之外,您还可以为图像和表格提供标签,然后将其用于交叉引用。