Hello, my name is Dmitry Karlovsky and I write all my articles (and presentations ) in MarkDown markup. And you know what? She already poked me up pretty well! I write texts in Russian, but most of the special characters are only in the English keyboard layout. And table editing is the eternal leaning tower of Pisa. In short, he has problems both with ease of editing and with the clarity of presentation. So let's try to design it from scratch, without dragging kilotons of puzzling designs with us.
The layout went a little bit, since a new curve vizivig was rolled out on Habré. So now it will be extremely difficult to write articles in the markdown, and then upload them to Habr. With normal layout you can read this article on github: https://github.com/nin-jin/HabHub/issues/39
Principles
Syntax unambiguity
Simplicity of syntax
Consistency of syntax
Minimal impact on natural looking text
Ease of editing regardless of layout
Visibility of presentation
Extensibility
Fast and reliable memorability
As special formatting characters, it is better to use those that are in any layout, and not only in English. That is, other things being equal, it is better to give preference to the following characters:!
"
;
%
:
?
*
(
)
_
+
/
\
.
,
-
=
Existing solutions
, . : AsciiDoc, BBCode, Creole, GitHub Flavored Markdown, Markdown, Markdown Extra, MediaWiki, MultiMarkdown, Org-mode, PmWiki, POD, reStructuredText, Textile, Texy, txt2tag.
, . . , .
: . . .
. . "". :
- item
* item
+ item
- . . 2 - , , . :
- first
- second
- first of second
- first of first of second
- second of second
- third
first
second
first of second
first of first of second
second of second
third
. - , . , :
1. item
2) item
, - :
# item
. , :
+ first
+ second
+ first of second
+ first of first of second
+ second of second
+ third
first
second
first of second
first of first of second
second of second
third
, , - . - :
> quote
> - list in quote
> > inner quote
, . , :
" quote
" - list in quote
" " inner quote
- . :
|= |= table |= header |
| a | table | row |
| b | table | row |
| | table | header |
|---|-------|--------|
| a | table | row |
| b | table | row |
First Header | Second Header
------------ | -------------
Content from cell 1 | Content from cell 2
Content in the first column | Content in the second column
, - .
, - . , , .
, , - , , :
| | table | header |
| a | There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. | row |
| b | table | row |
, - . - , , , :
! ! table ! header ! a ! There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. ! row ! b ! table ! row
, . , . . . .
:
Level 1 Heading
===============
Level 2 Heading
---------------
Level 3 Heading
~~~~~~~~~~~~~~~
, , , , , - .
, :
# Level 1 Heading #
## Level 2 Heading ##
### Level 3 Heading ###
, , . :
## Level 2 Heading
== Level 2 Heading
** Level 2 Heading
!! Level 2 Heading
++ Level 2 Heading
. , , . - , . , :
= Level 1 Heading
== Level 2 Heading
=== Level 3 Heading
:
```markdown
preformatted
text
```
, , . . , , 2 4 :
preformatted
text
, , . , , .
, . , - /.
:
2 .
.
:
preformatted
text
--deleted
-- text
++inserted
++ text
**highlighted
** text
? . . - . , , - . - , , .
- "". , , . -. :
1 - , , .
3 - , - .
2 - , .
, , , . , : . - , , . , .
:
*strong*
**strong**
__strong__
'''strong'''
''strong''
, . "" - .
**strong**
strong
:
'emphasis'
''emphasis''
_emphasis_
/emphasis/
//emphasis//
*emphasis*
~emphasis~
. , , , .
//emphasis//
emphasis
, , . . , , . .
, :
_insertion_
__insertion__
+insertion+
:
~deletion~
~~deletion~~
-deletion-
--deletion--
, :
++insertion++
--deletion--
insertion
deletion
:
- . .
- . , , , - ( , , ).
:
"Text":http://example.com
http://example.com[Text]
<http: example.com|text="">
[Text|http://example.com]
[[Text|http://example.com]]
[[http://example.com|Text]]
[Text http://example.com]
[http://example.com Text]
[Text](http://example.com)
`Text <http: example.com="">`_
:
![title](http://example.com/image.png)
{{http://example.com/image.png|title}}
.. image:: /path/to/image.jpg
, . - HTML. - . .
, . - , , . : \
"
.
, - , . , \
, , .
""Embedded image\http://example.org/favicon.ico""
""Embedded video\https://youtube.com/video=1234""
""Embedded site\https://marked.hyoo.ru/""
, . :
""http://example.org/favicon.ico""
""http://example.org/favicon.ico\http://example.org/favicon.ico""
\
:
\\Clickable text\http://example.org/\\
Clickable url: \\http://example.org/\\
-
Clickable url: http://example.org/
. , - :
\\""Example\http://example.org/favicon.ico""\http://example.org/\\
. - :
+monospace text+
`monospace text`
``monospace text``
```monospace text```
|monospace text|
{{monospace text}}
{{{monospace text}}}
=code=
~verbatim~
@monospace text@
@@monospace text@@
+
=
, . - . , . ;;
. .
;;monospace text;;
monospace text
:
= MarkedText
** **.
--
==
+ :
-
-
-
+ :
-
-
+ :
-
-
== C
! ****
! ****
! ****
! MarkedText
! - .
! - .
! - .
! - .
! - .
! - .
! - .
! MarkDown
! - .
! - .
! - .
! - .
==
const res = [ ... $hyoo_marked_line.parse( '**text**' ) ]
--$mol_assert_equal( res[0].strong, '**text**' )
++$mol_assert_equal( res[0].marker, '**' )
**$mol_assert_equal( res[0].content, 'text' )
==
" " " : , ---- ++++ !
" "
" " , .. C++ , D++ ..
"
" ()
, .
==
- : \\https://marked.hyoo.ru/\\
- \\ MarkedText\https://github.com/nin-jin/HabHub/issues/39\\
- \\ TS\https://github.com/hyoo-ru/marked.hyoo.ru/\\
- \\ HTML TS\https://github.com/hyoo-ru/marked.hyoo.ru/tree/master/to/html\\
- "" $mol_regexp\https://github.com/hyoo-ru/mam_mol/workflows/mol_regexp/badge.svg""