Уценка: продолжить нумерованный список


475

В следующем коде уценки я хочу item 3начать с списка № 3. Но из-за блока кода между уценками этот элемент списка запускается как новый список. Есть ли способ предотвратить такое поведение?

Желаемый результат:

1. item 1
2. item 2

```
Code block
```

3. item 3

Произведенная продукция:

  1. пункт 1
  2. пункт 2

Code block

  1. пункт 3

4
Вот правильное решение . Тройные обратные пометки в ответе Macmade фактически создают <code>HTML-элемент с символами новой строки в нем, который не выделяется синтаксисом и имеет дополнительную пустую строку выше, заметно выделяющуюся как код.
Дан Даскалеску

1
Если вы действительно в отчаянии, вы можете найти коды символов HTML для чисел, которые вы хотите использовать (и для каждого последующего элемента) ... как в &#50;&#57;. this is list item number 29. Это может работать не во всех парсерах уценки.
Рой Тинкер

Ответы:


622

Используйте четыре пробела для отступа между пунктами

1. item 1
2. item 2

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

Производит:

  1. пункт 1
  2. пункт 2

    Code block

  3. пункт 3

5
Да, отступ дает понять парсеру, что блок кода принадлежит пункту 2 списка. В противном случае это просто обычный абзац, и он завершит список.
Macmade

42
Но ... что если ты не хочешь делать отступы там? У Markdown нет решения, насколько я знаю. Часто бывает естественным начинать список, затем останавливаться и предоставлять какой-то текст, который является мета-комментарием о списке - что мы только что сделали и что будет дальше - без того, чтобы текст логически не был частью списка - и затем продолжите список. Markdown не хочет, чтобы мы это делали. Это форма мысли, что Markdown не хочет, чтобы люди выражали - что Markdown не знает, как выразить, что Markdown считает слишком ... свободным. Инструменты должны следовать мысли. Вздох. Я мог бы писать в HTML или создавать PDF-файлы.
Марс

2
Кажется, не работает для меня вообще. У меня есть простой нумерованный список, с отступом и новой строкой, как показано выше. Все еще перезапускается в 1.
Рэй

10
В нескольких редакторах Markdown, которые я пробовал (Bitbucket, Tumblr), это не работает - он отображает встроенный код вместо правильно выделенного блока кода.
thdoan

2
В IntelliJ имеет значение, сколько пустых строк находится внизу каждого пронумерованного блока. Если вы оставите 2 пустые строки, это перезапустит нумерацию; оставьте только один, и это продолжается.
Ревень

36

Обратите внимание, что в решении Macmade вы можете увидеть дополнительную строку кода над «Блоком кода».

Вот два лучших решения:

  1. Отступ блока кода с дополнительными 4 пробелами (так обычно 8, в этом примере вложенного списка, 12). Это поместит код в <pre>элемент. На SO вы можете даже указать подсветку синтаксиса с
    <!-- language: lang-js -->отступом в 4 пробела (+1 здесь из-за вложенного списка).

    1. пункт 1
    2. пункт 2

      Code.block('JavaScript', maybe)?
    3. пункт 3

  2. Или просто поместите блок «Код» внутри обратных кавычек и сделайте отступ в 4 пробела (здесь, 1 дополнительный из-за вложенного списка). Вы получите обычный текстовый абзац с отступом, <code>внутри которого есть элемент. Этот, который вы не можете выделить синтаксис:

    1. пункт 1
    2. пункт 2

      Code block

    3. пункт 3

Примечание: вы можете нажать «изменить» в этом ответе, чтобы увидеть базовый код Markdown. Сохранять не надо;)


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

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

36

Как расширение существующих ответов. Для тех, кто пытается продолжить нумерованный список после чего-то, кроме блока кода. Например, второй абзац. Просто сделайте отступ во втором абзаце хотя бы на 1 пробел.

Markdown:

1. one
2. two

 three
3. four

Вывод:

  1. один
  2. два

    три

  3. четыре

1
Сладкий! У меня была серия блоков псевдокода и уравнений MathJax. Это было именно то, что мне было нужно.
xtian

Не работает на GitHub Wiki. Добавление большего количества пробелов, по крайней мере, сделает нумерацию того же типа, что и числа выше tho. : rofl:
Хаим Элия

1
@ChaimEliyah Это потому, что я на 99% уверен, что в вики не используется GitHub-ароматизированная уценка (я уверен, что раньше я сталкивался с этим любопытством)
DavidT

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

14

Если вы используете табуляцию для отступа блока кода, он объединит весь блок в одну строку. Чтобы избежать этого, вам нужно использовать упорядоченный список HTML.

  1. пункт 1
  2. пункт 2

Блок кода

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

13

Решение Macmade больше не работает для меня в моем экземпляре Jekyll на страницах Github, но я нашел это решение по проблеме для репозитория kramdown github. Для примера OP это будет выглядеть так:

1. item 1
2. item 2

```
Code block
```

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

Решил мои проблемы легко.


3
К сожалению, это не работает с файлами readme GitHub. :(
Nostalg.io

7

Источник;

<span>1.</span> item 1<br/>
<span>2.</span> item 2
```
Code block
```
<span>3.</span> item 3


Результат;

1. пункт 1
2. пункт 2 Code block 3. пункт 3


4

Если вы не хотите , чтобы линии между ними элементами списка с отступа, как пользователь Марс упомянул в своем комментарии, вы можете использовать pandoc«s example_listsфункцию. Из их документов :

(@)  My first example will be numbered (1).
(@)  My second example will be numbered (2).

Explanation of examples.

(@)  My third example will be numbered (3).

ДА! Это сработало отлично. Отлично сработано.
Джавадба

Это наиболее универсальное решение этой проблемы. Там нет необходимости делать отступы, и это даже работает, если у вас есть заголовки между элементами списка.
Лиллемец

В (@)соответствует глобальному продолжению списка (так что может быть только один , используя. pandoc«S startnumрасширение , которое вы можете создать упорядоченный список с номером вы хотите , и он просто работает.
Абид H. Муджтаб

2

Поместите номера списка в скобки, а не после точки.

(1) пункт 1
(2) пункт 2 code block (3) пункт 3


5
Это уничтожает <ol>и <li>элементы, и вместо этого просто оборачивает их в <p>теги. Кроме того, вы буквально получаете (1).
jmargolisvt

2
Я думаю, что это было намерением.
Гал

1

Я решил эту проблему на Github, разделив выделенный субблок новой строкой, например, вы пишете элемент 1, затем дважды нажимаете ввод (как если бы это был новый абзац), делайте отступ блока и пишите то, что вы хотите (блок кода, текста и т. д.). Более подробная информация о списках уценок и разрывах строк уценок .

Пример:

  1. пункт первый
  2. второй пункт

    this block acts as a new paragraph, above there is a blank line

  3. пункт третий

    some other code

  4. пункт четвертый

0

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

Например, расширение sane_lists в python-markdown (используется, например, в mkdocs) распознает числа, используемые в списках Markdown. Вам просто нужно включить это расширениеarkdown.markdown(some_text, extensions=['sane_lists'])


0

Если вы хотите, чтобы текст был выровнен по предыдущему элементу списка, но при этом не было «большого» разрыва строки, используйте два пробела в конце элемента списка и сделайте отступ в тексте с некоторыми пробелами.

Источник: (точки - пробелы ;-) конечно)

1.·item1··
····This is some text
2.item2

Результат:

  1. item1
    Это какой-то текст
  2. item2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.