fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Как выучить

Руководство по форматированию

Руководство по форматированию

Markdown – это формат, в котором пишется контент на Reddit. Это руководство по особенностям формата Reddit Markdown, обновленное для нового Reddit и актуальное на 19 сентября 2018 года.

Об этом документе

Текстовый контент на Reddit – комментарии, самопосты и прочее – представлен в виде специфической для Reddit разновидности формата Markdown, и этот формат изменился в New Reddit, как в том, как он разбирается, так и в том, как он отображается. Это руководство по Reddit-flavored Markdown, объясняющее в целом, как оформлять контент на новом Reddit, и конкретно определяющее области, в которых New Reddit-flavored Markdown отличается от Old Reddit-flavored Markdown.

Те, кто отправляет контент исключительно через стандартный редактор “Fancy Pants” на New Reddit, не сталкиваются с деталями, описанными здесь. Для использования Reddit не нужно знать ничего из этой информации – Fancy Pants – это текстовый редактор, который предоставляет все обычные опции форматирования, такие как жирный шрифт, курсив, списки и т.д.

Внутри примеры представлены в виде пар, показывающих сначала, как Markdown написан в редакторе, а затем как он отображается, или представлен на экране. Важные замечания New Reddit о различиях между New Reddit-flavored Markdown и Old Reddit-flavored Markdown выделены курсивом в абзацах, помеченных хрустальным шаром ( ), а общие советы – флер-де-лисом (⚜️).

Краткая справка

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

Написано Воспроизведено
_italic_ или *italic* курсив
__жирный__ или **жирный** полужирный
___жирный-италический___ или ***жирный-италический*** полужирный
~~зачеркнутый~~ зачеркнутый
>спойлеры!

спойлеры
^superscript или ^(superscript) суперскрипт
`код` код
Написано Воспроизведено
r/announcements r/announcements
u/reddit u/reddit

Написано

Изображено

Написано

Изображено

Заголовок 1

Заголовок 2

Написано

Изображено

Написано

Изображено

Lorem blockquote dolor sit amet, consectetur adipiscing elit. Sed ullamcorper enim libero, ut luctus lorem ultricies ut. Aenean sed nulla a mauris posuere aliquam bibendum id ipsum. Fusce non augue mollis, dictum libero sed, blockquote enim.

Написано

Изображено

заголовок заголовок заголовок заголовок
материал материал материал материал

Написано (обратите внимание на отступ) :

Изображено

Где использовать Markdown на Reddit

Контент в формате Markdown может быть представлен на Reddit в нескольких местах. В основном Markdown используется в самотексте сообщения (тело текстового сообщения) и в комментариях.

Когда вы отправляете текстовый пост или комментарий в New Reddit, по умолчанию вы отправляете контент без Markdown через WYSIWYG-редактор “Fancy Pants” (по крайней мере, на настольном компьютере – на мобильных платформах ситуация может быть иной). Если вместо этого вы нажмете “Переключиться на markdown” на экране отправки сообщения, то вы отправите

