Hola, mi nombre es Dmitry Karlovsky y escribo todos mis artículos (y presentaciones ) en MarkDown . ¿Y sabes qué? ¡Ella ya me empujó bastante bien! Escribo textos en ruso, pero la mayoría de los caracteres especiales solo están en la distribución del teclado en inglés. Y la edición de mesa es la eterna torre inclinada de Pisa. En resumen, tiene problemas tanto con la facilidad de edición como con la claridad de la presentación. Así que intentemos diseñarlo desde cero, sin arrastrar con nosotros kilotones de diseños desconcertantes.
El trazado fue un poco, ya que se implementó una nueva curva de visualización en Habré. Así que ahora será extremadamente difícil escribir artículos en el markdown y luego subirlos a Habr. Con un diseño normal, puede leer este artículo en github: https://github.com/nin-jin/HabHub/issues/39
Principios
Sin ambigüedad de sintaxis
Simplicidad de sintaxis
Consistencia de sintaxis
Impacto mínimo en el texto de aspecto natural
Facilidad de edición independientemente del diseño
Visibilidad de presentación
Extensibilidad
Memorización rápida y confiable
Como caracteres de formato especial, es mejor usar los que están en cualquier diseño, y no solo en inglés. Es decir, en igualdad de condiciones, es mejor dar preferencia a los siguientes caracteres:!
"
;
%
:
?
*
(
)
_
+
/
\
.
,
-
=
Soluciones existentes
, . : 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="">`_
:

{{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""
Retroalimentación