Пример: * 1932.
Удивительно, но это тоже работает: * 1917-32.
- 1917-32.
Я использую новейшую версию 3.3.0.beta3-dev без каких-либо плагинов.
Пример: * 1932.
Удивительно, но это тоже работает: * 1917-32.
Я использую новейшую версию 3.3.0.beta3-dev без каких-либо плагинов.
Используемая разметка
* 1932. тест смт
* 1933. снова сейчас тогда
Да, я вижу проблему, но это не кажется валидной разметкой Markdown. Я протестировал это в другом редакторе Markdown и столкнулся с аналогичной проблемой:
Вы можете избежать этого, убрав точку после числа. Например:
или исключив * в начале:
1932. тестирование
1933. тест второй строки
Но это работает только для последовательных лет:
2008. первый
2014. второй
2015. третий
Возможно, использование HTML вместо Markdown также может служить альтернативой:
<ul>
<li> 1997. первый</li>
<li> 2000. второй</li>
<li> 2015. третий</li>
</ul>
Это также ограничение Markdown. Протестировал GitHub и несколько других редакторов Markdown — все они по умолчанию создают нумерованные списки.
Удаление этого отступа с помощью CSS нормализует его.
li>ul, li>ol, .cooked li>ul, .cooked li>ol, .d-editor-preview li>ul, .d-editor-preview li>ol {
margin: 0; /* Удалите это */
}
12983298. one
2. test
Да, я видел это раньше. Мы используем сложные приёмы в CSS, которые в редких случаях нарушают это визуально.
Думаю, причина в том, что это можно использовать во вред. Возможно, @awesomerobot помнит.
хм, ещё один тест:
- 12983298\. one
- 2\. test
* 12983298\. one
* 2\. test
Очевидно, что число, за которым следует точка, даже если оно не является первым токеном в строке, будет восприниматься как нумерованный список.
Это происходит потому, что в Markdown, когда после числа ставится точка ., система предполагает, что это нумерованный список.
Таким образом, используя форматирование вроде * 1932., вы генерируете следующий HTML:
<ul>
<li>
<ol start="1932">
<li><!-- содержимое элемента --></li>
</ol>
</li>
<li>
<ol start="1933">
<li><!-- содержимое элемента --></li>
</ol>
</li>
</ul>
Технически это валидно, но выглядит странно и не является ожидаемым поведением.
Это происходит потому, что при добавлении дефиса - число перестает быть последовательным, поэтому система не распознает это как нумерованный список, и точка игнорируется.
Чтобы избежать этого, в идеале следует использовать один из следующих вариантов:
* 1932 (маркированный список, если числа не являются последовательными)
или
1932. (нумерованный список, если числа последовательные)
Если точка необходима, но список не должен быть нумерованным, можно экранировать точку . с помощью обратного слэша \ следующим образом:
* 1932\.
Это отдельная проблема, которая возникает и при использовании CSS браузера по умолчанию:
Маркер элемента в HTML-списке — это псевдоэлемент, который размещается до учёта отступов (padding/margin) списка, поэтому он всегда появляется за пределами «блока» контента. Даже при удалении отступов у списка маркеры будут выходить за его границы.
Например, если убрать отступы у списка и добавить свойство overflow: hidden для родительского контейнера, маркеры списка вообще не будут видны:
Таким образом, поскольку отступ, применяемый слева к списку, является статическим значением, а маркеры списка размещаются внутри этого отступа, в какой-то момент числа будут выходить за пределы видимой области.
Наши CSS-стили делают списки немного более компактными по горизонтали по сравнению со стандартными, и мы используем как левый отступ (margin), так и внутренний отступ (padding)… но результат в целом тот же:
Существует CSS-свойство list-style-position: inside, которое может изменить положение маркера, поместив его внутрь блока контента. Однако это означает, что вы больше не получите красивого выравнивания номеров:
list-style-position: outside; (по умолчанию):

list-style-position: inside; (маркер списка занимает место внутри контента)

Таким образом, чтобы корректно поддерживать нумерованные списки любой длины и не нарушать выравнивание контента, нам пришлось бы сделать что-то вроде… использовать JavaScript для определения количества цифр в маркере (начиная с первого числа в списке, затем подсчитать все элементы списка, чтобы определить длину) и применить достаточный отступ, чтобы вместить самое большое число.
Спасибо за отчет. Мы предоставили обходное решение, которое, по нашему мнению, должно помочь. В настоящее время мы не можем исправить все крайние случаи и пока закроем этот отчет.