是否存在等价的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>
当前回答
对于任何喜欢使用不同级别的头文件的人来说,注意到头文件的链接应该只使用一个#,不管头文件的级别是多少:
# 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)
其他回答
使用最新的Markdown,你应该能够使用以下语法:
[] () {: name =‘anchorName}
这将创建以下HTML:
<a name=“anchorName”></a>
如果你想要锚点有文本,只需在方括号内添加锚点文本:
[文本](){:name = ' anchorName '}
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中已被弃用。)
在最初的Markdown语法中没有现成的语法来做到这一点,但是Markdown Extra提供了一种方法,至少可以将id分配给标题-然后可以轻松地链接到标题。还要注意,您可以在Markdown和Markdown Extra中使用常规HTML,并且在最新版本的HTML中,name属性已经被id属性所取代。
使用一个名字。在HTML 5中不需要使用id,它会在JavaScript中创建全局变量
参见HTML 5规范,5.9.8导航到片段标识符- id和name都被使用。
重要的是要知道大多数浏览器仍然将id转换为全局变量。这里有一个快速测试。使用名称可以避免创建全局变量和可能导致的任何冲突。
使用名称的示例:
Take me to [pookie](#pookie)
和目的锚点:
### <a name="pookie"></a>Some heading
对于大多数常见的降价生成器。在每个头文件中都有一个简单的自生成锚。例如,使用pandoc,生成的锚将是头部的一个烤肉盒。
echo "# Hello, world\!" | pandoc
# => <h1 id="hello-world">Hello, world!</h1>
取决于您使用的markdown解析器,锚可以改变(以symbolrush和La muerte Peluda回答为例,它们是不同的!)。看这个babelmark,你可以看到生成的锚取决于你的markdown实现。