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


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.