Enhanced Markdown¶
Extension sources:
Markdownextension documentationPyMdownextension documentation, repository and related MkDocs documentation- test
.mdfile from thePyMdownrepository - example
mkdocs.ymlfiles from thePyMdownrepository and thepymdown-extensionsrepository
Incomplete features, enabled but not documented:
Planned features, not enabled:
- MagicLink
- Arithmatex
- Critic
- SaneLists (CAUTION: deviation from basic Markdown)
- NewLineToBreak (CAUTION: major deviation from basic Markdown) (would align with StackOverflow and GitHub flavored Markdown)
- EscapeAll
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
strikethroughand 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
highlightingrandom 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-quoteto the left and aright-single-quoteto the right’ - “a
left-double-quoteto the left and aright-double-quoteto the right” [DISABLED]<<aleft-angle-quoteto the left and aright-angle-quoteto the right>>- an
ellipsisat the very end… - an
ndashis longer than – say – ahyphen - an
mdashis longer than — say — anndash
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©Trademark™Registered® and free to reproduce - to direct mail to an addressee not at the usual place of receipt, use the
care ofnotation ℅ - with things being
not equal,X ≠ Y, things are somethingplus or minusanother thing, X = Y ± Z - a
right arrow→ points to adouble arrow↔ which also points to aleft arrow← fractionsgalore: ½ ¼ ¾ ⅓ ⅔ ⅕ ⅖ ⅗ ⅘ ⅙ ⅚ ⅛ ⅜ ⅝ ⅞ordinalsgalore: 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+Del
- 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
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 |
-
This is the first footnote. ↩
-
This is the footnote with the label
[^label-footnote]. Mind the carrot (read caret). ↩ -
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 footnotesThe end of the Third Age. ↩