Comment créer un lien vers une partie du même document dans Markdown?

J'écris un grand document Markdown et je voudrais placer une table des matières au début qui fournira des liens vers divers endroits dans le document. Comment puis-je faire cela?

J'ai essayé d'utiliser

[a link](# MyTitle)

MyTitle est un titre dans le document, et cela n'a pas fonctionné.

305
demandé sur jwpfox 2010-05-12 23:24:51

11 réponses

Dans pandoc , Si vous utilisez l'option --toc dans la production html, une table des matières sera produite avec des liens vers les sections, et retour à la table des matières à partir des en-têtes de section. Il est similaire avec les autres formats pandoc écrit, comme LaTeX, rtf, rst, etc. Donc, avec la commande

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

Ce peu de 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.

Donnera ceci comme le corps du 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>
33
répondu applicative 2012-05-27 23:31:34

Github analyse automatiquement les balises d'ancrage de vos en-têtes. Donc, vous pouvez faire ce qui suit:

[Foo](#foo)

# Foo

Dans le cas ci-dessus, la Foo - tête a généré une balise d'ancrage avec le nom foo

Note : juste un # pour toutes les tailles d'en-tête, pas d'espace entre # et le nom de l'ancre, les noms des balises d'ancrage doivent être minuscules et délimités par des tirets si plusieurs mots.

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

### My Multi Word Header

Mettre à jour

Fonctionne hors de la boîte avec pandoc trop.

473
répondu uberllama 2016-11-21 03:04:31

En expérimentant, j'ai trouvé une solution en utilisant <div…/> mais une solution évidente est de placer votre propre point d'ancrage dans la page où vous voulez, ainsi:

<a name="abcde">

avant de et

</a>

après la ligne que vous voulez "lien" à. Puis un lien markdown comme:

[link text](#abcde)

N'importe où dans le document vous y emmène.

La solution <div…/> insère une division "factice" juste pour ajouter la propriété id, ce qui est potentiellement perturbateur pour la structure de la page, mais la solution <a name="abcde"/> devrait être assez inoffensive.

(PS: il peut être correct de mettre l'ancre dans la ligne vers laquelle vous souhaitez créer un lien, comme suit:

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

Mais cela dépend de la façon dont Markdown traite cela. Je note, par exemple, que le formateur de réponse Stack Overflow est satisfait de cela!)

85
répondu Steve Powell 2017-06-08 15:53:33

Cela peut être un thread obsolète mais pour créer des liens de document internes dans markdown dans l'utilisation de Github...
(NOTE :minuscule # titre)

    # 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. 

Une bonne question a été faite alors j'ai édité ma réponse;

Un lien interne peut être fait à n'importe quelle taille de titre en utilisant - #, ##, ###, #### J'ai créé un exemple rapide ci-dessous... https://github.com/aogilvie/markdownLinkTest

56
répondu Ally 2014-02-27 02:08:28

Oui, markdown le fait mais vous devez spécifier le nom anchor <a name='xyx'>.

Un exemple complet,

Ce qui crée le lien
[tasks](#tasks)

Plus tard dans le document, vous créez l'ancre nommée (quel qu'il soit appelé).

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

Notez que vous pouvez également l'enrouler autour de l'en-tête.

<a name="tasks">
### Agile tasks (created by developer)
</a>
15
répondu davidj411 2015-06-11 19:13:41

Le manuel pandoc explique comment créer un lien vers vos en-têtes, en utilisant leur identifiant. Je n'ai pas vérifié le support de cela par d'autres analyseurs, mais il a été rapporté que ne fonctionne pas sur github .

, L'identifiant peut être spécifié manuellement:

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

Ou vous pouvez utiliser l'identifiant généré automatiquement. Les deux sont expliqués en détail dans le manuel pandoc .

NOTE: Cette seulement œuvres lors de la conversion de HTML, LaTex, Contexte, Textile ou AsciiDoc.

9
répondu hoijui 2017-06-20 10:24:48

Il n'y a pas une telle directive dans la spécification Markdown. Désolé.

7
répondu Nick Gerakines 2010-05-12 21:25:15

En utilisant kramdown, il semble que cela fonctionne bien:

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

Je vois qu'il a été mentionné que

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

Fonctionne efficacement, mais le premier pourrait être une bonne alternative pour les éléments en plus des en-têtes ou des en-têtes avec plusieurs mots.

1
répondu kevin change 2016-02-09 00:33:39

Depuis MultiMarkdown a été mentionné comme une option dans les commentaires.

Dans MultiMarkdown la syntaxe pour un lien interne est simple.

Pour tout en-tête du document, il suffit de donner le nom de l'en-tête dans ce format [heading][] pour créer un lien interne.

Lire la suite ici: MultiMarkdown-5 références Croisées.

Références Croisées

Une fonctionnalité souvent demandée était la possibilité D'avoir Markdown gérer automatiquement les liens dans le document aussi facilement qu'il a manipulé des liens externes. À cet effet, j'ai ajouté la possibilité d'interpréter [Some Text] [] comme un lien croisé, si un en-tête nommé "some Text" existe.

Par exemple, [Metadata][] vous amène à # Metadata (ou à l'une des # # Metadata, # # # Metadata, # # # # Metadata, # # # # # Metadata).

Vous pouvez également inclure une étiquette facultative de votre choix pour aider à désambiguïser les cas où plusieurs en-têtes ont le même titre:

# # # Aperçu [MultiMarkdownOverview] # #

Cela vous permet d'utiliser [MultiMarkdownOverview] pour vous référer spécifiquement à cette section, et non à une autre section nommée Overview. Cela fonctionne avec les en - têtes de style atx ou settext.

Si vous avez déjà défini une ancre en utilisant le même id que celui utilisé par un en-tête, l'ancre définie est prioritaire.

En plus des en-têtes dans le document, vous pouvez fournir des étiquettes pour les images et les tables qui peuvent ensuite être utilisées pour références croisées ainsi.

1
répondu jwpfox 2016-09-04 08:34:25

Gitlab utilise GitLab Aromatisé Markdown (GFM)

Ici "tous les en-têtes rendus par Markdown obtiennent automatiquement des identifiants"

On peut utiliser la souris pour :

  • déplacez la souris sur l'en-tête
  • déplacez la souris sur le sélecteur de survol qui devient visible à gauche de l'en-tête
  • Copiez et enregistrez le lien avec le bouton droit de la souris

    Par exemple dans README.md fichier j'ai en-tête:

## series expansion formula of the Boettcher function

Qui donne un lien :

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

Préfixe peut être supprimé de sorte que le lien ici est simplement

file#header

Ce qui signifie ici:

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

Maintenant, il peut être utilisé comme :

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

On peut aussi le faire manuellement: remplacer les espaces par un trait d'Union.

L'exemple en direct est ici

1
répondu Adam 2017-11-25 12:29:29

Quelques tours supplémentaires sur le truc <a name="">:

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

#### <a id="a-link"></a> Title (when you wanna control the h{N} with #'s)
0
répondu laggingreflex 2018-07-31 12:39:34