2012年2月27日月曜日

Adaptive Grid-Based Document Layout [Jacobs et al., 2003]

Adaptive Grid-Based Document Layout [Jacobs et al., 2003] を読みました。
論文は http://dl.acm.org/citation.cfm?id=882353 から読むことができます。

この論文は、文書のレイアウトを自動で生成しようという旨の論文です。
10年近く前の論文で、内容を解説している日本語のブログ記事も存在していました。
今回は、私自身が論文の理解を深める意味を込め、私なりに論文を流れに沿って簡単にまとめていこうと思います。
各章の内容を箇条書きで書きなおしているだけで、流れなどがわかりにくいかとは思いますが…。精進します。


[Abstruct]
  • グリッドベースの文書デザインは広く使われているが、グリッドベースの文書を任意のサイズのディスプレイ向けに自動でデザインする方法はまだ存在していない
[1. Introduction]
  • グリッド(grid)とは、印刷された文書のページ内で順序付けするためのシステムである
  • グリッドベースのデザイン(grid-based design)は、新聞や雑誌などで広く使われている
  • grid-based designを様々なサイズのディスプレイに綺麗に表示させる方法は今のところない (雑誌などは、決められたサイズの紙面に綺麗に印刷されれば良い)
  • ページの各要素(テキスト、画像、サイドバーなど)をグリッドにマップするのは手作業で行われる
    • 横長の紙だったらサイドバーは右に表示すればよいが、横幅が狭く縦長の紙であったらサイドバーはページを圧迫しないように下などに表示すべきである
  • grid-based designは文書の再描画ができない
  • HTMLやTeXなどは文書の再描画が可能だが、文書を一次元の流れとして扱っている
  • この論文では、以下のようなアプローチでgrid-based design の再描画を可能にする
    • テンプレートの集まりであるスタイルを用意し、各スタイルに文書の中身(テキストや画像など)を貼りつけていくイメージ
    • このテンプレートは、ディスプレイのサイズや文字サイズなどが変わっても綺麗に表示されるようにデザインされる
  • そのために必要なもの
    • テンプレートの表現方法
    • レイアウトエンジン
    • Pagenator
    • テンプレートをデザインするためのツール
[2. Related work]
省略します。

[3. Representation]
  • 文書の内容と表示スタイルは分けて考える。
  • スタイルは、テンプレートのレイアウトとスタイルシートに分けて考える
3.1 Document content
  • 文書の内容は、ストリーム(続けて表示されなければならない要素で構成される)の集合として表現する
  • ストリームは<atom>タグを用いた入れ子構造も可能
  • レイアウトエンジンやテンプレートにコンテンツがどのように使われるかを知らせるための attribute も指定可能
    • 例: "importance" attribute
  • <multi>タグを用いると、コンテンツのいくつかのバージョンを指定することができる
    • 例: <multi>タグをでテキストが要約されたものを指定しておくと、小さいディスプレイには要約バージョンが表示される
3.2 Templates
  • ページテンプレートは要素、制約、前提条件から成り、各ページのレイアウトを指定する
    • 要素: コンテンツが置かれる位置を矩形で指定したもの。一つのストリームが複数の要素にまたがった場合はフローが生じ、複数の要素が重なった場合は、ある要素を回りこむように他の要素が配置される。
    • 制約: 要素間の位置関係を制限する制約。
      • 例: タイトルと本文があるテキストなら、タイトルは文書の最初に表示されなければならない
      • 制約の実装方法は"3.2.1 Constraints"で触れられています。興味の有る方はそちらを読んでください。
    • 前提条件: テンプレートが使えるための条件。
      • 例: このテンプレートが使えるのは、図が2枚とページサイズがA4からU.S.-letterサイズの時のみ
  • ページテンプレートを集めたものをレイアウトスタイルと呼ぶ
3.3 Style sheets
  • 太字などの修飾ができるように、CSSに似た言語を提供
3.4 Bringing it all together
  • Document content, templates, stylesheetsの3つがpaginatorの入力となり、実際にページがレンダリングされる
[4. Layout]
  • レイアウトエンジンは、コンテンツ、テンプレート、スタイルシートを受け取って、ページのレイアウトを羅列する
    • まず、各テンプレートの前提条件を見て、使うことのできるテンプレートセットを羅列
    • 次に、各テンプレートに対し、要素のサイズや位置などを決める
