MarkdownのGitHub方言GFMを使えるようにする。
前回まで
- GitHub Flavored Markdown(GFM) をローカルで書いて閲覧したい
- PythonでMarkdownからHTMLを生成するためのパッケージ仮想環境を用意する
- Python3.6.1のvenvにMarkdownパッケージをインストールする
py-gfmインストール
インストールしたい仮想環境を有効化する
source venv_markdown.sh
(markdown) {UserName}@{MachineName} /{カレントディレクトリパス} $
先頭に(markdown)
と表示されていれば仮想環境が有効化されている。
確認
念のためPythonのバージョンも確認する。
$ pyenv version 3.6.1 $ python -V Python 3.6.1 $ pip -V pip 9.0.1 ... (python 3.6)
pip
pip install py-gfm
$ pip install py-gfm Collecting py-gfm Downloading py_gfm-0.1.3-py2.py3-none-any.whl Requirement already satisfied: markdown in ./3.6.1/venv/markdown/lib/python3.6/site-packages (from py-gfm) Requirement already satisfied: setuptools in ./3.6.1/venv/markdown/lib/python3.6/site-packages (from py-gfm) Installing collected packages: py-gfm Successfully installed py-gfm-0.1.3
Markdown + py-gfm
import markdown html = markdown.markdown(GetMarkdownText(), extensions=['gfm']);
これでGitHub方言のMarkdownが使える。前回のmd.convert(self.__GetMarkdown())
とは異なるメソッドを使っている。
動作確認
結論
- コードブロック
- テーブル
前回できなかったことが解決した。
ソースコード
import markdown class MarkdownTest(object): def __init__(self): pass def Run(self): md = markdown.Markdown() # html = md.convert(self.__GetMarkdown()) extensions = ['gfm'] html = markdown.markdown(self.__GetMarkdown(), extensions=extensions) print(html) with open('test2.html', mode='w', encoding='utf-8') as f: f.write(html) def __GetMarkdown(self): return """ # 見出し1 ## 見出し2 ### 見出し3 #### 見出し4 ##### 見出し5 ##### 見出し6 * 順序なしリスト1 * 順序なしリスト2 * 順序なしリスト3 * 順序なしリスト4 * 順序なしリスト5 * 順序なしリスト6 * 順序なしリスト7 * 順序なしリスト8 * 順序なしリスト9 * 順序なしリスト10 `python`なら自動化に自信が持てます。
!python3
encoding: utf-8
import os.path print(os.path.abspath(os.path.dirname(file)))
* [Pythonドキュメント](https://docs.python.jp/)で学習する * [![GitHub](http://www.google.com/s2/favicons?domain=github.com "GitHub")](https://github.com/)に成果を残す abc|def ---|--- 123|456 ABC|DEF """ if __name__ == "__main__": m = MarkdownTest() m.Run()
変換結果
<h1>見出し1</h1> <h2>見出し2</h2> <h3>見出し3</h3> <h4>見出し4</h4> <h5>見出し5</h5> <h5>見出し6</h5> <ul> <li>順序なしリスト1<ul> <li>順序なしリスト2<ul> <li>順序なしリスト3<ul> <li>順序なしリスト4<ul> <li>順序なしリスト5<ul> <li>順序なしリスト6<ul> <li>順序なしリスト7<ul> <li>順序なしリスト8<ul> <li>順序なしリスト9<ul> <li>順序なしリスト10</li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> </ul> </li> </ul> <p><code>python</code>なら自動化に自信が持てます。</p> <pre class="highlight"><code class="language-python">#!python3 #encoding: utf-8 import os.path print(os.path.abspath(os.path.dirname(__file__)))</code></pre> <ul> <li><a href="https://docs.python.jp/">Pythonドキュメント</a>で学習する</li> <li><a href="https://github.com/"><img alt="GitHub" src="http://www.google.com/s2/favicons?domain=github.com" title="GitHub" /></a>に成果を残す</li> </ul> <table> <thead> <tr> <th>abc</th> <th>def</th> </tr> </thead> <tbody> <tr> <td>123</td> <td>456</td> </tr> <tr> <td>ABC</td> <td>DEF</td> </tr> </tbody> </table>
参考
http://blog.muuny-blue.info/234e5dc39dc52740524f9d863bec963c.html
Markdownの拡張が色々使えるらしい。嬉しいけど標準でできるようにして欲しい。設定が面倒くさい。gfmで一発なら少し楽そうだが。
他にも拡張はあるらしい。以下参照。
課題
アンカーリンクのidに日本語が使えないのが残念。
- アンカーリンクができていない
自前でアンカーへの参照をするとき、タイトルでなく番号で参照リンクを作らねばならないのが面倒。