Bloc de code dans une liste numérotée (syntaxe Wiki)

86

Dans la syntaxe wiki de MediaWiki (wikipedia), existe-t-il un moyen d'avoir une liste numérotée avec un bloc de code au milieu?

Par exemple:

# Numéro 1
# Numéro 2
  Section en retrait qui deviendra un bloc de code
# Numéro 3
# Numéro 4

Ce qui se passe dans MediaWiki, c'est que vous vous retrouvez avec quelque chose comme ceci:

1. Numéro 1
2. Numéro 2
   Section en retrait qui deviendra un bloc de code
1. Numéro 3
2. Numéro 4

(Notez comment "Number 3" et "Number 4" sont réinitialisés comme 1 et 2 ... Il semble que StackOverflow est beaucoup plus intelligent que MediaWiki, j'ai dû mettre mon exemple dans les balises PRE pour le faire bousiller!)

Je sais que vous pouvez mettre du texte en retrait en utilisant la syntaxe "#:" ...

# Numéro 1
# Numéro 2
#: Section en retrait qui sera simplement en retrait
# Numéro 3
# Numéro 4

... mais j'aimerais vraiment avoir la même classe CSS visuelle pour mon code même s'il est dans une liste numérotée.

Cela devient encore plus amusant avec les listes imbriquées. Cette syntaxe ...

# MainEntry 1
## Numéro 1
## Numéro 2
# MainEntry 2
## Numéro 1
## Numéro 2
  Section en retrait qui deviendra un bloc de code
## Numéro 3
## Numéro 4

...devient...

1. MainEntry 1
   1. Numéro 1
   2. Numéro 2
2. MainEntry 2
   1. Numéro 1
   2. Numéro 2
      Section en retrait qui deviendra un bloc de code
1. 1. Numéro 3
   2. Numéro 4

(Notez comment "Numéro 3" est maintenant "1. 1.")

inanutshellus
la source
J'ai fait un exemple du problème ici: en.wikipedia.org/w/…
inanutshellus

Réponses:

72

Vous pouvez essayer la syntaxe wiki suivante, cela fonctionne pour moi sur 1.17

# one
#:<pre>
#::some stuff
#::some more stuff</pre>
# two

Ce n'est pas parfait, car vous vous retrouvez avec un retrait plus mais cela permet d'utiliser la syntaxe wiki pour des pré-blocs correctement formatés sur plusieurs lignes.

Comme mentionné précédemment, l'autre manière appropriée serait d'utiliser le balisage HTML.

<ol>
<li>one</li>
<li>two</li>
<pre>some stuff
some more stuff</pre>
<li>three</li>
</ol>
Kyle
la source
1
Cette syntaxe wiki a fonctionné pour moi sur MediaWiki 1.15.1. Cela met un peu d'espace supplémentaire autour des lignes de code, mais cela fonctionne.
Nick Chammas
1
J'ai utilisé la même syntaxe que vous avez suggérée pour les images dans des listes numérotées: #:[[File:image.jpg]]entre les éléments numérotés. Cela aide une tonne.
Michael Plautz
A travaillé pour moi sur MediaWiki 1.17; Merci!
Non
Je ne sais pas quelle version de MediaWiki nous utilisons, mais cela fonctionne. Il y a juste une mise en garde: si vous faites précéder les lignes «pré» d'une autre ligne #: indentée, par exemple pour un titre ou quelque chose, le «pré» ne s'affiche pas correctement.
anuragw
Ne fonctionne pas dans mediawiki utilisé par GitHub (voir l' exemple ici ). Utilisez plutôt la version HTML.
Jonathan Cross
34

Utilisez html:

<ol>
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ol>

cela fonctionnera dans mediawiki.

Remarque de l'exemple que j'ai posté ci-dessous, c'est le </li>qui le fait fonctionner correctement.

Adrian Archer
la source
J'ai édité votre exemple pour montrer comment cela fonctionnerait: en.wikipedia.org/w/...
Adrian Archer
C'est un problème connu avec la syntaxe wiki.
Adrian Archer
La réponse de Kyle devrait être acceptée. Si vous faites des listes imbriquées, il sera difficile d'utiliser du html. De plus, la réponse ci-dessus est enterrée dans l'ancienne page sandbox de wikipedia. Le texte réel dans la réponse Stackoverflow ci-dessus ne résout pas le problème de l'OP.
Non
15

Cela fonctionne très bien dans MediaWiki 1.17.0:

===Alternative way of using pre in numbered lists.===    
# Numbered line 1.
# Numbered line 2.<pre>code line 1&#10;code line 2</pre>
# Numbered line 3.

Le secret est de remplacer les nouvelles lignes par l'entité et de tout écrire sur une seule ligne.

John
la source
5
correct, mais cela ne fonctionne pas si vous ne voulez pas écrire tout votre code de bloc en une seule ligne
RockScience
13

Votre problème fait l'objet de deux bogues remplis dans le traqueur de bogues de MediaWiki fin 2004 et 2005:

Bogue 1115 - La nouvelle ligne comme terminateur d'élément de liste est gênante

Bogue 1584 - Méthode nécessaire pour les éléments de liste multiparagraphe, pour continuer les listes numérotées et attribuer des numéros spécifiques aux éléments de liste

En les lisant, vous trouverez que la solution est de ne pas utiliser la syntaxe MediaWiki mais de s'appuyer sur du HTML «pur».

Antoine 'hashar' Musso
la source
1
Nous avons également une page d' aide entière : Nouvelles lignes et espaces et une discussion spécifique de ce problème dans les insertions de balisage indépendantes de la liste .
Nemo
3

Je suggère une réponse différente: ne le faites pas.

J'ai essayé d'utiliser toutes les solutions de contournement pour ce problème de base de Mediawiki et j'ai constaté qu'elles étaient toutes très imparfaites. J'ai appris à vivre sans chiffres, et à la place:

  • Utilisez le splat (*) au lieu de (#) pour toutes mes listes
  • Continuer à utiliser l'espace de début pour tous mes blocs de code

C'est beaucoup plus simple et maintenable que n'importe quelle solution de contournement. En outre, l'utilisation de toute référence à un numéro est sujette à changement au fur et à mesure que les étapes sont modifiées - et cela devient alors un autre problème de maintenance.

humeur
la source
1

Dans l'exemple ci-dessus, la deuxième indentation (: :) n'est pas nécessaire.

Une seule indentation fonctionne correctement (:) comme suit:

# one
#:<pre>
#:some stuff
#:some more stuff</pre>
# two

Produit:

  • 1 un
       des trucs (juste un niveau d'indentation, pas deux)
       plus de trucs
  • 2. deux

  • Kory Lovre
    la source
    6
    J'ai trouvé la réponse de @ Kyle avec :: <pre> sur les lignes entre </pre> EST NÉCESSAIRE pour moi. Juste 1: comme tu le dis, ça n'a pas marché pour moi ...
    cellepo
    Cette réponse n'a pas fonctionné pour moi dans Mediawiki 1.17. Moi aussi, je trouve la réponse @Kyle nécessaire.
    Non
    -2

    Vous pouvez également essayer d'ajouter une balise "blockquote" entourant la balise "pre", ce qui lui donne un aspect un peu plus poli.

    == HAProxy Configuration ==
    #'''File:''' /etc/haproxy/haproxy.cfg
    <blockquote>
    <pre>
    global
      log 127.0.0.1 local1 notice
      maxconn 4096
      #daemon
      debug
      crt-base /usr/local/haproxy/ssl
    </pre>
    </blockquote>
    

    Ce qui indentera la case grise en ligne avec vos puces / numéros sans utiliser de deux-points.

    Mars
    la source
    1
    Cela ne fonctionne pas pour moi, même si je corrige l'ordre des balises de fermeture. Cela casse la numérotation de la liste.
    P.Péter
    Idem avec les listes non ordonnées (*). S'ils sont imbriqués, l'imbrication après le blockquote ne se poursuit pas correctement.
    Non