3 回答

TA贡献1799条经验 获得超9个赞
我已经确定,codehilite除了具有一般性格外,还可以在紧接其前的一个列表时中断:
这种降价及其变体是行不通的:
* apples
* oranges
#!python
import os
但是,如果我在列表和代码之间添加了一些内容,那么它确实可以工作:
* apples
* oranges
Put something between the code and the list
#!python
import os
但这通常是不可预测的。我尝试了成千上万种组合,并成功地复制了文档中的内容,却取得了非常不同的结果。不开心...
使用fenced_code替代
然后,我进入了pygments的其他子扩展,并尝试显式添加fenced_code扩展并重试一下fenced代码示例。效果更好。
所以继续
pygmented_body = markdown.markdown(rendered_body,
extensions=['codehilite', 'fenced_code'])
我通过fenced code单独使用获得了更大的成功:
* Don't need to indent 4 spaces
* Don't need something between the list and the code
~~~~{.python hl_lines='3'}
import os
print('hello, world')
~~~~
And final comments here.

TA贡献1810条经验 获得超5个赞
以下是一些示例(遵循我的意愿..)
In [1]: import markdown2
In [2]: markdown2.markdown("> This is a paragraph and I am **bold**")
Out[2]: u'<blockquote>\n <p>This is a paragraph and I am <strong>bold</strong></p>\n</blockquote>\n'
In [3]: code = """```python
if True:
print "hi"
```"""
...:
In [4]: markdown2.markdown(code, extras=['fenced-code-blocks'])
Out[4]: u'<div class="codehilite"><pre><code><span class="k">if</span> <span class="bp">True</span><span class="p">:</span>\n <span class="k">print</span> <span class="s">"hi"</span>\n</code></pre></div>\n'

TA贡献1846条经验 获得超7个赞
对不起,刚才看到您的问题。
在python-markdown中,每行代码需要4个空格。
In [13]: text = """
....: :::python
....: import os
....: """
In [14]: markdown.markdown(text, extensions = ['codehilite'])
Out[14]: u'<div class="codehilite"><pre><span class="kn">import</span>
<span class="nn">os</span>\n</pre></div>'
添加回答
举报