以前に構築した Docker on WSL の環境に、 Asciidoctor の環境を構築してみたいと思います。
Asciidoctor は AsciiDoc の後継のソフトウェアで、 Markdown よりは表現力が高いドキュメントを作成することが出来るものとなっています。
インストール・セットアップ
スタートメニューから Ubuntu 16.04 を起動して、 WSL の環境で以下のコマンドを実行します。
$ sudo docker pull asciidoctor/docker-asciidoctor
実行
以下のコマンドを実行して、コンテナの中の bash にて作業を行います。
ここでは、 C ドライブの mydoc フォルダがあると想定して、ここをコンテナの中にマウントさせています。
$ sudo docker run -it -v /mnt/c/mydoc:/work \ --rm asciidoctor/docker-asciidoctor /bin/bash
基本となるドキュメントを sample.adoc のようなファイル名で作成して、 Asciidoctor に処理させるには以下のようにします。
# cd /work # asciidoctor sample.adoc
この結果、 html ファイルが生成されます。
adoc の書き方は各所で紹介されているので、そちらを参照してください。
Asciidoctor は PDF を出力することも対応しています。コマンド asciidoctor-pdf を使用すれば、 PDF が生成されます。
数式の対応など
Asciidoctor の拡張として、数式に対応したものがあるので、以下のようにしてインストールします。
Docker コンテナの中で作業する必要があります。
# apt install cmake bison flex libpango1.0-dev ttf-lyx libxml2-dev # gem install asciidoctor-mathematical
このようにインストールした上で、以下のようなマークアップと Latex 数式の文法によって、見栄えのよい数式を使うことができます。
[latexmath] ++++ e^{2\pi \sqrt{-1}} = 1. ++++
拡張を有効化して使うには以下のようにオプションを指定して、実行する必要があります。
# asciidoctor -r asciidoctor-mathematical sample.adoc
不満点など
Asciidoctor で、 book タイプで作成したときに、章のナンバリングに不満があります。
PDF 変換の場合では、”:chapter-label:” 変数で、 “Chapter” の代わりの文字を指定出来るのですが、これだと “第 1” のようにしかできませんでした。
“Chapter. 1” ではなく、 “第1章” のように作りたかったので残念でした。
他の見栄えが良さそうなだけに、この点だけが課題だったので asciidoctor-pdf のソースコードを書き換えて対応することにしました。 Asciidoctor のエクステンションとして作成できるようだったら本家にプルリクエストを発行しようと思っていますが、まずは自分一人で使って、問題が出ないかを確認してみようと思っています。