是否存在等价的markdown语法:
Take me to <a href="#pookie">pookie</a>
...
<a name="pookie">this is pookie</a>
是否存在等价的markdown语法:
Take me to <a href="#pookie">pookie</a>
...
<a name="pookie">this is pookie</a>
在最初的Markdown语法中没有现成的语法来做到这一点,但是Markdown Extra提供了一种方法,至少可以将id分配给标题-然后可以轻松地链接到标题。还要注意,您可以在Markdown和Markdown Extra中使用常规HTML,并且在最新版本的HTML中,name属性已经被id属性所取代。
Take me to [pookie](#pookie)
应该是正确的markdown语法,以跳转到名为pookie的锚点。
要插入一个锚点,请使用HTML:
<a name="pookie"></a>
Markdown似乎并不介意你把锚点放在哪里。一个放置它的有用位置是在头文件中。例如:
### <a name="tith"></a>This is the Heading
工作得很好。(我在这里演示,但SO的渲染器剥离了锚。)
注意自关闭标记和id=和name=
这篇文章的早期版本建议使用<a id='tith' />,使用XHTML的自闭语法,并使用id属性而不是name。
XHTML允许任何标记为“空”和“自闭”。也就是说,<tag />是<tag></tag>的简称,是一对匹配的空主体标签。大多数浏览器接受XHTML,但有些不接受。为了避免跨浏览器的问题,按照上面的建议,使用<tag></tag>显式地关闭标记。
最后,属性name=在XHTML中已弃用,所以我最初使用了每个人都能识别的id=。然而,HTML5现在在使用id=时在JavaScript中创建了一个全局变量,这可能不是你想要的。因此,使用name=现在可能更加友好。
(感谢Slipp Douglas向我解释XHTML,感谢nailer指出HTML5的副作用——更多细节请看评论和nailer的回答。name=似乎在任何地方都可以工作,尽管它在XHTML中已被弃用。)
使用一个名字。在HTML 5中不需要使用id,它会在JavaScript中创建全局变量
参见HTML 5规范,5.9.8导航到片段标识符- id和name都被使用。
重要的是要知道大多数浏览器仍然将id转换为全局变量。这里有一个快速测试。使用名称可以避免创建全局变量和可能导致的任何冲突。
使用名称的示例:
Take me to [pookie](#pookie)
和目的锚点:
### <a name="pookie"></a>Some heading
在bitbucket.org上投票的解决方案行不通。相反,当使用标题(使用##)时,可以将它们作为锚点引用,将它们作为#markdown-header-my-header-name作为前缀,其中#markdown-header-是由渲染器生成的隐式前缀,其余是小写标题,用破折号代替空格。
例子
## My paragraph title
会产生这样的隐式锚
#markdown-header-my-paragraph-title
在每个锚引用之前的整个URL是可选的,即。
[Some text](#markdown-header-my-paragraph-title)
相当于
[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title)
前提是它们在同一页上。
来源:https://bitbucket.org/tutorials/markdowndemo/overview(编辑这个.md文件的源代码,看看锚是如何制作的)。
虽然姗姗来迟,但我认为这个添加可能对使用rmarkdown的人有用。在rmarkdown中,有内置的文档头引用支持。
定义的任何头
# Header
可由
get me back to that [header](#header)
下面是一个最小的独立.rmd文件,它显示了这种行为。它可以编织成。pdf和。html。
---
title: "references in rmarkdown"
output:
html_document: default
pdf_document: default
---
# Header
Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text. Write some more text.
Go back to that [header](#header).
对于大多数常见的降价生成器。在每个头文件中都有一个简单的自生成锚。例如,使用pandoc,生成的锚将是头部的一个烤肉盒。
echo "# Hello, world\!" | pandoc
# => <h1 id="hello-world">Hello, world!</h1>
取决于您使用的markdown解析器,锚可以改变(以symbolrush和La muerte Peluda回答为例,它们是不同的!)。看这个babelmark,你可以看到生成的锚取决于你的markdown实现。
使用最新的Markdown,你应该能够使用以下语法:
[] () {: name =‘anchorName}
这将创建以下HTML:
<a name=“anchorName”></a>
如果你想要锚点有文本,只需在方括号内添加锚点文本:
[文本](){:name = ' anchorName '}
Markdown Anchor支持hashmark,因此在页面中链接到一个锚将简单地[Pookie](# Pookie)
在Gruber Markdown中实际上不支持生成锚,但在其他实现中支持,例如Markdown Extra。
在Markdown Extra中,锚点ID用{#pookie}附加到标题或子标题中。
Github调味Markdown在Git存储库页面(但不是在gist)自动生成在所有标题(h1, h2, h3等)上带有几个标记标记的锚,包括:
id = " user-content-HEADERTEXT " 类=“锚” href = " # HEADERTEXT” Aria-hidden ="true"(这是用于鼠标悬停时显示的SVG链接图标)
除了咏叹调/svg图标,当有人写道:
#标题标题
Github生成:
<h1><a id=“user-content-header-title” class=“anchor” href=“#header-title”>Header Title</a></h1>
因此,一个人不需要做任何事情来创建头链接,并且总是可以链接到它们:
链接到[标题标题](# Header - Title)
对于在GitBook中寻找此问题解决方案的任何人。这就是我如何使它工作(在GitBook)。你需要显式地标记你的标题,像这样:
# My Anchored Heading {#my-anchor}
然后像这样链接到这个锚
[link to my anchored heading](#my-anchor)
解决方案和其他示例可以在这里找到:https://seadude.gitbooks.io/learn-gitbook/
对于头部包含表情符号的情况,我将快速补充,在这种情况下,只需删除引用链接中的表情符号就更简单了。例如
# ⭐ Title 2
....
[Take me to title 2](#-title-2)
在某些情况下,由于一些奇怪的原因,这不起作用,例如在这里的设置中。这种情况下的解决方案是包括表情符号的整个代码。
正如我们所看到的(从答案中),这没有标准的方法;不同的降价处理器在提供这种可能性的降价扩展方面会有所不同。
使用pandoc,你可以得到你想要的:
Take me to [pookie](#pookie)
...
[this is pookie]{#pookie}
这给出了(通过pandoc-2.9.2.1):
<p>Take me to <a href="#pookie">pookie</a></p>
<p>…</p>
<p><span id="pookie">this is pookie</span></p>
我们也可以用一个锚id创建一个空span:
Take me to [pookie](#pookie)
...
this is pookie []{#pookie}
这将产生:
<p>Take me to <a href="#pookie">pookie</a></p>
<p>…</p>
<p>this is pookie <span id="pookie"></span></p>
除此之外,对于pandoc和大多数常见的markdown生成器,在每个报头中都有一个简单的自生成锚。(请参阅此处和其他答案,以方便地(自动)生成和引用此类锚。)
对于任何喜欢使用不同级别的头文件的人来说,注意到头文件的链接应该只使用一个#,不管头文件的级别是多少:
# This is an H1
## This is an H2
### This is an H3
...
[Take me to H3](#this-is-an-H3)
[Take me to H1](#this-is-an-H1)
[This won't work](##-this-is-an-H2)