4.1 Flowing into elements
  • コンテンツを矩形領域にどう流し込むか
  • 画像は、単純にリサイズして矩形に収まるようにする
  • テキストはKnuth and Plass's optimal line-breaking algorithm を使って矩形領域に流しこむ
    • アルゴリズムは Breaking paragraphs into lines [Knuth and Plass, 1989] 参照。私もまだ読んでないのですが、読んだら記事にするかもしれません。
4.2 Self-sizing elements
  • 要素の矩形領域の高さは自動で調節する。画像の場合は画像のアスペクト比を参考に調節。テキストの場合は、最初は高さを最大にして流し込み、矩形領域が余ったら高さ減らす。両方が組み合わさったコンテンツの場合はtemplates.outheightなる値を使う(?)。
4.3 Template scoring
  • ページエンジンは各テンプレートに対して、どの程度コンテンツがテンプレートにフィットしているかを示すスコアを計算する
  • paginatorは全てのページについての各テンプレートのスコアを受け取り、一番良いテンプレートの並びを計算する
[5. Pagination]
  • Paginationとは、文書のストリームから、各ページにコンテンツをマップするタスク
  • ページへの割り当てを決める際に、その割当がどの程度"良い"のかを決める指標が欲しい
    • 例: 文書を通して読む際に、 (文書の続きを読んだり、本文中で参照されている図などを見るための) ページめくりの回数が少なくなるようにしたい
5.1 Original algorithm
  • nページのpaginationの最適解は、最初のn - 1ページのpaginationの最適解に依存する → 動的計画法が使える
  • 今回の手法では、イテレーションの中で制約を解消するために多くの計算が必要になるので、従来の動的計画法はそのままでは使えない
5.2 Our algorithm
  • 重要なところなのに理解できていないです。すいません…。
5.3 Analysis
  • ページめくりの指標を使って、良いpaginatorができたという話だと思います。(ここはあんまりちゃんと読んでいません)
[6. Authoring templates]
  • ディスプレイのサイズが変わるとどう表示されるかを考えながらテンプレートを作るのは難しいので、それをサポートするツールを作成した
6.1 Creating and arranging layout elements

  • 要素の位置は様々なサイズの画面に対応できるように相対位置で指定
  • 要素のリサイズに対応できるように、制約は1次元的に指定(e.g., 高さは指定せず、幅だけを指定する)
6.2 Template selection
  • テンプレートの前提条件は、要素に関連付けられているストリームから自動的に計算される(どういうこと?)
  • ダイアログボックスを使って前提条件を追加できる
  • 要素にattributeを追加できる → テンプレートのスコアに影響
[7. Results]
  • 論文は、提案手法を用いてデザインされている
  • 文書はMicrosoft Wordからマクロを使ってマークアップフォーマットに落とし込んだ
[8. Conclusion and future work]
  • コンピュータでのリーディングが盛んになってきているが、グリッドベースでの文書デザインには様々な環境にどう対応するかという問題があった
  • 今回の論文は、その問題に対する最初の一歩


以上。
だらだらと書いてしまった上に、ところどころ理解が甘かったりでもう…。

というか、未だに全体の流れもちゃんとつかめていません。この処理は全体でどういう処理になるんでしょう。

マークアップ形式で書かれたコンテンツ(テキストやらイメージやら)があるとします。テンプレートも予め用意しておく。
その後にどのページにどのコンテンツを割り当て、どのテンプレートを使う、という候補を洗い出し、スコアを付けておく(4章)。
その後、ページ割り当ての指標や、テンプレートのスコアを参考にして、実際にコンテンツを割り当てるページとレイアウトを決める(5章)。
っていう流れでいいんですかね…?
「どのページにどのコンテンツを割り当て、どのテンプレートを使う、という候補を洗い出し、スコアを付けておく」って部分が、具体的にどんな処理をしてるのかよくわからないです。書いてあります?自分の英語力が足りてないだけな気もしますが…。

いきなり私の頭の足りなさを露呈する形になってしまいましたが、今回はこれにて。
省略した部分や、理解できていなかった部分が分かった場合は、後日追記する可能性もあります。

0 件のコメント:

コメントを投稿