например,

  • Существуют значительные различия в поддержке этих последних случаев между старым Reddit и новым Reddit, старым парсером Markdown и новым парсером Markdown. Подробнее см. раздел “Различия в поддержке контента между старым Reddit и новым Reddit”.
    • Markdown со вкусом Reddit
    • Абзацы и переносы строк
    • Абзацы на Reddit пишутся как строки текста, разделенные пустыми строками.
    • Записано :

    Изображено

    Далеко в неизведанных захолустьях немодного конца западного спирального рукава Галактики находится маленькое желтое солнце, на которое никто не обращает внимания.

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

    У этой планеты есть – или, скорее, была – проблема, которая заключалась в следующем: большинство людей на ней были несчастливы большую часть времени. Было предложено много решений этой проблемы, но большинство из них в основном касались движения маленьких зеленых кусочков бумаги, то есть движения маленьких зеленых кусочков бумаги, что странно, потому что в целом не маленькие зеленые кусочки бумаги были несчастны.

    Написано

    Изображено

    Воспроизведено

    Любовь – это целое. Мы – лишь части.

    Написано (обратите внимание на расположение и направление слеша):

    Воспроизведено :

    За пределами представлений о плохом и хорошем есть поле. Я встречу тебя там.

    Изображено

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

    Записано :

    Изображено

    Будьте свободны от забот. Подумайте о том, кто создал мысль!

    Почему вы остаетесь в тюрьме, когда дверь так широко открыта?

    ⚜️ Совет: Чтобы вставить пустые строки, нужно создать абзац, в котором нет ничего, кроме “пробела без разрыва”.

    Написано

    Изображено

    Будьте пусты от забот. Подумайте о том, кто создал мысль!

    Почему вы остаетесь в тюрьме, когда дверь так широко открыта?

    Это   своего рода сущность HTML, полезная для различных “трюков” в Markdown.

    Написано

    Изображено

    Будьте пусты от забот. Подумайте о том, кто создал мысль!

    Почему вы остаетесь в тюрьме, когда дверь так широко открыта?

    Только ошибка, а не истина, уклоняется от исследования.

    Полужирный текст представлен в окружении текста двойными звездочками ( ** ) или двойным подчеркиванием ( __ ).

    Написано

    Написано

    Изображено

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

    Написано :

    Написано

    Изображено

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

    Написано

    Написано

    Изображено

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

    Написано

    Rendered :

    Написано

    Изображено

    Написано

    Воспроизведено~~ ).

    Написано

    Изображено

    Написано

    Spoilers can be hidden as spoilertext by surrounding text with > Изображено :< .

    Написано

    Изображено

    Написано

    Воспроизведено

    Написано

    Изображено

    Rendered :

    Величайшая вещь, которую вы когда-либо узнаете, это просто reddit и быть reddited в ответ.

    Написано

    Изображено

    Написано

    Величайшая вещь, которую вы когда-либо узнаете, – это reddit и быть reddited в ответ.

    Написано

    Изображено

    Написано

    Написано

    Изображено

    Написано

    Написано

    Изображено

    Написано

    r/announcements

    r/announcements

    Написано Воспроизведено
    u/reddit u/reddit
    Рендеринг : Рендеринг :
    r/announcements r/announcements
    Воспроизведено Воспроизведено
    u/reddit u/reddit

    Заппа< , >).

    Написано

    Изображено

    [Твен](https://en.wikipedia.org/wiki/Mark_Twain (Марк Твен – Википедия))

    Твен

    Написано Воспроизведено
    Написано Изображено:
    Для счастливой жизни нужно совсем немного: все находится внутри вас, в вашем образе мышления. По умолчанию имя ссылки совпадает с текстом в скобках, но ссылка может быть названа явно во втором ряду скобок, как, например, [образ мышления][wot] . Как и инлайн-ссылки, ссылочные ссылки могут иметь заголовки.
    ⚜️ Совет: Ссылки в стиле ссылок особенно полезны для сокращения текста с большим количеством ссылок. Записано :
    Отрисовано : Где-то в Ла-Манче, в местечке, название которого я не хочу запоминать, жил не так давно джентльмен, один из тех, у кого на полке стоят копьё и старинный щит и кто держит тощую клячу и борзую для гонок.

    ⚜️ Совет: Обратите внимание, что ссылки могут содержать круглые скобки, только если они “сбалансированы” – то есть, если после каждого “(” следует “)”. Чтобы сделать ссылку на URL с несбалансированными круглыми скобками, либо экранируйте скобки обратной косой чертой (“”), либо используйте альтернативный синтаксис ссылки, заключив URL в сопоставленные угловые скобки “”.

    Записано :

    Написано

    Изображено

    Написано : Восстановлено :

    На Reddit ссылки обычно должны включать схему URI, например “https://”, поэтому вместо [a](www.example.com) пишите [a](https://www.example.com).

    Полный набор префиксов, принимаемых в URL, таков: “http://”, “https://”, “ftp://”, “mailto:”, “git://”, “steam://”, “irc://”, “news://”, “mumble://”, “ssh://”, “ircs://”, “ts3server://”, “/”, “#”.

    Написано

    Изображено

    Записано

    Воспроизведено

    Написано

    Изображено

    Написано

    Изображено

    Порядок

    Семейство

    Заголовки уровней 1 и 2 можно также написать, подчеркнув текст заголовка знаками “=” и “-” соответственно.

    Записано

    Написано

    Изображено

    Королевство

    Списки

    Списки могут быть неупорядоченными (маркированными) или упорядоченными (нумерованными).

    Неупорядоченные списки состоят из строк, которым предшествует один из символов “-” или “*”.

    Записанные
    Записано

    Написано :

    Написано

    Изображено

    Королевство

    Списки

    Написано :

    Упорядоченный :

    Примечание New Reddit : Использование “)” для определения упорядоченных списков работает только в New Reddit. Для совместимости со старым Reddit используйте “.”.

    Написано

    Изображено

    Написано

    Изображено

    Рендеринг :

    Написано

    Изображено

    Написано

    Изображено

    Иллиада

    Одиссея

    Агамемнон

    Несущие возлияние

    Написано

    Изображено

    Списки могут содержать собственные абзацы, блочные цитаты и другие типы содержимого.

    Написано

    Изображено

    • Прежде всего: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      • Fusce hendrerit, nunc quis rhoncus tristique, neque augue ornare enim, ut aliquam libero diam et ligula. Aliquam sagittis sem sed rutrum luctus. Nunc massa est, egestas eget massa id, lacinia pretium dui. Nam eget consequat eros, eget commodo urna.
      • Но во-вторых: Phasellus vitae libero sit amet orci tempor lacinia sed at tellus. Curabitur sit amet nibh elit. Quisque pulvinar odio sapien, et condimentum velit convallis et.
      • Факты о губах
      • Lorem
      • Ipsum

      Dolor

      Aenean at dui in sapien sagittis sodales.

      Написано

      Изображено

        Написано

        Восстановлено:

      Так трудно забыть боль, но еще труднее помнить сладость. У нас нет шрама, чтобы показать счастье. Мы так мало учимся у мира.

      как выше, и все это будет заключено в кавычки.

      Написано Изображено Прежде всего: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      8 1 3
      3 7 8

      Но во-вторых: Phasellus vitae libero sit amet orci tempor lacinia sed at tellus. Curabitur sit amet nibh elit. Quisque pulvinar odio sapien, et condimentum velit convallis et.

      Факты о губах

      Lorem

      Blockquotes provide a way to emphasize larger amounts of text, typically used in response comments for quoting others’ comments. They are created by beginning a line with a right pointy-bracket ( > ).

      Написано

      Изображено

      Aenean at dui in sapien sagittis sodales.

      For simple quotes, it’s sufficient just to begin the first line of a paragraph with >Таблицы

      For more complex blockquotes, precede every line with > .

      Написано

      Изображено

      • Написано

      • Так трудно забыть боль, но еще труднее помнить сладость. У нас нет шрама, чтобы показать счастье. Мы так мало учимся у мира.

      как выше, и все это будет заключено в кавычки.

      Написано Изображено Прежде всего: Lorem ipsum dolor sit amet, consectetur adipiscing elit.
      8 1 3
      3 7 8

      Но во-вторых: Phasellus vitae libero sit amet orci tempor lacinia sed at tellus. Curabitur sit amet nibh elit. Quisque pulvinar odio sapien, et condimentum velit convallis et.

      ETH

      $1000

      Написано

      Изображено

      $10000 $-5000 Вторая строка таблицы, заполненная тире, является маркерной строкой, и она определяет выравнивание текста в колонке. Колонки в маркерной строке, начинающиеся с символа :, выравниваются по левому краю; колонки, заканчивающиеся символом :, выравниваются по правому краю; колонки, начинающиеся и заканчивающиеся символом :, выравниваются по центру; колонки, содержащие все тире, выравниваются по умолчанию (по левому краю).
      Написано Отрисовано Тикер
      Инвестиции Прибыль BTC
      $100 $-50 ETH

      $1000

      Написано

      Изображено

      $10000 $-5000 Вторая строка таблицы, заполненная тире, является маркерной строкой, и она определяет выравнивание текста в колонке. Колонки в маркерной строке, начинающиеся с символа :, выравниваются по левому краю; колонки, заканчивающиеся символом :, выравниваются по правому краю; колонки, начинающиеся и заканчивающиеся символом :, выравниваются по центру; колонки, содержащие все тире, выравниваются по умолчанию (по левому краю).
      Написано Отрисовано Тикер
      Инвестиции Прибыль BTC
      $100 $-50 ETH

      $1000

      Написано

      Изображено

      $10000 $-5000 Вторая строка таблицы, заполненная тире, является маркерной строкой, и она определяет выравнивание текста в колонке. Колонки в маркерной строке, начинающиеся с символа :, выравниваются по левому краю; колонки, заканчивающиеся символом :, выравниваются по правому краю; колонки, начинающиеся и заканчивающиеся символом :, выравниваются по центру; колонки, содержащие все тире, выравниваются по умолчанию (по левому краю).
      Написано Отрисовано Тикер
      Инвестиции Прибыль BTC
      $100 $-50 ETH

      Примечание New Reddit: блоки кода с отступами – единственная форма блока кода, которая работает на старом Reddit. Используйте их для совместимости.

      Вводить четыре пробела перед каждой строкой в блоке кода утомительно и чревато ошибками. Более простой способ – окружить весь блок кода кодовыми ограждениями. Кодовое ограждение – это строка, начинающаяся с трех или более обратных знаков ( ` ) или трех или более черточек (

      Записано :

      Рендеринг :

      Написано

      Изображено

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

      ⚜️ Совет: Когда инлайн-код сам содержит обратный знак, или блок кода с ограждением сам содержит ограждение кода, внутренние обратные знаки и ограждения могут привести к тому, что область кода закроется раньше времени. В этих случаях ограждения могут быть скорректированы, чтобы приспособить код. Остальная часть этого раздела посвящена работе с угловыми случаями.

      Написано

      Изображено

      Рендеринг :

      Это кодовый забор внутри кодового забора (т.е. блок кода Markdown, содержащий пример Markdown), и он не отображается так, как нужно – код внутри внутреннего кодового забора вообще не отображается как код. Вместо этого код отображается как обычный текст, окруженный двумя блоками кода.~ ).

      Написано

      Изображено

      Написано

      Изображено

      Написано :

      Восстановлено :

      Для встроенного кода также существует аналогичный прием: встроенный код может быть окружен любым количеством обратных знаков, при этом открывающий и закрывающий знаки должны совпадать. Поэтому, если нужно поставить один обратный знак внутри инлайн-кода, можно просто окружить код двумя обратными знаками, например, “это вот здесь – “это обратный знак“.

      Написано

      Изображено

      Rendered

      “пример инлайн-кода“.~пример инлайн-кода

      Написано

      Изображено

      Написано

      Изображено

      “пример инлайн-кода“

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

      Написано Воспроизведено
      Тематический разрыв, он же “правило горизонтали”, – это просто горизонтальная линия, проведенная через всю страницу. Она может использоваться для визуального разделения контента. Тематический разрыв записывается как линия, содержащая три или более звездочек ( * ), тире ( – ) или знаков подчеркивания ( _ ). Написано

      Изображено

      Написано Воспроизведено
      Написано : Изображено :

      Вот реальный попугай на вечеринке.

      Здесь обман, разложение и – в конечном итоге – смерть.

      Написано

      Изображено:

      Написано

      Изображено

      Другие советы и рекомендации

      Экранирование синтаксиса Markdown

      Написано

      Изображено

      Написано

      Изображено

      Написано

      Изображено

      Написано

      Отрисовано

      Я почувствовал, как мои легкие раздуваются от наплыва пейзажей – воздуха, гор, деревьев, людей. Я подумал: “Вот что значит быть счастливым”.

      Другой распространенный случай, когда необходимо убегать, возникает при использовании круглых скобок в ссылках.

      Написано

      Рендеринг

      Написано

      Изображено

      • HTML-сущности

      Markdown поддерживает сущности HTML, такие как относительно распространенный   для “неразрывного пробела”. Они могут быть “escape-hatch” для написания труднопредставимого содержимого. Например,   часто используется для вставки “пустых” абзацев, обеспечивая вертикальный пробел там, где Markdown иначе не позволяет.

      Написано

      Изображено

      Тире вставляется с помощью — . Это более длинное тире, чем обычный дефис, и является правильным символом для разделения пунктов в предложениях.

      Различные символы пробелов, не относящиеся к кодировке ASCII, можно использовать для вставки пробелов там, где Markdown иначе не позволил бы этого сделать. Если вы хотите просто ввести произвольное количество пробела между двумя словами, вы можете это сделать – например, вставив несколько символов “пробел” (   ).

      Написано

      Изображено

      (Небольшое замечание: этому разделу не помешала бы помощь авторов ботов!)

      Изображено

      Зачеркивайте все круглые скобки в URL ссылок (не автоссылок), например [text]) . Круглые скобки должны быть сбалансированы, иначе они не будут разобраны как ссылки, поэтому простого экранирования всех круглых скобок достаточно, чтобы все ссылки с круглыми скобками были разобраны правильно.

      В качестве альтернативы используйте синтаксис заостренных скобок для URL ссылок ( [text]() , который допускает несбалансированные скобки. Однако в этом случае вы должны URL-эскейпировать заостренные скобки, как %3C и %3E .

      Если вы размещаете автоссылки (необработанные URL-адреса без синтаксиса скобок), подумайте о том, чтобы заключить их в остроконечные скобки (

      ), а URL-адреса, заключенные в заостренные скобки, оформите как %3C и %3E . Это позволит избежать двусмысленности при разборе, особенно в конце автоссылок. Обратите внимание, что даже в скобках автоссылки не могут содержать пробелы, поэтому URL-экранируйте их как %20.

      • Просто нет способа избежать экранирования при размещении произвольных ссылок в качестве бота, если вы хотите, чтобы все URL были разобраны как положено. Подробности разбора ссылок приведены в спецификации.
      • Новый и старый парсер по-разному относятся к HTML-эскейпам (а-ля   ) – старый сохраняет их как в тексте, так и в ссылках; новый снимает эскейп во время разбора, чтобы клиенты (многие из которых не являются веб-браузерами) не сталкивались с ними. Это справедливо как для текста, так и для ссылок, и так указано в CommonMark. Мы не понимаем т.

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

      Некоторые из рекомендаций “просты”, потому что их эквиваленты так же хороши в старом Reddit; некоторые “неудачны”, потому что они, ну, предпочитают менее приятный синтаксис.

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

      С другой стороны, если вас не волнует форматирование на старом Reddit, то делайте все наоборот!

      Простые рекомендации по совместимости

      Используйте кавычки для заголовков ссылок, например [text] “title”) (в отличие от круглых скобок для заголовков ссылок). Старый Reddit не поддерживает круглые скобки.

      Начинайте и заканчивайте столбцы таблицы символами трубы ( | ). Технически они необязательны, но иногда случаются неожиданности при разборе, когда они не используются. И старый Reddit, и новый Reddit имеют различные причуды.< >Разделять упорядоченные списки точками вместо круглых скобок – например, ( 1. Первый ). Старый Reddit не поддерживает последнее.

      Разделяйте неупорядоченные списки знаками – или *, а не +. Новый Reddit в настоящее время не поддерживает последнее.

      Неудачные рекомендации по совместимости

      Используйте двойные пробелы вместо обратного слэша для обозначения жесткого переноса строки. Старый Reddit поддерживает только двойные пробелы.

      Используйте блоки кода с отступами вместо ограждений кода. Старый Reddit поддерживает только блоки кода с отступами.

      Не используйте вложенные подчеркивания типа _это __очень_важно_ . Да, вы угадали: это не работает в Old Reddit.

      Не используйте несколько уровней надстрочных знаков (они же “башни”). Это не работает в новом Reddit (по крайней мере, пока).

      Продолжайте использовать распространенные хаки, чтобы сделать надстрочный индекс поддерживающим пробелы, например, надписывать каждое слово или соединять их экзотическими символами пробела Unicode (либо  , либо ​ . Избегайте синтаксиса надстрочных знаков в круглых скобках, ^(. ) – его часто неправильно разбирают на старом Reddit.

      Подробнее о Markdown на Reddit

      Новый парсер уценки Reddit, snoomark, является вариацией GitHub-flavored Markdown (GFM), основанной на CommonMark, с расширениями GFM table и autolink, а также модифицированным расширением strikethrough. Он также включает специфические для Reddit расширения и специфические для Reddit причуды совместимости, которые отличаются от CommonMark.

      snoomark – это последующий проект проекта comrak, который, в свою очередь, является повторной реализацией cmark-gfm, реализации CommonMark с расширениями GitHub (GFM), которая, в свою очередь, является последующим проектом cmark, эталонной реализации CommonMark. snoomark сам по себе не является (пока) открытым исходным кодом, но изменения в comrak регулярно сливаются в snoomark.

      По мере того, как все больше участников Reddit начали использовать инструменты создания и форматирования постов на Новом Reddit, философия поддержки Markdown менялась – первоначально планировалось перейти на что-то приближенное к CommonMark и отказаться от совместимости со “странностями” Старого Reddit; но по мере развертывания эта позиция смягчалась.

      Рендеринг Markdown в новом Reddit заметно отличается от старого Reddit и от большинства сайтов, потребляющих Markdown, тем, что он не выводится непосредственно в HTML из Markdown, а используется промежуточный, запатентованный Reddit формат документа под названием RTJSON (“Rich Text JSON”). Этот формат разработан таким образом, чтобы его могли легко воспринимать и отображать все клиенты Reddit, как веб-, так и мобильные, в то время как в старом Reddit мобильные клиенты испытывали различные трудности с последовательным отображением контента в формате Markdown. Подробности формата RTJSON в настоящее время не опубликованы.

      Обоснование перехода на CommonMark

      Новый парсер был создан потому, что старый парсер было трудно поддерживать, он содержал критичный к безопасности код на языке C, и добавлять в него новые функции было непомерно сложно. Новый парсер написан не на языке C и поэтому более удобен в обслуживании. Кроме того, перепроектирование требовало новых функций и возможности добавления новых функций в будущем.

      Скорость разработки старого парсера была фактически равна 0. Новый парсер получает изменения по мере необходимости, и большинство изменений не требуют проверки безопасности.

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

      Новый Reddit Markdown также получил несколько новых удобств, унаследованных от CommonMark, в частности, переносы строк с завершающим обратным слешем и блоки кода, разграниченные ограждениями вместо отступов. В переходный период они, конечно, не совместимы со старым Reddit, но в конечном итоге мы ожидаем, что их можно будет использовать “безопасно”, не слишком беспокоясь о совместимости – мобильные клиенты уже понимают вывод нового парсера; не понимает (пока) только старый веб-клиент.

      Вероятно, единственной серьезной альтернативой переходу на CommonMark было бы полное переписывание старого парсера на безопасном языке с сохранением всех специфических для Reddit причуд. Предположительно, это не было сочтено желательным, как из-за непомерного количества необходимых усилий, так и потому, что это не устроило бы никого, кроме Reddit. Новый парсер, с другой стороны, основан на активно поддерживаемом парсере CommonMark, что полезно для всех, кто хочет разбирать CommonMark. В конечном счете, поведение, больше похожее на CommonMark, обеспечит более удобный опыт для тех, кто использует CommonMark в других местах, в основном для технически подкованных, поскольку подавляющее большинство пользователей New Reddit используют редактор Fancy Pants. Теперь Reddit может участвовать в сообществе разработчиков CommonMark (и это уже повлияло на реализацию и спецификацию CommonMark). И опять же, сочетание сопровождаемого кода

      Отличия от Old Reddit часто наследуются в CommonMark. Обратите внимание, что те, кто хочет, чтобы их контент точно отображался для пользователей Old Reddit, могут не использовать эти особенности. (См. также “Рекомендации по совместимости Markdown со вкусом Reddit”). Отличия от CommonMark часто служат для поддержки “причуд” старого Reddit Markdown. Отличия от CommonMark могут считаться или не считаться ошибками, в зависимости от того, кто и когда их рассматривает.

      Расширения, специфичные для Reddit

      !spoiler!

      Надстрочные знаки – Не существует стандарта надстрочных знаков, и Reddit имеет свой собственный синтаксис, который продолжает поддерживаться ( ^ , ^(. )).

      Зачёркивание – синтаксис Reddit отличается от расширения GFM.

      Redditlinks и userlinks – названия сабреддитов и пользователей Reddit с префиксами /r/ , r/ , /u/ , u/ , автоматически соединяются.

      Мультимедийный текст – Reddit поддерживает сообщения, содержащие изображения, видео и gif-файлы, которые кодируются в Markdown с помощью синтаксиса встроенных изображений. Эта функция поддерживается только редактором Fancy Pants – в настоящее время написать синтаксис вручную было бы непомерно сложно.

      Абзацы, содержащие только один пробел нулевой ширины ( ​ ), являются пустыми абзацами (ZWS удаляется при рендеринге). Это поддерживает редактор Fancy Pants.

      Новые возможности, унаследованные от CommonMark

      Упорядоченные списки могут быть записаны с круглыми скобками, в то время как старый Reddit поддерживал только упорядоченные списки с периодами: ( 1) против 1. ).

      Жесткий перенос строк можно писать, завершая строки символом , тогда как в старом Reddit это поддерживалось только завершением строк двойным пробелом. Этот синтаксис более читабелен и вызывает меньше удивления, чем синтаксис с двойным пробелом.

      Блоки кода могут быть написаны с окружающими ограждениями, вместо отступов ( “ или

      ). Этот популярный синтаксис, возможно, более удобен для написания и чтения, чем синтаксис отступов.

      Отличия от старого Markdown со вкусом Reddit

      Синтаксис суперскриптов с круглыми скобками ( ^(super duper) ) разбирается более надежно (например, суперскрипты, содержащие ссылки, работают правильно), и после того, как старый парсер будет выведен из употребления, его следует предпочесть синтаксису без круглых скобок ( ^super ).

      В угловых случаях суперскрипт разбирается несколько иначе – например, ^(^b) .

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

      Билет: CREATE-1599

      Spoilertext — Spoilertext ( >New Reddit неправильно разбирает непарный надстрочный шрифт, когда он предшествует слову, за которым следует закрывающая квадратная скобка, закрывающие круглые скобки или закрывающее подчеркивание.< ) is Reddit-specific.

      Билет: CREATE-2474

      Неразвернутые круглые скобки в ссылках должны быть сбалансированы.

      Предыдущие обсуждения: 1

      Билет: CREATE-1662

      Вложенные списки требуют как минимум два отступа для неупорядоченных списков и три для упорядоченных списков, тогда как в старом Reddit требовался только один отступ.

      Предыдущие обсуждения: 1

      Билет: CREATE-1702

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

      Предыдущие обсуждения: 1~~~Билет: CREATE-1701

      Первая ячейка “маркера” таблицы не может быть тире, за которым следует пробел, если ей не предшествует символ трубы ( | ) – вместо этого она будет интерпретирована как начало списка. Например, следующее не работает:

      Предыдущие обсуждения: 1

      Билет: CREATE-1708

      Предыдущие обсуждения: 1

      • Билет: CREATE-1534

      Билет: CREATE-1723

      • Синтаксис ссылки не допускает пробела между квадратными скобками ( [] ) и круглыми скобками ( () ).

      Предыдущие обсуждения: 12

      • Билет: CREATE-1438
      • Более двух тильд (

      ) в зачеркнутом синтаксисе – например, a

      • Билет: CREATE-1438
      • Строки, содержащие только хэши ( # ), обрабатываются по-разному: в старом Reddit такие строки полностью поглощаются и не отображаются; в новом Reddit 6 или менее хэшей отображаются как пустой заголовок, а более 6 – как абзац, содержащий хэши.

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

      • Билет: CREATE-1438
      • Предыдущие обсуждения: 1

      Билет: CREATE-2206

      • Билет: CREATE-1438
      • Предыдущие обсуждения: 1
      • Билет: CREATE-1438
      • Новый Reddit последовательно разрешает вложенное подчеркивание, например _a __b c b__ d_ , в то время как старый Reddit во многих случаях парсит это неправильно.

      Blockquote spoilertext is not supported — that is, blockquotes written with >! instead of > .

      • Ссылки внутри ссылок анализируются по-разному – например, [[a](http://example.com)](http://example.com).

      Новый текст ссылки на Reddit не позволяет спойлер-текст внутри текста ссылки.

      • Билет: CREATE-2623
      • Неупорядоченные списки, разграниченные знаком +, не работают в New Reddit. Это нарушает спецификацию CommonMark.

      Билет: CREATE-2403~В New Reddit заголовки не могут содержать произвольные начертания, например, курсив. Это является нарушением спецификации CommonMark.~~~b~~~Тикет: CREATE-2668

      Аналогично, New Reddit позволяет использовать только префикс URL в качестве допустимого URL, в то время как Old Reddit требует, чтобы за префиксом следовали другие символы.

      Содержание абзаца, за которым следует строка, похожая на неупорядоченный список, интерпретируется как закрытие абзаца и открытие неупорядоченного списка, тогда как в старом Reddit абзац продолжается.

      Определения ссылок могут появляться внутри блочных кавычек.

      • Билет: CREATE-1438
      • Вложенные блочные элементы (такие как списки, блочные кавычки и таблицы) могут быть открыты на той же строке, что и элементы списка.

      Отличия от CommonMark / GFM

      • Билет: CREATE-1438

      Синтаксис надстрочных знаков похож на старый Reddit, а не на comrak.

      Упорядоченные списки должны начинаться с “1”. Другие начальные номера не поддерживаются.

      Ссылки могут содержать пробелы.

      Строки, содержащие только хэши ( # ), обрабатываются по-другому.

      • Заголовки не требуют пробелов после хэшей.

      Заголовки с более чем 6 хэшами анализируются иначе, как заголовки уровня 6 с хэшами в тексте заголовка (например, #######valhallaforolaf ). I

      • Неупорядоченные списки, разграниченные знаком +, не работают в New Reddit.

      Заголовки не могут содержать произвольные начертания, например, курсив в New Reddit.

      • Различия в поддержке контента между старым Reddit и новым Reddit

      В разделе “Где использовать Markdown на Reddit” были описаны специфические возможности Reddit, которые принимают Markdown в качестве входных данных. На данный момент существуют значительные различия в поддержке этих различных случаев между старым Reddit и новым Reddit, старым парсером Markdown и новым парсером Markdown.

      Вот грязные детали.

      Самотек – В то время как Новый Reddit использует новый парсер/рендерер Markdown для отображения самотекста в большинстве мест, включая собственную страницу поста и “лайтбокс” (всплывающее окно, появляющееся при нажатии на пост на странице объявлений), он использует старый парсер Markdown в предварительных просмотрах объявлений, как в стандартном просмотре карточек, так и в “экспандо” (т.е. детали, которые открываются после нажатия на иконку с двумя противоположными стрелками) в классическом просмотре.

      вики – В настоящее время отображается только через старый Reddit.

      описание subreddit – Не интерпретируется как Markdown в New Reddit. Более того, ранее многострочное содержание ограничено одной строкой.

      текст отправки в subreddit – Не отображается в New Reddit вообще.

      Боковая панель “текстовой области” в New Reddit – Использует рендеринг старого Reddit.

      правила сабреддита – Всегда отображаются с помощью рендеринга старого Reddit.

      текст “о” профилей пользователей в новом стиле – Всегда отображается в старом рендере Reddit.

      Различия между Fancy Pants и Markdown

      WYSIWYG-редактор Fancy Pants в целом поддерживает большинство функций Markdown, которые поддерживает Reddit, но у него есть некоторые ограничения. Под капотом Fancy Pants хранит свои документы в формате Markdown, но его интерфейс не поддерживает все функции Reddit Markdown.

      В Fancy Pants нельзя вводить HTML-сущности.

      Fancy Pants имеет гораздо меньшие “пределы вложенности”, чем необработанный Markdown. Пределы вложенности влияют на глубину вложенных списков и блочных цитат, которые разрешено создавать в документе.

      Медиа, такие как изображения и видео, могут быть встроены в контент через редактор Fancy Pants, но не в необработанный Markdown.

      Fancy Pants поддерживает только один уровень заголовков.

      Fancy Pants не поддерживает размещение произвольных блочных элементов, таких как списки, блочные кавычки и таблицы, внутри списков или блочных кавычек.

      Fancy Pants не поддерживает определение ссылок – повторяющиеся ссылки должны быть вставлены многократно.~~Fancy Pants не поддерживает жесткий перенос строк.

      Fancy Pants может создавать пустые строки, в то время как Markdown не может. Он делает это с помощью обратно совместимого хака, вставляя абзацы, содержащие один пробел нулевой ширины ( ​ ), который синтаксический анализатор Markdown позже преобразует в пустой абзац. Технически, авторы Markdown могут проделать тот же трюк.

      Несмотря на то, что на странице подачи заявки есть возможность переключения между режимами Fancy Pants и Markdown, опасайтесь переключения из Markdown обратно в Fancy Pants. Хотя ожидается, что переключение из Fancy Pants в Markdown будет происходить без потерь, обратное не верно. Например, если ваш Markdown содержит HTML-сущности, они будут преобразованы в обычный Unicode во время преобразования, глубоко вложенные списки будут потеряны и т.д. Более того, при переходе обратно в Markdown из Fancy Pants, введенный вами Markdown будет потерян и заменен Markdown, сгенерированным Fancy Pants.

      Благодарности и дополнительное чтение

      Большое спасибо /u/brson за создание этого документа и усердную работу над улучшением нашего парсера. На базовую организацию этой страницы и её содержание оказали влияние: /u/AnteChrono’s Reddit Markdown Primer, /u/Raerth’s Reddit Comment Formatting, существующая вики-страница “комментирование” и страница помощи CommonMark.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *