Как связать с частью того же документа в Markdown?

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

Я попытался с помощью

[a link](# MyTitle)

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

11 ответов


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

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

этот бит markdown:

% 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>

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

[Foo](#foo)

# Foo

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

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

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

### My Multi Word Header

обновление

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


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

<a name="abcde">

до и

</a>

после линия, на которую вы хотите "связать". Затем ссылка markdown, например:

[link text](#abcde)

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

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

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

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

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


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

    # 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


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

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

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

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

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

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

<a name="tasks">
### Agile tasks (created by developer)
</a>

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

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

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

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

Примечание: это только работает при преобразовании в HTML-код, латекс, контекст, текстильной или AsciiDoc.


в спецификации Markdown нет такой директивы. Извиняюсь.


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

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

Я вижу, было упомянуто, что

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

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


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

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

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

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

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

часто запрашиваемой функцией была возможность иметь Markdown автоматически обрабатывает ссылки внутри документа так же легко, как внешние ссылки. Для этой цели я добавил возможность интерпретировать [Некоторый текст][] как перекрестную ссылку, Если заголовок с именем "Некоторый текст" существует.

в качестве примера, [Metadata][] приведет вас к # Metadata (или любой из # # Metadata, # # # Metadata, # # # # Metadata, # # # # Metadata, ###### метаданные).

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

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

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

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

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


Гитлаб использует GitLab ароматизированный Markdown (GFM)

здесь "все заголовки с уценкой автоматически получают идентификаторы"

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

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

    например, в 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)

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

живой пример-это здесь


еще несколько спинов на <a name=""> трюк:

<a id="a-link"></a> Title
------

#### <a id="a-link"></a> Title (when you wanna control the h{N} with #'s)