Edited at

hugo で Fence Code Blocks (```)を有効化する

More than 3 years have passed since last update.


TL;DR


  • config ファイルに pygmentscodefences = true を入れる

  • homebrew (hugo v0.14.0) ではなく go get でインストールする (2015/08/02時点)


問題と解決

Hugo v0.14 (2015/08/02 時点の最新リリース) でも、コードブロック ``` が使えない。

こう書いてもハイライトが効かない

```ruby
puts "Hello, World"
```

どうやらIssueでも話題になっており、7/4に Fence Code Blocks を有効化するコミットが入った。

まだリリースされていない機能なので、気の早いひとは go get -u -v github.com/spf13/hugo して手に入れるとよい。


config.toml

Fence Code Blocks を有効化するには、config ファイルに pygmentscodefences = true を入れる。

pygmentscodefences = true

pygmentsstyle = "monokai"


Pygments のカラーテーマ

pygmentsstyle には好きなカラーテーマを指定する。

どんなテーマ名があるかは、以下のコマンドを実行すると分かる。

from pygments.styles import get_all_styles

print list(get_all_styles());

$ python -c 'from pygments.styles import get_all_styles; print list(get_all_styles())'

['manni', 'igor', 'xcode', 'vim', 'autumn', 'vs', 'rrt', 'native', 'perldoc', 'borland', 'tango', 'emacs', 'friendly', 'monokai', 'paraiso-dark', 'colorful', 'murphy', 'bw', 'pastie', 'paraiso-light', 'trac', 'default', 'fruity']


注意点

pygmentscodefences を有効化すると、Markdown の中からコードブロックを見つけてはシンタクスハイライトを入れていくためか、実行に若干時間がかかるようになる。

Jekyll 利用者としては、それでも hugo のほうが圧倒的に早いので今後も使っていくつもりだが、だんだん気になってきたらサーバサイドでのビルドを諦めて、クライアントサイドでシンタクスハイライトをいれたほうがいいかもしれない。


もういっこ注意点

先に pip install Pygments などで Pygments をインストールしておかないと、ビルド中にエラーが出まくるので注意。

こういうのが記事の数だけでてくる

ERROR: 2015/08/03 ERROR: 2015/08/03 ERROR: 2015/08/03 ERROR: 2015/08/03 ...


参考リンク