Відмітка: продовжувати нумерований список


474

У наступному коді розмітки я хочу 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. Це може не працювати у всіх аналізаторах розмітки.
— Рой Тінкер

Відповіді:


621

Використовуйте чотири пробіли для відступу вмісту між точками кулі

1. item 1
2. item 2

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

Виробляє:

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

    Code block

  3. п. 3

5
Так, відступ дає зрозуміти аналізатору, що блок коду належить до пункту списку 2. В іншому випадку це просто звичайний абзац і завершить список.
— Macmade

42
Але ... що робити, якщо ви не хочете там відступ? Наскільки я знаю, Маркдаун не має рішення. Часто природно починати список, а потім зупинятись і надавати текст, який є мета-коментарем щодо списку - що ми тільки що зробили, і що буде далі - без того, щоб текст був, логічно, частиною списку - і потім продовжуйте список. Маркдаун не хоче, щоб ми це робили. Це форма думки, що Маркдаун не хоче, щоб люди висловлювались - що Маркдаун не знає, як висловитись, що Маркдаун вважає занадто ... вільним. Інструменти повинні слідувати думці. Зітхнути. Я міг писати в HTML або робити PDF-файли.
— Марс

2
Здається, це для мене зовсім не працює. У мене простий нумерований список, з відступом та новою лінією, як показано вище. Все ще перезапускається о 1.
— Рей

10
У кількох редакторах Markdown, які я спробував (Bitbucket, Tumblr), це не працює - він надає вбудований код замість правильно відрізаного блоку коду.
— thoan

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

Примітка. Ви можете натиснути "редагувати" в цій відповіді, щоб побачити базовий код Маркдана. Не потрібно економити;)


27
Це вирішення цієї конкретної проблеми, але це не загальне рішення проблеми перезавантаження списку Markdown на наступному номері після деякого інтервенційного тексту. Здається, що немає ніякого способу зробити це, що зводить мене з розуму. Все інше про Markdown - це чудово.
— Марс

@Марс, як видно з відповіді DavidT , загальним рішенням є відступ тексту з будь-якою кількістю пробілів. Наприклад, додавання одного простору замість чотирьох дозволить вставити будь-який інтервенційний текст без створення блоку коду.
— ClydeTheGhost

36

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

Відмітка:

1. one
2. two

 three
3. four

Вихід:

  1. один
  2. два

    три

  3. чотири

1
Солодке! У мене була серія блоків псевдокодів та рівнянь MathJax. Це саме те, що мені було потрібно.
— xtian

Не працює на GitHub Wiki. Додавання більшої кількості пробілів принаймні зробить нумерацію тим самим типом, що і цифри над тхо. : rofl:
— Хаїм Елія

1
@ChaimEliyah Thats тому, що я на 99% впевнений, що у вікі не використовується ароматизована відмітка GitHub (я впевнений, що я раніше стикався з цією цікавістю)
— DavidT

Це також допоможе вирішити ситуацію, коли у вас є запис у списку, який містить деякий текст, якийсь код та, нарешті, більше тексту до кінця запису.
— Фроц

14

Якщо ви використовуєте вкладку для відступу кодового блоку, він сформує весь блок в один рядок. Щоб уникнути цього, вам потрібно скористатися списком упорядкованих HTML.

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

Блок коду

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

13

Рішення Macmade більше не працює для мене в моєму екземплярі Джекілла на сторінках Github, але я знайшов це рішення в питанні репо для крамдаунського github repo. Для прикладу ОП це виглядатиме так:

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

Якщо ви не хочете, щоб рядки між елементами списку були відступними, як користувач Mars, згаданий у своєму коментарі, ви можете використовувати функцію 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).

ТАК! Це спрацювало чудово. Молодці.
— javadba

Це найбільш універсальне рішення цієї проблеми. Не потрібно відступати, і це навіть працює, якщо у вас є заголовки між елементами списку.
— lillemets

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

2

Поставте номери списку в дужки, а не крапку.

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


5
Це знищує <ol>і <li>елеми, а натомість просто загортає їх у <p>теги. Крім того, ви буквально отримуєте (1).
— jmargolisvt

2
Я думаю, що це був намір.
— Гал

1

Я вирішив цю проблему на Github, відокремлюючи відступний підблок новим рядком, наприклад, ви пишете пункт 1, потім двічі натискаєте клавішу Enter (наприклад, якщо це був новий абзац), відступаєте від блоку і записуйте те, що ви хочете (блок коду, тексту тощо). Більше інформації про списки Markdown та розриви рядків Markdown .

Приклад:

  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.