Skip to content

Enhanced Markdown

Extension sources:

Incomplete features, enabled but not documented:

Planned features, not enabled:

Inline text formatting

Emphasis

Uses the PyMdown Caret extension and the PyMdown Tilde extension.

Source code
- inserted text is displayed as ^^underlined^^ and has the `<ins>` HTML tag
- deleted text is displayed as ~~strikethrough~~ and has the `<del>` HTML tag
  • inserted text is displayed as underlined and has the <ins> HTML tag
  • deleted text is displayed as strikethrough and has the <del> HTML tag

Subscript and Superscript

Uses the PyMdown Caret extension and the PyMdown Tilde extension (syntax follows Pandoc style).

Source Code
- chemistry is fun: CH~3~CH~2~OH [ClO~2~]^+^
- math is fun (even without [LaTeX][pymdown-arithmatex]): x^2^ + y^2^ = 4; a~1~ + a~2~ + ... + a~n-1~ = a~n~
- math is beautiful: e^i\ ·\ π^ + 1 = 0
- superscript^with spaces won't work^, but superscript^\ with\ escaped\ spaces\ will\ work^
- subscript~with spaces won't work~ but subscript~\ with\ escaped\ spaces\ will\ work~
  • chemistry is fun: CH3CH2OH [ClO2]+
  • math is fun (even without LaTeX): x2 + y2 = 4; a1 + a2 + … + an-1 = an
  • math is beautiful: ei · π + 1 = 0
  • superscript^with spaces won’t work^, but superscript with escaped spaces will work
  • subscript~with spaces won’t work~ but subscript with escaped spaces will work

Highlighting

Uses the PyMdown Mark extension.

Source Code
- someone is `highlighting` random ==bits== of ==text== all ==over== the place
- marking is smart even when its markers are ==used==inside==a==sentence==
  • someone is highlighting random bits of text all over the place
  • marking is smart even when its markers are used==inside==a==sentence

Special characters

Uses the Smarty extension.

Source Code
- 'a `left-single-quote` to the left and a `right-single-quote` to the right'
- "a `left-double-quote` to the left and a `right-double-quote` to the right"
- `[DISABLED]` `<<`a `left-angle-quote` to the left and a `right-angle-quote` to the right`>>`
- an `ellipsis` at the very end...
- an `ndash` is longer than -- say -- a `hyphen`
- an `mdash` is longer than --- say --- an `ndash`
  • ‘a left-single-quote to the left and a right-single-quote to the right’
  • “a left-double-quote to the left and a right-double-quote to the right”
  • [DISABLED] <<a left-angle-quote to the left and a right-angle-quote to the right>>
  • an ellipsis at the very end…
  • an ndash is longer than – say – a hyphen
  • an mdash is longer than — say — an ndash

Uses the PyMdown Smart Symbols extension.

Source Code
- this creative work is `Copyright` (c) `Trademark` (tm) `Registered` (r) and free to reproduce
- to direct mail to an addressee not at the usual place of receipt, use the `care of` notation c/o
- with things being `not equal,` X =/= Y, things are something `plus or minus` another thing, X = Y +/- Z
- a `right arrow` --> points to a `double arrow` <--> which also points to a `left arrow` <--
- `fractions` galore: 1/2 1/4 3/4 1/3 2/3 1/5 2/5 3/5 4/5 1/6 5/6 1/8 3/8 5/8 7/8
- `ordinals` galore: 1st 2nd 3rd 4th 5th 10th; 1,000th 1,000th and bazillionth doesn't work
  • this creative work is Copyright © TrademarkRegistered ® and free to reproduce
  • to direct mail to an addressee not at the usual place of receipt, use the care of notation ℅
  • with things being not equal, X ≠ Y, things are something plus or minus another thing, X = Y ± Z
  • a right arrow → points to a double arrow ↔ which also points to a left arrow
  • fractions galore: ½ ¼ ¾ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞
  • ordinals galore: 1st 2nd 3rd 4th 5th 10th; 1,000th 1,000th and bazillionth doesn’t work

