argius note

プログラミング関連

軽量マークアップ言語MarkdownとPandoc

マークアップ言語と言えば、まずHTMLやXMLが思い浮かぶでしょう。
でも、テキストファイルとして扱うには不便。*1
TeX系は、機能は豊富だけどとっつきにくいところがあります。


そこで、テキストファイルとしても読めて、書くのも楽、という軽量マークアップ言語を使う手があります。
Wiki記法やはてな記法もこれにカテゴライズされます。

Wiki記法、Textile、Perl用のPOD、Ruby用のRDなどはそれぞれの文化圏ではスタンダードな軽量マークアップ言語となっています。


さて、この軽量マークアップ言語の一種に、Markdownというのがあります。
私も、Playで使っているのを見て知ったのですが、GitHub界隈でも良く使われているようです。


今までは、どれも決め手に欠けると思って、独自フォーマットでやっていました。
Markdownも最初はフォーマットにそれほど魅力を感じていなかったもので。
今回あらためて調べていたら、Pandocというツールが見つかりました。


PandocはHaskellで書かれたコマンドラインツールで、MarkdownだけでなくHTML,LaTeX,Textileが入出力に使えます*2。Windowsもインストーラー版があります。
これを使ってMarkdownを導入してみたら、独自フォーマットからすぐに移行が完了してしまいました。
Wiki記法に割と似ているので、Wikiに慣れている方にはすぐに馴染んでいただけるのではないでしょうか。


以下、サンプルです。

  • Markdownファイル(test.md)
% PandocでMarkdown

# 見出しL1

## 見出しL2

### 見出しL3

 * リスト
 * リスト
 * リスト

 1. 番号リスト
 1. 番号リスト
 1. 番号リスト

-----

 0. 番号リスト
 3. 番号リスト
 2. 番号リスト

定義リスト
:   定義

    # コード
    my @a = ();
    print "\@a\n";
body {  font-size: 80%; background-color: lemonchiffon; }
dt { text-decoration: underline; }
pre { background-color: grey; }
  • Pandoc実行コマンド
$ pandoc -s -f markdown -t html5 -c ./markdown.css --toc test.md -o test.html

簡単な説明:-s スタンドアローン、-f 入力フォーマット、-t 出力フォーマット、-c HTMLに埋め込むCSSのURL、--toc 目次作成(Table Of Contents)、-o 出力ファイル

  • HTML5出力結果(test.html)

Table Of Contents が使えるのがうれしいですね。


今後は、Markdownを標準で使っていこうと思います。

*1:特にXMLは人間が書くためのものではないという考えがだいぶ広まってきたのでは。

*2:PDFはLaTeX経由