(((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 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 . "00001007000000 00001007031200 00001007040200 00001007050000") (name . "forward"))) (meta (@ (content . "en") (name . "lang"))) (meta (@ (content . "EUPL-1.2-or-later") (name . "license"))) (meta (@ (content . "20250115200458") (name . "modified"))) (meta (@ (content . "20250115200458") (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.31.2/") (rel . "external")) "specification version 0.31.2 (2024-01-28)") "." " " "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." " " "Effectively, Markdown and CommonMark are super-sets of HTML." " " "Internally, CommonMark is translated into " (a (@ (href . "00001007000000")) "Zettelmarkup") "." " " "Since Zettelmarkup supports HTML content only at the block level via " (a (@ (href . "00001007031200")) "Inline Zettel") ", most uses of HTML within a CommonMark zettel are not translated as expected." " " "Instead, inline level HTML is translated into " (a (@ (href . "00001007040200#literal-text")) "literal text") " with a " (a (@ (href . "00001007050000")) "generic attribute") " set to " (code "html") ".") (p "Therefore, Zettelstore itself will not pass the CommonMark test suite fully." " " "However, no CommonMark language element except inline HTML will fail to be encoded as HTML." " " "In most cases, the differences are not visible for a user, but only by comparing the generated HTML code."))