((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."))