htmlize 20161211.1019(in MELPA)
Convert buffer text and decorations to HTML.

概要

あなたは、自分のEmacsの作業環境を見せたいと思ったことはありますか?
スクリーンショットや動画を撮る方法もありますね。

このhtmlizeパッケージは、バッファをHTML化することで、
Webブラウザ上でシンタックスハイライトや使っている色を再現させることができます。

特筆すべき点は

  1. 古いEmacsでも動作する(なんとEmacs21やXEmacsまで!)
  2. インライン画像にも対応
  3. リンクも再現できる

とくに2と3はorg文書を作成している場合に助かりますね。

language-detection.elのページ のorg文書をHTML化したのはこちら
http://rubikitch.com/f/language-detection.org.html

僕は黒背景で緑文字が好きですので、こんな感じになります。

ただ、文字のバックグラウンド色とフォアグラウンド色を完璧に再現できていません。
たとえば「** 概要」は白背景に黒文字ですが、htmlizeでは黒背景に白文字になっています。
現時点ではinverseに対応していないからです。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてhtmlizeを使う方は
以下のコマンドを実行します。

M-x package-install htmlize

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name htmlize

使い方

M-x htmlize-bufferでカレントバッファをHTML化したバッファが作成されます。
M-x htmlize-fileで指定したファイルのHTML版を作成します。

重要なカスタマイズ変数は htmlize-output-type です。
デフォルトではcssが指定されていて、出力HTMLの冒頭にCSSが載ります。
HTML化されたものをそのまま見たりWebにアップロードする場合に向いています。

inline-cssまたはfontを指定すると、各行ごとにスタイル情報が記述されます。
冗長であるためファイルサイズが大きくなりがちですが、
HTML化された部分的に切り取って他のドキュメントに貼り付けられるメリットがあります。

リンクはどのように取得しているのか

htmlize.el自身はorg-modeについてのコードは書かれていません。
けれどもorg文書をHTML化すると、リンクは再現されます。
なぜでしょうか?

それは、org-modeがhtmlize-linkテキストプロパティを使っていて、
htmlize.elがhtmlize-linkを解釈するからです。

僕が知る限り現在はorg-modeくらいしかhtmlize-linkを活用していませんが、
あなたがハイパーリンクを扱うEmacs Lispを開発するのであれば
htmlize-linkテキストプロパティを付けるとhtmlizeに対応できます。


参考サイト

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。