This extension adds a secondary way to define code blocks which overcomes a few limitations of the indented code blocks.
This extension is included in the standard Markdown library.
Fenced Code Blocks are defined using the syntax established in PHP Markdown Extra.
Thus, the following text (taken from the above referenced PHP documentation):
This is a paragraph introducing:
~~~~~~~~~~~~~~~~~~~~
a one-line code block
~~~~~~~~~~~~~~~~~~~~
Fenced code blocks can have a blank line as the first and/or last line of a code block and they can also come immediately after a list item without becoming part of the list.
In addition to PHP Extra's syntax, you can define the language of the code
block for use by syntax highlighters etc. The language will be assigned as a
class attribute of the <code>
element in the output. Therefore, you should
define the language as you would a css class - .language
. For consistency
with other markdown syntax, the language can optionally be wrapped in curly
brackets:
~~~~{.python}
# python code
~~~~
~~~~.html
<p>HTML Document</p>
~~~~
The above will output:
<pre><code class="python"># python code
</code></pre>
<pre><code class="html"><p>HTML Document</p>
</code></pre>
Github's tilde (```) syntax is also supported:
```python
# more python code
```
From the Python interpreter:
>>> html = markdown.markdown(text, ['fenced_code'])
If you would like to have your fenced code blocks highlighted with the CodeHilite extension, simply include that extension and the language of your fenced code blocks will be passed in and highlighted appropriately.
>>> html = markdown.markdown(text, ['fenced_code', 'codehilite'])