Уценка: Как правильно создать непрерывный список внутри списка? - PullRequest
0 голосов
/ 09 января 2019

Как правильно создать непрерывный список внутри списка в GFM?

Цель:

  1. One
    1. один
    2. два
  2. Два
    1. три
    2. четыре

Я просмотрел обычные сообщения, касающиеся списков продолженных номеров и соответствующих вопросов , но еще никто не задавал этот вопрос.

1 Ответ

0 голосов
/ 09 января 2019

Технически, вы не можете. Markdown - это подмножество HTML, и HTML не предлагает такой возможности. Тем не менее, вы можете подделать его в HTML с помощью чего-то вроде <ol start="3">, что, по сути, заставляет список начинать нумерацию с 3 вместо значения по умолчанию 1.

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

Традиционные Правила уценки Состояние:

Важно отметить, что фактические цифры, которые вы используете для список не влияет на вывод HTML, который создает Markdown.

...

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

Из этого ясно, что желаемое поведение в настоящее время невозможно. Однако, если бы намекнули на изменение, все могло бы быть иначе ...

Как оказалось, Commonmark, который расширяет Github, поддерживает запуск упорядоченных списков с произвольного числа. Как указано в spec :

Начальный номер упорядоченного списка определяется номером списка его первоначального элемента списка. Номера последующих пунктов списка пренебрегли.

Учитывая вышесказанное, может показаться, что следующее даст желаемый результат:

1. One
    1. one
    2. two
2. Two
    3. three
    4. four 

Но, как показывает Babelmark , это работает только для нескольких реализаций (обратите внимание на реализации, которые включают <ol start="3"> в выводе).

Часть проблемы заключается в том, что родительский список содержит абзац (с содержанием Two) в строке непосредственно перед вложенным списком. Поэтому, если вы добавите пустую строку между различными элементами уровня блока, например:

1. One

    1. one
    2. two

2. Two

    3. three
    4. four

Тогда больше реализаций правильно увидят вложенный список. В частности, как показывает Babelmark , это заставляет Commonmark анализировать список по вашему желанию. Фактически, вы получите этот вывод (обратите внимание на <ol start="3">):

<ol>
    <li>
        <p>One</p>
        <ol>
            <li>one</li>
            <li>two</li>
        </ol>
    </li>
    <li>
        <p>Two</p>
        <ol start="3">
            <li>three</li>
            <li>four</li>
        </ol>
    </li>
</ol>

И, на самом деле, я проверил, и это правильно работает в GitHub.

...