Как сделать ссылку на часть того же документа в Markdown? - PullRequest
398 голосов
/ 12 мая 2010

Я пишу большой документ Markdown и хотел бы в начале поместить оглавление, в котором будут ссылки на различные места в документе. Как я могу это сделать?

Я пытался использовать

[a link](# MyTitle)

, где MyTitle - заголовок в документе, и это не сработало.

Ответы [ 12 ]

644 голосов
/ 07 мая 2013

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

[Custom foo description](#foo)

# Foo

В приведенном выше случае заголовок Foo сгенерировал тег привязки с именем foo

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

[click on this link](#my-multi-word-header)

### My Multi Word Header

Обновление

Работает из коробки также с pandoc.

96 голосов
/ 27 июня 2011

Экспериментируя, я нашел решение, используя <div…/>, но очевидным решением является размещение вашей собственной точки привязки на странице, где вы хотите, таким образом:

<a name="abcde">

до и

</a>

после строки, на которую вы хотите "ссылаться". Тогда ссылка уценки, как:

[link text](#abcde)

в любом месте документа приведет вас туда.

Решение <div…/> вставляет «фиктивное» деление только для добавления свойства id, и это потенциально разрушительно для структуры страницы, но решение <a name="abcde"/> должно быть довольно безобидным.

(PS: возможно, можно поставить якорь в строку, на которую вы хотите связать, следующим образом:

## <a name="head1">Heading One</a>

но это зависит от того, как Markdown относится к этому. Замечу, например, что форматировщик ответов Stack Overflow этим доволен!)

66 голосов
/ 09 апреля 2013

Это может быть устаревшая тема, но для создания внутренних ссылок на документы в уценке при использовании Github ...
(ПРИМЕЧАНИЕ: строчные буквы # заголовок)

    # Contents
     - [Specification](#specification) 
     - [Dependencies Title](#dependencies-title) 

    ## Specification
    Example text blah. Example text blah. Example text blah. Example text blah. 
Example text blah. Example text blah. Example text blah. Example text blah. 
Example text blah. Example text blah. Example text blah. Example text blah. 
Example text blah. Example text blah. 

    ## Dependencies Title
    Example text blah. Example text blah. Example text blah. Example text blah. 
Example text blah. Example text blah. Example text blah. Example text blah. 
Example text blah. Example text blah. Example text blah. Example text blah. 
Example text blah. Example text blah. 

Был задан хороший вопрос, поэтому я отредактировал свой ответ;

Внутренняя ссылка может быть сделана для любого размера заголовка, используя - #, ##, ###, #### Я создал быстрый пример ниже ... https://github.com/aogilvie/markdownLinkTest

36 голосов
/ 13 мая 2010

В pandoc , если вы используете опцию --toc при создании html, будет создано оглавление со ссылками на разделы и обратно к оглавлению из заголовков разделов. Это похоже на другие форматы, которые пишет pandoc, например LaTeX, RTF, RST и т. Д. Так же с командой

pandoc --toc happiness.txt -o happiness.html

этот бит уценки:

% True Happiness

Introduction
------------

Many have posed the question of true happiness.  In this blog post we propose to
solve it.

First Attempts
--------------

The earliest attempts at attaining true happiness of course aimed at pleasure. 
Soon, though, the downside of pleasure was revealed.

выдаст это как тело html:

    <h1 class="title">
        True Happiness
    </h1>
    <div id="TOC">
        <ul>
            <li>
                <a href="#introduction">Introduction</a>
            </li>
            <li>
                <a href="#first-attempts">First Attempts</a>
            </li>
        </ul>
    </div>
    <div id="introduction">
        <h2>
            <a href="#TOC">Introduction</a>
        </h2>
        <p>
            Many have posed the question of true happiness. In this blog post we propose to solve it.
        </p>
    </div>
    <div id="first-attempts">
        <h2>
            <a href="#TOC">First Attempts</a>
        </h2>
        <p>
            The earliest attempts at attaining true happiness of course aimed at pleasure. Soon, though, the downside of pleasure was revealed.
        </p>
    </div>
17 голосов
/ 11 июня 2015

да, уценка делает это, но вам нужно указать имя привязки <a name='xyx'>.

полный пример,

это создает ссылку
[tasks](#tasks)

позже в документе вы создаете именованный якорь (как бы он ни назывался).

<a name="tasks">
   my tasks
</a>

обратите внимание, что вы также можете обернуть его вокруг заголовка.

<a name="tasks">
### Agile tasks (created by developer)
</a>
11 голосов
/ 19 мая 2014

Руководство pandoc объясняет, как связываться с вашими заголовками, используя их идентификатор. Я не проверял поддержку этого другими парсерами, но сообщалось, что он не работает на github .

Идентификатор можно указать вручную:

## my heading text {#mht}
Some normal text here,
including a [link to the header](#mht).

или вы можете использовать автоматически сгенерированный идентификатор (в данном случае #my-heading-text). Оба подробно объясняются в руководстве pandoc .

ПРИМЕЧАНИЕ : Этот только работает при преобразовании в HTML , LaTex , ConTeXt , Текстиль или AsciiDoc .

7 голосов
/ 13 мая 2010

В спецификации Markdown такой директивы нет. К сожалению.

4 голосов
/ 23 ноября 2017

Gitlab использует GitLab Flavored Markdown (GFM)

Здесь "все отображаемые в Markdown заголовки автоматически получают идентификаторы"

Можно использовать мышь, чтобы:

  • наведите курсор мыши на заголовок
  • наведите курсор мыши на селектор при наведении, который становится видимым слева от заголовка
  • скопировать и сохранить ссылку, щелкнув правой кнопкой мыши

    Например, в файле README.md у меня есть заголовок:

## series expansion formula of the Boettcher function

, которая дает ссылку:

https://gitlab.com/adammajewski/parameter_external_angle/blob/master/README.md#series-expansion-formula-of-the-boettcher-function

Префикс можно удалить, поэтому ссылка здесь просто

file#header

что здесь означает:

README.md#series-expansion-formula-of-the-boettcher-function

Теперь его можно использовать как:

[series expansion formula of the Boettcher function](README.md#series-expansion-formula-of-the-boettcher-function)

Можно также сделать это вручную: заменить пробелы знаком дефиса.

Живой пример здесь

1 голос
/ 04 сентября 2016

Поскольку MultiMarkdown упоминается в качестве опции в комментариях.

В MultiMarkdown простой синтаксис внутренней ссылки.

Для любого заголовка в документе просто дайте название заголовка в этом формате [heading][], чтобы создать внутреннюю ссылку.

Подробнее здесь: MultiMarkdown-5 Перекрестные ссылки .

Перекрестные ссылки

Часто запрашиваемой функцией была возможность автоматической разметки Markdown внутри ссылок на документы так же легко, как и внешних ссылок. С этой целью я добавил возможность интерпретировать [Some Text] [] как перекрестную ссылку, если существует заголовок с именем «Some Text».

Например, [Метаданные] [] приведут вас к # Метаданным (или любым из ## Метаданных, ### Метаданных, #### Метаданных, ##### Метаданных, ###### Metadata).

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

### Обзор [MultiMarkdownOverview] ##

Это позволяет вам использовать [MultiMarkdownOverview] для ссылки на этот раздел специально, а не на другой раздел под названием Обзор. Это работает с заголовками в стиле atx или settext.

Если вы уже определили привязку, используя тот же идентификатор, который используется заголовком, тогда определенная привязка имеет приоритет.

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

1 голос
/ 09 февраля 2016

При использовании kramdown кажется, что это работает хорошо:

[I want this to link to foo](#foo)
....
....
{: id="foo"}
### Foo are you?

Я вижу, что упоминалось, что

[foo][#foo]
....
#Foo

работает эффективно, но первое может быть хорошей альтернативой для элементовкроме заголовков или заголовков с несколькими словами.

...