(((meta (@ (content . "CommonMark") (name . "title"))) (meta (@ (content . "manual") (name . "role"))) (meta (@ (content . "#manual #markdown #zettelstore") (name . "tags"))) (meta (@ (content . "zmk") (name . "syntax"))) (meta (@ (content . "00001006000000 00001007031200 00001008000000 00001008010000 00001012920513") (name . "back"))) (meta (@ (content . "00001006000000 00001007000000 00001007031200 00001008000000 00001008010000 00001012920513") (name . "backward"))) (meta (@ (content . "1") (name . "box-number"))) (meta (@ (content . "(c) 2020-present by Detlef Stern ") (name . "copyright"))) (meta (@ (content . "20220113183435") (name . "created"))) (meta (@ (content . "00001004010000 00001007000000 00001012920500 00001012920510") (name . "forward"))) (meta (@ (content . "en") (name . "lang"))) (meta (@ (content . "EUPL-1.2-or-later") (name . "license"))) (meta (@ (content . "20221018123145") (name . "modified"))) (meta (@ (content . "20221018123145") (name . "published"))) (meta (@ (content . "https://commonmark.org/") (name . "url"))) (meta (@ (content . "public") (name . "visibility")))) (p (a (@ (href . "https://commonmark.org/") (rel . "external")) "CommonMark") " is a Markdown dialect, an " (a (@ (href . "https://xkcd.com/927/") (rel . "external")) "attempt") " to unify all the different, divergent dialects of Markdown by providing an unambiguous syntax specification for Markdown, together with a suite of comprehensive tests to validate implementation.") (p "Time will show, if this attempt is successful.") (p "However, CommonMark is a well specified Markdown dialect, in contrast to most (if not all) other dialects." " " "Other software adopts CommonMark somehow, notably " (a (@ (href . "https://github.github.com/gfm/") (rel . "external")) "GitHub Flavored Markdown") " (GFM)." " " "But they provide proprietary extensions, which makes it harder to change to another CommonMark implementation if needed." " " "Plus, they sometimes build on an older specification of CommonMark.") (p "Zettelstore supports the latest CommonMark " (a (@ (href . "https://spec.commonmark.org/0.30/") (rel . "external")) "specification version 0.30 (2021-06-19)") "." " " "If possible, Zettelstore will adapt to newer versions when they are available.") (p "To provide CommonMark support, Zettelstore uses currently the " (a (@ (href . "https://github.com/yuin/goldmark") (rel . "external")) "Goldmark") " implementation, which passes all validation tests of CommonMark." " " "Internally, CommonMark is translated into some kind of super-set of " (a (@ (href . "00001007000000")) "Zettelmarkup") ", which additionally allows to use HTML code." (sup (@ (id . "fnref:1")) (a (@ (class . "zs-noteref") (href . "#fn:1") (role . "doc-noteref")) "1")) " " "This Zettelmarkup super-set is later " (a (@ (href . "00001012920500")) "encoded") ", often into " (a (@ (href . "00001012920510")) "HTML") "." " " "Because Zettelstore HTML encoding philosophy differs a little bit to that of CommonMark, Zettelstore itself will not pass the CommonMark test suite fully." " " "However, no CommonMark language element will fail to be encoded as HTML." " " "In most cases, the differences are not visible for an user, but only by comparing the generated HTML code.") (p "Be aware, depending on the value of the startup configuration key " (a (@ (href . "00001004010000#insecure-html")) (kbd "insecure-html")) ", HTML code found within a CommonMark document or within the mentioned kind of super-set of Zettelmarkup will typically be ignored for security-related reasons."))