Markdown is a lightweight markup language created by John Gruber in 2004 for writing formatted text using plain-text editors. It's designed to be easy to read and write, converting seamlessly to HTML while remaining human-readable in its raw form. Markdown has become the de facto standard for documentation, README files, note-taking apps, static site generators, and content management systems. The CommonMark specification standardizes Markdown syntax, while GitHub Flavored Markdown (GFM) extends it with tables, task lists, strikethrough, alerts, math expressions, and Mermaid diagrams β features now widely adopted across development platforms.
26 tables, 141 concepts. Select a concept node to jump to its table row.
Table 1: Headings
Headings give a document its structure, and Markdown offers two ways to write them. The hash-prefix ATX style (# through ######) is by far the most common and covers all six levels, while the older Setext style underlines text for the top two. Custom IDs let you link straight to a specific section.
| Syntax | Example | Description |
|---|---|---|
# Heading 1# Heading 2## Heading 3 | β’ Use 1β6 hash symbols # followed by a spaceβ’ number of hashes determines heading level (H1βH6). | |
Heading 1=========Heading 2--------- | β’ Underline text with = for H1 or - for H2β’ alternative syntax for top two levels only. | |
## My Heading {#custom-id} | β’ Add custom anchor ID using {#id} syntaxβ’ enables linking directly to specific sections. |
Table 2: Text Emphasis
The everyday formatting that makes prose readable β bold, italic, and their combination, all built from asterisks or underscores. A handful of these go beyond core Markdown: strikethrough is a GFM extension, while highlight, subscript, and superscript usually rely on extended syntax or a fall-back to raw HTML tags.
| Technique | Example | Description |
|---|---|---|
**bold text** or __bold text__ | Wrap text in double asterisks ** or double underscores __ for strong emphasis. | |
*italic text* or _italic text_ | Wrap text in single asterisks * or single underscores _ for emphasis. | |
***bold italic*** or ___bold italic___ | Use triple asterisks *** or triple underscores ___ for combined emphasis. | |
~~strikethrough~~ | β’ Wrap text in double tildes ~~ to display crossed-out textβ’ GFM extension. | |
<ins>underlined text</ins> | β’ Use HTML <ins> tag for underlined textβ’ no native Markdown syntax exists for underline. | |
==highlighted text== | β’ Wrap text in double equals signs == to mark/highlightβ’ extended syntax, not universally supported. | |
H~2~O or H<sub>2</sub>O | Use single tildes ~ or HTML <sub> tags for subscript text. | |
X^2^ or X<sup>2</sup> | Use single carets ^ or HTML <sup> tags for superscript text. |
Table 3: Paragraphs and Line Breaks
One of Markdown's most common surprises is that pressing Enter doesn't always create a new line β paragraphs are separated by blank lines, and a line break within a paragraph needs explicit help. These options show the three ways to force that break: trailing spaces, a backslash, or an HTML <br> tag.
| Element | Example | Description |
|---|---|---|
First paragraph.Second paragraph. | β’ Separate paragraphs with a blank line β’ consecutive lines without blank lines merge into one paragraph. | |
First line Second line | End a line with two or more spaces then press Enter to force a line break within a paragraph. | |
First line\Second line | End a line with a backslash \ to create a hard line break; more visible alternative to trailing spaces. | ||
First line<br>Second line | Insert <br> HTML tag for explicit line breaks; works when HTML is supported. |
Table 4: Lists
From simple bullets to nested hierarchies and GitHub's interactive checkboxes, lists are everywhere in Markdown. The detail that trips people up most is indentation β sub-items and continuation paragraphs need 4 spaces or a tab to stay attached to their parent item.
| Type | Example | Description |
|---|---|---|
- Item 1- Item 2- Item 3 | β’ Start lines with -, *, or + followed by a spaceβ’ use consistent markers within a list. | |
1. First2. Second3. Third | β’ Start lines with a number, period . or ), and a spaceβ’ numbering auto-corrects in rendered output. | |
1. Item - Sub-item - Sub-item | β’ Indent sub-items by 4 spaces or 1 tab to create nested lists β’ mix ordered and unordered. | |
- [ ] Unchecked- [x] Checked | β’ Use - [ ] for unchecked and - [x] for checked checkboxesβ’ GFM extension; interactive on GitHub issues and PRs. | |
1. First paragraph. Second paragraph. | Indent continuation paragraphs by 4 spaces or 1 tab to keep them within the same list item. |
Table 5: Links
Links come in more flavors than most people realize. Inline links are the workhorse, but reference-style links keep dense text readable by moving URLs out of the way, relative links keep repository docs portable across branches and forks, and autolinks turn a bare URL into a clickable one automatically.
| Technique | Example | Description |
|---|---|---|
[](https://example.com) | β’ Wrap text in [] and URL in ()β’ most common link syntax. | |
[Link](https://example.com "Title") | β’ Add optional title attribute in quotes after URL β’ shows on hover. | |
[][ref][ref]: https://example.com | β’ Define link reference separately β’ keeps text clean and readable. | |
[Contributing](docs/CONTRIBUTING.md) | β’ Link to files relative to the current file β’ preferred over absolute links inside repositories. | |
<https://example.com> | Wrap URL or email in <> to create automatic clickable link. | |
https://example.com | GFM automatically converts bare URLs to clickable links without angle brackets. | |
<email> | Wrap email address in <> to create mailto link. | |
[]( | β’ Link to headings using # followed by auto-generated or custom IDβ’ creates internal page navigation. |
Table 6: Images
Image syntax mirrors link syntax with a leading !, and the same reference-style and relative-path tricks apply. Two practical notes stand out: always write meaningful alt text for accessibility, and because Markdown can't resize images, reach for a raw <img> tag when you need to control width.
| Technique | Example | Description |
|---|---|---|
 | β’ Use ! before link syntaxβ’ alt text describes image for accessibility and appears if image fails. | |
 | β’ Add optional title attribute in quotes β’ displays as tooltip on hover. | |
![Alt][img-ref][img-ref]: image.jpg | Define image reference separately for reusability and cleaner text. | |
[](https://example.com) | Wrap image syntax in link syntax to make image clickable. | |
<img src="image.jpg" alt="Alt" width="300"> | β’ Use HTML <img> tag to control image dimensionsβ’ Markdown has no native sizing syntax. | |
 | β’ Reference images using relative paths to the current file β’ preferred for repository images. |
Table 7: Code
Showing code is one of Markdown's most-used jobs. Single backticks handle inline snippets, while fenced blocks with triple backticks wrap whole listings β and adding a language identifier after the opening fence unlocks syntax highlighting. The older indented-block style still works but fenced code is almost always the better choice.
| Type | Example | Description |
|---|---|---|
`code` | Wrap text in single backticks ` for inline code within text. | |
`` code with `backtick` `` | Use double backticks to include a literal backtick inside inline code. | |
``` code line 1code line 2 ``` | β’ Wrap code in triple backticks ``` or tildes ~~~β’ cleaner than indenting; supports syntax highlighting. | |
```python def hello(): print("Hello") ``` | β’ Add language identifier after opening fence β’ enables syntax highlighting for that language. | |
code line 1 code line 2 | β’ Indent every line by 4 spaces or 1 tab to create a code block (legacy style β’ prefer fenced). |
Table 8: Blockquotes
A leading > turns a line into a quote, useful for citing sources or setting text apart. Blockquotes can span multiple paragraphs, nest several levels deep, and even contain other Markdown like headings and lists.
| Technique | Example | Description |
|---|---|---|
> This is a quote. | Start line with > followed by a space to create a blockquote. | |
> First paragraph.>> Second paragraph. | Add > on blank lines between paragraphs to keep them in the same blockquote. | |
> Level 1 Level 2 | Use additional > symbols to create nested blockquotes. | |
### Heading> - List item | Blockquotes can contain headings, lists, code, and other Markdown elements. |
Table 9: Horizontal Rules
A horizontal rule draws a divider line to separate sections of a document. Three or more hyphens, asterisks, or underscores on their own line all produce the same thematic break β pick whichever you find most readable in the raw source.
| Syntax | Example | Description |
|---|---|---|
--- | Use three or more hyphens - on a line by themselves to create a horizontal rule. | |
*** | Use three or more asterisks * for a horizontal divider. | |
___ | Use three or more underscores _ for a thematic break. |
Table 10: Tables
Tables are a GFM extension built from pipes and hyphens, with a separator row defining the header. Colons in that separator control column alignment β left, center, or right β and an HTML entity lets you slip a literal pipe character into a cell without breaking the structure.
| Element | Example | Description |
|---|---|---|
| H1 | H2 ||----|----|| A | B | | β’ Use pipes | to separate columns and hyphens - to create header rowβ’ GFM extension. | |
| :--- | | Add colon : on the left side of hyphens in header row to left-align column. | |
| :---: | | Add colons : on both sides of hyphens to center-align column. | |
| ---: | | Add colon : on the right side of hyphens to right-align column. | |
| A | B | | β’ Use HTML entity |<br>• to display a literal pipe character inside a table cell. |
Table 11: Escaping Characters
Sometimes you want a character that Markdown treats as syntax to show up literally β an asterisk that isn't italics, or a backtick that isn't code. A backslash before the character escapes it, and wrapping symbols in backticks is an alternative that displays them verbatim.
| Technique | Example | Description |
|---|---|---|
\*not italic\* | Use backslash \ before special characters to display them literally instead of formatting. | | |
\ ` * _ {} [] () # + - . ! | | These ASCII punctuation characters can be escaped with a backslash. | | ||
`*` | Wrap symbols in backticks to display them literally without escaping. |
Table 12: HTML Embedding
When Markdown alone can't do what you need, you can drop raw HTML right into the document. This unlocks features with no native syntax β styled spans, collapsible <details> sections, and hidden comments β though block-level HTML needs blank lines around it to render correctly.
| Technique | Example | Description |
|---|---|---|
This is <mark>highlighted</mark> text. | β’ Insert HTML tags directly into Markdown β’ works for features Markdown doesn't support natively. | |
<div style="color: red;"> Red text</div> | β’ Use block-level HTML elements for advanced formatting β’ must be separated by blank lines. | |
<details><summary>Toggle</summary>Hidden content</details> | β’ Use <details> and <summary> HTML elements for collapsible sectionsβ’ add blank lines before/after Markdown inside. | |
<!-- This is a comment --> | Use HTML comment syntax <!-- --> to add hidden notes that won't appear in output. |
Table 13: YAML Front Matter
Front matter is a YAML block fenced by triple dashes at the very top of a file, carrying metadata about the document rather than its content. Static site generators and tools like Pandoc, Jekyll, and Hugo read these fields β title, author, date, tags β to drive page titles, exports, and site behavior, and you can add arbitrary custom keys for your own tooling.
| Element | Example | Description |
|---|---|---|
---title: My Documentauthor: Jane Doe--- | β’ Place YAML block at the very start of a file between triple dashes ---β’ provides document-level metadata consumed by tools like Pandoc, Jekyll, Hugo. | |
title: "My Post Title" | Sets the document title used in exports, page <title>, and table-of-contents generation. | |
author: - Jane Doe - John Smith | β’ Specifies document authors β’ accepts a string or list β’ used in PDF/DOCX title pages via Pandoc. | |
date: 2026-04-28 | β’ Sets the document date β’ used in rendered output such as PDF/DOCX and by static site generators. | |
tags: [markdown, docs] | β’ Specifies searchable tags or keywords β’ recognized by Obsidian, Zettlr, and many static site generators. | |
lang: en-US | Sets document locale for Pandoc exports β controls quotation marks, citation style, and punctuation. | |
draft: trueweight: 10 | β’ Any arbitrary key-value pair β’ consumed by the site generator or tooling that processes the file. |
Table 14: Extended Syntax β Footnotes
Footnotes let you attach a reference marker in your text to a note that renders at the bottom of the page β invaluable for citations and asides in long-form writing. You place the [^id] marker inline and define its content separately, using either numbers or word labels, and a footnote can even span multiple indented paragraphs.
| Element | Example | Description |
|---|---|---|
Here is a footnote[^1]. | Add [^number] or [^label] to create a superscript footnote reference. | |
[^1]: Footnote content. | β’ Define footnote content anywhere in document using [^number]: followed by textβ’ renders at bottom. | |
Here[^note].[^note]: Named ref. | β’ Use a word label instead of a number β’ still renders as sequential number in output. | |
[^1]: First paragraph. Second paragraph. | Indent continuation paragraphs by 4 spaces to include multiple paragraphs in a footnote. |
Table 15: Extended Syntax β Definition Lists
Definition lists pair a term with one or more definitions β the format you'd use for a glossary. The definition line starts with a colon, and a single term can carry several definitions. It's an extended-syntax feature, so not every parser supports it.
| Element | Example | Description |
|---|---|---|
Term: Definition | β’ Create term-definition pairs by starting definition line with : followed by spacesβ’ extended syntax, not in CommonMark. | |
Term: Definition 1: Definition 2 | A single term can have multiple definitions listed on separate lines. |
Table 16: Extended Syntax β Abbreviations
Define an abbreviation once and every occurrence of it in the document gets a hover tooltip spelling out the full term β handy for keeping acronym-heavy technical docs readable. It's an extended-syntax feature supported by parsers like Python-Markdown.
| Technique | Example | Description |
|---|---|---|
*[HTML]: Hyper Text Markup Language | β’ Define abbreviations using *[abbr]: definitionβ’ creates tooltip on hover showing full text wherever that abbreviation appears. |
Table 17: Extended Syntax β Emoji
There are two ways to get emoji into Markdown: type a shortcode like :rocket: that the platform converts, or paste the actual Unicode character. Shortcodes are convenient but their names vary between platforms, whereas pasted Unicode emoji work everywhere.
| Method | Example | Description |
|---|---|---|
:smile: :+1: :rocket: | β’ Type emoji names between colons :: to insert emojisβ’ shortcode names vary by platform. | |
π π π | β’ Copy and paste actual emoji characters directly into Markdown β’ works universally across platforms. |
Table 18: Math Expressions
Many platforms now render LaTeX math inside Markdown via MathJax or KaTeX β single dollar signs for inline expressions, double for centered display blocks. The rest of the entries are a quick LaTeX primer for the notation you'll reach for most: fractions, roots, summations and integrals, and Greek letters.
| Syntax | Example | Description |
|---|---|---|
$E = mc^2$ | Wrap expression in single dollar signs $...$ for inline math rendered by MathJax or KaTeX. | |
$$\sum_{k=1}^n a_k$$ | Wrap expression in double dollar signs $$...$$ on its own line for centered block math. | |
```math \int_0^1 x^2 dx ``` | GitHub also supports a ```math fenced block as an alternative to $$ for display math. | |
$`\sqrt{3x-1}`$ | GitHub alternate inline syntax using $`...`$ to avoid conflicts with dollar-sign currency. | |
$\frac{a}{b}$ | Use \frac{numerator}{denominator} for fraction notation. | |
$\sqrt{x^2 + y^2}$ | β’ Use \sqrt{expr} for square rootsβ’ \sqrt[n]{expr} for nth roots. | |
$\sum_{i=1}^{n} x_i$ | Use \sum, \int, \prod with subscript/superscript bounds for series and integrals. | |
$\alpha \beta \gamma \pi$ | LaTeX commands \alpha, \beta, \Gamma, \pi, etc. render Greek letter symbols. |
Table 19: Mermaid Diagrams
Mermaid lets you describe diagrams as plain text inside a fenced code block, and platforms like GitHub, GitLab, and Obsidian render them as real graphics. It's a remarkably versatile toolkit β the diagram types here range from flowcharts and sequence diagrams to Gantt charts, class and ER diagrams, pie charts, and state machines.
| Type | Example | Description |
|---|---|---|
```mermaid flowchart TD A[Start] --> B{Yes?} ``` | β’ Declare flowchart TD (top-down) or LR (left-right)β’ rendered in GitHub, GitLab, VS Code, Obsidian, and more. | |
```mermaid sequenceDiagram Alice->>Bob: Hello ``` | β’ Shows message flow between actors β’ uses ->> for arrows, Note over for annotations. | |
```mermaid gantt section Phase1 Task :a1, 2024-01-01, 7d ``` | Renders project timeline with tasks, sections, and dependencies. | |
```mermaid classDiagram Animal <|-- Dog ``` | Models OOP class relationships with inheritance, composition, and interfaces. | |
```mermaid erDiagram CUSTOMER ||--o{ ORDER : places ``` | Defines database entity relationships using ERD notation with cardinality symbols. | |
```mermaid pie title Pets "Dogs" : 40 "Cats" : 60 ``` | Renders a labeled pie chart from simple key-value pairs. | |
```mermaid stateDiagram-v2 Idle --> Active : click ``` | Models finite state machines with states, transitions, and fork/join nodes. |
Table 20: GitHub Flavored Markdown (GFM) Extensions
These are GitHub-specific niceties that only work within GitHub itself. Typing @username pings a person, #123 links to an issue, and a pasted commit SHA becomes a link β small touches that make conversations in issues and PRs flow. Note that GFM also strips certain raw HTML tags for security.
| Feature | Example | Description |
|---|---|---|
| β’ Type @username to mention a GitHub user or teamβ’ triggers a notification and creates a profile link. | |
#123 | Type # followed by issue number to link to GitHub issues or pull requests. | |
`#0969DA` `rgb(9,105,218)` | β’ Backtick-wrapped hex, RGB, or HSL color values render a color swatch preview β’ only in issues, PRs, and discussions. | |
16c999e8c71134401a78d4d46435517b2271d6ac | Paste full commit SHA to auto-create a link to that commit. | |
Filters <title> <script> <style> etc. | β’ GFM restricts certain HTML tags for security β’ they're rendered as plain text. |
Table 21: GitHub Alerts (Callouts)
Alerts are colored callout boxes that draw the eye to something important. Built on blockquote syntax with a [!TYPE] marker, the five flavors each carry their own color and tone β from a neutral blue NOTE up to a red CAUTION warning of real risk β so readers can gauge severity at a glance.
| Type | Example | Description |
|---|---|---|
> [!NOTE]> Useful information. | β’ Displays a blue info box β’ use for general information users should know. | |
> [!TIP]> Helpful advice. | β’ Displays a green tip box β’ use for optional advice that helps users do things better. | |
> [!IMPORTANT]> Key information. | β’ Displays a purple box β’ use for information critical to achieving a goal. | |
> [!WARNING]> Urgent info. | β’ Displays a yellow/orange box β’ use for urgent information needing immediate attention. | |
> [!CAUTION]> Risky action. | β’ Displays a red box β’ advises about risks or negative outcomes of certain actions. |
Table 22: Markdown Variants and Flavors
There's no single Markdown β the original spec left gaps, and different communities filled them in different ways. CommonMark is the unambiguous baseline most tools now follow, GFM is the dominant developer dialect, and the rest (Pandoc, MultiMarkdown, MDX, and others) each add features for academic writing, document conversion, or interactive React components.
| Variant | Example | Description |
|---|---|---|
Standard specification | β’ Unambiguous Markdown specification resolving inconsistencies in original Markdown β’ widely adopted as baseline by most tools. | |
GFM | β’ GitHub's extension adding tables, task lists, strikethrough, autolinks, alerts, math, and Mermaid β’ most popular developer flavor. | |
GLFM | GitLab's superset of GFM adding math, diagrams, color chips, multiline blockquotes, and GitLab-specific references. | |
PHP Markdown Extra | Extends Markdown with footnotes, definition lists, tables, fenced code blocks, and abbreviations. | |
Pandoc flavor | Pandoc's extensive extension set including superscript, subscript, LaTeX math, YAML metadata blocks, and citations. | |
MMD | Adds metadata, tables, footnotes, citations, math for academic and long-form writing. | |
Markdown + JSX | β’ Combines Markdown with JSX/React components β’ used in Next.js, Docusaurus, and Astro for interactive documentation. |
Table 23: Best Practices
Markdown that renders correctly isn't always Markdown that's pleasant to maintain. These habits β blank lines around headings, consistent list markers, fenced code over indented, alt text on every image, and semantic line breaks for cleaner diffs β keep your source readable and portable across the widest range of parsers.
| Practice | Example | Description |
|---|---|---|
text# Headingtext | Put blank lines before and after headings for maximum compatibility and readability. | |
Use - consistently | Stick to one bullet character ( -, *, or +) throughout a document for unordered lists. | |
Use ``` instead of indents | Prefer fenced code blocks with triple backticks; clearer and supports syntax highlighting. | |
[][ref] at end | Use reference-style links when text has many links; keeps source readable. | |
 | Always provide meaningful alt text for images; critical for accessibility and SEO. | |
Break at sentence/clause | Breaking lines at sentence or clause boundaries improves version control diffs. | |
[Docs](./docs/guide.md) | Use relative links for files within a repository so links work across branches and forks. | |
Let editors wrap | Let text editors handle soft wrapping; hard wrapping at arbitrary column widths creates maintenance issues. |
Table 24: Common Pitfalls and Gotchas
The subtle traps that make Markdown "not render right" β and they catch experienced writers too. A missing blank line before a list, too-shallow nested indentation, underscores triggering accidental italics inside snake_case, blank lines breaking a table, or a dollar sign mistaken for math: knowing these failure modes saves a lot of confused debugging.
| Issue | Example | Description |
|---|---|---|
text- list won't render | Lists require a blank line before them when following a paragraph in many parsers. | |
- Item - Wrong | β’ Nested lists need 4 spaces or 1 tab indentation β’ 1β2 spaces may silently fail in strict parsers. | |
snake_case_variable | β’ Underscores within words can trigger unintended italics β’ use asterisks or code formatting instead. | |
Not visible in editors | Two trailing spaces are invisible; consider using backslash \ or <br> for clarity. | | |
1. First1. Second renders as 1, 2 | β’ Markdown auto-corrects list numbers β’ using 1. for all items is valid but explicit numbering is clearer. | |
Tables break with empty lines | β’ Table rows must be consecutive β’ blank lines terminate the table. | |
$50 items may trigger math | β’ Dollar signs used as currency can conflict with inline math delimiters β’ escape with \$50 or use <span>$</span>50. | |
Requires careful spacing | HTML elements in lists need proper indentation and blank lines or they break list structure. | |
<div>**bold**</div> fails | Markdown formatting does not process inside HTML block elements β add blank lines around Markdown content within HTML. |
Table 25: Advanced Techniques
Once you're comfortable with the basics, these techniques squeeze more out of the syntax β collapsed reference links, definitions placed anywhere in the file, lazy blockquote continuation, hand-built tables of contents from heading anchors, and Obsidian-style wikilinks. They're the touches that separate workmanlike Markdown from genuinely polished documents.
| Technique | Example | Description |
|---|---|---|
***bold and italic*** | Combine multiple emphasis markers for layered formatting effects. | |
[GitHub][][]: https://github.com | β’ Omit reference label when link text matches reference β’ shorthand syntax. | |
[][ref][ref]: url at bottom | β’ Reference definitions can be placed anywhere in document β’ commonly at end for organization. | |
> Line 1 continueson this line | Markdown allows lazy continuation of blockquotes without > on each wrapped line. | |
<div>**Markdown** works here</div> | Markdown inside HTML blocks requires blank lines around the Markdown content. | |
<https://example.com> | Angle brackets ensure URLs with special chars are recognized as links. | |
[]( | β’ Manually create a TOC using heading anchors β’ GitHub/GitLab auto-generate heading IDs from heading text. | |
[[Note Name]] | Obsidian and some platforms support double-bracket internal links to other notes by filename. |
Table 26: Editor and Tool Support
Markdown's reach comes from its ecosystem. This roundup spans the tools you'll actually write and ship with β VS Code and Typora for editing, Obsidian for linked notes, Pandoc for converting to anything, and static site generators like Jekyll, Hugo, and Quarto for publishing β so you can match the right tool to whether you're taking notes, building docs, or producing scientific output.
| Tool | Example | Description |
|---|---|---|
Built-in preview | β’ Side-by-side preview with syntax highlighting β’ extensive extension ecosystem including Mermaid, math, and linting. | |
Note-taking app | Knowledge base tool with bidirectional wikilinks, graph view, callouts, math, and Markdown-first approach. | |
WYSIWYG editor | β’ Live preview editor that hides Markdown syntax while typing β’ seamless WYSIWYG experience. | |
Document converter | Universal converter supporting Markdown to/from dozens of formats including PDF, DOCX, HTML, and EPUB. | |
Documentation site | β’ Documentation theme with admonitions, tabs, grids, math, and Mermaid support β’ widely used for open-source project docs. | |
Collaborative editor | Real-time collaborative Markdown editing with math, Mermaid, presentation mode, and multi-user support. | |
Research writing | Academic Markdown editor with YAML front matter, Pandoc citations, Zotero integration. | |
Static site generator | β’ Blog-aware static site generator using Markdown for content β’ powers GitHub Pages. | |
Fast static generator | Extremely fast static site generator with Markdown support, Mermaid, math, and rich theming. | |
Scientific publishing | β’ Publishing system built on Pandoc supporting executable code, math, Mermaid, and cross-references β’ used in data science and academia. |