Блок кода в нумерованном списке (синтаксис 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.