Blok kodu na liście numerowanej (składnia Wiki)


86

Czy w składni wiki MediaWiki (wikipedii) istnieje sposób na numerowanie listy z blokiem kodu pośrodku?

Na przykład:

# Numer 1
# Numer 2
  Wcięta sekcja, która stanie się blokiem kodu
# Numer 3
# Numer 4

To, co dzieje się w MediaWiki, to coś takiego:

1. Numer 1
2. Numer 2
   Wcięta sekcja, która stanie się blokiem kodu
1. Numer 3
2. Numer 4

(Zwróć uwagę, jak "Numer 3" i "Numer 4" są resetowane jako 1 i 2 ... Wygląda na to, że StackOverflow jest znacznie mądrzejszy niż MediaWiki, musiałem umieścić mój przykład w tagach PRE, aby to schrzanić!)

Wiem, że możesz wciskać tekst, używając składni „#:” ...

# Numer 1
# Numer 2
#: Wcięta sekcja, która będzie tylko wcięta
# Numer 3
# Numer 4

... ale naprawdę chciałbym uzyskać tę samą wizualną klasę CSS dla mojego kodu, nawet jeśli znajduje się na liście numerowanej.

Dzięki listom zagnieżdżonym robi się jeszcze ciekawiej. Ta składnia ...

# MainEntry 1
## Numer 1
## Numer 2
# MainEntry 2
## Numer 1
## Numer 2
  Wcięta sekcja, która stanie się blokiem kodu
## Numer 3
## Numer 4

...staje się...

1. MainEntry 1
   1. Numer 1
   2. Numer 2
2. MainEntry 2
   1. Numer 1
   2. Numer 2
      Wcięta sekcja, która stanie się blokiem kodu
1. 1. Numer 3
   2. Numer 4

(Zwróć uwagę, że „Numer 3” to teraz „1. ​​1.”)


Zrobiłem przykład problemu tutaj: en.wikipedia.org/w/…
inanutshellus

Odpowiedzi:


72

Możesz wypróbować następującą składnię wiki, na mnie działa 1.17

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

Nie jest to idealne rozwiązanie, ponieważ uzyskujesz większe wcięcie, ale pozwala na użycie składni wiki do poprawnie sformatowanych bloków wstępnych w wielu wierszach.

Jak wspomniano wcześniej, innym właściwym sposobem byłoby użycie znaczników HTML.

<ol>
<li>one</li>
<li>two</li>
<pre>some stuff
some more stuff</pre>
<li>three</li>
</ol>

1
Ta składnia wiki działała dla mnie w MediaWiki 1.15.1. Dodaje trochę dodatkowej przestrzeni wokół linii kodu, ale działa.
Nick Chammas,

1
Użyłem tej samej składni, którą zasugerowałeś dla obrazów w numerowanych listach: #:[[File:image.jpg]]między numerowanymi elementami. To pomaga tonie.
Michael Plautz

Pracował dla mnie na MediaWiki 1.17; Dzięki!
Nie,

Nie jestem pewien, której wersji MediaWiki używamy, ale to działa. Jest tylko jedno zastrzeżenie: jeśli poprzedzisz wiersze „pre” innym #: wiersz z wcięciem, powiedz tytuł lub coś, „pre” nie renderuje się poprawnie.
anuragw

Nie działa w mediawiki używanym przez GitHub (zobacz przykład tutaj ). Zamiast tego użyj wersji HTML.
Jonathan Cross

34

Użyj html:

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

będzie działać w mediawiki.

Uwaga z przykładu, który zamieściłem poniżej, to on </li>sprawia, że ​​działa poprawnie.


Zredagowałem Twój przykład, aby pokazać, jak to będzie działać: en.wikipedia.org/w/…
Adrian Archer

Jest to znany problem ze składnią wiki.
Adrian Archer

Odpowiedź Kyle'a powinna zostać zaakceptowana. Jeśli tworzysz listy zagnieżdżone, trudno będzie używać HTML. Dodatkowo powyższa odpowiedź jest zakopana w starożytnej piaskownicy Wikipedii. Rzeczywisty tekst w powyższej odpowiedzi Stackoverflow nie rozwiązuje problemu OP.
Nie,

15

Działa to dobrze w 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.

Sekret polega na zastąpieniu nowych linii encją i zapisaniu wszystkiego w jednej linii.


5
dobrze, ale nie działa, jeśli nie chcesz pisać całego kodu blokowego w jednej linii
RockScience

13

Twój problem jest przedmiotem dwóch błędów wypełnionych w narzędziu do śledzenia błędów MediaWiki pod koniec 2004 i 2005 roku:

Błąd 1115 - Nowa linia jako terminator pozycji listy jest kłopotliwa

Błąd 1584 - Potrzebna metoda dla elementów list z wieloma punktami, kontynuacja list numerowanych i przypisywanie określonych numerów do elementów listy

Czytając je, odkryjesz, że rozwiązaniem jest nie używanie składni MediaWiki, ale poleganie na „czystym” HTMLu.


1
Mamy również całą stronę Help: Newlines and spacje oraz szczegółowe omówienie tego problemu na stronie List-agnostic markup insertions .
Nemo

3

Sugeruję inną odpowiedź: nie rób tego.

Próbowałem zastosować wszystkie obejścia tego podstawowego problemu z Mediawiki i stwierdziłem, że wszystkie są bardzo niedoskonałe. Nauczyłem się żyć bez liczb, a zamiast tego:

  • Użyj ikony (*) zamiast (#) dla wszystkich moich list
  • Nadal używaj wiodącej spacji dla wszystkich moich bloków kodu

Jest to znacznie prostsze i możliwe do utrzymania niż jakiekolwiek obejście. Poza tym użycie jakiegokolwiek odniesienia do numeru może ulec zmianie w miarę edycji kroków - a to staje się kolejną kwestią związaną z konserwacją.


1

W powyższym przykładzie drugie wcięcie (: :) nie jest konieczne.

Tylko jedno wcięcie działa dobrze (:) w następujący sposób:

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

Produkuje:

  • 1 jeden
       trochę rzeczy (tylko jeden poziom wcięcia, a nie dwa)
       trochę więcej rzeczy
  • 2. dwa


  • 6
    Znalazłem odpowiedź @ Kyle'a z: <pre> na liniach między </pre> JEST dla mnie KONIECZNA. Tylko 1: jak mówisz, nie zadziałało dla mnie ...
    cellepo

    Ta odpowiedź nie działa dla mnie w Mediawiki 1.17. Ja również uważam, że odpowiedź @Kyle jest konieczna.
    Nie,

    -2

    Możesz także spróbować dodać tag „blockquote” otaczający tag „pre”, dzięki czemu będzie wyglądał na bardziej dopracowany.

    == 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>
    

    Co spowoduje wcięcie szarego pola zgodnie z punktorami / liczbami bez używania dwukropków.


    1
    U mnie to nie działa, nawet jeśli poprawię kolejność tagów zamykających. Przerywa numerację listy.
    P.Péter

    To samo z nieuporządkowanymi listami (*). Jeśli są zagnieżdżone, zagnieżdżanie po cytacie blokowym nie jest kontynuowane poprawnie.
    Nie,
    Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
    Licensed under cc by-sa 3.0 with attribution required.