themeを書く

themeは,タイトルスライドで theme を指定して選択する.例:

: theme
   rabbit

自分でthemeを書く場合は,theme名がhogeなら rubyの$LOAD_PATH/rabbit/theme/hoge/hoge.rb のように配置する.
この間使ったthemeの一部.

include_theme("rabbit")
include_theme("image-timer")

slide_body = [Slide, Body]

item_list_item = [ItemList, ItemListItem]

n = 0.9

match(*(slide_body + (item_list_item * 1))) {|items|
  items.prop_set("size", (screen_size(5 * n) * Pango::SCALE))
}

match(*(slide_body + (item_list_item * 2))) {|items|
  items.prop_set("size", (screen_size(4 * n) * Pango::SCALE))
}

match(*(slide_body + (item_list_item * 3))) {|items|
  items.prop_set("size", (screen_size(3 * n) * Pango::SCALE))
}

match("**", Text) {|texts|
  texts.prop_set("font-family", "Hiragino Maru Gothic Pro")
}

match("**", PreformattedText, "**", Text) {|texts|
  texts.prop_set("font-family", "Monaco")
}

rabbitをベースにちょっと弄っただけだけど,この短いソースからいくつかの重要な事実が分かる.

matchは可変長引数で階層を指定
match(Slide, Body, ItemList, ItemListItem) {|items| ... } のような感じで.
matchはワイルドカードっぽいものが使える
"**"は「任意の要素の繰り返し」という意味だろうか?
亀を出すには include_theme("image-timer")
タイトルスライドで allotted-time を指定する必要がある:

: allotted-time
   20m

(参考:Rabbitを導入する, ジョナサンで仕事中 - ただのにっき(2007-06-17))
デフォルトだと文字がでかすぎると思って,全体的に少し小さくしようと思ったんだけど,そういうやり方が分からなかった.仕方なく各ネストレベルで個別に指定した.これ以上深くネストしたらどうなるかは知らない.
画面サイズはどうやって設定するんだろう?