AsciiDoc その2

前回のAsciiDocのエントリで概要を書いたから、なにかサンプルを試してみようかと思ったけれど、適当な長い文章を思いつかなかったので気になった部分の紹介でお茶を濁す :-P
それと、Asciidoctorのドキュメントをつらつら見ていたら、Differences from AsciiDocという項があって、想像してたよりもリストが長く、完全互換を目指しているのかと思っていたがそうでもないらしい。新しい要素を追加したり、非推奨な書式はもはや実装してなかったり。その結果、asciidocより25倍速いとか*1
ざっとUser Guideを読んだだけなので間違ってたら指摘してくれると助かります。


コマンド
AsciiDocの主なコマンドは、 asciidoca2x 。Asciidoctor の方は asciidoctor、それとRubyアプリケーションへの組み込みも重要な使い方。

asciidoc
AsciiDocをHTMLまたはDocBookに変換
a2x
AsciiDocを一旦DocBookへ変換し、そのままPDF, EPUB, DVI, PS, LaTeX, XHTML, man page, HTML Help, plain textなどへ変換。その際に、AsciiDoc特有の記法も処理する
asciidoctor
AsciiDocをHTMLまたはDocBookに変換


書式
詳細はユーザーガイドを見てもらうとして、気になった書式を4つ紹介。


1. List Item Continuation
軽量マークアップ言語で個人的に一番不満だったのは、番号付きリストの間に他の要素を挟むと番号がリセットされてしまうこと。だからAsciiDocでこれができるというのがわかって俄然興味が湧いた。書式はこんな感じ:

1. List item one.
+
List item one continued with a second paragraph followed by an
Indented block.
+
.................
$ ls *.sh
$ mv *.sh ~/tmp
.................
+
List item continued with a third paragraph.

2. List item two continued with an open block.
+
--
This paragraph is part of the preceding list item.

a. This list is nested and does not require explicit item continuation.
+
This paragraph is part of the preceding list item.

b. List item b.

This paragraph belongs to item two of the outer list.
--

…うん、まあ分かりにくいかもしれない。途中にコードブロックとかもあるし。基本的には'+'でつないだブロックは一連のリストのアイテムになるようだ。


2.索引
書籍の執筆に利用するぐらいだから索引作れるのかな?と思ったらやっぱり書式があった。

indexterm:[<primary>,<secondary>,<tertiary>]


3.豊富な引用記法
これはガイドを読んで言われてみればたしかに必要だな、と単純に感心した項目。引用記法は単純に引用するだけだと思っていたが、作者および出典と出版年の記載ができる。

[quote, Bertrand Russell, The World of Mathematics (1956)]
A good notation has subtlety and suggestiveness which at times makes
it almost seem like a live teacher.


4.Filter
楽譜やLaTeX、特にGraphvizを組み込めること。Graphvizフィルタは、飯坂 剛一氏が実装したそうだ。フィルタが組み込めると一つのテキストファイルであらゆる書式が表現できる一方で、フィルタの管理が大変になるかもしれない。
なお、AsciidoctorではGraphvizのフィルタが動作しなかった。特にAsciiDocとの差異には記載が無いから、実装はこれからなのかもしれない。


AsciiDocのエントリはこれで一旦おしまい。実際に使ってみたらまたなにか書くかもしれない。

*1:どちらかというと、Firefox/IE/Chromeなんかのレンダリングエンジンが機能を競ってるのに近いかな?