Перекрестная ссылка (именованный якорь) в markdown

есть ли синтаксис markdown для эквивалента:

Take me to <a href="#pookie">pookie</a>

... 

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

8 ответов


Take me to [pookie](#pookie)

должен быть правильный синтаксис markdown для перехода к точке привязки с именем pookie.

вставить точку привязки этого имени используйте HTML:

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

Markdown, похоже, не возражает, где вы ставите точку привязки. Полезно поместить его в заголовок. Например:

### <a name="tith"></a>This is the Heading

очень хорошо работает. (Я бы продемонстрировал здесь, но так рендерер снимает якорь.)

обратите внимание на самозакрывающиеся теги и id= против name=

более ранняя версия этого сообщения предложила использовать <a id='tith' />, используя синтаксис самозакрывания для XHTML и используя вместо name.

XHTML позволяет любому тегу быть "пустым" и "самозакрывающимся". То есть, <tag /> - это сокращение для <tag></tag>, совпадающая пара тегов с пустым телом. Большинство браузеров будут принимать XHTML, но некоторые нет. Чтобы избежать проблем с кросс-браузером, закройте тег явно с помощью <tag></tag>, как рекомендовано выше.

наконец, атрибут name= был устаревшим в XHTML, поэтому я изначально использовал id=, который узнает каждый. Однако HTML5 теперь создает глобальную переменную в JavaScript при использовании id=, и это не обязательно то, что вы хотите. Итак, используя name= теперь, вероятно, будет более дружелюбным.

(спасибо Скольжения Дуглас для объяснения XHTML мне, и мастер для указания на побочный эффект HTML5-см. комментарии и мастер ' s ответ подробнее. name= кажется, работает везде, хотя он устарел в XHTML.)


использовать name. С помощью id не требуется в HTML 5 и создаст глобальные переменные в вашем JavaScript

см. спецификацию HTML 5,5.9.8 переход к идентификатору фрагмента - как id и есть.

важно знать, что большинство браузеров по-прежнему превращают идентификаторы в глобальные переменные. Вот!--18-->быстрый тест. С помощью name избегает создания глобалов и любых конфликтов это может привести.

пример использования имени:

Take me to [pookie](#pookie)

и якорь назначения:

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

ВКЛ 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 файл и посмотрите, как сделаны якоря).


в исходном синтаксисе Markdown нет доступного синтаксиса для этого, но Markdown Extra предоставляет средство по крайней мере назначить идентификаторы заголовкам, на которые вы можете легко ссылаться. Обратите внимание также, что вы можете использовать обычный HTML как в Markdown, так и в Markdown Extra, и что name атрибут был заменен на id атрибут в более поздних версиях HTML.


Якорь Markdown поддерживает символа, поэтому ссылка на якорь на странице будет просто [Pookie](#pookie)

создание якоря фактически не поддерживается в Gruber Markdown, но в других реализациях, таких как Markdown Extra.

в Markdown Extra идентификатор якоря добавляется к заголовку или подзаголовку с {#pookie}.

GitHub Ароматизированный Markdown на страницах репозитория Git (но не в Gists) автоматически генерирует анкоры С несколькими тегами разметки на всех заголовках (h1, h2, h3 и т. д.), в том числе:

  • id="user-content-HEADERTEXT"
  • class="anchor"
  • href="#HEADERTEXT"
  • aria-hidden="true" (это для значка ссылки svg, который отображается при наведении мыши)

исключая значок aria / svg, когда один пишет:

  • # Header Title

Github генерирует:

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

поэтому ничего не нужно делать для создания ссылок заголовка и всегда можно ссылаться на них с помощью:

  • ссылка [Header Title](#header-title)

опоздал на вечеринку, но я думаю, что это дополнение может быть полезно для людей, работающих с rmarkdown. В rmarkdown существует встроенная поддержка ссылок на заголовки в вашем документе.

любой заголовок, определенный

# Header

можно ссылаться на

get me back to that header(#header)

ниже приведен минимальный автономной .rmd файл, который показывает это поведение. Его можно связать к .pdf и .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).

для наиболее распространенных генераторов markdown. У вас есть простая самогенерирующегося якорь в каждом заголовке. Например, с pandoc, сгенерированный якорь будет Kebab Case slug вашего заголовка.

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

в зависимости от того, какой парсер markdown вы используете, якорь может измениться (возьмите пример ответов symbolrush и La muerte Peluda, они разные!). Смотрите это babelmark где вы можете увидеть сгенерированные якоря в зависимости от вашего уценки реализация.


используя последнюю уценку, вы сможете использовать следующий синтаксис:

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

Это должно создать следующий HTML:

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

Если вы хотите, чтобы якорь имел текст, просто добавьте тест в квадратные скобки:

'Некоторый текст {: name= 'anchorName'}