2016-12-27 14:26:25 +03:00
|
|
|
|
# PyMdown Extensions
|
|
|
|
|
|
|
|
|
|
[PyMdown Extensions][1] is a collection of Markdown extensions that add some
|
|
|
|
|
great features to the standard Markdown library. For this reason, the
|
|
|
|
|
**installation of this package is highly recommended** as it's well-integrated
|
|
|
|
|
with the Material theme.
|
|
|
|
|
|
|
|
|
|
[1]: http://facelessuser.github.io/pymdown-extensions/
|
|
|
|
|
|
|
|
|
|
## Installation
|
|
|
|
|
|
|
|
|
|
The PyMdown Extensions package can be installed with the following command:
|
|
|
|
|
|
|
|
|
|
``` sh
|
|
|
|
|
pip install pymdown-extensions
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The following list of extensions that are part of the PyMdown Extensions package
|
|
|
|
|
are recommended to be used together with the Material theme:
|
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
markdown_extensions:
|
|
|
|
|
- pymdownx.betterem
|
|
|
|
|
- pymdownx.caret
|
|
|
|
|
- pymdownx.critic
|
|
|
|
|
- pymdownx.githubemoji
|
|
|
|
|
- pymdownx.inlinehilite
|
|
|
|
|
- pymdownx.magiclink
|
|
|
|
|
- pymdownx.mark
|
|
|
|
|
- pymdownx.smartsymbols
|
|
|
|
|
- pymdownx.superfences
|
|
|
|
|
- pymdownx.tasklist(custom_checkbox=true)
|
|
|
|
|
- pymdownx.tilde
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Additionally, there is a [MathJax integration](#arithmatex) which should only
|
|
|
|
|
be switched on if needed, as it adds a few hundred kb of JavaScript:
|
|
|
|
|
|
|
|
|
|
``` yaml
|
|
|
|
|
markdown_extensions:
|
|
|
|
|
- pymdownx.arithmatex
|
|
|
|
|
```
|
|
|
|
|
|
2017-01-03 01:11:32 +03:00
|
|
|
|
## Usage
|
2016-12-27 14:26:25 +03:00
|
|
|
|
|
|
|
|
|
### GitHub Flavored Markdown
|
|
|
|
|
|
|
|
|
|
Most of the extensions included in the PyMdown Extensions package try to bring
|
|
|
|
|
the Markdown experience closer to GitHub Flavored Markdown (GFM).
|
|
|
|
|
|
|
|
|
|
The PyMdown Extensions package adds a shorthand to enable all of the included
|
|
|
|
|
extensions that provide the GFM experience. However, usage of the shorthand is
|
|
|
|
|
discouraged, because some extensions are not supported, as the Material theme
|
|
|
|
|
uses the counterparts included in the standard Markdown library.
|
|
|
|
|
|
|
|
|
|
#### BetterEm
|
|
|
|
|
|
|
|
|
|
[BetterEm][2] improves the handling of emphasis markup (**bold** and *italic*)
|
|
|
|
|
within Markdown by providing a more sophisticated parser for better detecting
|
|
|
|
|
start and end tokens. Read the documentation for [usage notes][3].
|
|
|
|
|
|
|
|
|
|
[2]: https://facelessuser.github.io/pymdown-extensions/extensions/betterem/
|
|
|
|
|
[3]: https://facelessuser.github.io/pymdown-extensions/usage_notes/
|
|
|
|
|
|
|
|
|
|
#### GitHub Emoji
|
|
|
|
|
|
|
|
|
|
[GitHub Emoji][4] adds the ability to insert emojis, which does not only
|
|
|
|
|
include the :octocat: emojis, but also a :shit:-load of emojis that we use in
|
|
|
|
|
our daily lives. See the [Emoji Cheat Sheet][5] for a list of all available
|
|
|
|
|
emojis. Happy scrolling :tada:
|
|
|
|
|
|
|
|
|
|
[4]: https://facelessuser.github.io/pymdown-extensions/extensions/githubemoji/
|
|
|
|
|
[5]: http://www.webpagefx.com/tools/emoji-cheat-sheet/
|
|
|
|
|
|
|
|
|
|
#### MagicLink
|
|
|
|
|
|
|
|
|
|
[MagicLink][6] detects links in Markdown and auto-generates the necessary
|
|
|
|
|
markup, so no special syntax is required. It auto-links HTTP(S) and FTP links,
|
|
|
|
|
as well as references to email addresses:
|
|
|
|
|
|
|
|
|
|
[6]: https://facelessuser.github.io/pymdown-extensions/extensions/magiclink/
|
|
|
|
|
|
|
|
|
|
#### SuperFences
|
|
|
|
|
|
|
|
|
|
[SuperFences][7] provides the ability to nest code blocks under blockquotes,
|
|
|
|
|
lists and other block elements, which the [Fenced Code Blocks][8] extension
|
|
|
|
|
from the standard Markdown library doesn't parse correctly.
|
|
|
|
|
|
|
|
|
|
[7]: https://facelessuser.github.io/pymdown-extensions/extensions/superfences/
|
|
|
|
|
[8]: https://pythonhosted.org/Markdown/extensions/fenced_code_blocks.html
|
|
|
|
|
|
|
|
|
|
#### Tasklist
|
|
|
|
|
|
|
|
|
|
[Tasklist][9] adds support for styled checkbox lists. This is useful for
|
|
|
|
|
keeping track of tasks and showing what has been done and has yet to be done.
|
|
|
|
|
Checkbox lists are like regular lists, but prefixed with `[ ]` for empty or
|
|
|
|
|
`[x]` for filled checkboxes.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
``` markdown
|
|
|
|
|
* [x] Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
|
|
|
|
* [x] Nulla lobortis egestas semper
|
|
|
|
|
* [x] Curabitur elit nibh, euismod et ullamcorper at, iaculis feugiat est
|
|
|
|
|
* [ ] Vestibulum convallis sit amet nisi a tincidunt
|
|
|
|
|
* [x] In hac habitasse platea dictumst
|
|
|
|
|
* [x] In scelerisque nibh non dolor mollis congue sed et metus
|
|
|
|
|
* [x] Sed egestas felis quis elit dapibus, ac aliquet turpis mattis
|
|
|
|
|
* [ ] Praesent sed risus massa
|
|
|
|
|
* [ ] Aenean pretium efficitur erat, donec pharetra, ligula non scelerisque
|
|
|
|
|
* [ ] Nulla vel eros venenatis, imperdiet enim id, faucibus nisi
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Result:
|
|
|
|
|
|
|
|
|
|
* [x] Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
|
|
|
|
* [x] Nulla lobortis egestas semper
|
|
|
|
|
* [x] Curabitur elit nibh, euismod et ullamcorper at, iaculis feugiat est
|
|
|
|
|
* [ ] Vestibulum convallis sit amet nisi a tincidunt
|
|
|
|
|
* [x] In hac habitasse platea dictumst
|
|
|
|
|
* [x] In scelerisque nibh non dolor mollis congue sed et metus
|
|
|
|
|
* [x] Sed egestas felis quis elit dapibus, ac aliquet turpis mattis
|
|
|
|
|
* [ ] Praesent sed risus massa
|
|
|
|
|
* [ ] Aenean pretium efficitur erat, donec pharetra, ligula non scelerisque
|
|
|
|
|
* [ ] Nulla vel eros venenatis, imperdiet enim id, faucibus nisi
|
|
|
|
|
|
|
|
|
|
[9]: https://facelessuser.github.io/pymdown-extensions/extensions/tasklist/
|
|
|
|
|
|
|
|
|
|
#### Tilde
|
|
|
|
|
|
|
|
|
|
[Tilde][10] provides an easy way to ~~strike through~~ cross out text.
|
|
|
|
|
The portion of text that should be erased must be enclosed in two tildes
|
|
|
|
|
`~~...~~`, and the extension will take care of the rest.
|
|
|
|
|
|
|
|
|
|
[10]: https://facelessuser.github.io/pymdown-extensions/extensions/tilde/
|
|
|
|
|
|
|
|
|
|
### More syntactic sugar
|
|
|
|
|
|
|
|
|
|
#### Caret
|
|
|
|
|
|
|
|
|
|
[Caret][11] is the sister extension of [Tilde](#tilde) and makes it possible to
|
|
|
|
|
highlight ^^inserted text^^. The portion of text that should be marked as added
|
|
|
|
|
must be enclosed in two carets `^^...^^`.
|
|
|
|
|
|
|
|
|
|
[11]: https://facelessuser.github.io/pymdown-extensions/extensions/caret/
|
|
|
|
|
|
|
|
|
|
#### Mark
|
|
|
|
|
|
|
|
|
|
[Mark][12] adds the ability to ==highlight text== like it was marked with a
|
|
|
|
|
==yellow text marker==. The portion of text that should be highlighted must be
|
|
|
|
|
enclosed in two equal signs `==...==`.
|
|
|
|
|
|
|
|
|
|
[12]: https://facelessuser.github.io/pymdown-extensions/extensions/mark/
|
|
|
|
|
|
|
|
|
|
#### SmartSymbols
|
|
|
|
|
|
|
|
|
|
[SmartSymbols][13] converts markup for special characters into their
|
|
|
|
|
corresponding symbols, e.g. arrows (<--, -->, <-->), trademark and copyright
|
|
|
|
|
symbols ((c), (tm), (r)) and fractions (1/2, 1/4, ...).
|
|
|
|
|
|
|
|
|
|
[13]: https://facelessuser.github.io/pymdown-extensions/extensions/smartsymbols/
|
|
|
|
|
|
|
|
|
|
#### Critic
|
|
|
|
|
|
|
|
|
|
[Critic][14] implements [Critic Markup][15], a Markdown extension that enables
|
|
|
|
|
the tracking of changes (additions, deletions and comments) on documents.
|
|
|
|
|
During compilation of the Markdown document, changes can be rendered (default),
|
|
|
|
|
accepted or rejected.
|
|
|
|
|
|
|
|
|
|
Text can be {--deleted--} and replacement text {++added++}. This can also be
|
|
|
|
|
combined in {~~one~>a single~~} operation. {==Highlighting==} is also possible
|
|
|
|
|
{>>and comments can be added inline<<}.
|
|
|
|
|
|
|
|
|
|
[14]: https://facelessuser.github.io/pymdown-extensions/extensions/critic/
|
|
|
|
|
[15]: http://criticmarkup.com/
|
|
|
|
|
|
|
|
|
|
### Math and code highlighting
|
|
|
|
|
|
|
|
|
|
#### Arithmatex
|
|
|
|
|
|
|
|
|
|
[Arithmatex][16] integrates Material with [MathJax][17] which parses
|
|
|
|
|
block-style and inline equations written in TeX markup and outputs them in
|
|
|
|
|
mathematical notation. See [this thread][18] for a short introduction and quick
|
|
|
|
|
reference on how to write equations in TeX syntax.
|
|
|
|
|
|
|
|
|
|
[16]: https://facelessuser.github.io/pymdown-extensions/extensions/arithmatex/
|
|
|
|
|
[17]: https://www.mathjax.org/
|
|
|
|
|
[18]: http://meta.math.stackexchange.com/questions/5020/
|
|
|
|
|
|
|
|
|
|
##### Blocks
|
|
|
|
|
|
|
|
|
|
Blocks are enclosed in `:::tex $$...$$` which are placed on separate lines.
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
``` tex
|
|
|
|
|
$$
|
|
|
|
|
\frac{n!}{k!(n-k)!} = \binom{n}{k}
|
|
|
|
|
$$
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Result:
|
|
|
|
|
|
|
|
|
|
$$
|
|
|
|
|
\frac{n!}{k!(n-k)!} = \binom{n}{k}
|
|
|
|
|
$$
|
|
|
|
|
|
|
|
|
|
##### Inline
|
|
|
|
|
|
|
|
|
|
Inline equations need to be enclosed in `:::tex $...$`:
|
|
|
|
|
|
|
|
|
|
Example:
|
|
|
|
|
|
|
|
|
|
``` tex
|
|
|
|
|
Lorem ipsum dolor sit amet: $p(x|y) = \frac{p(y|x)p(x)}{p(y)}$
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Result:
|
|
|
|
|
|
|
|
|
|
Lorem ipsum dolor sit amet: $p(x|y) = \frac{p(y|x)p(x)}{p(y)}$
|
|
|
|
|
|
|
|
|
|
#### Inlinehilite
|
|
|
|
|
|
|
|
|
|
[Inlinehilite][19] adds support for inline code highlighting. It's useful for
|
|
|
|
|
short snippets included within body copy, e.g. `#!js var test = 0;` and can be
|
|
|
|
|
achived by prefixing inline code with a shebang and language identifier,
|
|
|
|
|
e.g. `#!js`.
|
|
|
|
|
|
|
|
|
|
[19]: https://facelessuser.github.io/pymdown-extensions/extensions/inlinehilite/
|