Пунктуация приводит к неработоспособности жирного текста в Markdown

Привет. Хорошо
hello. да

Как указано выше, жирный шрифт не работает.

Привет. Хорошо

Привет. Хорошо

привет. Хорошо

Э? Неважно, использую ли я ** или кнопку B — текст получается жирным. То же самое происходит в редакторе Markdown и в RTE.

**Привет. Хорошо.**привет

Перед последним ** есть знак препинания, а за ним сразу следует текст. Попробуй.

Следующий формат не сработает
**+текст+знак препинания+**+текст

Привет. Хорошо. некоторый текст

И

Привет хорошо без знаков препинания

Но если мы не используем пробел после знака препинания и окончания **, происходит следующее:

**Привет хорошо.**текст
**Привет хорошо.**текст

В сравнении с

**Привет хорошо.** текст
Привет хорошо. текст

Я не знаю, является ли это ошибкой или особенностью Markdown, или чем-то еще.

Я считаю, что проблема не в знаках препинания перед звёздочками, а в тексте непосредственно после звёздочек без пробела.

с пунктуацией. пробел текст
**с пунктуацией.**без пробела текст

**с пунктуацией.** пробел текст
**с пунктуацией.**без пробела текст

Я знаю. Это стандартное поведение markdown. :slight_smile:

2 лайка

Это известная проблема в Markdown, и её нельзя исправить, если вы не можете изменить парсер Markdown

И моё обходное решение — использовать <span></span>

**是的。**<span></span>对的。 是的。对的。

Согласно спецификации CommonMark, ** может закрывать сильное выделение только в том случае, если оно является частью правостороннего последовательности разделителей. Разделитель, предшествуемый знаком препинания (.) и за которым следует буквенный символ (t), не является правосторонним, поэтому он не может закрывать выделение. markdown-it интерпретирует его как обычный текст. То же самое правило применяется к *, _ и __.

Думаю, мы не можем многого здесь поделать, мы следуем спецификации, но это выявило у нас ошибку в сериализаторе Markdown для расширенного редактора: если вы использовали интерфейс для создания такой ситуации (**text.**text), она отображалась корректно в расширенном редакторе, но при рендеринге превращалась в обычный текст. Этот PR решил эту проблему, исключая знаки препинания из выделенной области, так что получается text.text (**text**.text).

3 лайка

Эту ошибку всё ещё можно воспроизвести: знаки препинания выносятся наружу только после переключения в редактор Markdown.

Тест в визуальном редакторе: текст.текст

Это ожидаемое поведение: оно лишь предотвращает нарушение намеренного выделения в тексте, ценой исключения (почти незаметной) пунктуации из выделения при сериализации Markdown.

1 лайк