Skip to content

Caret

Overview

New in 12.0

Caret was rewritten from the ground up. Some subtle difference may be observed compared to older versions, but these changes were made to align better with expected nesting conventions in the majority of parsers and to improve performance.

Caret optionally adds two different features which are syntactically built around the ^ character. The first is insert which inserts <ins></ins> tags. The second is superscript which inserts <sup></sup> tags.

The Caret extension can be included in Python Markdown by using the following:

import markdown
md = markdown.Markdown(extensions=['pymdownx.caret'])

Tip

PyMdown Extensions uses one delimiter processor for emphasis, deletions, insertions, subscripts, superscripts and marks via BetterEm, Tilde, Caret, and Mark. This allows all delimiter to be parsed simultaneously providing the best nesting logic. So for best results, pair Caret with BetterEm.

import markdown
md = markdown.Markdown(extensions=['pymdownx.betterem', 'pymdownx.caret'])

Insert

To wrap content in an insert tag, simply surround the text with double ^. You can also enable smart_insert in the options. Smart behavior of insert models that of BetterEm.

Insert
^^Insert me^^

Insert me

Superscript

To denote a superscript, you can surround the desired content in single ^. It uses Pandoc style logic, so if your superscript needs to have spaces, you must escape the spaces.

Superscript
X^2^ + 4x - 8

text^a\ superscript^

X2 + 4x - 8

texta superscript

If desired, the Pandoc requirement of "no spaces", unless they are escaped, can be disabled via the no_space option.

Superscript
X^2^ + 4x - 8

text^a superscript^

texta superscript

New in 12.0

no_space is new in 12.0.

Options

Option Type Default Description
smart_insert bool False Use smart logic with insert characters.
insert bool True Enable insert feature.
superscript bool True Enable superscript feature.
no_space bool True Enable Pandoc style requirement of "no unescaped spaces".