RT

RTtool

ひょんなことから表を手軽に書きたいなと思い、Rubyで作表ツールを作成中。 その名もRT!! あのRDを連想させる名前にしたのもとにかくワケアリである。 RDの売りである可読性さまざまなフォーマットに変換可能を継承し、 RDtoolの実験的機能ではあるがfilter機能によりRDと融合させることが可能である。 いってみれば兄弟みたいなものである。

とりあえず、HTMLな表に変換することと、w3mを通すことで表の整形までは成功。 近いうちにでもLaTeXの表にも変換させる予定。

設計の方もRDtoolのパクリである(笑)。 parserとvisitorに分け、rt2html-lib.rbを作成。

現時点でのスナップショットをここで拾うことができる。

<URL:../archive/rttool-0.1.1.tar.gz>

また、RTコンバータCGIもあるので使ってみて。

インストール

  1. パッケージにある rt ディレクトリを $LOAD_PATH の通ったディレクトリにコピーする。

  2. rt/rt2 コマンドを PATH の通ったディレクトリに移動する。
  3. rt/dot.rt.rd2rc

RTの文法

一番簡単なRT

Code: easiest.rt
1, 2, 3
4, 5, 6
7, 8, 9

これで

$ rt2 easiest.rt

を実行すると、以下の表ができる。 簡単でしょ?

┌─┬─┬─┐
│1 │ 2│ 3│
├─┼─┼─┤
│4 │ 5│ 6│
├─┼─┼─┤
│7 │ 8│ 9│
└─┴─┴─┘

ちょっと複雑なRT

これを流し込み、

$ rt2 test.rt 

を実行すると、

----------ここから (test.rt)
caption = 表テスト

     , 人間, == , 犬 , ==
 ||  , 男  , 女 ,オス,メス

  x  , 1.0 , 2.0, 1.1, 1.2
  y  , 0.4 , 0.5, 0.3, 0.1
----------ここまで

整形結果はこんな感じになる。ちなみに数字データは適当に入れただけである。

           テスト表           
┌─┬─────┬─────┐
│  │   人間   │    犬    │
│  ├──┬──┼──┬──┤
│  │ 男 │ 女 │オス│メス│
├─┼──┼──┼──┼──┤
│x │ 1.0│ 2.0│ 1.1│ 1.2│
├─┼──┼──┼──┼──┤
│y │ 0.4│ 0.5│ 0.3│ 0.1│
└─┴──┴──┴──┴──┘

RDに埋め込む

さらに、RDに埋め込むこともできるのだ。 RTはRDではないのでRDのfilter機能を使うことになる。 たとえば、これを流し込み、以下のコマンドで整形すると、

$ rd2 --with-part='RT:rt' rttest.rd|w3m -dump -T text/html

----------ここから (rttest.rd)
=begin
= RDとRTは兄弟だ
これは表を含んだRDだよ。
まあ厳密にいえばRD/RTでしょうか。

=end
=begin RT
caption = 表テスト

     , 人間, == , 犬 , ==
 ||  , 男  , 女 ,オス,メス

  x  , 1.0 , 2.0, 1.1, 1.2
  y  , 0.4 , 0.5, 0.3, 0.1
=end
=begin
どう?うまくいったかな。
=end
----------ここまで

こんな表つきのテキストを生成する。 HTMLを生成し、整形はw3mで行った。

----------ここから
RDとRTは兄弟だ

これは表を含んだRDだよ。まあ厳密にいえばRD/RTでしょうか。

           表テスト           
┌─┬─────┬─────┐
│  │   人間   │    犬    │
│  ├──┬──┼──┬──┤
│  │ 男 │ 女 │オス│メス│
├─┼──┼──┼──┼──┤
│x │ 1.0│ 2.0│ 1.1│ 1.2│
├─┼──┼──┼──┼──┤
│y │ 0.4│ 0.5│ 0.3│ 0.1│
└─┴──┴──┴──┴──┘

どう?うまくいったかな。
----------ここまで

なぜにRT

TODO

下へいくほど優先度が落ちる。