今まで Markdown から HTML へ変換する外部コマンドとして、markdown
コマンドを使ってきた。
これでもまぁほとんどの場合は良いのだけれど、最近になって GFM (GitHub Flavored Markdown を使ったテーブルをちょいちょい書く機会が連続してあって、GFM には対応していない markdown
コマンドではちょっと物足りなさを感じていた。
GFM 対応のコマンドが無いわけがない、とググってみたら、最初に見つかったのが gh-markdown-cli
だったので、インストールしたみたら deprecated だと言われた。
% npm install -g gh-markdown-cli
npm WARN deprecated github-flavored-markdown@1.0.1: This project is long out of date. Use 'marked' instead.
/usr/local/bin/mdown -> /usr/local/lib/node_modules/gh-markdown-cli/bin/mdown
gh-markdown-cli@0.2.0 /usr/local/lib/node_modules/gh-markdown-cli
├── commander@2.3.0
├── github-flavored-markdown@1.0.1
├── wrench@1.5.8
├── minimatch@1.0.0 (sigmund@1.0.0, lru-cache@2.5.0)
└── glob@4.0.5 (once@1.3.0, inherits@2.0.1, graceful-fs@3.0.2)
あ、 npm
コマンドを使っているけど、Node.js は別途インストールしてあったので、それをそのまま使っている。
上記の WARN メッセージは「github-flavored-markdown
プロジェクトはだいぶ更新されてないんで、代わりに marked
を使った方がいいよ」的な内容。
ということで、その marked
をインストールしてみた。
% npm install -g marked
/usr/local/bin/marked -> /usr/local/lib/node_modules/marked/bin/marked
marked@0.3.2 /usr/local/lib/node_modules/marked
基本的には「Node.js の Markdown パーサ用モジュール」という立ち位置だと思うんだけど、CLI コマンド marked
も付いてくる。そのコマンドが /usr/local/lib/node_modules/marked/bin/marked
にインストールされ、PATH が通っているであろう /usr/local/bin/marked
へシンボリックリンクが張られた状態になった。
% ls -l /usr/local/bin/marked
lrwxr-xr-x 1 suzuki admin 37 8 14 23:42 /usr/local/bin/marked@ -> ../lib/node_modules/marked/bin/marked
ちなみに、この marked
も GitHub にリポジトリがあった。
次に markdown-mode
の設定をしてやる。
(setq markdown-command "/usr/local/bin/marked")
これで、C-c C-c v
(markdown-export-and-preview
) を実行した場合に、
marked
コマンドで HTML ファイルへ変換して出力という動作になる。
例えば、<table>
に変換してくれることを期待して、次のように書いたとする。
| hoge | fuga |
| ---- | ---- |
| aa | bb |
| cc | dd |
これまで使っていた markdown
コマンドだと、次のように変換されていた。
<p>| hoge | fuga |
| ---- | ---- |
| aa | bb |
| cc | dd |</p>
marked
コマンドへ変えたことにより、このように変換されるようになった。
<table>
<thead>
<tr>
<th>hoge</th>
<th>fuga</th>
</tr>
</thead>
<tbody>
<tr>
<td>aa</td>
<td>bb</td>
</tr>
<tr>
<td>cc</td>
<td>dd</td>
</tr>
</tbody>
</table>
この日記も GFM スタイルで書いているので、同じテキストを入力するとこうやって <table>
を使った表示になってくれる。便利。
hoge | fuga |
---|---|
aa | bb |
cc | dd |
markdown-mode
には、gfm-mode
も一緒に入っていたのにずっと気づいていなかった。
auto-mode-alist
で *.md
ファイルの編集の場合には、すべからく gfm-mode
で編集するようにしてやったわ。
(add-to-list 'auto-mode-alist '("\\.md\\'" . gfm-mode))
よく使ってるものでも(あんまり詳しく調べないで使っていることもあって)知らない機能がたくさんあるなー。