Keyboard keys

Uses the PyMdown Keys extension.

Source code
- Windows: ++ctrl+alt+delete++
- Office: ++ctrl+c++ ++ctrl+v++
- Mac: ++cmd++
- Media: ++media++ ++a++ ++d++ ++s++ ++ctrl++ ++y++ ++o++ ++u++
- Star Trek: ++space++ ++end++
- wrong command: ++ctrl++ ++break++ ++reset++
  • Windows: CtrlAltDel
  • Office: CtrlC CtrlV
  • Mac: Cmd
  • Media: Media A D S Ctrl Y O U
  • Star Trek: Space End
  • wrong command: Ctrl Break Reset

See the full reference on the dedicated page.

Checklists

Uses the Pymdown Tasklist extension.

Source code
A `checklist` with `nesting`:

- [x] checked item
- [ ] unchecked item
    - [ ] unchecked sub-item
    - [x] checked sub-item
        - [ ] unchecked sub-sub-item
        - [x] checked sub-sub-item
    - [ ] unchecked sub-item
- [ ] unchecked item

Another `checklist` with `nesting`:

- [x] checked item
  - [ ] unchecked sub-item
    - [x] checked sub-sub-item
  - [ ] unchecked sub-item
- [x] checked item

A checklist with nesting:

  • checked item
  • unchecked item
    • unchecked sub-item
    • checked sub-item
      • unchecked sub-sub-item
      • checked sub-sub-item
    • unchecked sub-item
  • unchecked item

A checklist with nesting inside Admonition block:

Note

  • checked item
  • unchecked sub-item
    • checked sub-sub-item
  • unchecked sub-item
  • checked item

Abbreviations and Definition Lists

Uses the Abbreviations extension.

Source code
Bewildering *[abbreviations][abbreviation-disambiguation]* such as Mssr. and its jocund plural, Mssrs.,
*[initialisms][abbreviation-disambiguation]* such as PHP or
*[acronyms][abbreviation-disambiguation]* such as ATLAS, LISP and FORTRAN
can be defined and end up inside `<abbr>` tags.

*[Mssr]: Monsieur
*[Mssrs]: Messieurs
*[PHP]: "Personal Home Page" and later the recursive acronym "PHP: Hypertext Preprocessor"
*[ATLAS]: "A Toroidal LHC ApparatuS": one of the seven particle detector experiments constructed at the LHC (Large Hadron Collider), a particle accelerator at CERN (the European Organization for Nuclear Research) in Switzerland

Bewildering abbreviations such as Mssr. and its jocund plural, Mssrs., initialisms such as PHP or acronyms such as ATLAS, LISP and FORTRAN can be defined and end up inside <abbr> tags.


Uses the DefinitionLists extension.

Source code
LISP
:   A family of computer programming languages with a long history and a distinctive,
    fully parenthesized prefix notation. Originally specified in 1958, LISP is
    the second-oldest high-level programming language in widespread use today.
    Only Fortran is older, by one year.

    `#!lisp (apply 'append (mapcar '(lambda ( x ) (list (car x) (cadr x) (cons 40 swd) (cons 41 (setq swd (+ swd (* del (/ (caddr x) len))))))) lst))`

FORTRAN
:   A general-purpose, compiled imperative programming language
    that is especially suited to numeric computation and scientific computing.

    > People are very flexible and learn to adjust to strange surroundings — they can
    > become accustomed to read Lisp and Fortran programs, for example.
    >
    > Leon Sterling and Ehud Shapiro, Art of PROLOG, MIT Press.

PHP
:   A language with many magical features
    and no architect.

    This has never deterred the masses to adopt and its creators improve the language.

    > I did not develop the PHP we know today. Dozens, if not hundreds of people, developed PHP.
    > I was simply the first developer.
    >
    > I don't know how to stop it, there was never any intent to write a programming language [...]
    > I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way.
    >
    > Rasmus Lerdorf
