Antworten:
Take me to [pookie](#pookie)
sollte die richtige Markdown-Syntax sein, um zum Ankerpunkt namens pookie zu springen.
Um einen Ankerpunkt dieses Namens einzufügen, verwenden Sie HTML:
<a name="pookie"></a>
Markdown scheint es nichts auszumachen, wo Sie den Ankerpunkt setzen. Ein nützlicher Ort, um es zu setzen, ist in einer Kopfzeile. Zum Beispiel:
### <a name="tith"></a>This is the Heading
funktioniert sehr gut. (Ich würde hier demonstrieren, aber der Renderer von SO entfernt den Anker.)
id=
Versusname=
In einer früheren Version dieses Beitrags wurde vorgeschlagen <a id='tith' />
, die selbstschließende Syntax für XHTML zu verwenden und stattdessen das id
Attribut zu verwenden name
.
Mit XHTML kann jedes Tag "leer" und "selbstgeschlossen" sein. Das heißt, es <tag />
ist <tag></tag>
eine Abkürzung für ein übereinstimmendes Paar von Tags mit einem leeren Körper. Die meisten Browser akzeptieren XHTML, einige jedoch nicht. Um browserübergreifende Probleme zu vermeiden, schließen Sie das Tag explizit mit <tag></tag>
, wie oben empfohlen.
Schließlich war das Attribut name=
in XHTML veraltet, also habe ich es ursprünglich verwendet id=
, was jeder erkennt. HTML5 erstellt jetzt jedoch eine globale Variable in JavaScript, wenn es verwendet wird id=
, und dies muss nicht unbedingt das sein, was Sie wollen. Daher ist die Verwendung name=
jetzt wahrscheinlich freundlicher.
(Vielen Dank an Slipp Douglas , der mir XHTML erklärt hat, und an Nagler , der auf den HTML5-Nebeneffekt hingewiesen hat. Weitere Informationen finden Sie in den Kommentaren und in der Antwort des Naglers. Es name=
scheint überall zu funktionieren, obwohl es in XHTML veraltet ist.)
<a>
ohne href haben, heißt das nicht, dass es sich selbst schließt. Sofern ich nicht völlig verrückt bin, rendern beide: test-xhtml11 und [ sln.6bitt.com/public/test-html5.html ( Test- html5) den Rest der Seite innerhalb des <a> -Tags. Prüfen Sie mit einem Webinspektor Ihrer Wahl.
<a id="hi"/> rest of doc
, aber es wurde wie behandelt <a id="hi"> rest of doc</a>
. (Und die Elementanalyse der Seite zeigt dies auch.) Mein Fehler: Ich habe mir die angezeigten Elemente angesehen, nicht die Rohquelle. Denken Sie, dass die Antwort angesichts dieser Beobachtung geändert werden sollte?
name
Attribut erstellt auch globale Variablen (siehe stackoverflow.com/questions/3434278/… ), sodass Sie das id
Attribut genauso gut wie beabsichtigt als Ziel für Fragment- IDs verwenden können .
Auf bitbucket.org würde die gewählte Lösung nicht funktionieren. Wenn Sie Header (mit ##) verwenden, können Sie sie stattdessen als Anker referenzieren, indem Sie ihnen den Präfix # markdown-header-my-header-name voranstellen, wobei # markdown-header- ein vom Renderer generiertes implizites Präfix ist Der Rest ist der Titel der unteren Groß- und Kleinschreibung, wobei Bindestriche Leerzeichen ersetzen.
Beispiel
## My paragraph title
erzeugt einen impliziten Anker wie diesen
#markdown-header-my-paragraph-title
Die gesamte URL vor jeder Ankerreferenz ist optional, d. H.
[Some text](#markdown-header-my-paragraph-title)
ist äquivalent zu
[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title)
vorausgesetzt, sie befinden sich auf derselben Seite.
Quelle: https://bitbucket.org/tutorials/markdowndemo/overview (Bearbeiten Sie die Quelle dieser MD-Datei und sehen Sie sich an, wie Anker hergestellt werden).
## My paragraph title
wird der folgende Anker erstellt user-content-my-paragraph-title
, sodass Sie ihn mit [Text] (# user-content-my -agraph-title) referenzieren können. Ich habe jedoch keine offizielle Dokumentation dafür gefunden.
[linky](#header)
war ein ausreichender Anker und funktionierte auch bei Veröffentlichung in Gist.
Verwenden Sie a name
. Die Verwendung von id
ist in HTML 5 nicht erforderlich und erstellt globale Variablen in Ihrem JavaScript
Siehe HTML 5-Spezifikation, 5.9.8 Navigieren zu einer Fragmentkennung - beide id
und name
werden verwendet.
Es ist wichtig zu wissen, dass die meisten Browser IDs immer noch in globale Variablen umwandeln . Hier ist ein kurzer Test . Durch name
die Verwendung von a wird vermieden, dass globale Elemente und daraus resultierende Konflikte erstellt werden.
Beispiel mit einem Namen:
Take me to [pookie](#pookie)
Und der Zielanker:
### <a name="pookie"></a>Some heading
name
und id
ist unterschiedlich.
fineuploader
erstellen, können Sie das fineuploader
Modul nicht verwenden . Wenn Sie vermeiden, unnötige globale Elemente zu erstellen, können Sie diese Konflikte vermeiden.
Markdown-Anker unterstützt die Hash-Marke, sodass ein Link zu einem Anker auf der Seite einfach wäre[Pookie](#pookie)
Das Generieren des Ankers wird in Gruber Markdown nicht unterstützt, sondern in anderen Implementierungen wie Markdown Extra .
In Markdown Extra wird die Anker-ID an eine Kopf- oder Unterüberschrift mit angehängt {#pookie}
.
Github Flavored Markdown auf Git-Repository-Seiten (jedoch nicht in Gists) generiert automatisch Anker mit mehreren Markup-Tags in allen Headern (h1, h2, h3 usw.), einschließlich:
id="user-content-HEADERTEXT"
class="anchor"
href="#HEADERTEXT"
aria-hidden="true"
(Dies ist für ein SVG-Link-Symbol, das beim Mouseover angezeigt wird.)Ausgenommen das Aria / SVG-Symbol, wenn man schreibt:
# Header Title
Github generiert:
<h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>
Daher muss man nichts tun, um die Header-Links zu erstellen, und kann immer mit folgenden Links verknüpft werden:
[Header Title](#header-title)
In der ursprünglichen Markdown-Syntax gibt es keine sofort verfügbare Syntax, aber Markdown Extra bietet die Möglichkeit, Headern zumindest IDs zuzuweisen, mit denen Sie dann problemlos verknüpfen können. Beachten Sie auch, dass Sie sowohl in Markdown als auch in Markdown Extra reguläres HTML verwenden können und dass name
das id
Attribut in neueren HTML-Versionen durch das Attribut ersetzt wurde .
Für alle, die nach einer Lösung für dieses Problem in GitBook suchen. So habe ich es gemacht (in GitBook). Sie müssen Ihren Header explizit wie folgt kennzeichnen:
# My Anchored Heading {#my-anchor}
Dann verlinke diesen Anker so
[link to my anchored heading](#my-anchor)
Eine Lösung und weitere Beispiele finden Sie hier: https://seadude.gitbooks.io/learn-gitbook/
Spät zur Party, aber ich denke, dieser Zusatz könnte für Leute nützlich sein, die mit ihm arbeiten rmarkdown
. Es rmarkdown
gibt eine integrierte Unterstützung für Verweise auf Kopfzeilen in Ihrem Dokument.
Beliebiger Header definiert durch
# Header
kann durch referenziert werden
get me back to that [header](#header)
Das Folgende ist eine minimale eigenständige .rmd
Datei, die dieses Verhalten zeigt. Es kann an .pdf
und gestrickt werden .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).
Mit dem neuesten Markdown sollten Sie die folgende Syntax verwenden können:
[](){:name='anchorName'}
Dies sollte den folgenden HTML-Code erstellen:
<a name="anchorName"></a>
Wenn der Anker Text enthalten soll, fügen Sie einfach den Ankertext in eckige Klammern ein:
[Some Text](){:name='anchorName'}
Maruku
diese Syntax. Siehe das Babelmark.
Für die meisten gängigen Abschriftengeneratoren. Sie haben einen einfachen selbst generierten Anker in jedem Header. Zum Beispiel bei Pandoc ist der generierte Anker ein Kebab-Fall-Slug Ihres Headers.
echo "# Hello, world\!" | pandoc
# => <h1 id="hello-world">Hello, world!</h1>
Je nachdem, welchen Markdown-Parser Sie verwenden, kann sich der Anker ändern (nehmen Sie das Beispiel der Antworten von symbolrush und La muerte Peluda, sie sind unterschiedlich!). In diesem Babelmark können Sie generierte Anker sehen, die von Ihrer Markdown-Implementierung abhängen .