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)
Où MyTitle
est un titre dans le document, et cela n'a pas fonctionné.
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>
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.
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!)
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
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>
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.
Il n'y a pas une telle directive dans la spécification Markdown. Désolé.
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.
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.
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 :
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
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)