Блок кода в нумерованном списке (синтаксис Wiki)


86

В синтаксисе wiki MediaWiki (wikipedia) есть ли способ иметь нумерованный список с блоком кода посередине?

Например:

# Номер 1
# Номер 2
  Раздел с отступом, который станет блоком кода
# Номер 3
# Номер 4

В MediaWiki происходит что-то вроде этого:

1. Номер 1
2. Номер 2
   Раздел с отступом, который станет блоком кода
1. Число 3
2. Номер 4

(Обратите внимание, как «Номер 3» и «Номер 4» сбрасываются как 1 и 2 ... Похоже, StackOverflow намного умнее, чем MediaWiki, мне пришлось поместить свой пример в теги PRE, чтобы он облажался!)

Я знаю, что вы можете делать отступ для текста, используя синтаксис "#:" ...

# Номер 1
# Номер 2
#: Раздел с отступом, который будет просто иметь отступ
# Номер 3
# Номер 4

... но мне бы очень хотелось получить тот же визуальный класс CSS для моего кода, даже если он находится в нумерованном списке.

С вложенными списками становится еще интереснее. Этот синтаксис ...

# MainEntry 1
## Номер 1
## Номер 2
# MainEntry 2
## Номер 1
## Номер 2
  Раздел с отступом, который станет блоком кода
## Номер 3
## Номер 4

... становится ...

1. MainEntry 1
   1. Номер 1
   2. Номер 2
2. MainEntry 2
   1. Номер 1
   2. Номер 2
      Раздел с отступом, который станет блоком кода
1. 1. Число 3
   2. Номер 4

(Обратите внимание, что «Номер 3» теперь «1. 1.»)


Ответы:


72

Вы можете попробовать следующий синтаксис вики, он работает для меня на 1.17

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

Это не идеально, потому что в итоге вы получите больший отступ, но он позволяет использовать синтаксис вики для правильно отформатированных предварительных блоков на нескольких строках.

Как упоминалось ранее, другим подходящим способом было бы использовать разметку HTML.

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

1
Этот синтаксис вики работал у меня в MediaWiki 1.15.1. Он добавляет немного дополнительного места вокруг строк кода, но работает.
Nick Chammas

1
Я использовал тот же синтаксис, который вы предложили для изображений в нумерованных списках: #:[[File:image.jpg]]между пронумерованными элементами. Это очень помогает.
Майкл Плаутц

У меня работал над MediaWiki 1.17; Благодарность!
Нет,

Я не уверен, какую версию MediaWiki мы используем, но это работает. Есть только одно предостережение: если перед строками 'pre' поставить другую строку с отступом #:, скажем, для заголовка или чего-то еще, 'pre' будет отображаться неправильно.
anuragw

Не работает в mediawiki, используемом GitHub (см. Пример здесь ). Вместо этого используйте HTML-версию.
Джонатан Кросс

34

Используйте html:

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

он будет работать в mediawiki.

Обратите внимание на пример, который я опубликовал ниже, это то, </li>что заставляет его работать правильно.


Я отредактировал ваш пример, чтобы показать, как он будет работать: en.wikipedia.org/w/…
Адриан Арчер

Это известная проблема синтаксиса вики.
Адриан Арчер,

Ответ Кайла должен быть принятым ответом. Если делать вложенные списки, будет сложно использовать html. Кроме того, приведенный выше ответ похоронен на древней странице песочницы в Википедии. Фактический текст в ответе Stackoverflow выше не решает проблему OP.
Нет,

15

Это отлично работает в 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.

Секрет в том, чтобы заменить символы новой строки на сущность и написать все в одной строке.


5
правильно, но это не сработает, если вы не хотите писать весь код блока в одной строке
RockScience

13

Ваша проблема связана с двумя ошибками, обнаруженными в системе отслеживания ошибок MediaWiki в конце 2004 и 2005 годов:

Ошибка 1115 - Новая строка как терминатор элемента списка вызывает затруднения.

Ошибка 1584 - Нужен метод для элементов списка, состоящего из нескольких абзацев, для продолжения нумерованных списков и присвоения определенных номеров элементам списка.

Прочитав их, вы обнаружите, что решение состоит в том, чтобы не использовать синтаксис MediaWiki, а полагаться на «чистый» HTML.


1
У нас также есть целая страница Help: Newlines and Spaces и конкретное обсуждение этой проблемы на странице List-agnostic markup Insert .
Nemo

3

Я предлагаю другой ответ: не делайте этого.

Я попытался использовать все обходные пути для этой основной проблемы Mediawiki и обнаружил, что все они очень несовершенны. Я научился жить без чисел, а вместо этого:

  • Используйте знак (*) вместо (#) для всех моих списков
  • Продолжать использовать начальное пространство для всех моих блоков кода

Это намного проще и удобнее, чем любой обходной путь. Кроме того, использование любой ссылки на номер может быть изменено по мере редактирования шагов, и это становится еще одной проблемой обслуживания.


1

В приведенном выше примере второй отступ (: :) не нужен.

Хорошо работает только один отступ (:) следующим образом:

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

Производит:

  • 1. один
       некоторые вещи (только один уровень отступа, а не два)
       еще кое-что
  • 2. два


  • 6
    Я нашел ответ @Kyle с :: <pre> в строках между </pre> НЕОБХОДИМО для меня. Только 1: как вы говорите, у меня не сработало ...
    cellepo

    Этот ответ не сработал для меня в Mediawiki 1.17. Я тоже считаю необходимым ответить @Kyle.
    Нет,

    -2

    Вы также можете попробовать добавить тег "цитата" вокруг тега "pre", чтобы он выглядел немного более изысканным.

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

    Что приведет к отступу серого поля в соответствии с вашими маркерами / числами без использования двоеточий.


    1
    У меня это не работает, даже если я исправлю порядок закрывающих тегов. Это нарушает нумерацию списка.
    P.Péter

    То же самое с неупорядоченными списками (*). Если они вложены, вложение после цитаты не продолжается правильно.
    Нет,
    Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
    Licensed under cc by-sa 3.0 with attribution required.