File: rabbit-implementation.rd

package info (click to toggle)
rabbit 3.0.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 14,220 kB
  • sloc: ruby: 29,637; lisp: 309; makefile: 43; sh: 9
file content (182 lines) | stat: -rw-r--r-- 3,802 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# To run with it without system install.
#  % ruby -I./lib bin/rabbit -f sample/rabbit-implementation.rd 
# $Id$

= Rabbitの実装

: subtitle
   The implementation of Rabbit
: author
   須藤功平
: institution
   COZMIXNG
: theme
   rabbit

= 概要

  * Rabbitって何?
  * Rabbitってどうなってるの?

= Rabbit?

  * Ruby/GTK2を用いたプレゼンツール
    * フォントはアンチエイリアス
    * 多言語対応
  * ソースはRD
    * 簡単に書ける

= ターゲット

  * 使うべき人
    * 楽にスライドを作成したい人
  * 使うべきではない人
    * 数式ばかり使う人
    * スライドをGUIで作成したい人
    * 豊富なテンプレートが欲しい人

      (自分では作りたくない)

= スライド作成

  * インタラクティブ

    * ソースの自動再読み込み
    * テーマの再読み込み

  * 特殊文字(記号)
    * UTF-8で直接記述
    * 実体参照

= プレゼンテーション

  * 豊富なキーバインド
    * Emacs系,vi系,矢印...

  * 起動時: RD (('→')) Rabbitオブジェクト
    * モッサリ(遅いマシンだと)

  * 起動後: オンメモリ
    * サクサク(遅いマシンでも)

= スライド公開

  * スライドを画像へ変換
    * 画像を並べるのは他のツール
    * ギャラリー,zphoto...

= 実装

  * ページの構造
  * 描画方法
  * テーマ

= ブロックとインライン

: ブロック
   0個以上の要素((-スライド上に配置されるオブジェクト-))を含む

   段落,箇条書きなど

: インライン
   直接描画される要素

   テキスト,画像など

= テキスト

  * 多言語を扱える
  * さまざまな装飾が可能
    * サイズ,色,下線...

= テキスト

  * 多言語を扱える
  * さまざまな装飾が可能
    * サイズ,色,下線...

((*Pangoを使用しているから*))

= Pango

フレームワーク
  * 世界中のテキストを配置/表示

: Pan
   ギリシャ語で「全て」
: Go
   日本語で「言語」

= 画像

  * URIで指定
  * 制限
    * 他のインラインと同居できない
    * ビットマップとして扱う

 # image
 # src = lavie.png
 # caption = Lavie
 # keep_ratio = true
# # width = 100
# # height = 100
# # relative_width = 100
 # relative_height = 100

= 描画

  * 2つのフェーズ
    * コンパイル
    * 描画
  * 再帰的
    * ネスト数大 (('→')) 計算時間大
    * コンパイル結果をキャッシュ

= コンパイル

  * オブジェクトの描画サイズの決定
    * シミュレーション描画
    * 実際には描画しない
  * 描画の下準備
    * 画像のロード
    * Pangoレイアウトの生成

= テーマ

  * 見栄えを指定
    * Rubyスクリプトとして記述

  * ソースとは独立
    * データ(RD)と混在させない

  * フック
    * 要素の描画前後

= テーマの適用

流れはCSSと類似

  (1) 対象となる要素を選択
  (1) 要素に対して
      * プロパティを設定(代入)
      * フックを設定(ブロック)
  (1) 繰り返し

= サイズ

  * 絶対的な値
    * 画像サイズで指定可能
  * 正規化した値
    * ウィンドウサイズに応じて増減
    * テキスト/画像サイズで指定可能
  * ウィンドウサイズに対する割合
    * 画像サイズで指定可能

= まとめ

  * スライドが楽に作成できる
  * 見栄えも悪くない
    * スライド用の書き方をすれば
  * テーマはRubyスクリプト
    * 簡単なもの: 知識はいらない
    * 細部にこだわる: 知識が必要