Extended Markdown Cheatsheet
1. Heading ID
Markdown:
### My Great Heading {#heading-ids}
Markdown
My Great Heading
In HTML:
My Great Heading
Link to Heading IDs
2.2. Code Fencing and Highlighting
Notes:
- We can make block code fences without need to be idented
-
lang
is optional to specify the language of the code; if not specified, the app won't highlight the code; - We need one empty line before
Syntaxes
```
This is a fenced code block.
```
Syntaxes
~~~
This is another fenced code block.
~~~
Showcases
This is a fenced code block.
No language indicated, so no syntax highlighting.
s = "There is no highlighting for this."
But let's throw in a <b>tag</b>.
Showcases (javascript
)
var s = "JavaScript syntax highlighting";
alert(s);
Showcases (python
)
def function():
#indenting works just fine in the fenced code block
s = "Python syntax highlighting"
print s
Showcases (ruby
)
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
2.3. Tables
Notes:
- we can set alignment in table with a colon (:)
- we can add formatting text, links, code and HTML character code, but not: heading, headings, blockquotes, lists, horizontal rules, images, HTML tags, or fenced code
Syntaxes
| Option | Description |
| ------ | ----------- |
| data | path to data files to supply the data that will be passed into templates. |
| engine | engine to be used for processing templates. Handlebars is the default. |
| ext | extension to be used for dest files. |
Showcases
Option | Description |
---|---|
data | path to data files to supply the data that will be passed into templates. |
engine | engine to be used for processing templates. Handlebars is the default. |
ext | extension to be used for dest files. |
Syntaxes
| Syntax | Description | Test Text is long |
| :--- | :----: | ---: |
| Header from | Title | Here's this is |
| Paragraph | Text | And more |
Showcases
Syntax | Description | Test Text is long |
---|---|---|
Header from | Title | Here's this is |
Paragraph | Text | And more |
Syntaxes
| Syntax | Description | Test Text is long |
| :--- | :----: | ---: |
| [Example](https://www.example.com/) | **Title** | `Here's this is` |
| Paragraph | Text | And more |
Showcases
Syntax | Description | Test Text is long |
---|---|---|
Example | Title | Here's this is |
Paragraph | Text | And more |
2.4. Footnote
Example: The First Part
Here's a simple footnote,[^1] and here's a longer one,[^bignote], and [^withcode]
Example: The Second Part
[^1]: This is the first footnote.
[^bignote]: Here's one with multiple paragraphs.
For example like this
[^withcode]: code
or code in paragrahps
code and codes
Or add inline footnote
Another example of footnote 1 link1 and footnote 2 link[^second].
Or to add inline footnote^[Text of inline footnote] definition.
Or duplictade reference
This duplicated footnote reference[^second].
and multiple paragraphs.
[^second]: Another footnote text.
2.4. Strikethrough, Highlighting, Underline
Example of strikethrough
strikethrough
In HTML: strikethrough
Example of mark/highlighting
==marked text==
in HTML: marked text
Example of underline
underline
in HTML: underline
2.5. Task Lists
Example
- Write the press release
- Update the website
- Contact the media
2.6. Definition Lists
Example
- First Term
- This is the definition of the first term.
- Second Term
- This is one definition of the second term.
- This is another definition of the second term.
In HTML:
- First Term
- This is the definition of the first term.
- Second Term
- This is one definition of the second term.
- This is another definition of the second term.
*Or *
- Term 1
- Definition 1
with lazy continuation. - Term 2 with inline markup
- Definition 2
{ some code, part of Definition 2 }Third paragraph of definition 2.
Or in compact style:
Term 1
~ Definition 1
Term 2
~ Definition 2a ~ Definition 2b
2.7. Emojies
Emoji can be copy pasted
Gone camping! ⛺ Be back soon.
That is so funny! 😂
Or, use markdown
Gone camping! Be back soon.
That is so funny!
Classic markup: :crush: :tear:
Shortcuts (emoticons): :-) :-( 8-) ;)
2.9. Typographic replacements
Example
(c) (C) (r) (R) (tm) (TM) (p) (P) +-
test.. test… test….. test?….. test!….
!!!!!! ???? ,, – —
"Smartypants, double quotes" and ‘single quotes'
2.10. Superscript and Subscript
Example Superscript
x^2^
In HTML: x2
Example Subscript
H~2~O
In HTML: H2O
2.11. Inserted Text
Example
++Inserted text++
In HTML: This text has been inserted
2.12. Abbreviations
Example
The "HTML" specification is maintained by the "W3C".
*[HTML]: Hyper Text Markup Language
*[W3C]: World Wide Web Consortium
In HTML:
The HTML specification is maintained by the W3C.
2.13. HTML Entities and Character Codes
Example
© & ¨ ™ ¡ £
& < > ¥ € ® ± ¶ § ¦ ¯ « ·
|
Or
X² Y³ ¾ ¼ × ÷ »
Or
18ºC " '
2.14. Latex
Note:
- Sometimes with
\(
and\)
brackets
Example
$E=mc^2$
\[\sin(\alpha)^{\theta}=\sum_{i=0}^{n}(x^i + \cos(f))\]Or, inline
The Gamma function satisfying $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$ is via the Euler integral
2.15. Mentions, Tag, Font Awesome
Note:
- with
fa-something
:
Example
This is @mentions
This is #tags
This is tags
This is font awesome :fa-star:
2.16. Diagram
Notes:
- Your app should support the specific library or engine to draw the diagram
- You should specify particular language of the fenced code block and write the definition of your diagram within it.
2.16.1 Mermaid
Notes:
- It's implemented in showdown-mermaid.js
- Rendering diagrams of Flowchart or Sequence or Gantt
- Using mermaid
- Check mermaid doc for more information.
- Code inside
{ }
is optional
Syntaxes
-
Flowchart syntax:
```mermaid {"align": "left | center | right", "codeblock": true | false} graph TD; <code content> ```
-
Sequence diagram syntax:
```mermaid {"align": "left | center | right", "codeblock": true | false} sequenceDiagram <code content> ```
-
Gantt diagram syntax:
```mermaid {"align": "left | center | right", "codeblock": true | false} gantt <code content> ```
Showcases
- Flowchart
```mermaid {"align":"center", "codeblock": true} graph TD; A–>B; A–>C; B–>D; C–>D;
```mermaid {"align":"center"}
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
- Sequence diagram
```mermaid {"align":"right"} sequenceDiagram participant Alice participant Bob Alice-»John: Hello John, how are you? loop Healthcheck John-»John: Fight against hypochondria end Note right of John: Rational thoughts
prevail! John–»Alice: Great! John-»Bob: How about you? Bob–»John: Jolly good!
- Gantt diagram
```mermaid
gantt
dateFormat YYYY-MM-DD
title Adding GANTT diagram to mermaid
excludes weekdays 2014-01-10
section A section
Completed task :done, des1, 2014-01-06,2014-01-08
Active task :active, des2, 2014-01-09, 3d
Future task : des3, after des2, 5d
Future task2 : des4, after des3, 5d
2.16.2 Plantuml
Notes:
- It's implemented in showdown-plantuml.js,
- Render diagrams of uml,
- Using plantuml,
- Check plantuml website fpr more information.
- Code inside
{ }
is optional
Syntaxes
```plantuml {"align": "left | center | right", "codeblock": true | false}
@startuml
<code content>
@enduml
```
Showcases
```plantuml {"align":"right"} @startuml participant User
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
@enduml ```
2.16.3 Flowchart
Notes:
- It's implemented in showdown-flowchart.js
- Render diagrams of flowchart
- Using flowchart.js
- Check flowchart website for more information.
- Code inside
{ }
is optional
Syntaxes
```flow {"align": "left | center | right", "codeblock": true | false}
<code content>
```
Syntaxes
```flowchart {"align": "left | center | right", "codeblock": true | false}
<code content>
```
Showcases
```flow {"align":"center"} st=>start: Start:>https://www.google.com[blank] e=>end:>https://www.google.com op1=>operation: My Operation sub1=>subroutine: My Subroutine cond=>condition: Yes or No?:>https://www.google.com io=>inputoutput: catch something… para=>parallel: parallel tasks
st->op1->cond cond(yes)->io->e cond(no)->para para(path1, bottom)->sub1(right)->op1 para(path2, top)->op1
***Showcases***
```flowchart {"align":"right"}
st=>start: Start
e=>end
op1=>operation: My Operation
sub1=>subroutine: My Subroutine
cond=>condition: Yes
or No?:>https://www.google.com
io=>inputoutput: catch something
st->op1->cond
cond(yes)->io->e
cond(no)->sub1(right)->op1
2.16.4 Graphviz's dot
Notes:
- It's implemented in showdown-viz.js
- Render diagrams of graphviz's dot
- Using viz.js.
- Code inside
{ }
is optional
Syntaxes
The <engine name> of json's "engine" field value is ‘circo', ‘dot', ‘neato', ‘osage', ‘twopi' in syntax language attribute.
```dot {"engine": "<engine name>", "align": "<align>"}
<code content>
```
Showcases
- Dot example with dot engine:
```dot {"engine":"dot", "align":"center"} digraph G { main -> parse -> execute; main -> init; main -> cleanup; execute -> make_string; execute -> printf init -> make_string; main -> printf; execute -> compare; }
<br>
- Dot example with circo engine:
```dot {"engine":"circo", "align":"right"}
digraph G {
main -> parse -> execute;
main -> init;
main -> cleanup;
execute -> make_string;
execute -> printf
init -> make_string;
main -> printf;
execute -> compare;
}
2.16.5 Railroad diagrams
Notes:
- It's implemented in showdown-viz.js
- Render diagrams of railroad
- Using railroad-diagrams.
- Code inside
{ }
is optional
Syntaxes
```railroad {"align": "left | center | right", "codeblock": true | false}
<code content>
```
Showcases
```railroad {"align":"center"} Diagram( Optional(‘+', ‘skip'), Choice(0, NonTerminal(‘name-start char'), NonTerminal(‘escape')), ZeroOrMore( Choice(0, NonTerminal(‘name char'), NonTerminal(‘escape'))))
### 2.16.6 WaveDrom
*Notes:*
- It's implemented in showdown-viz.js
- Render diagrams of wavedrom
- Using [wavedrom](https://github.com/wavedrom/wavedrom)
- Check [wavedrom website](https://wavedrom.com) for more information.
- Code inside `{ }` is optional
***Syntaxes***
```wavedrom {"align": "left | center | right", "codeblock": true | false}
<code content>
```
***Showcases***
```wavedrom {"align":"center"}
{signal: [
{name: 'clk', wave: 'p.....|...'},
{name: 'dat', wave: 'x.345x|=.x', data: ['head', 'body', 'tail', 'data']},
{name: 'req', wave: '0.1..0|1.0'},
{},
{name: 'ack', wave: '1.....|01.'}
]}
Showcases
```wavedrom {"align":"right"} { signal: [ { name: "pclk", wave: ‘p…….' }, { name: "Pclk", wave: ‘P…….' }, { name: "nclk", wave: ‘n…….' }, { name: "Nclk", wave: ‘N…….' }, {}, { name: ‘clk0', wave: ‘phnlPHNL' }, { name: ‘clk1', wave: ‘xhlhLHl.' }, { name: ‘clk2', wave: ‘hpHplnLn' }, { name: ‘clk3', wave: ‘nhNhplPl' }, { name: ‘clk4', wave: ‘xlh.L.Hx' }, ]}
### 2.16.7 Vega and Vega-Lite
*Notes:*
- It's implemented in showdown-vega.js
- Render diagrams of [Vega](https://github.com/vega/vega) and [Vega-Lite](https://github.com/vega/vega-lite)
- Using [vega-embed](https://github.com/vega/vega-embed)
- Check [vega website](https://vega.github.io/vega/) and [vega-lite website](https://vega.github.io/vega-lite) for more information.
- Code inside `{ }` is optional
***Syntaxes***
```vega {"align": "left | center | right", "codeblock": true | false}
<code content>
```
***Syntaxes***
```vega-lite {"align": "left | center | right", "codeblock": true | false}
<code content>
```
***Showcases***
- Vega example:
```vega {"align":"center"}
{
"$schema": "https://vega.github.io/schema/vega/v5.json",
"width": 200,
"height": 200,
"autosize": "none",
"signals": [
{
"name": "startAngle", "value": 0,
"bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
},
{
"name": "endAngle", "value": 6.29,
"bind": {"input": "range", "min": 0, "max": 6.29, "step": 0.01}
},
{
"name": "padAngle", "value": 0,
"bind": {"input": "range", "min": 0, "max": 0.1}
},
{
"name": "innerRadius", "value": 0,
"bind": {"input": "range", "min": 0, "max": 90, "step": 1}
},
{
"name": "cornerRadius", "value": 0,
"bind": {"input": "range", "min": 0, "max": 10, "step": 0.5}
},
{
"name": "sort", "value": false,
"bind": {"input": "checkbox"}
}
],
"data": [
{
"name": "table",
"values": [
{"id": 1, "field": 4},
{"id": 2, "field": 6},
{"id": 3, "field": 10},
{"id": 4, "field": 3},
{"id": 5, "field": 7},
{"id": 6, "field": 8}
],
"transform": [
{
"type": "pie",
"field": "field",
"startAngle": {"signal": "startAngle"},
"endAngle": {"signal": "endAngle"},
"sort": {"signal": "sort"}
}
]
}
],
"scales": [
{
"name": "color",
"type": "ordinal",
"domain": {"data": "table", "field": "id"},
"range": {"scheme": "category20"}
}
],
"marks": [
{
"type": "arc",
"from": {"data": "table"},
"encode": {
"enter": {
"fill": {"scale": "color", "field": "id"},
"x": {"signal": "width / 2"},
"y": {"signal": "height / 2"}
},
"update": {
"startAngle": {"field": "startAngle"},
"endAngle": {"field": "endAngle"},
"padAngle": {"signal": "padAngle"},
"innerRadius": {"signal": "innerRadius"},
"outerRadius": {"signal": "width / 2"},
"cornerRadius": {"signal": "cornerRadius"}
}
}
}
]
}
- Vega-Lite example:
```vega-lite {"align":"right"} { "$schema": "https://vega.github.io/schema/vega-lite/v4.json", "description": "Plots two functions using a generated sequence.", "width": 300, "height": 150, "data": { "sequence": { "start": 0, "stop": 12.7, "step": 0.1, "as": "x" } }, "transform": [ { "calculate": "sin(datum.x)", "as": "sin(x)" }, { "calculate": "cos(datum.x)", "as": "cos(x)" }, { "fold": ["sin(x)", "cos(x)"] } ], "mark": "line", "encoding": { "x": { "type": "quantitative", "field": "x" }, "y": { "field": "value", "type": "quantitative" }, "color": { "field": "key", "type": "nominal", "title": null } } }
### 2.16.8 Network Sequence
*Notes:*
- It's implemented in showdown-sequence.js,
- Render diagrams of sequence
- Using [js-sequence-diagrams](https://github.com/bramp/js-sequence-diagrams).
- Code inside `{ }` is optional
***Syntaxes***
The \<theme name> of json's "theme" field value is "hand" or "simple" in syntax language attribute;
```sequence {"theme": "<theme name>", "align": "<align>"}
<code content>
```
***Showcases***
- Sequence example with hand theme:
```sequence {"theme":"hand", "align":"center"}
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!
- Sequence example with simple theme:
```sequence {"theme":"simple", "align":"right"} Alice->Bob: Hello Bob, how are you? Note right of Bob: Bob thinks Bob–>Alice: I am good thanks!
---
## 2.17. Table of Content Generation
**Example**
[TOC]
*Or*
[[TOC]]
*Or*
[[_TOC_]]
---
## 2.18. Admonition
**Example**
!!! note
This is the **note** admonition body
!!! danger Danger Title
This is the **danger** admonition body
---
## 2.19. Attributes
**Example**
item **bold red**{style="color:red"}
in HTML: item <strong style="color:red;">bold red</strong>
---
## 2.13. Custom Containers or Alerts
*Notes:*
- Some engine such as `Markdown-it`, you can add some alert text.
- Available variants:
alert-primary alert-secondary alert-success alert-info alert-warning alert-danger alert-light alert-dark
***Syntaxes***
```md
::: alert-info
This is an info text.
:::
::: alert-danger
This is a danger text.
:::
Showcases
::: alert-primary alert-primary :::
::: alert-secondary alert-secondary :::
::: alert-success alert-success :::
::: alert-info alert-info :::
::: alert-warning alert-warning :::
::: alert-danger alert-danger :::
::: alert-light alert-light :::
::: alert-dark alert-dark :::
in HTML
alert-warning
or
or
2.14. Comments
-
Footnote can have markup ↩