Odpowiedzi:
Take me to [pookie](#pookie)
powinna mieć poprawną składnię, aby przejść do punktu kontrolnego o nazwie pookie.
Aby wstawić punkt kontrolny o tej nazwie, użyj HTML:
<a name="pookie"></a>
Markdown nie ma nic przeciwko temu, gdzie umieścisz punkt kontrolny. Przydatnym miejscem do umieszczenia go jest w nagłówku. Na przykład:
### <a name="tith"></a>This is the Heading
działa bardzo dobrze. (Zademonstruję tutaj, ale renderer SO zdejmuje kotwicę.)
id=
versusname=
Wcześniejsza wersja tego postu sugerowała użycie <a id='tith' />
, użycie składni samozamykającej dla XHTML i użycie id
atrybutu zamiast name
.
XHTML pozwala, aby dowolny tag był „pusty” i „samozamykający się”. Oznacza to, że jest <tag />
to skrót od <tag></tag>
dopasowanej pary tagów z pustym ciałem. Większość przeglądarek akceptuje XHTML, ale niektóre nie. Aby uniknąć problemów w różnych przeglądarkach, zamknij tag jawnie <tag></tag>
, zgodnie z zaleceniami powyżej.
Wreszcie atrybut name=
został przestarzały w XHTML, więc pierwotnie go użyłem id=
, co wszyscy rozpoznają. Jednak HTML5 tworzy teraz zmienną globalną w JavaScript podczas korzystania id=
i niekoniecznie jest to, czego chcesz. Tak, używającname=
jest teraz bardziej przyjazne.
(Dzięki Slipp Douglas , służące wyjaśnieniu XHTML do mnie, a gwoździarka za wskazanie HTML5 efekt uboczny - patrz komentarze i gwoździ „s odpowiedź dla bardziej szczegółowo. name=
Wydaje się działać wszędzie, choć nie jest przestarzałe w XHTML).
<a>
bez href, nie oznacza, że sam się zamyka. O ile nie jestem całkowicie szalony, oba: test-xhtml11 i [ sln.6bitt.com/public/test-html5.html](test-html5) renderują resztę strony w tagu <a>. Śmiało i sprawdź z wybranym inspektorem internetowym.
<a id="hi"/> rest of doc
, ale traktowano to jak <a id="hi"> rest of doc</a>
. (I pokazuje to analiza elementu na stronie.) Mój błąd: patrzyłem na wyświetlane elementy, a nie na surowe źródło. Czy uważasz, że odpowiedź powinna zostać zmodyfikowana w świetle tej obserwacji?
name
Atrybut tworzy zmienne globalne (patrz stackoverflow.com/questions/3434278/... ), więc równie dobrze można użyć id
atrybutu jako cel fragmentu URL identyfikator zgodnie z przeznaczeniem.
Na bitbucket.org głosowane rozwiązanie nie działałoby. Zamiast tego, używając nagłówków (z ##), można odwoływać się do nich jako kotwic, poprzedzając je # nazwą-markdown-header-my-header-name, gdzie # markdown-header- jest niejawnym prefiksem generowanym przez renderer, i reszta to mały nagłówek z myślnikami zastępującymi spacje.
Przykład
## My paragraph title
wytworzy taką ukrytą kotwicę
#markdown-header-my-paragraph-title
Cały adres URL przed każdym odwołaniem do kotwicy jest opcjonalny, tj
[Some text](#markdown-header-my-paragraph-title)
jest równoważne z
[Some text](https://bitbucket.org/some_project/some_page#markdown-header-my-paragraph-title)
pod warunkiem, że znajdują się na tej samej stronie.
Źródło: https://bitbucket.org/tutorials/markdowndemo/overview (edytuj źródło tego pliku .md i zobacz, jak tworzone są kotwice).
## My paragraph title
utworzy następującą kotwicę user-content-my-paragraph-title
, więc możesz odwoływać się do niej za pomocą [Some text] (# user-content-my-paragraph-title). Nie znalazłem jednak na to oficjalnej dokumentacji.
[linky](#header)
była wystarczającą kotwicą i działała również po opublikowaniu w Gist.
Użyj a name
. Użycie id
nie jest konieczne w HTML 5 i spowoduje utworzenie zmiennych globalnych w JavaScript
Patrz specyfikacja HTML 5, 5.9.8, przechodząc do identyfikatora fragmentu - jak id
i name
stosowane.
Ważne jest, aby wiedzieć, że większość przeglądarek wciąż zmienia identyfikatory w zmienne globalne . Oto szybki test . Użycie a name
pozwala uniknąć tworzenia globałów i wszelkich konfliktów, które mogą wyniknąć.
Przykład z użyciem nazwy:
Take me to [pookie](#pookie)
I kotwica docelowa:
### <a name="pookie"></a>Some heading
name
i id
są różne.
fineuploader
, nie będziesz mógł korzystać z fineuploader
modułu. Unikanie tworzenia niepotrzebnych globałów pomaga uniknąć tych konfliktów.
Markdown Anchor obsługuje hashmark, więc link do kotwicy na stronie byłby po prostu[Pookie](#pookie)
Generowanie kotwicy nie jest faktycznie obsługiwane w Gruber Markdown, ale jest w innych implementacjach, takich jak Markdown Extra .
W Markdown Extra identyfikator kotwicy jest dołączany do nagłówka lub podtytułu za pomocą {#pookie}
.
Github Flavored Markdown na stronach repozytorium Git (ale nie w Gists) automatycznie generuje kotwice z kilkoma znacznikami na wszystkich nagłówkach (h1, h2, h3 itp.), W tym:
id="user-content-HEADERTEXT"
class="anchor"
href="#HEADERTEXT"
aria-hidden="true"
(dotyczy ikony łącza svg wyświetlanej po najechaniu myszą)Z wyjątkiem ikony aria / svg, gdy ktoś pisze:
# Header Title
Github generuje:
<h1><a id="user-content-header-title" class="anchor" href="#header-title">Header Title</a></h1>
Dlatego nie trzeba nic robić, aby utworzyć linki nagłówka, i zawsze można do nich link za pomocą:
[Header Title](#header-title)
W oryginalnej składni Markdown nie ma łatwo dostępnej składni, ale Markdown Extra zapewnia co najmniej przypisywanie identyfikatorów do nagłówków - które następnie można łatwo połączyć. Zauważ również, że możesz używać zwykłego HTML zarówno w Markdown, jak i Markdown Extra, oraz że name
atrybut został zastąpiony przez id
atrybut w nowszych wersjach HTML.
Dla każdego, kto szuka rozwiązania tego problemu w GitBook. Tak sprawiłem, że działało (w GitBook). Musisz wyraźnie oznaczyć swój nagłówek w następujący sposób:
# My Anchored Heading {#my-anchor}
Następnie link do tej kotwicy w ten sposób
[link to my anchored heading](#my-anchor)
Rozwiązanie i dodatkowe przykłady można znaleźć tutaj: https://seadude.gitbooks.io/learn-gitbook/
Późno na imprezę, ale myślę, że ten dodatek może być przydatny dla osób pracujących rmarkdown
. W rmarkdown
tam jest wbudowane wsparcie dla odniesienia do nagłówków w dokumencie.
Dowolny nagłówek zdefiniowany przez
# Header
może odnosić się do
get me back to that [header](#header)
Poniżej przedstawiono minimalny samodzielny .rmd
plik, który pokazuje to zachowanie. Można go wykonać na drutach .pdf
i .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).
Korzystając z najnowszego Markdown, powinieneś być w stanie użyć następującej składni:
[](){:name='anchorName'}
To powinno utworzyć następujący kod HTML:
<a name="anchorName"></a>
Jeśli chcesz, aby kotwica zawierała tekst, po prostu dodaj tekst kotwicy w nawiasach kwadratowych:
[Some Text](){:name='anchorName'}
Maruku
wie tylko o tej składni. Zobacz babelmark.
Dla najpopularniejszych generatorów przecen. W każdym nagłówku masz prostą, samodzielnie wygenerowaną kotwicę. Na przykład w przypadku pandoc wygenerowana kotwica będzie kopią kebaba w nagłówku.
echo "# Hello, world\!" | pandoc
# => <h1 id="hello-world">Hello, world!</h1>
W zależności od parsera, którego używasz, kotwica może się zmienić (weź przykład symbolrush i La muerte Peluda, są różne!). Zobacz ten babelmark, w którym możesz zobaczyć wygenerowane kotwice w zależności od implementacji obniżki .