Je suis en train d’écrire un gros document Markdown et je voudrais placer au début une table des matières qui fournira des liens vers divers emplacements du document. Comment puis-je faire ceci?
J'ai essayé d'utiliser
[a link](# MyTitle)
où MyTitle
est un titre dans le document et cela n'a pas fonctionné.
Dans pandoc , si vous utilisez l'option --toc
pour produire du HTML, une table des matières, contenant des liens vers les sections, sera produite, et retourne à la table des matières des en-têtes de section. Il en est de même avec les autres formats écrits par Pandoc, tels que LaTeX, RTF, rst, etc. Ainsi, avec la commande
pandoc --toc happiness.txt -o happiness.html
ce peu de démarque:
% 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.
cédera 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:
[Custom foo description](#foo)
# Foo
Dans le cas ci-dessus, l'en-tête Foo
a généré une balise d'ancrage avec le nom foo
Note: un seul #
pour toutes les tailles d'en-tête, aucun espace entre #
et le nom de l'ancre, les noms de balises d'ancrage doivent être en minuscules et délimités par des tirets s'il y a plusieurs mots.
[click on this link](#my-multi-Word-header)
### My Multi Word Header
Fonctionne hors de la boîte avec pandoc
aussi.
En expérimentant, j'ai trouvé une solution en utilisant <div…/>
, mais une solution évidente consiste à placer votre propre point d'ancrage dans la page où vous le souhaitez, ainsi:
<a name="abcde">
avant et
</a>
after la ligne à laquelle vous souhaitez vous "lier". Puis un lien de démarcation comme:
[link text](#abcde)
n'importe où dans le document vous y emmène.
La solution <div…/>
insère une division "fictive" juste pour ajouter la propriété id
, ce qui peut potentiellement perturber la structure de la page, mais la solution <a name="abcde"/>
devrait être relativement inoffensive.
(PS: vous pouvez peut-être placer l'ancre in 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 remarque, par exemple, que le formateur de réponse Stack Overflow est satisfait de cela!)
Ce fil peut être obsolète, mais pour créer des liens de document internes dans Markdown dans Github, utilisez ...
(NOTE: #title minuscule)
# 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é posée alors j'ai corrigé ma réponse;
Un lien interne peut être créé vers n'importe quelle taille de titre à l'aide de - #
, ##
, ###
, ####
J'ai créé un exemple rapide ci-dessous ... https: //github.com/aogilvie/markdownLinkTest
oui, c'est ce que fait Markdown, mais vous devez spécifier le nom ancre <a name='xyx'>
.
un exemple complet,
cela crée le lien[tasks](#tasks)
plus tard dans le document, vous créez l’ancre nommée (quelle que soit sa dénomination).
<a name="tasks">
my tasks
</a>
notez que vous pouvez aussi 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 ceci par d'autres analyseurs, mais il a été rapporté que cela 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 (dans ce cas, #my-heading-text
). Les deux sont expliqués en détail dans le manuel de pandoc .
NOTE: Ceci seulement fonctionne lors de la conversion en HTML, LaTex , ConTeXt , Textile ou AsciiDoc .
Il n'y a pas de telle directive dans la spécification Markdown. Pardon.
Gitlab utilise GitLab Flavored Markdown (GFM)
Ici "tous les en-têtes rendus par Markdown ont automatiquement un identifiant"
On peut utiliser la souris pour:
copier et enregistrer le lien en utilisant le clic droit de la souris
Par exemple, dans le fichier README.md, j'ai un en-tête:
## series expansion formula of the Boettcher function
qui donne un lien:
Le préfixe peut être supprimé, le lien est simplement ici
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: remplacez les espaces par un trait d'union.
Exemple en direct: ici
Quelques points supplémentaires à garder à l’esprit si vous obtenez une fantaisie avec des symboles dans les en-têtes vers lesquels vous voulez naviguer ...
_# What this is about
------
#### Table of Contents
- [About](#what-this-is-about)
- [⚡ Sunopsis](#9889-tldr)
- [:gear: Grinders](#it-grinds-my-gears)
- [Attribution]
------
## ⚡ TLDR
Words for those short on time or attention.
___
## It Grinds my :gear:s
Here _`:gear:`_ is not something like ⚙ or ⛭
___
## ⛤ Attribution
Probably to much time at a keyboard
[Attribution]: #9956-attribution
_
... des choses comme _#
_, _;
_, _&
_ et _:
_ dans les chaînes d'en-tête sont généralement ignorées/rayées au lieu d'échappés, et on peut aussi utiliser citation des liens de style pour faciliter l'utilisation rapide.
Notes
GitHub supporte la syntaxe
:Word:
dans les commits, les fichiers Lisez-moi, etc. Voir Gist (de rxaviers) si leur utilisation y est intéressante .Et pour à peu près partout ailleurs, décimal ou hexadécimal peut être utilisé pour les navigateurs modernes; la feuille de triche de w3schools est très pratique , en particulier si vous utilisez des pseudo-éléments CSS _
::before
_ ou _::after
_ avec symboles plus ton style.
Juste au cas où quelqu'un se demanderait comment les images et autres liens d'un titre sont analysés dans un id
...
_- [Imaged](#alt-textbadge__examplehttpsexamplecom-to-somewhere)
## [![Alt Text][badge__example]](https://example.com) To Somewhere
[badge__example]:
https://img.shields.io/badge/Left-Right-success.svg?labelColor=brown&logo=stackexchange
"Eeak a mouse!"
_
Le rendu MarkDown diffère d'un endroit à l'autre, alors ...
_## methodName([options]) => <code>Promise</code>
_
... sur GitHub aura un élément avec id
tel que ...
_id="methodnameoptions--promise"
_
... où comme l'assainissement à la vanille entraînerait un id
de ...
_id="methodnameoptions-codepromisecode"
_
... signifiant que l'écriture ou la compilation de fichiers MarkDown à partir de modèles nécessite soit de cibler une méthode de slugifeing , soit d'ajouter des configurations et une logique de script pour les différents malins moyens qui permettent de nettoyer le texte de l'en-tête.
Depuis MultiMarkdown a été mentionné comme une option dans les commentaires.
Dans MultiMarkdown , la syntaxe d'un lien interne est simple.
Pour toute en-tête du document, indiquez simplement le nom de l'en-tête dans ce format [heading][]
pour créer un lien interne.
Lisez plus ici: MultiMarkdown-5 Cross-references .
Références croisées
Une fonctionnalité souvent demandée était la possibilité pour Markdown de gérer automatiquement les liens au sein d'un document aussi facilement que de gérer les liens externes. À cette fin, 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 mènera à # Metadata (ou à ## Metadata, ## Metadata, #### Metadata, ##### Metadata, ###### Metadata).
Vous pouvez également inclure une étiquette facultative de votre choix pour aider à lever l'ambiguïté des cas où plusieurs en-têtes ont le même titre:
### Overview [MultiMarkdownOverview] ##
Cela vous permet d'utiliser [MultiMarkdownOverview] pour faire référence à cette section en particulier, et non à une autre section appelée Vue d'ensemble. Cela fonctionne avec des en-têtes de style atx ou settext.
Si vous avez déjà défini une ancre à l'aide du même identifiant 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 tableaux, qui peuvent ensuite être utilisées pour les références croisées.
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 peut être une bonne alternative pour des éléments autres que les en-têtes ou les en-têtes comportant plusieurs mots.
Quelques tours supplémentaires sur l'astuce <a name="">
:
<a id="a-link"></a> Title
------
#### <a id="a-link"></a> Title (when you wanna control the h{N} with #'s)