Is there markdown syntax for the equivalent of:
Take me to <a href="#pookie">pookie</a>
...
<a name="pookie">this is pookie</a>
Take me to [pookie](#pookie)
should be the correct markdown syntax to jump to the anchor point named pookie.
To insert an anchor point of that name use HTML:
<a name="pookie"></a>
Markdown doesn't seem to mind where you put the anchor point. A useful place to put it is in a header. For example:
### <a name="tith"></a>This is the Heading
works very well. (I'd demonstrate here but SO's renderer strips out the anchor.)
Note on self-closing tags and id=
versus name=
An earlier version of this post suggested using <a id='tith' />
, using the self-closing syntax for XHTML, and using the id
attribute instead of name
.
XHTML allows for any tag to be 'empty' and 'self-closed'. That is, <tag />
is short-hand for <tag></tag>
, a matched pair of tags with an empty body. Most browsers will accept XHTML, but some do not. To avoid cross-browser problems, close the tag explicitly using <tag></tag>
, as recommended above.
Finally, the attribute name=
was deprecated in XHTML, so I originally used id=
, which everyone recognises. However, HTML5 now creates a global variable in JavaScript when using id=
, and this may not necessarily be what you want. So, using name=
is now likely to be more friendly.
(Thanks to Slipp Douglas for explaining XHTML to me, and nailer for pointing out the HTML5 side-effect — see the comments and nailer's answer for more detail. name=
appears to work everywhere, though it is deprecated in XHTML.)
On bitbucket.org the voted solution wouldn't work. Instead, when using headers (with ##), it is possible to reference them as anchors by prefixing them as #markdown-header-my-header-name, where #markdown-header- is an implicit prefix generated by the renderer, and the rest is the lower-cased header title with dashes replacing spaces.
Example
## My paragraph title
will produce an implicit anchor like this
#markdown-header-my-paragraph-title
The whole URL before each anchor reference is optional, i.e.
[Some text](#markdown-header-my-paragraph-title)
is equivalent of
[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title)
provided that they are in the same page.
Source: https://bitbucket.org/tutorials/markdowndemo/overview (edit source of this .md file and look at how anchors are made).
Use a name
. Using an id
isn't necessary in HTML 5 and will create global variables in your JavaScript
See the HTML 5 specification, 5.9.8 Navigating to a fragment identifier - both id
and name
are used.
It's important to know that most browsers still turn IDs into global variables. Here's a quick test. Using a name
avoids creating globals and any conflicts that may result.
Example using a name:
Take me to [pookie](#pookie)
And the destination anchor:
### <a name="pookie"></a>Some heading
There's no readily available syntax to do this in the original Markdown syntax, but Markdown Extra provides a means to at least assign IDs to headers — which you can then link to easily. Note also that you can use regular HTML in both Markdown and Markdown Extra, and that the name
attribute has been superseded by the id
attribute in more recent versions of HTML.
Markdown Anchor supports the hashmark, so a link to an anchor in the page would simply be [Pookie](#pookie)
Generating the anchor is not actually supported in Gruber Markdown, but is in other implementations, such as Markdown Extra.
In Markdown Extra, the anchor ID is appended to a header or subhead with {#pookie}
.
Github Flavored Markdown in Git repository pages (but not in Gists) automatically generates anchors with several markup tags on all headers (h1, h2, h3, etc.), including:
id="user-content-HEADERTEXT"
class="anchor"
href="#HEADERTEXT"
aria-hidden="true"
(this is for an svg link icon that displays on mouseover)
Excluding the aria/svg icon, when one writes:
# Header Title
Github generates:
<h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>
Therefore, one need do nothing to create the header links, and can always link to them with:
- Link to the
[Header Title](#header-title)
Late to the party, but I think this addition might be useful for people working with rmarkdown
. In rmarkdown
there is built-in support for references to headers in your document.
Any header defined by
# Header
can be referenced by
get me back to that [header](#header)
The following is a minimal standalone .rmd
file that shows this behavior. It can be knitted to .pdf
and .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).
For most common markdown generators. You have a simple self generated anchor in each header. For instance with pandoc, the generated anchor will be a kebab case slug of your header.
echo "# Hello, world\!" | pandoc
# => <h1 id="hello-world">Hello, world!</h1>
Depending on which markdown parser you use, the anchor can change (take the exemple of symbolrush and La muerte Peluda answers, they are different!). See this babelmark where you can see generated anchors depending on your markdown implementation.
Using the latest Markdown, you should be able to use the following syntax:
[](){:name='anchorName'}
This should create the following HTML:
<a name="anchorName"></a>
If you wanted the anchor to have text, simply add the test within the square brackets:
`Some Text{:name='anchorName'}
For anyone who is looking for a solution to this problem in GitBook. This is how I made it work (in GitBook). You need to tag your header explicitly, like this:
# My Anchored Heading {#my-anchor}
Then link to this anchor like this
[link to my anchored heading](#my-anchor)
Solution, and additional examples, may be found here: https://seadude.gitbooks.io/learn-gitbook/
来源:https://stackoverflow.com/questions/5319754/cross-reference-named-anchor-in-markdown