Перекрестная ссылка (именованная привязка) в уценке - PullRequest
448 голосов
/ 16 марта 2011

Есть уценка синтаксис для эквивалента:

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

... 

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

Ответы [ 9 ]

603 голосов
/ 07 сентября 2011
Take me to [pookie](#pookie)
1001 * должна быть правильный синтаксис уценки для перехода к точке привязки имени Pookie 1003 * Для того, чтобы вставить точку привязки этого использует имя 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 теперь создает глобальную переменную в JavaScript при использовании id=, и это не обязательно то, что вам нужно.Таким образом, использование name= теперь может быть более дружественным.

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

69 голосов
/ 26 августа 2014

На 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 и посмотрите, как создаются якоря).

60 голосов
/ 10 июня 2013

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

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

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

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

Take me to [pookie](#pookie)

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

### <a name="pookie"></a>Some heading
16 голосов
/ 16 марта 2011

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

11 голосов
/ 24 августа 2017

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

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

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

Github FlavoredMarkdown на страницах репозитория 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)
5 голосов
/ 27 октября 2016

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

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

# 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).
3 голосов
/ 26 ноября 2016

Для наиболее распространенных генераторов уценки.У вас есть простой самогенерируемый якорь в каждом заголовке.Например, при pandoc сгенерированный якорь будет слагом кебаба вашего заголовка.

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

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

1 голос
/ 24 января 2019

Для тех, кто ищет решение этой проблемы в GitBook.Вот как я заставил это работать (в GitBook).Вам необходимо явно пометить свой заголовок, например:

# My Anchored Heading {#my-anchor}

Затем ссылка на этот якорь будет выглядеть следующим образом

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

Решение и дополнительные примеры можно найти здесь: https://seadude.gitbooks.io/learn-gitbook/

1 голос
/ 23 июня 2017

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

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

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

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

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

`Some Text {: name = 'anchorName'}

...