/usr/share/doc/python-markdown-doc/docs/extensions/extra.txt is in python-markdown-doc 2.6.9-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 | title: Extra Extension
prev_title: Extensions
prev_url: index.html
next_title: Abbreviations Extension
next_url: abbreviations.html
Python-Markdown Extra
=====================
Summary
-------
A compilation of various Python-Markdown extensions that (mostly) imitates
[PHP Markdown Extra](http://michelf.com/projects/php-markdown/extra/).
The supported extensions include:
* [Abbreviations](abbreviations.html)
* [Attribute Lists](attr_list.html)
* [Definition Lists](definition_lists.html)
* [Fenced Code Blocks](fenced_code_blocks.html)
* [Footnotes](footnotes.html)
* [Tables](tables.html)
* [Smart Strong](smart_strong.html)
See each individual extension for syntax documentation. Extra and all its
supported extensions are included in the standard Markdown library.
Usage
-----
From the Python interpreter:
>>> import markdown
>>> html = markdown.markdown(text, ['markdown.extensions.extra'])
There may be [additional extensions](index.html) that are distributed with
Python-Markdown that are not included here in Extra. The features
of those extensions are not part of PHP Markdown Extra, and
therefore, not part of Python-Markdown Extra. If you really would
like Extra to include additional extensions, we suggest creating
your own clone of Extra under a different name
(see the [Extension API](api.html)).
Markdown Inside HTML Blocks
---------------------------
Unlike the other Extra features, this feature is built into the markdown core and
is turned on when `markdown.extensions.extra` is enabled.
The content of any raw HTML block element can be Markdown-formatted simply by
adding a `markdown` attribute to the opening tag. The markdown attribute will be
stripped from the output, but all other attributes will be preserved.
If the markdown value is set to `1` (recommended) or any value other than `span`
or `block`, the default behavior will be executed: `p`,`h[1-6]`,`li`,`dd`,`dt`,
`td`,`th`,`legend`, and `address` elements skip block parsing while others do not.
If the default is overridden by a value of `span`, *block parsing will be skipped*
regardless of tag. If the default is overridden by a value of `block`,
*block parsing will occur* regardless of tag.
#### Simple Example:
```
This is *true* markdown text.
<div markdown="1">
This is *true* markdown text.
</div>
```
#### Result:
```
<p>This is <em>true</em> markdown text.</p>
<div>
<p>This is <em>true</em> markdown text.</p>
</div>
```
### Nested Markdown Inside HTML Blocks
Nested elements are more sensitive and must be used cautiously. To avoid
unexpected results:
* Only nest elements within block mode elements.
* Follow the closing tag of inner elements with a blank line.
* Only have one level of nesting.
#### Complex Example:
```
<div markdown="1" name="Example">
The text of the `Example` element.
<div markdown="1" name="DefaultBlockMode">
This text gets wrapped in `p` tags.
</div>
The tail of the `DefaultBlockMode` subelement.
<p markdown="1" name="DefaultSpanMode">
This text *is not* wrapped in additional `p` tags.
</p>
The tail of the `DefaultSpanMode` subelement.
<div markdown="span" name="SpanModeOverride">
This `div` block is not wrapped in paragraph tags.
Note: Subelements are not required to have tail text.
</div>
<p markdown="block" name="BlockModeOverride">
This `p` block *is* foolishly wrapped in further paragraph tags.
</p>
The tail of the `BlockModeOverride` subelement.
<div name="RawHtml">
Raw HTML blocks may also be nested.
</div>
</div>
This text is after the markdown in HTML.
```
#### Result:
```
<div name="Example">
<p>The text of the <code>Example</code> element.</p>
<div name="DefaultBlockMode">
<p>This text gets wrapped in <code>p</code> tags.</p>
</div>
<p>The tail of the <code>DefaultBlockMode</code> subelement.</p>
<p name="DefaultSpanMode">
This text <em>is not</em> wrapped in additional <code>p</code> tags.</p>
<p>The tail of the <code>DefaultSpanMode</code> subelement.</p>
<div name="SpanModeOverride">
This <code>div</code> block is not wrapped in paragraph tags.
Note: Subelements are not required to have tail text.</div>
<p name="BlockModeOverride">
<p>This <code>p</code> block <em>is</em> foolishly wrapped in further paragraph tags.</p>
</p>
<p>The tail of the <code>BlockModeOverride</code> subelement.</p>
<div name="RawHtml">
Raw HTML blocks may also be nested.
</div>
</div>
<p>This text is after the markdown in HTML.</p>
```
|