Новый облегчённый язык разметки текста на основе парных кавычек (pq)

Я не могу объяснить, откуда пришла идея такого языка разметки, но то, что получилось в итоге — весьма… занятно.

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

Итак, перейду к описанию самого языка. [Если кто-то вдруг не понял, о чём вообще идёт речь, то к облегчённым языкам разметки относятся Markdown, BBCode, вики-разметка и т.п.]

Данная разметка основана на одиночных парных кавычках — символах и (вопрос выбора именно этих символов разъясняется ниже в P.S.), поэтому пока что я остановился на таком варианте названия: пк-разметка или pqmarkup (paired quotes markup).

Как же эти кавычки набирать на клавиатуре?


В ОС семейства Windows можно с помощью программы AutoHotkey назначить глобальные горячие клавиши для ввода любых спец-символов. Чтобы назначить например Alt+9 и Alt+0 для ввода одиночных парных кавычек достаточно добавить такие две строчки в файл-скрипт настроек:
Alt & 9:: SendInput {‘}
Alt & 0:: SendInput {’}

Также в Windows можно использовать без дополнительных настроек сочетание клавиш Alt+0145 (на цифровой клавиатуре) для открывающей кавычки и Alt+0146 для закрывающей (правда, работает это не во всех программах, а также требует определённого состояния NumLock).

Визуально на цифровой клавиатуре эти цифры расположены очень удачно:
┌───┬───┐
│ 4 │ 5 │
├───┼───┘
│ 1 │
├───┴───┐
│ 0     │
└───────┘

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


Синтаксис пк-разметки


Оформление текста

*‘жирный’ жирный
_‘подчёркнутый’ подчёркнутый
-‘зачёркнутый’ зачёркнутый
~‘курсив’ курсив
Примечание:
Вот так не работает: ~*‘жирный курсив’ (будет просто ~жирный), пишите так: ~‘*‘жирный курсив’’ или так: *‘~‘жирный курсив’’ (так и задумано).
Обратите внимание, что использование отдельных символов для открывающей и закрывающей кавычек предоставляет возможность неограниченной вложенности элементов форматирования.

Ссылки и всплывающие подсказки


