commonmark_x vs markdown

Note

This is based on results by pandoc --list-extensions=<format>. Quick warning

Note that the list of extensions for commonmark, gfm, and commonmark_x are defined relative to default commonmark. So, for example, backtick_code_blocks does not appear as an extension, since it is enabled by default and cannot be disabled.

This means that some extensions may seem not included (like backtick_code_blocks), but they are default commonmark feature from spec.

Comparison

markdown <- pandoc::pandoc_list_extensions(format = "markdown", version = "3.1.6")
commonmark_x <- pandoc::pandoc_list_extensions(format = "commonmark_x", version = "3.1.6")
commonmark <- pandoc::pandoc_list_extensions(format = "commonmark", version = "3.1.6")
library(dplyr)
library(tidyr)
extensions_by_format <- markdown |>
  bind_rows(commonmark_x) |>
  pivot_wider(names_from = format, values_from = default) |>
  mutate(doc_site = glue::glue("https://pandoc.org/MANUAL.html#extension-{extensions}"))
library(gt)
format_table <- function(tab) {
  gt(tab) |> 
  fmt_url(columns = "doc_site", label = "doc") |> 
  cols_merge(
    columns = c(extensions, doc_site),
    pattern = "{1} ({2})"
  ) |> opt_interactive()
}

Full table

format_table(extensions_by_format) 

Non supported by commonmark_x

non_supported <- extensions_by_format |>
  filter(is.na(commonmark_x)) 
format_table(non_supported)
As a list
glue::glue_data(non_supported, "* {extensions}")
  • abbreviations
  • all_symbols_escapable
  • angle_brackets_escapable
  • auto_identifiers
  • backtick_code_blocks
  • blank_before_blockquote
  • blank_before_header
  • citations
  • compact_definition_lists
  • escaped_line_breaks
  • example_lists
  • fenced_code_attributes
  • fenced_code_blocks
  • four_space_rule
  • grid_tables
  • gutenberg
  • header_attributes
  • ignore_line_breaks
  • inline_code_attributes
  • inline_notes
  • intraword_underscores
  • latex_macros
  • line_blocks
  • link_attributes
  • lists_without_preceding_blankline
  • literate_haskell
  • mark
  • markdown_attribute
  • markdown_in_html_blocks
  • mmd_header_identifiers
  • mmd_link_attributes
  • mmd_title_block
  • multiline_tables
  • native_divs
  • native_spans
  • old_dashes
  • pandoc_title_block
  • raw_tex
  • short_subsuperscripts
  • shortcut_reference_links
  • simple_tables
  • space_in_atx_header
  • spaced_reference_links
  • startnum
  • table_captions
  • tex_math_double_backslash
  • tex_math_single_backslash

Only commonmark_x

only_commonmark_x <- extensions_by_format |>
  filter(is.na(markdown))
format_table(only_commonmark_x)
As a list
glue::glue_data(only_commonmark_x, "* {extensions}")
  • attributes
  • sourcepos

Supported with same default

same_default <- extensions_by_format |>
  filter(!is.na(commonmark_x), commonmark_x == markdown)
format_table(same_default)
As a list
glue::glue_data(same_default, "* {extensions}")
  • ascii_identifiers
  • autolink_bare_uris
  • bracketed_spans
  • definition_lists
  • east_asian_line_breaks
  • fancy_lists
  • fenced_divs
  • footnotes
  • hard_line_breaks
  • implicit_header_references
  • pipe_tables
  • raw_attribute
  • raw_html
  • rebase_relative_paths
  • smart
  • strikeout
  • subscript
  • superscript
  • task_lists
  • tex_math_dollars
  • wikilinks_title_after_pipe
  • wikilinks_title_before_pipe
  • yaml_metadata_block

Different default

different_default <- extensions_by_format |>
  filter(!is.na(commonmark_x), commonmark_x != markdown)
format_table(different_default)
As a list
glue::glue_data(different_default, "* {extensions}")
  • emoji
  • gfm_auto_identifiers
  • implicit_figures