CommonMark manual manual markdown zettelstore zmk 00001006000000 00001007031200 00001008000000 00001008010000 00001012053800 00001012920513 00001006000000 00001007000000 00001007031200 00001008000000 00001008010000 00001012053800 00001012920513 1 (c) 2020-present by Detlef Stern 20220113183435 00001007000000 00001007050000 00001012920516 en EUPL-1.2-or-later 20251117183134 20251117183134 https://commonmark.org/ public CommonMark is a Markdown dialect aimed at unifying the various, often divergent, Markdown dialects by providing an unambiguous syntax specification. It also includes a suite of comprehensive tests to validate implementations. Time will tell whether this attempt is ultimately successful. However, CommonMark stands out as a well-specified Markdown dialect, unlike most (if not all) other dialects. Other software implementations, such as GitHub Flavored Markdown (GFM), adopt CommonMark to some extent, but they also provide proprietary extensions. This makes it harder to switch to another CommonMark implementation if needed. Additionally, some implementations are based on older versions of the CommonMark specification. Zettelstore supports the latest CommonMark specification version 0.31.2 (2024-01-28). If possible, Zettelstore will adapt to newer versions as they become available. To provide CommonMark support, Zettelstore uses currently the Goldmark implementation, which passes all CommonMark validation tests. Effectively, both Markdown and CommonMark can be considered superset languages of HTML. Internally, CommonMark is translated into Sz Encoding. Most aspects of Sz encoding can be represented in Zettelmarkup. However, Sz encoding supports HTML content only at the block level through literal text with a generic attribute set to html Therefore, most uses of HTML within a CommonMark zettel are not translated as expected. As a result, Zettelstore does not fully pass the CommonMark test suite. However, with the exception of inline HTML, no CommonMark language element fails to be encoded as HTML. In most cases, these differences are not visible to users but can only be identified by comparing the generated HTML output.