8 python markdown codehighlighter pygments
我正在使用 Flask 写博客,我正在使用 Markdown 的 Python 库为我生成 HTML,我愿意进行语法高亮显示,因此我正在使用 markdown.markdown(string, extensions=['codehilite']
根据他们的wiki,它应该添加一个 html 类;
<div class="codehilite"><pre><code># Code goes here ...</code></pre></div>
Run Code Online (Sandbox Code Playgroud)
但根据我的口译员的尝试,它似乎不起作用;
In [9]: markdown.version
Out[9]: '2.3.1'
In [10]: text = """:::python
....: import os
....: print "This is a text!"
....: """
In [11]: html = markdown.markdown(text, extensions=['codehilite'])
In [12]: html
Out[12]: u'<p>:::python\nimport os\nprint "This is a text!"</p>'
In [13]: # Even more funnier, when following the examples in the usage section "..['codehilite(linenums=True)']
In [14]: html = markdown.markdown(text, extensions=['codehilite(linenums=True)'])
In [15]: html
Out[15]: u'<p>:::python\nimport os\nprint "This is a text!"</p>'
In [16]: # No line numbers, or any class..
Run Code Online (Sandbox Code Playgroud)
我不确定这里有什么问题,我安装了 Pygments,我已经升级了 Markdown 的库,但什么也没有。此处的预期结果是 Markdown 将添加 html 类codehilite,因此我将能够使语法正常工作。这里似乎有什么问题?
我已经确定 codehilite 除了通常喜怒无常之外,在它之前有一个列表时会中断:
这种降价及其变体不起作用:
* apples
* oranges
#!python
import os
Run Code Online (Sandbox Code Playgroud)
但是如果我在列表和代码之间放一些东西,那么它确实有效:
* apples
* oranges
Put something between the code and the list
#!python
import os
Run Code Online (Sandbox Code Playgroud)
但它通常是不可预测的。我尝试了无数种组合,成功地复制了文档中的内容。不开心...
fenced_code替代然后我进入了 pygments 的其他子扩展,并尝试显式添加fenced_code 扩展并重试受防护的代码示例。效果更好。
所以继续
pygmented_body = markdown.markdown(rendered_body,
extensions=['codehilite', 'fenced_code'])
Run Code Online (Sandbox Code Playgroud)
我在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.
Run Code Online (Sandbox Code Playgroud)
小智 4
我找到了另一个解决方案,markdown2
这是一些例子(按照我的意愿......)
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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4522 次 |
| 最近记录: |