降价中的交叉引用(命名锚点)

时间:2011-03-16 00:41:45

标签: html anchor markdown cross-reference

是否有等同于:

的markdown语法
Take me to <a href="#pookie">pookie</a>

... 

<a name="pookie">this is pookie</a>

11 个答案:

答案 0 :(得分:596)

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的副作用 - 请参阅评论和敲钉的{{3}有关更多详细信息。name=似乎无处不在,但在XHTML中已弃用。)

答案 1 :(得分:65)

在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文件的来源并查看如何制作锚点)。

答案 2 :(得分:59)

使用name。在HTML 5中不需要使用id,并且会在JavaScript中创建全局变量

请参阅HTML 5规范5.9.8 Navigating to a fragment identifier - 使用了idname

了解most browsers still turn IDs into global variables非常重要。这是a quick test。使用name可以避免创建全局变量以及可能导致的任何冲突。

使用名称的示例:

Take me to [pookie](#pookie)

目的地锚:

### <a name="pookie"></a>Some heading

答案 3 :(得分:16)

在原始Markdown语法中没有现成的语法可用,但Markdown Extra提供了至少为标题分配ID的方法 - 然后您可以轻松链接到这些标题。另请注意,您可以在Markdown和Markdown Extra中使用常规HTML,并且name属性已被更新版本的HTML中的id属性取代。

答案 4 :(得分:11)

Markdown Anchor 支持主题标记,因此指向页面中锚点的链接只是Ubuntu 16.04.3 Selenium 2.53.1 Firefox 55.0 Jenkins 2.60.3

在Gruber Markdown中实际上不支持生成锚点,但在其他实现中,例如Markdown Extra

在Markdown Extra中,锚ID会附加到[Pookie](#pookie)的标题或子标题。

Git存储库页面中的

Github Flavored Markdown (但不在Gists中)在所有标题(h1,h2,h3等)上自动生成带有多个标记标记的锚点 ,包括:

  • {#pookie}
  • id="user-content-HEADERTEXT"
  • class="anchor"
  • href="#HEADERTEXT"(这是针对鼠标悬停时显示的svg链接图标)

当一个人写道时,不包括aria / svg图标:

  • aria-hidden="true"

Github生成:

  • # Header Title

因此,创建标题链接无需任何操作,并且始终可以使用以下链接链接到它们:

  • 链接到<h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>

答案 5 :(得分:5)

晚会,但我认为这种添加可能对使用ValueTypeEnabled的人有用。在rmarkdown中,内置支持对文档中标题的引用。

定义的任何标头
rmarkdown

可以引用

# Header

以下是显示此行为的最小独立get me back to that [header](#header) 文件。它可以编织为.rmd.pdf

.html

答案 6 :(得分:3)

对于大多数常见的降价发生器。每个标题中都有一个简单的自生成锚点。例如,对于pandoc,生成的锚将是标题的kebab case slug。

 echo "# Hello, world\!" | pandoc
 # => <h1 id="hello-world">Hello, world!</h1>

根据您使用的降价解析器,锚点可以更改(以symbolrush和La muerte Peluda的答案为例,它们是不同的!)。请参阅此babelmark,您可以在其中看到生成的锚,具体取决于您的降价实施

答案 7 :(得分:1)

使用最新的Markdown,您应该能够使用以下语法:

[](){:name='anchorName'}

这应创建以下HTML:

<a name="anchorName"></a>

如果您希望锚具有文本,只需在方括号内添加测试:

`一些文字{:name =&#39; anchorName&#39;}

答案 8 :(得分:1)

在标题包含表情符号的情况下,我将快速进行补充,在这种情况下,只需删除引用链接中的表情符号即可。例如

# ⭐ Title 2
....
[Take me to title 2](#-title-2)

在某些情况下,由于某些奇怪的原因而无法正常工作,例如在安装程序中使用here。在这种情况下,解决方案是也包括表情符号的全部代码。

答案 9 :(得分:0)

对于任何正在GitBook中寻求解决此问题的人。这就是我使其工作的方式(在GitBook中)。您需要显式标记标题,例如:

# My Anchored Heading {#my-anchor}

然后像这样链接到该锚点

[link to my anchored heading](#my-anchor)

解决方案和其他示例,可以在这里找到:https://seadude.gitbooks.io/learn-gitbook/

答案 10 :(得分:0)

正如我们从答案中看到的那样,没有标准的方法可以实现。并且不同的markdown处理器在markdown扩展方面会有所不同,从而提供了这种可能性。

使用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来创建空跨度:

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和for most common markdown generators, you have a simple self generated anchor in each header。 (请参见此处和其他答案,以方便地方式(自动)生成和引用此类锚点。)