669 votes

Markdown : continuer la liste numérotée

Dans le code markdown suivant, je veux item 3 pour commencer avec la liste numéro 3. Mais à cause du bloc de code qui se trouve entre les deux, Markdown commence cet élément de liste comme une nouvelle liste. Existe-t-il un moyen d'empêcher ce comportement ?

Sortie souhaitée :

1. item 1
2. item 2

```
Code block
```

3. item 3

Sortie produite :

  1. point 1
  2. point 2

Code block

  1. point 3

4 votes

Voici le solution correcte . Les triples backticks dans la réponse de Macmade produisent en fait juste un <code> Élément HTML contenant des sauts de ligne, qui ne peut pas être mis en évidence par la syntaxe, et qui comporte une ligne vierge supplémentaire au-dessus, visiblement mise en évidence comme du code.

1 votes

Si vous êtes vraiment désespéré, vous pouvez rechercher les codes de caractères HTML pour les chiffres que vous souhaitez utiliser (et pour chaque élément suivant)... comme dans &#50;&#57;. this is list item number 29 . Cependant, cela peut ne pas fonctionner dans tous les analyseurs markdown.

866voto

Macmade Points 27414

Utilisez quatre espaces pour mettre le contenu en retrait entre les puces.

1. item 1
2. item 2

    ```
    Code block
    ```
3. item 3

Produit :

  1. point 1

  2. point 2

    Code block

  3. point 3

5 votes

Oui, l'indentation indique clairement à l'analyseur syntaxique que le bloc de code appartient à l'élément de liste 2. Sinon, c'est juste un paragraphe normal, et il terminera la liste.

0 votes

Je crois que j'ai trouvé une légère une solution plus élégante . Les triples backticks produisent en fait juste un <code> avec des retours à la ligne, ce qui ne peut pas être mis en évidence par la syntaxe, et afficher un retour à la ligne vide au-dessus.

0 votes

Cela fonctionne même avec des antisèches échappées dans le bloc de code ! Je n'arrive pas à croire, cependant, qu'il n'existe pas de moyen "normal" de faire cela, sans bidouillage.

51voto

DavidT Points 1848

En tant qu'extension des réponses existantes. Pour ceux qui essaient de poursuivre une liste numérotée après autre chose qu'un bloc de code. Par exemple, un deuxième paragraphe. Il suffit d'indenter le deuxième paragraphe d'au moins un espace.

Markdown :

1. one
2. two

 three
3. four

Output:

  1. un

  2. deux

    trois

  3. quatre

43voto

Dan Dascalescu Points 8165

Remarquez que dans la solution de Macmade, vous pouvez voir une ligne de code supplémentaire au-dessus du "Code block".

Voici deux meilleures solutions :

  1. Mettez le bloc de code en retrait de 4 espaces supplémentaires (normalement 8, dans cet exemple de liste imbriquée, 12). Cela placera le code dans un bloc <pre> élément. Sur SO, vous pouvez même spécifier coloration syntaxique avec un
    <!-- language: lang-js --> en retrait de 4 espaces (+1 ici en raison de la liste imbriquée).

    1. point 1

    2. point 2

      Code.block('JavaScript', maybe)?
    3. point 3

  2. Ou bien, il suffit de mettre le bloc de code entre guillemets et de l'indenter de 4 espaces (ici, 1 de plus à cause de la liste imbriquée). Vous obtiendrez un paragraphe de texte indenté normal, avec une balise <code> en son sein. Celui-ci ne peut pas être mis en évidence par la syntaxe :

    1. point 1

    2. point 2

      Code block

    3. point 3

Note : vous pouvez cliquer sur "modifier" sur cette réponse pour voir le code Markdown sous-jacent. Il n'est pas nécessaire de l'enregistrer ;)

39 votes

Il s'agit d'une solution pour ce problème particulier, mais ce n'est pas une solution générale au problème du redémarrage d'une liste Markdown au numéro suivant après un texte intermédiaire. Il semble qu'il n'y ait aucun moyen de le faire, ce qui me rend fou. Tout le reste de Markdown est génial.

0 votes

@Mars comme vous pouvez le voir sur La réponse de DavidT la solution générale est d'indenter le texte avec un nombre quelconque d'espaces. Par exemple, l'ajout d'un espace au lieu de quatre vous permettra d'insérer tout texte intermédiaire sans devoir créer un bloc de code.

25voto

KhalilRavanna Points 821

La solution de Macmade ne fonctionne plus pour moi sur mon instance Jekyll sur les pages Github mais j'ai trouvé cette solution sur un problème pour le repo github de kramdown. Pour l'exemple de l'OP, cela ressemblerait à ceci :

1. item 1
2. item 2

```
Code block
```

{:start="3"}
3. item 3

Il a résolu mes problèmes facilement.

20voto

user3505838 Points 193

Si vous utilisez la touche tabulation pour indenter le bloc de code, l'ensemble du bloc sera transformé en une seule ligne. Pour éviter cela, vous devez utiliser une liste ordonnée en html.

  1. point 1
  2. point 2

Bloc de codes

<ol start="3">
  <li>item 3</li>
  <li>item 4</li>
</ol>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X