<Python, Markdown, Pygments> markdown + Pygments の使い方。

ようやくわかったのでメモ。

markdownモジュールを使って、markdownhtmlに変換。
それをsyntax highlight効かして表示するには、Pygmentscssを埋め込まないといけんらしい。

ipython notebookでちと試す。

In [1]: from markdown import markdown

In [2]: a = '''
   ...: ```python
   ...: import os
   ...: def hage():
   ...:      print('Hi, Hage')
   ...: ```
   ...: '''

In [3]: from IPython.core.display import display, HTML

In [4]: b = markdown(a, extensions=['extra', 'codehilite'])
        #b = markdown(a, extensions=['tables', 'fenced_code', 'codehilite', 'nl2br', 'def_list'])

In [5]: b
Out[5]: '<div class="codehilite"><pre><span></span><span class="kn">import</span> <span class="nn">os</span>\n<span class="k">def</span> <span class="nf">hage</span><span class="p">():</span>\n    <span class="k">print</span><span class="p">(</span><span class="s1">&#39;Hi, Hage&#39;</span><span class="p">)</span>\n</pre></div>\n\n\n<p><strong>A</strong></p>\n<p><code>a</code></p>'

In [6]: css = '''
   ...: <style type='text/css'>
   ...: <!--
   ...: .codehilite .hll { background-color: #ffffcc }
   ...: .codehilite  { background: #f0f0f0; }

   ...: .codehilite .vg { color: #bb60d5 } /* Name.Variable.Global */
   ...: .codehilite .vi { color: #bb60d5 } /* Name.Variable.Instance */
   ...: .codehilite .il { color: #40a070 } /* Literal.Number.Integer.Long */
   ...: -->
   ...: </style>
   ...: '''

In [7]: c = css + b

In [8]: display(HTML(c))

で、

import os
def hage():
    print('Hi, Hage')

となる。
じゃじゃーん。

埋め込むcssコマンドラインで下記を叩けば ずらずらっと 出てくる。

>pygmentize -S default -f html -a .codehilite

markdownextensionsを指定しないといけんよ。

マニュアル群

Python Markdown

Welcome! — Pygments