LoginSignup
19

More than 5 years have passed since last update.

PelicanでGitHub Flavored Markdown(GFM)をマジで使いたい!

Last updated at Posted at 2014-05-14

なんか前にも似たようなのを書いた気がしますが。
素のMarkdownはちょっときついですよね。
ということでPelicanのMarkdownをGFMに近づけます。
ほとんど差はなくなります。

Pelicanのというか、PythonのMarkdownライブラリを使うとき全般の話っすね。

結論

以下のパッケージをインストールする。

$ pip install mdx_linkify
$ pip install mdx_del_ins

pelicanconf.py に以下を追記する。

MD_EXTENSIONS = ['linkify', 'del_ins', 'fenced_code', 'codehilite(css_class=highlight)', 'tables']

おしまい。

詳しく見ていきたい人以外はここでお別れです。

単語の中のアンダースコア

普通のMarkdownは、単語の中にアンスコ(_)が複数あると悲しいことになります。

wow_great_stuff が wowgreatstuff みたいな。

これはこれでファンキーで良いと感じる人もいるかもしれませんが、普通は嫌だと思います。
なのでまずはこうならないようにします。

と思ったら、PythonのMarkdownはすでにこの機能がついてました。
何もしなくてよかった!

めでたしめでたし!

さようなら!

URLの自動リンク

こんにちは!

リンクを貼るときはこうしますよね。

[http://example.com](http://example.com)

カッコこれでよかったっけ?前のほうが丸いやつだっけ?あれれ?
とかすぐわかんなくなるしめんどいんですよね。ぶっちゃけそうなんですよ。
ここはやっぱり気を利かせて自動リンクするくらいの心遣いをして欲しいところですよね。
こっちは金払ってるんだから。払ってなかった。

残念ながらこれは標準機能だけではできません。
自分で正規表現とかで気合いをいれて拡張を書いてもいいですが、
mdx_linkify というサードパーティ製の拡張がよく出来ていますので、使いましょう。

pipでこんな感じでスタイリッシュにインストールしたら、

$ pip install mdx_linkify

pelicanconf.py にこう書いといてください。

MD_EXTENSIONS = ['linkify']

取り消し線

GFMでは、

~~黒歴史~~

とすることで、黒歴史 このように取り消し線をつけることができます。
このように・・・あれ?消えてない?俺の黒歴史が消えてないよ?
どうやらここのMarkdownでも使えないようです。

白夜の夜、漆黒の暗闇。そう、僕は堕天した熾天使。隣の席の君の横顔を眺める。フフフ、君は本当の僕をまだ知らない。

ふう、あぶない。

えーと、残念ながらこれも標準機能だけではできません。
mdx_del_ins という拡張を使います。

$ pip install mdx_del_ins

pelicanconf.py はこうなりました。

MD_EXTENSIONS = ['linkify', 'del_ins']

コードブロック

Markdownではインデントでコードブロックを表現しますが、もはやGFMのバッククォート3つの書き方がデファクトな勢いです。

Here's an example:

```
function test() {
  console.log("notice the blank line before this function?");
}
```

これは標準の組み込み拡張の Fenced Code Blocks を使います。

pelicanconf.py が少しずつ充実してきます。

MD_EXTENSIONS = ['linkify', 'del_ins', 'fenced_code']

シンタックスハイライト

プログラムなんて何も分からない僕のような無知蒙昧な人間には関係ないことですが、
シンタックスハイライトという機能があるようです。
愚鈍な僕には何に使うのか不明ですが、こういうことができるようです。

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html

黙って CodeHilite を追加すればいいんじゃないですかね!

MD_EXTENSIONS = ['linkify', 'del_ins', 'fenced_code', 'codehilite(css_class=highlight)']

テーブル

こういうふうに書くことでテーブルがかけます。

 item         | expenses
------------- | -------------
TENGA         | 606
TENGA HARD    | 655
item expenses
TENGA 606
TENGA HARD 655

Tables を追加の方向で。

MD_EXTENSIONS = ['linkify', 'del_ins', 'fenced_code', 'codehilite(css_class=highlight)', 'tables']

まとめ

ここまでの設定でGFMと同じ感じで使えます!
ちなみにPelicanは、デフォルトのエクステンションとして codehilite と extra が有効になっています。

codehiliteに(css_class=highlight)を付けて指定していたのは、デフォの指定とクラスが異なることで、CSSが有効に機能しないことを避けるためでした。

ちなみに、今回の例では extra は指定していませんが、extra には他にも便利な機能があります。
MD_EXTENSIONSは追加ではなく上書きになるので、extra の機能は無効になってしまいます。
もしextraの機能が欲しい場合には追加してください。

詳しくはこちら。
http://pythonhosted.org/Markdown/extensions/

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19