About theme

Slide look and feel is independent of slide source format. It's theme.

There is a slide for testing theme at sample/theme-bench-en.rab. It's useful to confirm theme.

Where do I place the theme?

Rabbit searches for themes by using ruby's $LOAD_PATH. If you make a theme, place it into PATH_OF_INCLUDED_IN_$LOAD_PATH/rabbit/theme/THEME_NAME/THEME_NAME.rb or DIRECTORY_OF_SOURCE_FILE/THEME_NAME.rb.

How do I write a theme?

A theme is just a Ruby script.

You may enumerate the following descriptions in your theme.

  1. Select some elements (paragraphs, titles and so on) of the slide as a target.
  2. Change properties of selected elements and add actions.

For example, the following changes color of the title of each page except the title page.

match(Page, HeadLine) do |heads|
  heads.prop_set("foreground", "red")
end

Property

You can set some properties by using prop_set. Pango Text Attribute Markup has more information.

font_desc
Specifies font description.
font_family

Specifies font family.

You can get a list of font families by using font_families.

face
Same as font_family.
size

Specifies size of font.

If you specify size of font by numeric value, you should convert the value by screen_size and multiply it by Pango::SCALE. The following example shows how to specify size of font to 2 (in the Rabbit's theme world).

screen_size(2) * Pango::SCALE
style
Specifies style of font.
weight
Specifies weight of font.
variant
Specifies variant of font.
stretch
Specifies stretch of font.
foreground
Specifies foreground.
background
Specifies background.
underline
Specifies kind of underline.
rise
Specifies vertical position of character.
strike through
Specifies whether use strike line or not.
fallback
Specifies whether use alternative font or not when specified font is not found.
lang
Specifies the language.
b
Changed to bold.
big
Changed size of font to big.
i
Changed to italic.
s
Draws a strike line.
sub
Changed to subscript.
sup
Changed to superscript.
small
Changed size of font to small.
tt
Changed font family to fixed width font.
u
Draws a underline.

Hooks

You can add procedures which are executed before/after element is drawn by add_pre_draw_proc/add_post_draw_proc. And you can remove them by clear_pre_draw_procs/clear_post_draw_procs.

The `default' theme has more code. Please see it.