Rabbit のテーマを作る方法
投稿者 okkez
Rabbit のテーマを作る方法を調べてみた。自分のテーマを試行錯誤して作っている途中なのでツッコミ歓迎。
基本的なことは README.ja にも書いてある。
既に存在しているテーマの色違いのテーマを作るのは簡単で、置き場所に適当な名前でファイルを作成して以下のようにすれば良い。
# include_theme の前にカスタマイズしたい色の設定を記述する
@block_quote_frame_width = 1
@block_quote_fill_color = "#eeeeee" # 引用の色を変える
include_theme("foo")この場合は include_theme しているテーマが他のテーマを include_theme している場合が多いのでそれらを順番に辿っていくと好みの色に設定することができると思う。大抵の場合は default-* を参照してそれっぽいインスタンス変数を探すといいです。
参考になるテーマがあるけど、デザインが違う場合はちょっとだけ難しい。 しかし、まだなんとかなるレベル。
参考にするテーマから該当するブロックを自分のテーマファイルにコピペして編集するのが手っ取り早い。 試行錯誤が必要ですが、何回も繰り返せばなんとか目的のものを作ることができると思う。
フルスクラッチで作る場合というのは実はそんなになくて、ほとんどの場合は参考になるテーマから色々といただいてくればやりたいことはできるはず。
# 色などのカスタマイズ
include_theme("default")
# 以降にその他のカスタマイズ上のような感じでやれば、そこそこ見られるテーマができると思う。
このへん を参照して参考にするテーマを探すと早いかもしれない。
一応、今回作ったテーマ (未完成) 。
@block_quote_frame_width = 1
@block_quote_fill_color = "#eeeeee"
# FIXME
@default_item1_mark_color = "#000000"
@default_item2_mark_color = "#333333"
@default_item3_mark_color = "#666666"
@default_enum_item1_mark_color = "#333333"
@default_enum_item2_mark_color = "#666666"
@default_description_item1_mark_color = "#ff9933"
@default_block_quote_item1_mark_color = "#ff9933"
@description_term_line_color = "#3333aa"
@preformatted_frame_width = 1
@preformatted_fill_color = "#eeeeee"
@table_frame_width = 1
@table_caption_color = "#000000"
@table_head_fill_color = "#dddddd"
@table_fill_color = "#eeeeee"
include_theme("default")
set_foreground("black")
set_background("white")
match(Slide, HeadLine) do |heads|
name = "head-line"
heads.delete_post_draw_proc_by_name(name)
heads.horizontal_centering = false
heads.prop_set("foreground", "white")
x_space = screen_x(2)
y_space = screen_y(1)
heads.padding_top = y_space * 2
heads.padding_bottom = y_space * 2
color = "#3333aa"
heads.each do |head|
pre_y = nil
width = nil
height = nil
head.add_pre_draw_proc(name) do |canvas, x, y, w, h, simulation|
pre_y = y
unless simulation
border_x = x - x_space * 2
border_y = y - y_space * 2
border_width = width + x_space * 4
border_height = height + y_space * 4
canvas.draw_rectangle(true, border_x, border_y,
border_width, border_height, color)
end
[x, y, w, h]
end
head.add_post_draw_proc(name) do |canvas, x, y, w, h, simulation|
width = w
height = y - pre_y
[x, y, w, h]
end
end
endたぶん、これ以上凝ったものを作ろうと思ったらソースを真面目に読まないといけない気がする。



お、るりまテーマですね。
そうです。るりまのサイトっぽい感じを目指しました。