LISP

A family of computer programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in 1958, LISP is the second-oldest high-level programming language in widespread use today. Only Fortran is older, by one year.

(apply 'append (mapcar '(lambda ( x ) (list (car x) (cadr x) (cons 40 swd) (cons 41 (setq swd (+ swd (* del (/ (caddr x) len))))))) lst))

FORTRAN

A general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.

People are very flexible and learn to adjust to strange surroundings — they can become accustomed to read Lisp and Fortran programs, for example.

Leon Sterling and Ehud Shapiro, Art of PROLOG, MIT Press.

PHP

A language with many magical features and no architect.

This has never deterred the masses to adopt and its creators improve the language.

I did not develop the PHP we know today. Dozens, if not hundreds of people, developed PHP. I was simply the first developer.

I don’t know how to stop it, there was never any intent to write a programming language […] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way.

Rasmus Lerdorf

Footnotes

Uses the Footnotes extension.

Source code
Footnotes[^1] have a label[^label-footnote] and content.
They are numbered automatically regardless of label[^third-footnote].

[^1]: This is the first footnote.
[^label-footnote]: This is the footnote with the label `[^label-footnote]`. Mind the carrot (read caret).
[^third-footnote]:
    This is the third and final footnote. This is its *first* paragraph.

    It is preceded by `3.` even though its label is `[^third-footnote]`.
    This is its *second* paragraph.

    > Fascinating facts may be found
    > quoted within a `blockquote.`

        code has been recorded to live inside footnotes

    The end of the **Third Age.**

Footnotes1 have a label2 and content. They are numbered automatically regardless of label3.

Progress Bars

Warning

This doesn’t currently work. Disabled until further notice.

Uses the Pymdown ProgressBar extension.

Non-functional content
Source code
| Test                | Result                                     |
| ------------------- | ------------------------------------------ |
| Animated: 0%        | [=0% "0%"]{: .candystripe-animate}         |
| Animated: 5%        | [=5% "5%"]{: .candystripe-animate}         |
| Animated: 25%       | [=25% "25%"]{: .candystripe-animate}       |
| Animated: 45%       | [=45% "45%"]{: .candystripe-animate}       |
| Animated: 65%       | [=65% "65%"]{: .candystripe-animate}       |
| Animated: 85%       | [=85% "85%"]{: .candystripe-animate}       |
| Animated: 100%      | [=100% "100%"]{: .candystripe-animate}     |
| Division Percentage | [= 212.2/537 "212.2/537 Testing division"] |
| No Label            | [= 50%]                                    |
| Inline              | Before[= 50% "I'm a block!"]After          |

Error

not working despite extension being enabled and the HTML being produced correctly

Test Result
Animated: 0% [=0% “0%”]{: .candystripe-animate}
Animated: 5% [=5% “5%”]{: .candystripe-animate}
Animated: 25% [=25% “25%”]{: .candystripe-animate}
Animated: 45% [=45% “45%”]{: .candystripe-animate}
Animated: 65% [=65% “65%”]{: .candystripe-animate}
Animated: 85% [=85% “85%”]{: .candystripe-animate}
Animated: 100% [=100% “100%”]{: .candystripe-animate}
Division Percentage [= 212.2/537 “212.2/537 Testing division”]
No Label [= 50%]
Inline Before[= 50% “I’m a block!”]After

  1. This is the first footnote. 

  2. This is the footnote with the label [^label-footnote]. Mind the carrot (read caret). 

  3. This is the third and final footnote. This is its first paragraph.

    It is preceded by 3. even though its label is [^third-footnote]. This is its second paragraph.

    Fascinating facts may be found quoted within a blockquote.

    code has been recorded to live inside footnotes
    

    The end of the Third Age.