Ссылка[http://адрес]
Ссылка[http://адрес ‘текст всплывающей подсказки’]
Текст[‘текст всплывающей подсказки’]
Подробнее (больше примеров)
Пк-разметка HTML Как выглядит
[http://address] <a href="http://address">http://address</a> http://address
ссылка[http://address] <a href="http://address">ссылка</a> ссылка
ссылка[https://address] <a href="https://address">ссылка</a> ссылка
‘многословная ссылка’[http://address] <a href="http://address">многословная ссылка</a> многословная ссылка
ссылка[https://address ‘текст всплывающей подсказки’] <a href="https://address" title="текст всплывающей подсказки">ссылка</a> ссылка
текст[‘текст всплывающей подсказки’] <abbr title="текст всплывающей подсказки">текст</abbr> текст


Заголовки, картинки, цвет и таблицы

Н (русская) H (английская) Название заголовка\Header
Р (русская) P (английская) Рисунок\Picture [почему не I(image)]
С (русская) C (английская) цвет(Свет)\Color
Т (русская) T (английская) Таблица\Table
Примеры:
Заголовок — Н‘Название заголовка’
Картинка — Р‘http://адрес_картинки’
Текст красным цветом — С(#фф0000)‘текст’
Подробнее (больше примеров)
Пк-разметка HTML Как выглядит
Заголовки\Headers
H‘Заголовок’ <h3>Заголовок</h3>

Заголовок

H(0)‘Заголовок’
H(1)‘Заголовок’ <h2>Заголовок</h2>

Заголовок

H(+1)‘Заголовок’
H(-1)‘Заголовок’ <h4>Заголовок</h4>

Заголовок

Изображения/картинки\Pictures
P‘https://.../blue_circle.png’ <img src="https://.../blue_circle.png" />
P‘https://.../blue_circle.png’[http://address] <a href="http://address"><img src="https://.../blue_circle.png" /></a>
P‘https://.../blue_circle.png’[‘текст всплывающей подсказки’] <img src="https://.../blue_circle.png" title="текст всплывающей подсказки" />
P‘https://.../blue_circle.png’[http://address ‘текст всплывающей подсказки’] <a href="http://address" title="текст всплывающей подсказки"><img src="https://.../blue_circle.png" /></a>
Цвет текста
Цвет задаётся в формате #ККЗЗСС (Красный, Зелёный, Синий) посредством шестнадцатеричных цифр (можно использовать кириллицу: абсдеф/АБСДЕФ является аналогом abcdef/ABCDEF) или в формате КЗС посредством цифр от 0 до 8.
С(#ff0000)‘красный текст’ <span style="color: #ff0000">красный текст</span> красный текст
<font color="#ff0000">красный текст</font>
С(800)‘тоже красный текст’ <span style="color: #FF0000">тоже красный текст</span> тоже красный текст
<font color="#FF0000">тоже красный текст</font>
С(000)‘чёрный текст’ <span style="color: #000000">чёрный текст</span> чёрный текст
<font color="#000000">чёрный текст</font>
С(4)‘серый текст’ <span style="color: #808080">серый текст</span> серый текст
<font color="#808080">серый текст</font>
С(-880)‘текст на жёлтом фоне’ <span style="background-color: #FFFF00">текст на жёлтом фоне</span>
Таблицы
Т‘
Н‘‘A’ ‘B’ ‘C’’
 ‘‘1’ ‘2’ ‘3’’
<table>
<tr><th>A</th><th>B</th><th>C</th></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</table>
A B C
1 2 3
Объединение ячеек таблицы
Чтобы объединить ячейки таблицы, нужно каждую отсутствующую ячейку заменить на символ - или символ | таким образом, чтобы следуя по символу - влево и по символу | вверх можно было выйти на соответствующую значимую ячейку.
Т‘‘
‘A’ ‘B’
’‘
‘C’  -
’’
<table>
<tr><td>A</td><td>B</td></tr>
<tr><td colspan="2">C</td></tr>
</table>
A B
C
T‘‘
‘ ’ ‘ ’ ‘1’ ’‘
‘ ’ ‘ ’  |  ’‘
‘2’  -   |  ’’
<table>
<tr><td> </td> <td></td><td rowspan="3">1</td></tr>
<tr><td> </td> <td></td></tr>
<tr><td colspan="2">2</td></tr>
</table>
    1
   
2
T‘‘
‘ ’ ‘ ’ ‘1’ ’‘
‘ ’ ‘ ’  |  ’‘
‘2’  -   -  ’’
<table>
<tr><td> </td><td> </td><td rowspan="2">1</td></tr>
<tr><td> </td><td> </td></tr>
<tr><td colspan="3">2</td></tr>
</table>
    1
   
2
Для больших объединений ячеек (2х2 и более): вправо от значимой ячейки идут символы -, вниз идут символы |, а остальные отсутствующие ячейки можно заполнять либо символом - либо |, но рекомендуется всегда использовать -.
T‘‘
‘1’  -   -  ‘2’ ’‘
 |   -   -  ‘3’ ’‘
 |   -   -  ‘4’ ’‘
‘5’ ‘6’ ‘7’     ’’
<table>
<tr><td colspan="3" rowspan="3">1</td><td>2</td></tr>
<tr><td>3</td></tr>
<tr><td>4</td></tr>
<tr><td>5</td><td>6</td><td>7</td></tr>
</table>
1 2
3
4
5 6 7


Комментарии


[[[комментарий/контейнер для воды (:]]]


Полное описание синтаксиса форматирования.



(Если кому интересно, вот немного истории выбора тегов [для таблиц])
Изначально я планировал альтернативный вариант задания тегов. Вот такой:
[[H]Header/Заголовок[-H]]
или
[[H]Header/Заголовок[-]]
или
[[H]Header/Заголовок]

Соответственно, таблицы задавались тегом [[T]...]
Разделитель столбцов был таким — []
Разделитель строк был таким — [[]]

Пример таблицы:
[[Т]
A[]B[]C
[[]]
1[]2[]3
[-Т]]
или так:
[[Т]
[[]]A[]B[]C
[[]]1[]2[]3
[-Т]]
(Закрывающий тег [-Т] можно опустить.)

Но потом я вспомнил, что несколько вариантов выбора для одного и того же форматирования — это то, что мне не нравится в Markdown (например: __так__ или **так**), и я решил, что оставлять два варианта форматирования в пк-разметке (~‘...’ и [[~]...]) будет неправильно. А значит, имеет смысл оставить только одну форму записи — с кавычками ‘’, так как она менее конфликтующая и является первой/основной идеей, положившей начало этой разметки текста {а то, что набирать символы кавычек и непривычно — я считаю, это не так страшно, так как [с моей точки зрения] важнее читаемость разметки и её когнитивные характеристики (легко понять/запомнить правила разметки, легко читать/воспринимать размеченный текст), а также снижение вероятности возникновения конфликтов (когда простой текст или формула [ошибочно/]ненамеренно трактуется как разметка) и избежание необходимости что-то экранировать (а то ведь часто можно и пропустить/не заметить такие ошибки — когда размеченный текст преобразовался немного не в то, что задумывалось)}.

Определившись с выбором в пользу кавычек, сначала я хотел сделать такой разделитель строк — ‘’ (по аналогии с []), но быстро одумался (ведь тогда возникает проблема с пустыми ячейками в самой таблице) и пришёл к нынешней форме записи:
Т‘
‘‘A’ ‘B’ ‘C’’
‘‘1’ ‘2’ ‘3’’

или так:
Т‘‘
‘A’ ‘B’ ‘C’
’‘
‘1’ ‘2’ ‘3’
’’

(Разумеется, эта форма записи не самая приятная для набора и я немало думал над тем, возможно ли её как-то упростить (или хотя бы дать возможность альтернативной более простой формы записи для таблиц, как в GitHub Flavored Markdown или в Habrahabr Flavored Markdown [к слову сказать, в большинстве реализаций Markdown не поддерживаются таблицы без заголовков]), но решил остановиться на нынешней форме записи, так как она итак достаточно лёгкая (по сравнению с HTML <table>) и при этом имеет неоспоримое преимущество [перед более простой формой записи] — возможность включать в ячейку таблицы всё что угодно (включая любые другие элементы разметки и даже вложенные таблицы), а также нынешняя форма записи даёт возможность использовать пробелы в начале и в конце строки любой ячейки таблицы (возможность спорная, но может пригодиться для экспорта таблиц баз данных).)

(Если кому интересно, вот история/‘как я пришёл к’ нынешней форме записи для объединения ячеек таблицы)
… не, решил спрятать в комментарий и не включать в статью, а если кому это и правда интересно, тогда смотрите исходник статьи.

Исходник данной статьи написан на пк-разметке. Преобразован к формату Habr HTML посредством реализации на Python (c флагом командной строки --habr-html).

P.S.
Причины (впрочем, достаточно субъективные), почему я выбрал именно символы ‘’ (а не `´ или, скажем, «» или “”):

  1. Они достаточно приятно выглядят (в соответствующем шрифте [например, Courier New]). На мой взгляд, лучше, чем «» или ‹›.
  2. Они идут подряд друг за другом в любой кодировке (в отличие от `´ или «» или ‹›) [также как и “”].
  3. Почему не “” — в русских текстах парным символу является (Экранная типографика. Кавычки).
  4. А ещё мне коды[/годы] этих символов нравятся...
    201? и 201¿

Один существенный минус символов кавычек и в том, что символ закрывающей одиночной кавычки согласно текущему стандарту Юникод является предпочтительным символом в качестве знака апострофа, и во многих документах и веб-страницах на английском языке символ действительно используется в качестве апострофа (например так: Don’t), в том числе — в сгенерированной документации к Python, впрочем в HTML-коде там используетсяещё недавно использовался HTML entity &#8217;, а в исходных rst-файлах документации используется обычный апостроф ' — так что и html (при использовании &#8217;) и rst-файлы можно заключать в такие кавычки без проблем [и, к слову, наиболее известные [мне] типографы (за редким исключением) вставляют HTML-entity &rsquo; [или &#146; или &#39; или &#8217;], а не непосредственно сам символ закрывающей кавычки , а если посмотреть на крупнейшие англоязычные новостные ресурсы, то можно заметить, что на многих из них в качестве апострофа используется просто символ апострофа ' (вопреки рекомендации Unicode Consortium)], но если есть такая необходимость, то пк-разметка позволяет вставить непарную открывающую и закрывающую кавычку: так `‘` или так '‘’ (смотри Дополнительные возможности форматирования. "Сырой"\Raw HTML).

Ещё один минус [символов кавычек и ]неоднозначность отображения символов и во многих популярных шрифтах. В частности, в Consolas, используемом в GitHub и Bitbucket. И вообще, символы парных кавычек в разных шрифтах выглядят по-разному (в том числе и в моноширинных шрифтах для программирования):

[На мой взгляд, это просто показывает, что в целом отсутствует чёткое/однозначное представление о том, как должны выглядеть эти символы.]

(Кстати, на Хабре символы одиночных парных кавычек отображались вполне приемлимо (по крайней мере, в Windows) за счёт использования Verdana для основного текста и Courier New для кода, но несколько месяцев назад шрифт для основного текста статей поменяли на Arial, из-за чего пришлось немного подправлять статью — заменять ‘ и ’ на и (в pq: `‘` и `’`).)
Share post

Comments 66

    +5
    Думал, апрель наступил. Сверился с календарем — нет, не апрель — февраль!
      +10

      Зачем?

        +10
        14_конкурирующих_стандартов_xkcd.jpg
          +7
          В каждой области человеческой деятельности должен быть свой Brainfuck.
          Даже в разметке.
            +1
            Если такой язык не самоцель, а средство для разминки ума или проверки идей, то почему бы и нет?
            Вот, например, ещё один «Brainfuck» от разметки.
              0
              Ну для эзотерики что эта статья, что с русифицированным HTML — недостаточно витиевато
                0
                Там цель была немного в другом — проверить, насколько хорошо разобрался с питоном. А язык делался just for fun, на реальное использование (и даже эзотерику) не претендуя.
          +11

          Вот, кстати, тоже подумал — "Зачем?" А потом мгновенно пришел ответ — "Потому что!". И это правильно, на самом деле. Почему бы и нет. Просто так.

            –1
            Почему бы и нет.

            Почему бы и да.

            +1
            qw'Напоминает один старенький язык программирования'
              +1
              Но там хотя бы кавычки клавиатурные. А постоянно набирать неклавиатурные символы — мазохизм.
              А так, кроме этого, вполне себе ничего.
                –3

                Мазохизм только если вы не знаете, как настроить окружение. Или не можете себе этого позволить (к примеру, потому что компьютер не ваш).

                  +3
                  Или не хотите настраивать кучу всего каждый раз под новым аккаунтом. Как-то с возрастом всё реже хочется тратить время на настройки под себя, особенно в ОС, где сложно эти настройки сложить в пару текстовых патчей.
                    –1

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

                      +1
                      Нет, это относится к варианту «не настолько критично, чтобы вникать». В молодости я тоже не знал, как настроить, но был энтузиазм и я узнавал. А теперь — влом.
                        0

                        То, что вы только что сказали — «вы не знаете, потому что это для вас не критично». То, что у вас недостаточно мотивации, чтобы узнать как автоматизировать настройку, не изменит того, что задача решаема, но вы не знаете как. Это никак не отдельный вариант.

                          0
                          автоматизировав настройку под ХП мне почему-то пришлось делать все ручками под 10ку…
                            +1
                            В принципе, согласен. Я имел в виду, что незнание само по себе причиной не является. Нужна ещё лень.
                          0
                          Настроить горячие кнопки для настройки горячих кнопок?
                          xzibit.jpeg
                        0
                        *побежал менять кавычки* alt+ комбинации все равно неудобно набирать одной рукой.
                        и вообще, как бы ни говорили про эпоху Юникод, но я из эпохи ASCII и подозрителен к любым символам, у которых код больше 128
                          0
                          Так речь же шла о том, чтобы настроить окружение, а не набирать одной рукой.
                          У Вас даже в стандартной кириллической раскладе — уже́ бо́льшая часть символов не ASCII (код ≥ 128).
                      0
                      Молодной, развивающиийся и перспективный язык программирования
                        0
                        А о каком языке идёт речь?
                        0

                        Еще амбициозный.

                      0
                      Замечание: на Хабре присутствует такой баг — кнопка Предпросмотр на страницах habrahabr.ru/sandbox/add и habrahabr.ru/topic/add работает по-разному! Точнее, галочка «Отключить автоматические переносы строк и создание ссылок» просто не работает при добавлении статьи в Песочницу.

                      (О таком, безусловно, нужно писать прежде всего в баг-трекер, но решил оставить комментарий тут как оправдание несколько неказистого оформления статьи — получилось нечто среднее между тем, как поправил оформление статьи модератор и тем как я приглядывался к Предпросмотру [а он оказывается неправильный...] и старался получить такой вид статьи, который хотелось).
                        0
                        Вы в любой момент можете отредактировать пост, исправив переводы строк на своё усмотрение. Даже после вмешательства модераторов.
                        +2
                        Сперва подумал под парными кавычками понимается форматирование как в WackoWiki.

                        **полужирный**
                        //курсив//
                        __подчеркнутый__
                        --зачеркнутый--
                        ##моноширинный##
                        >>центрированный<<
                          +1
                          Немного оффтопа: именно WackoWiki разметка из всех упрощенных разметок для меня оказалась самой удобной — за счет правила двойных символов. До сих пор использую.
                            0

                            Расширение функционала рано или поздно приведет к html или json like разметке.

                              0
                              хватит нам уже этого выводка sgml. скорее, вернемся к md :)
                          +1
                          с помощью программы AutoHotkey назначить глобальные горячие клавиши для ввода любых спец-символовa
                          Я вам по секрету скажу, можно просто раскладку клавиатуры сменить. В том числе на самодельную.
                          Только тс-с-с..!
                            0

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


                            Например:


                            Установите AutoHotkey.
                            Добавьте эти две строчки в файл-скрипт настроек:
                            Alt & 9:: SendInput {‘}
                            Alt & 0:: SendInput {’}


                            или


                            Установите Sublime Text 3.
                            Установите плагин pqmarkup.


                            или


                            Установите новый редактор со встроенной поддержкой пк-разметки.
                            Для ввода символов парных кавычек ничего настраивать в нём не нужно.

                          +1
                          Почему-то вспомнилось. Взлетало, взлетало, ни так и не взлетело. Но это было круче лексикона и чирайтера :)
                            0

                            Посмотрел. Занятно. Но почему не взлетело — вполне очевидно:


                            1. Редактирование в "текстовом" режиме только моноширного текста теперь стало совсем неактуально.
                            2. Формат сохранения текстовых файлов — своеобразный и скорее не текстовый, а двоичный.
                            3. Антивирус [стандартный Windows Defender] на этот редактор ругается (и не только).

                            А вот то, что взлетит, мне тоже понятно {за счёт чего — нужно просто много/долго {как минимум, дольше, чем на "неправильные"} смотреть на "правильные" вещи} — нужен микс из:


                            1. Sublime Text. (ИМХО, пока что лучший инструмент для кодера/программиста, особенно, любящего вносить свои правки в поведение редактора. Дополнительным открытием для меня стало то, что панель инструментов с красивыми кнопками в редакторе для кода практически и не нужна и что вполне можно обойтись без продвинутого окна настроек посредством грамотной документации и продуманных файлов настроек в удобочитаемом формате (JSON или даже что-то попроще).)
                            2. PyCharm. (Прежде всего за отладчик Python.)
                            3. Microsoft Visual Studio. (Отладчик C++/C# в студии лучше, чем в PyCharm — советую JetBrains добавить хотя бы отображение многострочных строк.)
                            4. Notepad++, Atom и Visual Studio Code. (В плане открытости [исходного кода].)

                            Хотя Atom и Visual Studio Code очень хочется исключить из этого списка за то, что их разработчики выбрали "неправильную" (тормозную) платформу.

                              +1
                              Это сейчас, с нынешних высот, понятно. А тогда конкуренция была нехилая. Windows не все НИИ могли оплатить (3.11 для рабочих групп, ага), чирайтер был почти стандартом для набора формул (как и wordperfect). Лексикон ещё пытался взлететь.
                                +1
                                и Лексикон почти взлетел
                                  –1
                                  Ага, почти. Директор по продажам «Лексикона» возглавила представительство Microsoft в России и СНГ, и стала руководить русификацией MS Word.
                                +1
                                Хотя Atom и Visual Studio Code очень хочется исключить из этого списка за то, что их разработчики выбрали "неправильную" (тормозную) платформу.

                                По этому поводу хочется спорить, потому что перешел на VC исключительно потому что PhpStorm от JetBrains (насколько бы он не был универсальным) постоянно подлагивает. Все относительно.

                                  0
                                  А что вы имеете в виду под VC?
                                  Visual Studio Code или MS Visual C++?

                                  В плане тормознутости PyCharm (аналогично PhpStorm, т.к. обе эти IDE на одной платформе) — согласен, но лучшего отладчика для Python я не нашёл.

                                  А как обстоят дела с отладкой PHP в этой «вашей» VC?
                                    +2
                                    По той же причине тоже перешел на vscode, на моем железе vscode плавнее и отзывчивее работает, плюс последний апдейт на производительность порадовал
                                    0
                                    Хотя Atom и Visual Studio Code очень хочется исключить из этого списка за то, что их разработчики выбрали «неправильную» (тормозную) платформу.


                                    VS Code во сравнению с Atom тормозит сильно меньше, но тут кое-чего скорее не хватает…
                                    • UFO just landed and posted this here
                                    0
                                    Вот так не работает: ~*‘жирный курсив’ (будет просто ~жирный), пишите так: ~‘*‘жирный курсив’’ или так: *‘~‘жирный курсив’’

                                    ЧТОА? Можно увидеть EBNF вашей замечательной грамматики?
                                      +3
                                      А, понял, у вас допускаются вложенные pq выражения.

                                      Это существенная черта языка, странно что вы упоминаете её очень вскользь.

                                      Не такой уж язык и «облегчённый». Кроме того EBNF всё равно хотелось бы увидеть, иначе непонятны многие вещи, например как вы экранируете спецсимволы.
                                        +1
                                        допускаются вложенные pq выражения.
                                        В Markdown также допускается вложенное форматирование (правда, в более ограниченных случаях):
                                        guides.github.com/features/mastering-markdown:
                                        _You **can** combine them_

                                        А почему EBNF, а не ABNF?
                                        Но в данном случае я руководствуюсь принципом:
                                        https://www.youtube.com/...:
                                        "Code is Law"
                                        То есть, код базовой реализации определяет/задаёт точную спецификацию оригинальной разметки.

                                        И для Markdown (и даже CommonMark), насколько мне известно, также нет официальной BNF/EBNF/ABNF (хотя есть неофициальные, например github.com/Domysee/MarkdownEbnf).

                                        непонятны многие вещи, например как вы экранируете спецсимволы.
                                        Посредством Дополнительные возможности форматирования. «Сырой»\Raw HTML возможно вставить произвольный HTML, в том числе спецсимволы (как в формате HTML entities, так и просто в виде символов).
                                        Но, в отличие от других разметок, в пк-разметке экранировать требуется гораздо меньше спецсимволов, и спецсимволы можно вставлять прямо в код как есть.
                                          0
                                          Это существенная черта языка, странно что вы упоминаете её очень вскользь.

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

                                        +2

                                        Синтаксический диабетик

                                          0
                                          Причины (впрочем, достаточно субъективные), почему я выбрал именно символы ‘’ (а не `´ или, скажем, «» или “”):

                                          А вот я бы как раз выбрал очевидно зеркальные (в подавляющем большинстве шрифтов), независимо от того, идут они подряд или задом наоборот. Как заметили выше, сделать кастомную раскладку — не проблема. При частом использовании коды двух символов запоминаются с полпинка (для ненастроенного окружения) и, кроме того, именно за счёт того, что они идут не подряд — сложнее допустить ошибку. А так — они и выглядят почти одинаково (при нормальном размере шрифта а не увеличенном) и за счёт смежных позиций можно легко перепутать.

                                              +1
                                              1. По стандарту у картинок обязательно должен быть атрибут alt.
                                                Markdown это вполне решает: ![моя фотография](http://example.com/myphoto.jpg)   →   <img alt="моя фотография" src="http://example.com/myphoto.jpg">. А вот у Вас с этим явная проблема (во-первых, title — не то же самое, что alt, во-вторых, Вы разрешаете не указать title (точнее, не просто разрешаете не указать, Markdown тоже разрешает не указать, а синтаксически оформляете его как что-то «дополнительное»)).
                                              2. Немозможность вставить в (англ., укр.) текст нормальную кавычку без дополнительных ухищрений — это, ИМХО, ппц. То есть Вы как бы плясали от того, что взяли два символа, которые меньше всего используются в русском тексте. Но:
                                                1. Вы попали на символы, которые дохрена используются в англ. тексте.
                                                2. Вы попали на символы, которые не просто дохрена используются в англ. тексте, а очень часто подпадают под автозамену в различных текстовых редакторах. В отличие от, например, Markdown'овских скобочек и пр., текстовые редакторы не относятся к одинарным кавычкам как к чему-то незыблемому и часто неявно меняют их с одних на другие, например LibreOffice и quora.com заменяют U+0027 (He said me 'I don't know!') на U+2018 и U+2019 (He said me ‘I don’t know!’). Т.о. копи-пейст pq-кода через «умный» редактор может его испортить (навставляв несимметричных U+2018 и U+2019).
                                                3. Я б тогда на Вашем месте вообще уже какие-то неиспользуемые в нормальном тексте специальные Unicode-символы взял (а-ля и ). Но, по-моему, такая идея в любом случае гиблая, потому что, во-первых, надо иметь возможность представить pq-код внутри pq-кода, во-вторых, это фактически возврат в прошлое (см. control characters). Хотя, кто знает, может, история и пойдёт по спирали.

                                              3. Кстати, как у Вас с возможностью представить неотформатированный текст (исходный код, например)?

                                              0
                                              Есть одна достаточно несложная, но актуальная [и, надеюсь, вполне себе интересная] задача — написать преобразователь пк-разметки в Markdown {сразу оговорюсь, что нужно только в одну сторону, а для чего задача — хочу презентации на пк-разметке писать, а готовые тулзы работают либо с Markdown, либо с HTML [и у меня есть такое предположение, что с Markdown работают лучше, чем с HTML]}. Если кто хочет попробовать, просьба ответить на этот комментарий. (Также прошу написать про опыт работы с тулзами вроде remarkjs.com, если у кого был.)

                                              [P.S. Оригинальную реализацию (преобразователь/конвертер в HTML) pqmarkup.py трогать не хочется, да и незачем, я считаю, нагружать её ещё и Markdown-ом.]
                                                0
                                                С помощью такого кода можно усложнить парсинг страниц или мне только это кажется?
                                                  0

                                                  Не хотите попробовать свои силы в реализации задачи, описанной в моём комментарии выше (конвертер в Markdown)?
                                                  Парсить пк-разметку достаточно просто (оригинальная реализация насчитывает всего ~800 строк кода на Python).

                                                  0

                                                  А чем это лучше того же markdown? И почему бы не использовать уже присутствующие на клавиатуре парные символы — такие, как фигурные скобки? И правда ли нужны именно парные символы?

                                                    0
                                                    А чем это лучше того же markdown?

                                                    • Простые, логичные, легко запоминающиеся правила разметки.
                                                    • Больше возможностей (подчёркивание, цвет текста, выравнивание, таблицы без заголовков, объединение ячеек в таблицах).
                                                    • Лучше поддержка вложенности элементов разметки.
                                                    • Проще реализация (всего ~800 строк кода на Python).

                                                    И почему бы не использовать уже присутствующие на клавиатуре парные символы — такие, как фигурные скобки?

                                                    Фигурные скобки уже используются в пк-разметке для древовидного выражения мыслей (: древопись :).
                                                    Почему не круглые/квадратные/угловые скобки? Не знаю, внешне (в шрифтах Tahoma, Verdana, Courier New) парные кавычки имхо подходят лучше, чем скобки.


                                                    И правда ли нужны именно парные символы?

                                                    Ну, они дают возможность неограниченной вложенности.

                                                    https://en.wikipedia.org/wiki/M4_(computer_language):
                                                    Unlike most languages, strings in m4 are quoted using the backtick (`) as the starting delimiter, and apostrophe (') as the ending delimiter. The use of separate starting and ending delimiters allows for the arbitrary nesting of quotation marks in strings…

                                                    В отличие от большинства других языков, строки в m4 берутся в кавычки используя символ обратной кавычки (`) в качестве открывающей кавычки, и символ апострофа (') в качестве закрывающей. Использование отдельных символов для открывающей и закрывающей кавычек предоставляет возможность неограниченной вложенности кавычек внутри строк...
                                                    Речь здесь идёт про недостаток строк в непарных кавычках (например "таких") в том, что внутрь строки нельзя вкладывать другие строки, например:
                                                    system("mkdir "имя папки с пробелами"")

                                                    Так не работает (и не может работать).


                                                    А так может работать, если язык программирования и ОС поддерживают парные кавычки:


                                                    system(‘mkdir ‘имя папки с пробелами’’)
                                                      0
                                                      А как в вашей разметке сделать так?
                                                      <b>Очень<i>длинное</b>слово</i>.
                                                        +1

                                                        У вас невалидный HTML, тэги должны правильно вкладываться. Преобразуем в валидную форму, дальше очевидно.


                                                        <b>Очень</b><i><b>длинное</b>слово</i>
                                                          +1
                                                          Очевидно, как преобразовать HTML в эту разметку, но я на HTML написал только чтобы было понятно. Логически же если мне нужно выделить кусок абзаца, то, выходит, я не могу просто поставить в тексте начало и конец выделения.
                                                          P.S. В HTML, кстати, такая разметка хоть и считается невалидной, но работает.
                                                        0
                                                        К пункту "Лучше поддержка вложенности элементов разметки." хочу привести такой пример.

                                                        Хотя в Markdown допускается вложенное форматирование, например так:
                                                        guides.github.com/features/mastering-markdown:
                                                        _You **can** combine them_
                                                        _Какой-либо **жирный текст** внутри курсива_

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

                                                        Так код:
                                                        *
                                                        1. Первый элемент списка
                                                        2. Второй элемент списка
                                                        *

                                                        В Markdown отображается как:
                                                        •  

                                                        1. Первый элемент списка
                                                        2. Второй элемент списка

                                                        •  


                                                        В то время как код на пк-разметке:
                                                        ~‘
                                                        1. Первый элемент списка
                                                        2. Второй элемент списка

                                                        Выводится корректно:

                                                        1. Первый элемент списка
                                                        2. Второй элемент списка

                                                          0

                                                          Ещё один пример:


                                                          **Этот текст в Markdown


                                                          не выделится жирным шрифтом**



                                                          *а этот (на пк-разметке)


                                                          — выделится [жирным]

                                                      Only users with full accounts can post comments. Log in, please.