(57)【要約】【課題】各データ領域毎にレイアウト計算におけるレイアウト調整の仕方を設定可能とし、ユーザの意図を柔軟に反映できるレイアウト処理を実現する。【解決手段】データ領域を有するテンプレートのレイアウトを、該データ領域に描画されるコンテンツデータに応じて動的に変更するレイアウト処理方法は、データ領域に適用すべき複数のレイアウト調整アルゴリズムを保持する保持手段から、データ領域に適用すべきレイアウト調整アルゴリズムを取得選択し、データ領域へコンテンツデータを流し込むに際して、取得選択したレイアウト調整アルゴリズムに従ってデータ領域のレイアウトを調整する。そして、調整されたデータ領域にコンテンツデータをレイアウトして出力する。【選択図】  図１８
2006277727.tif 000002
【特許請求の範囲】
【請求項１】
データ領域を有するテンプレートのレイアウトを、該データ領域に描画されるコンテンツデータに応じて動的に変更するレイアウト処理方法であって、
複数のレイアウト調整アルゴリズムから、前記データ領域に適用すべきレイアウト調整アルゴリズムを選択する選択工程と、
データ領域へコンテンツデータを流し込むに際して、前記選択工程で選択したレイアウト調整アルゴリズムに従って前記データ領域のレイアウトを調整するレイアウト調整工程と、
前記レイアウト調整工程において調整されたデータ領域に前記コンテンツデータをレイアウトして出力する出力工程とを備えることを特徴とするレイアウト処理方法。
【請求項２】
前記複数のレイアウト調整アルゴリズムの各々は、データ領域と目標形状との差異が小さくなるようにデータ領域のレイアウトを調整するものであり、
前記差異の算出過程がレイアウト調整アルゴリズム毎に異なることを特徴とする請求項１に記載のレイアウト処理方法。
【請求項３】
前記レイアウト調整工程は、リンクで関連付けられた複数のデータ領域の各々のレイアウトを調整する場合に、
前記関連付けられた複数のデータ領域の各々について、前記選択工程で選択されたレイアウト調整アルゴリズムに従って前記差異を算出し、それら算出された差異の合計が最小となるように、該関連付けられた複数のデータ領域の各々のレイアウトを調整することを特徴とする請求項２に記載のレイアウト処理方法。
【請求項４】
前記複数のレイアウト調整アルゴリズムは、
データ領域に描画されるコンテンツデータに従ったコンテンツ形状を前記目標形状として前記差異を算出する第１アルゴリズムと、
前記レイアウトの設計時におけるデータ領域の形状であるレイアウト形状とを前記目標形状として前記差異を算出する第２アルゴリズムと、
データ領域と前記コンテンツ形状との差異である第１差異と、データ領域と前記レイアウト形状との差異である第２差異との合計を、前記データ領域と目標形状との差異とする第３アルゴリズムのうちの少なくとも２つを含むことを特徴とする請求項２に記載のレイアウト処理方法。
【請求項５】
前記レイアウト調整工程は、前記第３アルゴリズムによりデータ領域のレイアウトを調整する場合に、
前記データ領域と前記コンテンツ形状との差異である第１の差異と、該データ領域と前記レイアウト形状との差異である第２の差異との合計を目標形状との差異とすることを特徴とする請求項４に記載のレイアウト処理方法。
【請求項６】
前記レイアウト調整工程は、前記第１の差異と前記第２の差異の各々に設定される重み値に応じて、データ領域のレイアウトを調整することを特徴とする請求項５に記載のレイアウト処理方法。
【請求項７】
データ領域にレイアウト調整アルゴリズムを設定するためのユーザインターフェースを提示する提示工程を更に有し、
前記提示工程により提示された前記ユーザインターフェースを介した入力に応じて、前記データ領域に対して設定されたレイアウト調整アルゴリズムを前記保持手段に保持することを特徴とする請求項１に記載のレイアウト処理方法。
【請求項８】
前記ユーザインターフェースは、予め定められた範囲を単位としてレイアウト調整アルゴリズムを指定可能であり、
前記レイアウト調整アルゴリズムは前記予め定められた範囲の各々を単位として設定され、前記予め定められた範囲には、ドキュメント、該ドキュメントを構成するページ、該ページに含まれるエリア、データ領域が含まれることを特徴とする請求項７に記載のレイアウト処理方法。
【請求項９】
前記選択工程は、前記予め定められた範囲毎の優先順に従って、前記データ領域に適用すべきレイアウト編集アルゴリズムを選択することを特徴とする請求項８に記載のレイアウト処理方法。
【請求項１０】
前記ユーザインターフェースは、ページ上のデータ領域のレイアウト状態を表示し、表示されたデータ領域から指定されたデータ領域に対してレイアウト調整アルゴリズムをユーザに設定させる機能を有することを特徴とする請求項７に記載のレイアウト処理方法。
【請求項１１】
前記ユーザインターフェースは、データ領域に設定されたレイアウト編集アルゴリズムをユーザに視覚的に示すことを特徴とする請求項７に記載のレイアウト処理方法。
【請求項１２】
データ領域毎に任意のレイアウト調整アルゴリズムを設定可能とする設定工程を更に有することを特徴とする請求項１に記載のレイアウト処理方法。
【請求項１３】
データ領域を有するテンプレートのレイアウトを、該データ領域に描画されるコンテンツデータに応じて動的に変更する情報処理装置であって、
複数のレイアウト調整アルゴリズムから、前記データ領域に適用すべきレイアウト調整アルゴリズムを選択する選択手段と、
データ領域へコンテンツデータを流し込むに際して、前記選択手段で選択したレイアウト調整アルゴリズムに従って前記データ領域のレイアウトを調整するレイアウト調整手段と、
前記レイアウト調整手段において調整されたデータ領域に前記コンテンツデータをレイアウトして出力する出力手段とを備えることを特徴とする情報処理装置。
【請求項１４】
前記複数のレイアウト調整アルゴリズムの各々は、データ領域と目標形状との差異が小さくなるようにデータ領域のレイアウトを調整するものであり、
前記差異の算出過程がレイアウト調整アルゴリズム毎に異なることを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記レイアウト調整手段は、リンクで関連付けられた複数のデータ領域の各々のレイアウトを調整する場合に、
前記関連付けられた複数のデータ領域の各々について、前記選択手段で選択されたレイアウト調整アルゴリズムに従って前記差異を算出し、それら算出された差異の合計が最小となるように、該関連付けられた複数のデータ領域の各々のレイアウトを調整することを特徴とする請求項１４に記載の情報処理装置。
【請求項１６】
前記複数のレイアウト調整アルゴリズムは、
データ領域に描画されるコンテンツデータに従ったコンテンツ形状を前記目標形状として前記差異を算出する第１アルゴリズムと、
前記レイアウトの設計時におけるデータ領域の形状であるレイアウト形状とを前記目標形状として前記差異を算出する第２アルゴリズムと、
データ領域と前記コンテンツ形状との差異である第１差異と、データ領域と前記レイアウト形状との差異である第２差異との合計を、前記データ領域と目標形状との差異とする第３アルゴリズムのうちの少なくとも２つを含むことを特徴とする請求項１４に記載の情報処理装置。
【請求項１７】
前記レイアウト調整手段は、前記第３アルゴリズムによりデータ領域のレイアウトを調整する場合に、
前記データ領域と前記コンテンツ形状との差異である第１の差異と、該データ領域と前記レイアウト形状との差異である第２の差異との合計を目標形状との差異とすることを特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記レイアウト調整手段は、前記第１の差異と前記第２の差異の各々に設定される重み値に応じて、データ領域のレイアウトを調整することを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
データ領域にレイアウト調整アルゴリズムを設定するためのユーザインターフェースを提示する提示手段を更に有し、
前記提示手段により提示された前記ユーザインターフェースを介した入力に応じて、前記データ領域に対して設定されたレイアウト調整アルゴリズムを前記保持手段に保持することを特徴とする請求項１３に記載の情報処理装置。
【請求項２０】
前記ユーザインターフェースは、予め定められた範囲を単位としてレイアウト調整アルゴリズムを指定可能であり、
前記レイアウト調整アルゴリズムは予め定められた範囲の各々を単位として設定され、前記予め定められた範囲には、ドキュメント、該ドキュメントを構成するページ、該ページに含まれるエリア、データ領域が含まれることを特徴とする請求項１９に記載の情報処理装置。
【請求項２１】
前記選択手段は、前記予め定められた範囲毎の優先順に従って、前記データ領域に適用すべきレイアウト編集アルゴリズムを選択することを特徴とする請求項２０に記載の情報処理装置。
【請求項２２】
前記ユーザインターフェースは、ページ上のデータ領域のレイアウト状態を表示し、表示されたデータ領域から指定されたデータ領域に対してレイアウト調整アルゴリズムをユーザに設定させる機能を有することを特徴とする請求項１９に記載の情報処理装置。
【請求項２３】
前記ユーザインターフェースは、データ領域に設定されたレイアウト編集アルゴリズムをユーザに視覚的に示すことを特徴とする請求項１９に記載の情報処理装置。
【請求項２４】
データ領域毎に任意のレイアウト調整アルゴリズムを設定可能とする設定手段を更に有することを特徴とする請求項１３に記載の情報処理装置。
【請求項２５】
請求項１乃至１２のいずれかに記載のレイアウト処理方法をコンピュータによって実行するための制御プログラム。
【請求項２６】
請求項１乃至１２のいずれかに記載のレイアウト処理方法をコンピュータによって実行するための制御プログラムを格納したコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキストやイメージで構成されたドキュメントの生成、編集、そして印刷のための技術に関するものであり、更に詳しくは、バリアブルデータドキュメントの生成、編集、そして印刷に好適なものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフが短くなっていること、インターネット利用の普及による消費者のカスタマイズサービス指向などの要因からＣＲＭ（Customer Relationship Management）、One-to-Oneマーケティングの必要性が注目されている。これらの手法は、顧客満足度を高め、顧客の開拓や囲い込みを目指すという目的に対して非常に効果的なものである。
【０００３】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものである。One-to-Oneマーケティングの代表的な具体的手法としてバリアブルプリントが挙げられる。特に、最近ではＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発されている。このようなバリアブルプリントシステムでは、顧客毎に異なる量のコンテンツが最適にレイアウトされたカスタマイズ文書を作成することが求められる。
【０００４】
一般に、バリアブルプリントシステムにおいてそのようなカスタマイズ文書を作成する際には、ドキュメント上にコンテナをレイアウトする。コンテナとはコンテンツ（描画内容）を描画するための部分領域（データ領域）であり、フィールド領域と呼ばれることもある。すなわち、ドキュメント上にこのようなコンテナをレイアウトし、データベースとレイアウトを関連付ける（データベースの各コンテンツと各コンテナとを関連付ける）といった作業により、カスタマイズ文書（ドキュメント）を作成する。本明細書ではこのようなドキュメントをバリアブルデータドキュメントという。
【０００５】
このようなバリアブルプリントシステムにおいて、レイアウトされた各コンテナには顧客によって異なるコンテンツを流し込むことが可能である。従って、コンテンツに流し込まれるデータのサイズは可変であり、これに対してコンテナのサイズが固定であると次のような課題が生じる。例えば、コンテナのサイズよりも大きなサイズのテキストデータが流し込まれた場合には全てのテキストをそのコンテナ内に表示出来なくなってしまう。あるいは、コンテナのサイズよりも大きなサイズのイメージデータが流し込まれた場合には、そのイメージの一部が欠落してしまう。このような問題をオーバーフローと呼ぶ。
【０００６】
なお、コンテンツがイメージデータの場合には、当該イメージを縮小してコンテナ内に描画することも考えられるが、イメージが極端に小さくなってしまうといった弊害が生じる可能性がある。また、固定サイズのコンテナ内に入りきらないテキストデータが挿入された場合に、テキストのフォントサイズを縮小し、当該コンテナ内に全てのテキストを表示可能にする技術も提案されている。しかしながら、このようにフォントサイズを調節する場合、フォントサイズが小さくなりすぎて、ドキュメント全体のバランスが崩れたり、読みにくくなるという課題が生じる。
【０００７】
このような課題を解決するための自動レイアウトの技術として、ある文字領域のサイズが大きくなった場合に、隣接した領域との間隔を保つべく当該隣接する領域のサイズを小さくする技術が特許文献１の「レイアウトデザイン装置」に開示されている。
【特許文献１】特開平７−１２９６５８号公報  （００４９、図８）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の技術には、テキストの入力に応じて文字領域が拡大されていくことが記載されている。しかしながら、文字領域のサイズが大きくなった場合、隣接した領域は間隔を保つべく縮小されてしまうため、入力されるテキスト量が増加するに従い、隣接した領域は縮小され続けてしまうといった問題点があった。
【０００９】
更に、特許文献１では、上述したようなデータベースと各レイアウト枠を関連付けてコンテンツデータを流し込むことで、顧客毎にカスタマイズした文書を作成するバリアブルプリントシステムについては考慮されていなかった。
【００１０】
また、バリアブルデータプリントを考慮したレイアウト方法として、固定のコンテナを作成し、そこにコンテンツデータを流し込んでいくものがある。しかし、固定サイズのコンテナを用いる場合、コンテナサイズより大きいサイズのコンテンツデータが流し込まれると、オーバーフローが生じるという問題が生じてしまう。また、そのような場合に、フォントサイズを縮小して無理に流し込もうとすると、フォントサイズが極端に小さくなってしまうといった問題が生じてしまう。また、流し込まれるコンテンツデータのサイズに応じてコンテナのサイズを拡大または縮小させることが考えられる。しかしながら、２つのコンテナが関連付けられた状態で、一方のコンテナサイズが拡大された場合、関連付けられているコンテナは一方のコンテナサイズの拡大に伴って縮小するしかなくなる。そのため、コンテナ間のサイズバランスを考慮したレイアウト処理を行うことができない。
【００１１】
そこで、関連付けられた複数のコンテナ間のサイズバランスを考慮したレイアウト方法が要求される。各コンテナに流し込まれるコンテンツデータのサイズに応じて各コンテナのサイズを変更する場合、各コンテナサイズの変化量を調整したレイアウト処理を行うことで関連付けられたコンテナのサイズバランスを考慮したレイアウト処理が可能なる。
【００１２】
上述したOne-to-Oneマーケティングでは顧客のニーズに合わせてカタログやパンフレットを作成することが目的の一つとして挙げられる。このような場合、顧客ごとに異なるパンフレットやカタログを作成することが想定される。
【００１３】
しかしながら、多種多様なパンフレットやカタログを作成する場合、上述したコンテンツデータのサイズに応じてコンテナサイズの変化量を調整するレイアウト調整アルゴリズムのみでは、ユーザに最適なレイアウトを生成することができなくなる可能性が高くなる。
【００１４】
また、上述したようなレイアウト調整アルゴリズムでは、データベースのデータのサイズに応じて自動的にレイアウト計算を行う際に、どのようにコンテナのサイズを変化させるかをユーザが設定することはできなかった。このため、作成するドキュメント内で、あるコンテナはデザインした時のサイズをなるべく維持し、あるコンテナはコンテンツの描画サイズを優先して変形させたいというように、ユーザの意図を柔軟に反映することができない。
【００１５】
本発明は上記の課題に鑑みてなされたものであり、上述するような多種多様なコンテンツデータを扱うバリアブルプリントにおいてもユーザが所望とする出力結果を得ることを可能とすることを目的の一つとする。例えば、複数のレイアウト調整アルゴリズムから適用すべきレイアウト調整アルゴリズムを用いてデータ領域のコンテンツデータを調整するレイアウト処理を実現する。
【００１６】
また、領域毎に任意のレイアウト調整アルゴリズムを設定可能とすることにより、ユーザの意図を柔軟に反映できるレイアウト処理を実現することを目的の一つとする。
【課題を解決するための手段】
【００１７】
上記の課題を解決するための本発明の一態様によるレイアウト処理方法は、
データ領域を有するテンプレートのレイアウトを、該データ領域に描画されるコンテンツデータに応じて動的に変更するレイアウト処理方法であって、
複数のレイアウト調整アルゴリズムから、前記データ領域に適用すべきレイアウト調整アルゴリズムを選択する選択工程と、
データ領域へコンテンツデータを流し込むに際して、前記選択工程で選択したレイアウト調整アルゴリズムに従って前記データ領域のレイアウトを調整するレイアウト調整工程と、
前記レイアウト調整工程において調整されたデータ領域に前記コンテンツデータをレイアウトして出力する出力工程とを備える。
【００１８】
また、本発明によれば、上記レイアウト処理方法を実行する情報処理装置が提供される。
【発明の効果】
【００１９】
本発明によれば、複数のレイアウト調整アルゴリズムから適用すべきレイアウト調整アルゴリズムを用いてデータ領域のコンテンツデータが調整される。このため、多種多様なコンテンツデータを扱うバリアブルプリントにおいてもユーザが所望とする出力結果を得ることが可能となる。
【発明を実施するための最良の形態】
【００２０】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００２１】
＜システム構成＞
まず、図１Ａおよび図１Ｂを参照して、本実施形態のバリアブルプリントシステムの構成を説明する。図１Ａはバリアブルデータドキュメントを印刷するためのバリアブルプリントシステム１００の構成例を示すブロック図である。また、図１Ｂは図１Ａに示されたホストコンピュータ１０１の構成を更に詳細に示すブロック図である。本実施形態で説明されるバリアブルプリント処理は、レイアウト調整装置であるホストコンピュータ１０１（汎用コンピュータモジュールで構成される）によって実行される。システム１００上で実施可能となるレイアウト編集アプリケーションプログラム１２１（本発明のレイアウト調整プログラム）はホストコンピュータ１０１において、そのソフトウェアの全体、あるいは一部分が実行される。特にレイアウト編集のための処理やバリアブルデータドキュメントの印刷のための処理はホストコンピュータ１０１で実行されるソフトウェアにより実現される。
【００２２】
レイアウト編集アプリケーションプログラム１２１はコンピュータの可読媒体に格納され、そのコンピュータの可読媒体からホストコンピュータ１０１のメモリ１３６にロードされ、実行される。そのようなソフトウェアやコンピュータプログラムを格納したコンピュータの可読媒体はコンピュータプログラム製品である。コンピュータにおいてそのコンピュータプログラム製品を使用することにより、ドキュメントのレイアウト編集やバリアブルプリントに好適な装置が提供されることになる。
【００２３】
図１Ｂに示されるように、ホストコンピュータ１０１には、入出力インターフェース１４３を介してキーボード１３２や、マウス１３３のようなポインティングデバイス等が入力装置として接続される。また、出力装置としてのディスプレイ装置１４４がビデオインターフェース１３７を介して接続される。更に、ローカルプリンタ１４５等を入出力インターフェース１３８を介して接続することも可能である。また、入出力インタフェース１３８はコンピュータモジュール１０１をネットワーク１０７へ接続する機能も有する。これにより、ネットワークを介してシステム１００内の他のコンピュータ装置にホストコンピュータ１０１を接続することができる。ネットワーク１０７の典型的な例としては、ローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）が挙げられる。
【００２４】
また、図１Ｂに示すように、ホストコンピュータ１０１は少なくとも１つのプロセッサユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６を含んでいる。格納デバイス１３９は、プログラム等を格納するコンピュータ可読媒体との間でデータのやり取りが可能なハードディスクドライブ１４０やフロッピー（登録商標）ディスクドライブ１４１を含む。なお、図１Ｂには示されていないが、磁気テープドライブ等も格納デバイス１３９として使用可能である。ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される（もちろん、ＣＤ−ＲＯＭによってコンピュータプログラムを提供してもよい）。
【００２５】
ホストコンピュータ１０１は、相互接続バス１３４を介して通信を行うコンピュータモジュール１０１のコンポーネント１３５〜１４３を利用する。この利用は、ＧＮＵ／ＬＩＮＵＸやマイクロソフトウインドウズ（登録商標）のようなオペレーティングシステムや、典型的にはオペレーティングシステムに従う形でなされる。或は、関連のある技術で知られているもので形成されたコンピュータシステムの常套的なオペレーションモードによる方法によって、上記利用はなされる。すなわち、上述した１３５〜１４３で示される各構成は、バス１３４を介して通信可能に接続されており、ホストコンピュータ１０１にインストールされたオペレーティングシステムにより利用される。
【００２６】
なお、図１Ｂに示したホストコンピュータ１０１の例としては、ＩＢＭ互換ＰＣやＳＵＮのSparcstation、あるいはそれらを含んだコンピュータシステムが考えられる。
【００２７】
＜レイアウト編集アプリケーションの概要＞
本実施形態では、レイアウト編集アプリケーションプログラム１２１はハードディスクドライブ１４０に常駐し、プロセッサ１３５により実行や読み込みがコントロールされるものとする。レイアウト編集アプリケーション１２１のプログラムの媒介記憶装置とネットワーク１０７からフェッチされるデータはハードディスクドライブ１４０に呼応して半導体メモリ１３６を使用する。
【００２８】
一つの例では、レイアウト編集アプリケーション１２１のエンコードされたプログラムは、ＣＤ−ＲＯＭやフロッピー（登録商標）ディスク上に格納され、対応するドライブ１４２や１４１を通じて読み込まれ、ハードディスクドライブ１４０にインストールされる。あるいは、別の例として、レイアウト編集アプリケーションプログラム１２１はネットワーク１０７からホストコンピュータ１０１内に読み込まれて、ハードディスクドライＢ１４０にインストールされてもよい。さらにソフトウェアは、磁気テープまたはＲＯＭまたは集積回路、光磁気ディスク、または、ホストコンピュータ１０１とその他のデバイス間における赤外線等の無線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カードからインストールされてもよい。或は、そのソフトウエアは、Ｅメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む他の適当なコンピュータからホストコンピュータ１０１内にロードされてもよい。これらは、コンピュータ可読媒体の例であり、他のコンピュータ可読媒体が使用されてもよいことは明らかである。
【００２９】
図１Ａにおいて、本発明のレイアウト編集アプリケーション１２１はコンピュータにバリアブルプリント（バリアブルデータプリント（ＶＤＰ）ともいう）を行わせるものである。レイアウト編集アプリケーション１２１は、２つのソフトウェアコンポーネント、すなわちレイアウトエンジン１０５とユーザインターフェース１０３、を含んでいる。レイアウトエンジン１０５は、部分領域であるコンテナ（矩形の範囲）に与えられたサイズや位置の制限にしたがって、データベース１１９に格納されているバリアブルデータから１レコードずつ読み込み、読み込んだデータとコンテナの制限とから、読み込んだデータが流し込まれるコンテナの大きさや位置等を計算するソフトウェアコンポーネントである。また、本実施例では、レイアウトエンジン１０５は、更に、コンテナに割り当てられたデータを描画し、バリアブルデータドキュメントのイメージを生成する処理も行う。ただし、本発明はこれに限るものではない。例えば、レイアウトエンジン１０５は各部分領域（コンテナ）のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力するようにしてもよい。この場合、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成することになる。ユーザインタフェース１０３は、ユーザによるコンテナのレイアウトや属性設定を可能とし、ユーザにドキュメントテンプレートを作成させる。また、ユーザインターフェース１０３はドキュメントテンプレート内の各コンテナとデータソースとを関連付けるメカニズムを提供する。ユーザインタフェース１０３とレイアウトエンジン１０５はコミュニケーションチャネル１２３を介して通信する。
【００３０】
図１Ｃは本実施形態によるバリアブルデータプリントの概略を説明する図である。レイアウト編集アプリケーション１２１のユーザインターフェースモジュール１０３（以下、ユーザインタフェース１０３と記載する）により、ユーザからの操作指示に従いページ上に複数のコンテナ１８１〜１８３が配置される。そして、各コンテナに位置やサイズに関する制約条件を付与することによりドキュメントテンプレート１８０が生成される。また、ユーザインターフェース１０３はドキュメントテンプレート１８０とデータソース１９０（図１ではデータベース１１９）との関連付け、更に各コンテナとデータソース１９０内の各データフィールドとの関連付けを行う。各コンテナとデータソース１９０内の各データフィールドとの関連付けを示す関連付け情報は、ドキュメントテンプレート内に記述され、該ドキュメントテンプレートは、ＨＤＤ１４０またはメモリ１３６に格納される。また、データソース１９０は、レコード単位で項目データ（バリアブルデータ）が記載されているファイルであり、ＨＤＤ１４０に格納されている。レイアウトエンジン１０５は、ユーザからの印刷指示もしくはプレビュー指示に応じて、ドキュメントテンプレートの各コンテナ１８１〜１８３に、関連付け情報で関連付けられたバリアブルデータをデータソース１９０から読み込む。そして、読み込んだバリアブルデータをレコード単位で流し込み（例えば、データレコード１のデータフィールドＡ〜Ｃをコンテナ１８１〜１８３へ流し込む）、流し込まれたデータに応じて各コンテナのサイズ等を調整（レイアウト調整）する。なお、レイアウト調整の方法については後述する。プレビュー指示の場合は、レイアウト調整されたドキュメントイメージを生成し、ビデオディスプレイ１４４の画面上にプレビューとして表示するべく出力される。また印刷指示の場合は、レイアウトエンジン１０５もしくはプリンタドライバを用いて生成したドキュメントイメージを印刷データとしてプリントサーバ１０９へ出力する。データレコード１，２，３…を順次処理することにより、バリアブルデータプリントが実現されることになる。
【００３１】
ドキュメント生成のためのデータソース（１９０）は、例えば、データベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ１１７上の一般的なデータベース１１９であってもよい。この場合、ホストコンピュータ１０１はネットワーク１０７を介してデータベースサーバ１１７と通信し、データソースを取得できる。また、レイアウト編集アプリケーション１２１によって生成された、バリアブルデータプリントのためのドキュメントテンプレート（１８０）は、ホストコンピュータ１０１或いは他のコンピュータで構成されるファイルサーバ１１５に保存される。図１Ｃで上述したように、レイアウト編集アプリケーション１２１のレイアウトエンジン１０５は、データとマージされたドキュメントテンプレートによって構成されたバリアブルデータドキュメントを生成する。これらのドキュメントは、ホストコンピュータ１０１のローカルファイルシステムに保存されるか、ファイルサーバ１１５に保存されるか、あるいはプリンタ１１３に送信されて印刷される。プリントサーバ１０９はネットワークと直接にはつながっていないプリンタにネットワーク機能を提供するためのコンピュータである。プリントサーバ１０９とプリンタ１１３は一般的な通信チャネル１１１を介して接続される。
【００３２】
＜他のシステム構成例＞
図２は、図１Ａと類似のブロック図であるが、エンジンサーバ２２７が追加されている。エンジンサーバ２２７に格納されているレイアウトエンジン２２５は、レイアウトエンジン１０５の分離バージョンである。エンジンサーバ２２７には一般的なコンピュータが用いられる。レイアウトエンジン２２５は、印刷やその他の目的に応じてバリアブルデータドキュメントを生成するために、ファイルサーバ１１５に保存されたドキュメントテンプレートとデータベース１１９に保存されたデータとを結合する。そのようなオペレーションはユーザインタフェース１０３を介して要求される。
【００３３】
＜レイアウト編集アプリケーションの説明＞
以下、レイアウト編集アプリケーション１２１について説明する。
【００３４】
［メインウインドウ］
ユーザインターフェース１０３は、操作時に図３に示されるようなアプリケーションウインドウ３０１によって形成されたユーザインターフェース画面をビデオディスプレイ１４４に表示させる。このウインドウ３０１は、メニューバー３０２、ツールバー３０３、ワークエリア３０６とオプションのパレット３１１を有する。メニューバー３０２とツールバー３０３は非表示にすることや、スクリーン上の色々な場所に移動することが可能である。また、ワークエリア３０６はマウス１３３の操作によってその場所を移動させることが可能である。また、パレット３１１はオプションであり、カーソル／ポインタデバイス３１３はマウス１３３が指し示す位置を表す。
【００３５】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を持つ。
【００３６】
ツールバー３０３は、アプリケーションの特別なモードによって非表示状態にする、または表示状態にすることが可能な多くのツールボタンとウィジット３０５を持つ。
【００３７】
ルーラー３０８はオプションであり、ワークエリア内のポインタ、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。
【００３８】
パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール３１２を持つ。パレット３１１はオプションで、ワークエリアの前面に表示される、あるいはオブジェクトの背面に隠される。パレット３１１はアプリケーションウインドウ３０１の範囲内のみに表示されることを制限される、あるいはアプリケーションウインドウ３０１の外側にその一部或いは全体を表示することを許される。
【００３９】
ツールバー３０３には図４に示されるような、ユーザ選択可能な『ボタン』が配置されている。
（１）選択ツールボタン４０３：コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック／ロック解除のために使われる。コンテナの選択は、コンテナの周りに選択ボックスをドラッグすることによりなされる。また、CTRLキーを押しながら、複数のコンテナについて選択操作をすることによって、複数のコンテナを選択可能である。
（２）テキストコンテナツールボタン４０４：スタティックあるいはバリアブルテキストを持つコンテナを作成するために使われる。
（３）イメージコンテナツールボタン４０５：スタティックあるいはバリアブルイメージを持つコンテナを作成するために使われる。
（４）リンクツールボタン４０６：コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使われる。
【００４０】
レイアウト編集アプリケーション１２１の図３に示したアプリケーションウインドウ３０１は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の少なくとも１つのコンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション１２１で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【００４１】
［ドキュメントテンプレート］
図３において、ワークエリア３０６はドキュメントテンプレート（１８０：基本レイアウト）のデザインを表示・編集するために使われる。また、ドキュメントテンプレートを単にテンプレートということもある。これはユーザがドキュメントテンプレートをデザインする過程において、印刷されるドキュメントの概観をユーザに提示することを可能とする。これにより、ユーザは、データソース（１９０）とマージされたドキュメントが、バリアブルデータの量・サイズに基づいてどのように変化するかを容易に理解できる。
【００４２】
また、データソースがドキュメントテンプレートに関連付けられていた場合は、現在のドキュメントのプレビューができるように、対応するバリアブルテキストやイメージがレイアウトされた各コンテナに表示される。
【００４３】
ドキュメントテンプレートにおけるドキュメント構造とバリアブルデータコンテナの描写をする視覚的な手がかり（コンテナの枠線、アンカー、スライダー、リンク等）は、ドキュメントテンプレート作成時には常に表示される。そして、バリアブルデータを流し込むプレビュー時には、視覚的な手がかりは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときに表示される。
【００４４】
ワークエリア３０６はスクロールバー３０７とオプションのルーラー３０８とドキュメントテンプレート３０９を含む。ドキュメントテンプレート３０９はページが複数あることを示すことができる。また、ドキュメントテンプレート３０９は、図１Ｃのドキュメントテンプレート１８０を表示しているものである。
【００４５】
与えられたドキュメントテンプレートのページサイズは、周知の技術を用いて、ユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントでの実際のページ数は、関連付けられたデータソース内のバリアブルデータによって変化する可能性が有る。これは、ドキュメントテンプレート内に可変表のようにバリアブルデータの量により大きさが変更されるフィールドが設定されている場合、１ページ内にフィットできないバリアブルデータが読み込まれると、追加のページが自動的に作成されるからである。
【００４６】
それぞれのページ内に示される境界線３１０は、ページ上の印刷可能なオブジェクトの最大幅を示す、任意のページマージンである。
【００４７】
図４は１ページのドキュメントテンプレート３０９上に表示され得るオブジェクトの例を示す図である。このようなオブジェクトとしては、コンテナ４０７、４０８と、任意に適用するアンカーアイコン４０９、固定されている辺４１１、４１４、固定されていない辺４１０、リンク４１２そしてスライダー４１３を持つ。アンカーアイコン４０９は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。なお、本願で記述するオブジェクトとはドキュメントテンプレート上に表示され得るもの全てを指し、各オブジェクトを明確に区別する場合は、それぞれの名称で記述することにより明確にする。アンカーアイコン４０９が設定されると、設定された個所の位置が固定となる。つまり、図４の例では、アンカーアイコン４０９は、コンテナ４０７の左上の角に設定されている。そのため、コンテナ４０７はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。例えば、アンカーアイコン４０９がいずれか１つの辺に設定されている場合は、その辺が固定となり、その他の３辺の各方向に拡大可能である。また、アンカーアイコン４０９がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、４方向に拡大可能である。リンク４１２についての詳細は後述するが、コンテナ４０７とコンテナ４０８が関連付けられていることを示している。そして、このリンク４１２に設定されている長さ（範囲指定可能）を保ちつつ、コンテナ４０８が右方向に移動可能であることが示されている（なお後述する可変サイズリンクの場合は、流し込まれるデータサイズによりリンクの長さが設定された範囲内で可変となる）。スライダー４１３は、設定されている辺と水平方向に移動可能であることを示している。
【００４８】
［コンテナ］
ここで、コンテナについて説明する。コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト／イメージが流し込まれ、描画されるスペース（これを部分領域またはデータ領域と呼ぶ）である。コンテナは、図４に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインターフェース画面を介して、ユーザからの操作指示により、コンテナはマウス１３３の操作により移動、サイズ調整、再作成される。また、コンテナに流し込まれるデータをコンテンツまたはコンテンツデータ（バリアブルデータまたはフィールドデータ）と呼ぶ。
【００４９】
より正確にはコンテナは、設定の集まり、視覚的表現、そしてインタラクションと編集動作をもっている。下記は本実施形態によるコンテナの定義である。
【００５０】
（１）コンテナは固定あるいは可変のコンテンツを持つ。可変コンテンツは、データソースから取得したデータがドキュメント毎、つまりレコード毎に異なる可能性があるという意味でダイナミック（動的）であるということができる。ただし、本実施形態の可変コンテンツは、アニメーション化されたもの、あるいは他の方法で時間的に変化するコンテンツは印刷には適していないため、ここでは意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。しかしながら、固定コンテンツが可変コンテンツとリンクにより関連付けられている場合、可変コンテンツの影響を受けて、固定コンテンツはそれぞれのドキュメントで位置が異なる可能性がある。
【００５１】
（２）コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定と同様の装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
【００５２】
（３）コンテナはドキュメントを生成する際にデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、印刷された出力物において可視である。可変コンテンツはデータソースからの特定のデータの表示を提供する。コンテナのこの表現は例えば印刷されるか、ビデオディスプレイ１４４のスクリーン上に表示されるか、その両方が可能である。
【００５３】
（４）コンテナは、図４に示されるように視覚的な手がかりとしてのユーザインターフェースを有している。例えばコンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインターフェース（ＧＵＩ）を持つ。ＧＵＩの各要素はビデオディスプレイ１４４のスクリーン上に表示されるが、ドキュメントとしては印刷されない。レイアウト編集アプリケーション１２１のユーザインターフェース１０３は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示し、さらにコンテナの設定の編集や表示を可能にするための機能を有している。
【００５４】
［コンテナの制約］
コンテナはそれぞれのドキュメントで表示されるコンテンツをどのように結びつけるかの制御に関する制約がある。これらの制約（固定／可変コンテンツをコンテナと結びつけることを含む）は、ユーザが一つのドキュメントテンプレートから多数のドキュメントの世代をコントロールする主要な方法である。制約の一つの例は『このコンテナのコンテンツの高さは最大４インチです』である。また、別の制約の例は『コンテナのコンテンツの左エッジ（左辺）は、それぞれのドキュメントにおいて同じ水平位置で表示しなければならない』である。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集するためのいろいろな方法である。
【００５５】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダーは、デジタル印刷技術でよく知られている。コンテナは位置とサイズを持ち、それらは公知の技術で知られている手法で編集され、表示される。よって、以下の説明では、バリアブルデータ印刷に特化した方法における表示・編集に焦点を合わせる。
【００５６】
コンテナを用いることにより、ユーザは、ドキュメントにおけるコンテンツのサイズ（描画サイズ）や位置を指定することが可能となる。いく種類ものドキュメントが一つのドキュメントテンプレートから生成されるので、コンテナに多数の可能性と制約を設定することになるが、これらの設定（指定）や表示のために所定のユーザインターフェースが利用される。
【００５７】
１つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。したがって、コンテナの左辺を論じることは、関連付けられたコンテンツが、各ドキュメントにおいて、表示可能であるエリア内の最も左の辺を論じることと同じである。同様に、コンテナの高さを論じることは、生成されたドキュメントで関連付けられたコンテンツの高さの制約を論じることとして理解される。本明細書では、ユーザインターフェース１０３を参照してコンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
【００５８】
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
【００５９】
（１）コンテナの幅が固定である場合、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
【００６０】
（２）コンテナの高さが固定である場合、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
【００６１】
（３）距離（リンクの長さ）が固定である場合、指定された距離は全てのドキュメントにおける制約となる。
【００６２】
（４）コンテナの左右辺が固定の場合、ページに関する辺の水平位置は全てのドキュメントで同じであることを意味している。ただし、コンテナの高さあるいは垂直方向の位置は、変化する可能性がある。例えば、コンテナの左辺が固定である場合、関連付けられたコンテンツの表示位置は、全てのドキュメントでその左辺の位置は同じ水平位置となる。しかし、そのコンテンツは、あるドキュメントではページの上の方に表示され、他のドキュメントではページの下の方に表示される可能性がある。
【００６３】
（５）コンテナの上下辺が固定の場合、ページにおける辺の垂直位置は全てのドキュメントで同じとなることを意味している。ただし、コンテナの幅あるいは水平位置はドキュメントによって変わる可能性がある。
【００６４】
（６）コンテナの垂直軸はコンテナの右辺と左辺に平行で、それらの中間に位置される仮想の垂直線である。もしコンテナの垂直軸が固定なら、当該コンテナの左右辺の水平位置の中央位置は、すべてのドキュメントで同じとなる。この制約において、コンテナの幅は変化する可能性がある。しかしながら、左右辺が垂直軸にもっとも遠いものからもっとも近いものまで、垂直軸は全てのドキュメントで同じ水平位置となる。なお、コンテナの高さと垂直位置はこの制約によって影響されない。
【００６５】
（７）同様に、もし水平軸が固定なら、コンテナの上辺と下辺の平均が同一の垂直方向位置に配置される。ただし、コンテナの幅と水平位置はこの制約によって影響されることはない。
【００６６】
（８）水平軸と垂直軸の両方が固定である場合、コンテナの中心位置が固定されていることを意味する。ただし、コンテナの幅・高さはこの制約によって影響されない。
【００６７】
（９）コンテナの角位置、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定である場合、それぞれの位置はすべてのドキュメントで同じ場所となる。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
【００６８】
（１０）垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
【００６９】
『固定』の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間（レコード間）で変化するかもしれないことを意味する『可変』である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション１２１では、各コンテナ（部分領域）について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレート１８０の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【００７０】
［コンテナ表示・編集］
−−新規コンテナの作成方法−−
コンテナは、テキストコンテナとイメージコンテナの２種類で記述される。テキストコンテナはテキストおよび埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。
【００７１】
図４で示されるように、新規のテキストコンテナあるいはイメージコンテナは、テキストコンテナツール４０４あるいはイメージコンテナツール４０５をマウス１３３でクリックし、ドキュメントテンプレート３０９上に四角形をドラッグすることによって、当該ドキュメントテンプレート３０９上に作成される。
【００７２】
あるいは、コンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上で単にクリックすることによって作成されるようにしてもよい。この場合、マウス１３３のクリック操作に応じてデフォルトサイズのコンテナがテンプレート上に挿入されるとともに、当該新規コンテナの寸法等を設定するためのダイアログボックスあるいは他のプロンプトが提供される。なお、コンテナのサイズは自動的に前もって定義されるようにしてもよいし、あるいは、計算されたスキーマによって作成・配置される、等、種々の方法が考えられる。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログＵＩ（部分領域設定手段に相当する）では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ（幅、高さ）や位置を決定することができる。また、コンテナを可変サイズにする場合は、コンテナの基本パターン（基本サイズと基準位置）を設定し、更に、最大コンテナサイズ（幅、高さ）と最小コンテナサイズ（幅、高さ）を設定することが可能となっている。
【００７３】
［コンテナの表示方法］
図５の（Ａ）〜（Ｄ）はコンテナの辺に関する表示ルールを例示している。
【００７４】
アプリケーション１２１は、コンテナの辺の状態を表現するために、実線（アイテム５０３）あるいは点線（５０４）を用いて辺を表すとともに、アンカー（辺の近くに描画された５０６、５０７、５０９によって示されるような線、形状、アイコン。）、ハンドル（移動、修正するために領域の辺上あるいは近傍に描画されたコントロール点、５０２）、スライダー（辺の両側に描画された短い並行線、図４の４１３）、拡縮アイコン（５０５）、色を用いる。
【００７５】
図５（Ａ）〜（Ｄ）に示されるコンテナ表示方法のルールは以下の通りである。
（１）それぞれの辺を固定するために、実線で描画する。
（２）幅が固定の場合は、左と右の辺を実線で描画する。
（３）高さが固定の場合は、上と下の辺を実線で描画する。
（４）軸は描画しない。
（５）（１）〜（３）によって描画されていないそれぞれの辺の近くには拡縮アイコンが描画され、それらの辺を点線で描画する。
（６）垂直辺と水平辺、あるいは垂直軸と水平軸のそれぞれのペアで、もし両者が固定なら、それらの交差点にアンカーが描画される。
（７）それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
（８）垂直及び水平辺、あるいは垂直及び水平軸のそれぞれのペアで、アンカーやスライダーが描画されていない場合、それらの交差点にハンドルが描画される。
【００７６】
ルール（１）、（２）、（３）で定義された線は、前述したように固定あるいは制限されているため実線で描画される。ルール（５）のように、可変の辺は、点線で描画される。ルール（６）、（７）、（８）で定義された固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【００７７】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【００７８】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後に説明するように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。なお、ユーザインターフェースにおける可変の辺の描画位置を別の手段を用いて決定してもよい。例えば、すべてのドキュメントで平均化されたサイズのコンテナ（平均化されたコンテンツエリア）を用いて可変の辺を描画する位置が決定されてもよい。
【００７９】
これらのコンテンツ表現は、コンテナの各辺の状態を表示するグラフィカルな手段を提供する。その表現の解釈は下記のとおりである。
（１）図４の４１０の辺のように、点線はコンテナのコンテンツに依存してドキュメント内の辺の位置が変化することを意味する。
（２）実線は、固定されている（辺４１４）、あるいはコンテナの幅・高さが固定されている（コンテナ４０８では４辺が実線であり、両方が固定されている）ために制限された辺であることを意味する。
（３）アンカーは辺および軸が交差した場所が固定されていることを意味する。それゆえ、アンカー点は、すべてのドキュメントの水平、垂直位置で現れることになる。アンカーは当然固定される。図４のアイコン４０９は、辺４１４の交差する位置が固定されていることを意味しているアンカーアイコンの例である。
（４）スライダーは関係付けられた辺の長さが固定されているが、並行移動する可能性があることを意味する。例えば、図４でスライダー４１３はコンテナ４０８に流し込まれたコンテンツデータが、ドキュメント内で特定のダイアグラムで表される位置の、左あるいは右に表示されるかもしれない。例えば、コンテナ４０８と関連付けられている（リンク設定されている）コンテナ４０７に流し込まれるデータの画像サイズもしくはテキスト量が少ない場合は、コンテナ４０７のサイズが小さくなる。そのため、コンテナ４０８は、左方向にスライド（並行移動）してレイアウトされて表示されることになる。また、コンテナ４０７のサイズが大きくなる場合は、逆にコンテナ４０８は右方向にスライドしてレイアウトされることになる。
【００８０】
これらのアイコン・辺のいくつかあるいは全ては、どのツール、どのコンテナを選択・ハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺・アイコンはドキュメントテンプレートのデザインの手助けであるため、印刷物には描画されない。
【００８１】
なお、前述したように、コンテナの幅・高さの基本値・最小値・最大値の基本パターンの設定は、副次的なダイアログウインドウに表示される。
【００８２】
図５の（Ａ）で、コンテナ５０１は、幅・高さの両方が固定されていない（可変である）。固定された辺５０３は実線で表現され、可変の辺５０４は点線で表現されている。拡縮アイコン５０５は、隣接する辺５０４が可変であることを示す。他の形態のインジケータを代わりにあるいは追加的に用いてもよい。
【００８３】
図５の（Ｂ）において、コンテナ５０１は幅・高さ両方が可変である。アンカーアイコン５０６が、交差している両方の辺５０３の角の位置が固定されていることを明示的に表すべく追加されている。
【００８４】
図５の（Ｃ）において、コンテナ５０１は、コンテナの幅及び高さの両方が可変であり、任意のアンカーアイコン５０７で示されるような中心点の周りを平等に広がるという状態を示している。すなわち、コンテナ５０１はアンカーアイコン５０７を中心に拡大あるいは縮小が可能である。ここでの拡大／縮小は、アンカーアイコン５０７の位置が常にコンテナ５０１の中心点となるようにレイアウト調整される。
【００８５】
図５の（Ｄ）において、コンテナ５０１は、上辺５０８が固定されているが、幅・高さの両方が可変である。上辺５０８の中心に位置付けられて示されるアンカーアイコン５０９は、固定されている。そしてコンテナ５０１の左辺・右辺は、アンカーアイコン５０９を通って垂直な中心軸（垂直軸）の周りを、拡大・縮小する。
【００８６】
［リンク］
リンクは、コンテナとコンテナの関連を示している。関連とはコンテナ間の距離を示しており、リンクによって関連付けられたコンテナ同士は、互いのレイアウト変更の影響を受けてレイアウトを計算する。図４の４１２で示されているものがリンクであり、図４ではコンテナ４０７と４０８とを関連づけている。リンクの設定方法および、リンクで関連付けられたコンテナのレイアウト計算方法については、後述する。
【００８７】
［リンクの設定方法］
次に、コンテナ同士を関連付けるためのリンクの設定について説明する。図６はリンクの設定方法を示したフローチャートである。また図７の（Ａ）〜（Ｃ）はリンク設定時のユーザインターフェース（ＵＩ）の遷移例を示している。図６，図７（Ａ）〜（Ｃ）を用いてコンテナにリンクを設定する方法について説明する。なお、本願に記載されているフローチャートの各ステップの処理は、情報処理装置（ホストコンピュータ）が有するプロセッサ１３５によって実行されることとなる。
【００８８】
まず、ステップＳ６０１において、レイアウト編集アプリケーション１２１は、ユーザインターフェース画面のワークエリア３０６上に編集すべく選択されたドキュメントテンプレートを表示する。リンクを設定するためには、リンクを設定するためのコンテナ（最低２つ）がドキュメントテンプレート上に作成されている必要がある。図７（Ａ）〜（Ｃ）では、ステップＳ６０１で２つのコンテナを作成してリンクを設定する場合のユーザインターフェースの遷移例を示している。
【００８９】
次に、ステップＳ６０２において、レイアウト編集アプリケーション１２１は、前述したリンクツールが選択状態（図４のボタン４０６をクリックすることにより選択状態となる）になったかを判断する。リンクツールが選択上体でなければ、必要に応じて他の各種処理を実行し（ステップＳ６０９）、ステップＳ６０２に戻る。
【００９０】
図７の（Ａ）において、コンテナ７０１と７０２はすべて固定されている辺で構成されているものとする。また、７０３と７０４は、図４の４０９と同じであり、アンカーを意味する。７０５はマウスポインタを意味している。さて、リンクツールが選択状態となっている間に、ユーザはリンクを設定する２つのコンテナのうちの一方（コンテナ７０１とする）をクリックして選択する。この操作に応じて、レイアウト編集アプリケーション１２１のユーザインターフェース１０３は第１のコンテナが指定されたことを認識し（ステップＳ６０３）、選択されたコンテナを特定する情報をメモリ１３６に保持する。また、以降のマウスカーソルの移動に応じた軌跡を画面に表示するようにする（ステップＳ６０４）。例えば、図７の（Ｂ）における線分７０６は、図７の（Ａ）の状態におけるクリック位置と現在のマウスカーソルの位置とを結んだ線を示しており、このＵＩによりどの位置にリンクが設定されるのかをユーザに明示することができる。
【００９１】
次に、ユーザは、図７の（Ｂ）で示されるように、もう一方のコンテナ（コンテナ７０２）までマウスポインタを移動してクリックする。この操作に応じて、ユーザインターフェース１０３は第２のコンテナが指定されたことを認識する（ステップＳ６０５）。そして、レイアウト編集アプリケーション１２１は、ステップＳ６０４で保持した第１のコンテナと、ステップＳ６０５で指定が認識された第２のコンテナとの間にリンクを設定する（ステップＳ６０６）。
【００９２】
こうして、ユーザにより選択された２つのコンテナ７０１，７０２の間にリンクが設定されると、リンクＵＩ７０７が表示される（ステップＳ６０７）。更に、このリンク設定を受けて、コンテナの表示状態は図７の（Ｃ）の状態になる（ステップＳ６０８）。すなわち、リンクが設定されたことにより、コンテナのＵＩが自動的に変更される。ここでは、リンクによって関連付けられた辺が可変となり、点線で示される。図７の（Ｃ）において、７０８は点線で示されている辺であり、前述した通り可変の辺を示すものである。
【００９３】
なお、図７の（Ｃ）のようなコンテナの辺の状態の変化は、リンクを設定したことによりコンテナの辺を可変にする必要が生じたことにより自動的に実行されたものである。これは、リンクを設定したにもかかわらず全ての辺が固定であるという矛盾の発生を防ぐことを目的としている。また、７０９は図５の（Ａ）〜（Ｄ）の５０５と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したマークである。また、図７の（Ｃ）の例では、左のコンテナの右辺と右のコンテナの左辺が可変な状態へ変化したが、これは一例であり、たとえば、右コンテナが図４の４１３で示したスライダーを持つ設定に変化してもかまわない。
【００９４】
＜レイアウトエンジンによるレイアウト計算処理＞
［レイアウト計算方法（全体フロー）］
本実施形態のレイアウト編集アプリケーションは、レイアウトモードとプレビューモードに分けられる。レイアウトモードは、ユーザインターフェース１０３を用いてコンテナを作成し、そのコンテナ間に関連付け（リンク設定）を行ってレイアウトを作成するモードである。プレビューモードは、レイアウトエンジン１０５により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするモードである。このプレビューモードにおいて、実際のレコードが有するコンテンツデータが挿入され、レイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン１０５が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。なお、コンテンツデータを流し込むべきコンテナに優先順位が設定されている場合は、該優先順位に従ってレイアウト計算を行うこととなる。優先順位に従うレイアウト計算の一例として、優先順位の高いコンテナに流し込まれるコンテンツデータは、できる限りオリジナルサイズ（元のデータサイズ）で表示することが考えられる。
【００９５】
図８はレイアウト計算のフローを示している。まず、プレビューモードが選択される（ステップＳ８０１）。プレビューモードになったら、レイアウト編集アプリケーション１２１は、ユーザにプレビューするレコードをデータソースより選択させ、選択されたレコードの各フィールドデータを各コンテナに挿入するよう決定する（ステップＳ８０２）。各コンテナへのフィールドデータの挿入が決定されると、レイアウト編集アプリケーション１２１は、そのレコードをレイアウトするための計算を行い、必要に応じてレイアウト調整を行う（ステップＳ８０３）。ステップＳ８０３におけるレイアウト計算の詳細については後述する。そして、レイアウト編集アプリケーション１２１は、ステップＳ８０３で計算されたレイアウトを表示する（ステップＳ８０４）。レイアウト編集アプリケーション１２１は、他のレコードについてもプレビューを行うかどうかをユーザの指示により判断する（ステップＳ８０５）。ステップＳ８０５で、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する（ステップＳ８０７）。他のレコードについてプレビューを行うのであれば、レイアウト編集アプリケーション１２１は、他のレコードを選択して再度レイアウト計算を行い、プレビューを行う（ステップＳ８０６）。
【００９６】
なお、プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、ステップＳ８０４は存在せず、ステップＳ８０５は印刷するレコードを全て処理したかの判断を行う。ステップＳ８０３でレイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード（印刷すべく指定された全レコード）について印刷データの出力が終了した時点で本処理を終了することになる。
【００９７】
［レイアウト計算方法（詳細）］
次に、上記ステップＳ８０３によるレイアウト計算の詳細について説明する。図９は本実施形態によるレイアウトの優先順位を設定しない場合のレイアウト計算の方法を示したフローチャートである。また、図１０の（Ａ）〜（Ｃ）はそのときのＵＩ表示例を示した図である。図９はレイアウト計算の処理方法についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの１レコードの印刷／プレビュー時のレイアウト計算方法に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
【００９８】
まず、レイアウト編集アプリケーション１２１は、レイアウトを計算するコンテナの集合を求める（ステップＳ９０１）。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば図１１を参照すると、ページ上に４つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡ、Ｂが集合１、コンテナＣ、Ｄが集合２となる。すなわち、リンクによって接続されたコンテナ群を一つの集合として特定する。前述したように、１１０１はアンカー、１１０２は固定された辺、１１０３はコントローラー、１１０４は可変の辺の変化方向を示している矢印、１１０５は可変の辺、１１０６はリンク、そして１１０７はスライダーを示している。
【００９９】
次に、レイアウト編集アプリケーション１２１は、ステップＳ９０１で求めたコンテナの集合から、レイアウトを計算するために一つを選択する（ステップＳ９０２）。そして、選択したコンテナの集合について、レイアウトの計算を行う。まず、選択したコンテナの集合に含まれる可変要素である２つのコンテナ（Ａ，Ｂ）について、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。具体的には、レイアウト編集アプリケーション１２１は、コンテナＡが画像データ用コンテナであるか、テキスト用コンテナであるかを判断する。この判断は、前述したように、コンテナに対して設定されている属性により判断できる。次に、レイアウト編集アプリケーション１２１は、コンテナＡに流し込まれるデータを読み込む。コンテナＡが画像データ用コンテナである場合は、その画像データのサイズ（幅、高さのピクセル数、および解像度）がコンテナＡの制約を受けない場合の大きさになる。また、コンテナＡがテキスト用コンテナである場合は、そのテキストデータの文字数と、コンテナＡのコンテナ属性で指定されている文字属性に基づいて、コンテナＡに流し込まれるべきデータ量が計算できる。尚、文字属性とは、フォントタイプ、フォントサイズ、文字ピッチ、行ピッチなどである。ここで、テキスト用コンテナの場合は、コンテナＡの縦横比の制約を考えないと決定できないため、制約を当てはめる。図１１の例では、コンテナＡは、左上および左下の角にアンカーが設定されているため、高さ（縦方向）が固定となる。よって、レイアウト編集アプリケーション１２１は、コンテナＡの基本パターンとして設定されている幅（横方向）のコンテナＡに、計算したデータ量（テキスト量）の文字を流し込めるか否かを判断する。すべて流し込めると判断された場合は、コンテナＡは、基本パターンで設定されているサイズ（幅、高さ）に変更はない。また、すべて流し込めないと判断された場合はサイズ変更を行う。図１１の例では、コンテナＡは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション１２１は、コンテナＡの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナＡのサイズを算出する。
【０１００】
次に、レイアウト編集アプリケーション１２１は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（ステップＳ９０３）。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウト編集アプリケーション１２１は、ステップＳ９０２で算出したコンテナの集合のサイズ、つまりコンテナＡとコンテナＢとリンク１１０６（ここでは固定リンク）の合計サイズを求める。そして、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ（図１１の例ではコンテナＡとコンテナＢのそれぞれのアンカーアイコンの距離に相当する）との差を求める。コンテナＡやコンテナＢの幅が大きくなると前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション１２１は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
【０１０１】
レイアウト編集アプリケーション１２１は、レイアウトの最適化を行い、ルールに違反していた場合は、再度ルールを違反しないように計算をする（ステップＳ９０４）。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズの可変範囲や位置の制限、可変リンクの場合はリンクの長さの変化の制限などである。ルールを違反しないようにレイアウトが計算されたら、その集合のレイアウトは完成される。そして、ステップＳ９０２〜Ｓ９０４の処理をページ上のすべての集合について施し、レイアウト編集アプリケーション１２１は、ページ全体のレイアウトを計算する（ステップＳ９０５）。
【０１０２】
図１０の（Ａ）〜（Ｃ）は優先順位の設定なしでのレイアウト時のＵＩ例である。
【０１０３】
図１０の（Ａ）は、あるレコードが挿入されレイアウトが決定されている状態を表している。１００１と１００２はアンカー、１００３と１００４は固定された辺、１００５は可変の辺、１００６は可変の辺の変化方向を示している矢印、１００８はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。図１０の（Ｂ）は図１０の（Ａ）の状態に新しいコンテンツのサイズを重ねて示している。１００９はそれぞれのコンテナに挿入されるコンテンツサイズを表している。そして、レイアウト計算が行われる。図１０の（Ｃ）はレイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、且つ前述したルールを違反しないように計算される。図１０の（Ｃ）で示されるように、図１０の（Ｂ）で示した挿入されるコンテンツサイズ（１００９）と計算後のコンテンツサイズ（１０１０）は、双方において同等な差異がある。
【０１０４】
図１０の（Ａ）〜（Ｃ）のような横方向のみのレイアウト計算の場合は同等の差異をもってレイアウト計算を行う処理だけで問題は生じない。しかしながら、図３１のように縦方向および横方向を考慮したレイアウト計算を行わなければならない場合、同等の差異をもってレイアウト計算を行う処理だけでは対応できなくなる可能性がある。
横方向と縦方向の２次元的なレイアウトを扱う図３１の場合、図９のレイアウト計算方法を用いて、まず横方向に調整を行い、後に縦方向に調整を行う。すなわち、コンテナ３１０１と３１０２の間で、上述した手順で設定値Ｄに収まるようレイアウト調整を行い、その後、コンテナ３１０２と３１０３の間で設定Ｇに収まるようレイアウト調整を行うこととなる。
【０１０５】
しかし、横方向に調整を行い、後に縦方向に調整を行うという調整方法では、ユーザが所望とする基本レイアウトからずれたレイアウト結果になることが想定される。
【０１０６】
そのため、各コンテナについて、基本パターン（レイアウト設計時のコンテナサイズやコンテナの縦横比など）からなるべくずれないようにする。そのために、例えば、以下の方法が考えられる。基本パターンの幅とレイアウト調整後の幅の差の２乗と、基本パターンの高さとレイアウト調整後の高さの差の２乗との和を求め、これをすべてのコンテナについて算出する。そして、レイアウト編集アプリケーション１２１は、各コンテナの２乗の和（横方向＋縦方向）の合計値が最小となるように、それぞれのコンテナの幅と高さを算出してレイアウト調整を行う。このように最小２乗法を用いてレイアウト調整を行うことにより、ユーザが当初設定した基本レイアウトから大きく外れることがなく、全体としてバランスのとれた最終レイアウトを決定することができる。
【０１０７】
なお、コンテナ間には後述する可変リンクが設定されているため、流し込まれるコンテンツデータのサイズに応じて後述するようにリンクサイズは変更する。本願記載のレイアウト編集アプリケーションはこのようなレイアウト調整ユニットを備えることにより、割り当てられたデータサイズに応じて複数の部分表示領域（コンテナ）の配置位置を調整することが可能となる。
【０１０８】
また、上記記載ではレイアウト調整アルゴリズムの一例として最小２乗法を用いることを挙げたが、３乗や４乗など所定の操作によりレイアウト調整アルゴリズムを切り替えることを可能にしても構わない。なお、具体的なレイアウト計算方法は、図３２から図３４を用いて後述する。
【０１０９】
［長さが可変のリンクの設定］
図１２では可変リンクの設定のためのユーザインターフェースを表している。図４と同様にアプリケーションウインドウ３０１とツールバー３０３がある。図１２の状態では、ドキュメントテンプレート３０９上にコンテナ１２０３とコンテナ１２０４が存在する。それぞれのコンテナはアンカーアイコン１２０１、アンカーアイコン１２０２と固定された辺１２０５、辺１２０６を含んで構成されている。コンテナ１２０３と１２０４の間には可変サイズのリンク１２０９があり、コンテナ１２０３とコンテナ１２０４を結んでいる。コンテナ１２０３とコンテナ１２０４の間にはリンクが設定されているのでそれぞれの右辺１２０７と左辺１２０８は点線で表現されている。このため各コンテナにインジケーター１２１０、インジケーター１２１１が表示され、それぞれ辺１２０７と辺１２０８が可変であることを示している。
【０１１０】
また、図１４は、リンク設定手段におけるユーザインタフェース画面であり、リンク１２０９の情報をセットするためのダイアログウインドウ１４０１の例である。このダイアログは、タイトルバー１４０２、ツールボタン１４０３、ダイアログウインドウの開閉を行うボタン１４０４、各種の情報をセットするエリア１４０９で構成されている。このダイアログウインドウではリンクタイプが可変長（１４０７）のリンクであるか、あるいは固定長（１４０６）のリンクであるかの択一的な選択を行える。リンクタイプが可変の場合にはリンクの長さの最小値（Min.Distance１４１０）、最大値（Max.Distance１４１２）、ならびに基準値（Distance１４１１）が設定できる。図１４のダイアログ１４０１は、たとえば、図６，図７の（Ａ）〜（Ｃ）で説明したリンクの設定操作によって２つのコンテナ間にリンクを設定した後に、この設定されたリンクをクリック等の操作によって選択したときに表示される。あるいは、リンクを設定した直後に、当該リンクに関するダイアログウインドウ１４０１が自動的に表示されるようにしてもよい。ここで各コンテナ間の距離の基準値１４１１は、データを流し込んだ際に各コンテナのサイズが変更されない場合に用いられるリンクの長さである。
【０１１１】
図１３は、本実施形態のユーザインターフェース１０３による可変リンクの設定手順を説明するフローチャートである。例えば図１１のコンテナＡとコンテナＢの間に図６、図７の（Ａ）〜（Ｃ）で説明した手順でリンクを張ると、まず固定サイズのリンクが張られる。そして、このリンクを選択して図１３に示す処理を実行することにより、当該リンクを固定サイズのリンク１１０６（図１１）の状態から可変サイズのリンク１２０９（図１２）へと遷移させることができる。
【０１１２】
まず、マウスにより所望のリンク（たとえばリンク１１０６）を選択状態とし、リンクプロパティを表示させるための所定の操作が行われる。すると、レイアウト編集アプリケーション１２１のユーザインターフェース１０３は、リンクプロパティの表示指示の入力として認識する（ステップＳ１３０１）。リンクプロパティの表示指示を認識すると、選択状態のリンク（以下、対象リンクという）に対応したプロパティダイアログウインドウ１４０１（図１４）が表示される。次に、ユーザインタフェース１０３は、リンクプロパティを表示する（ステップＳ１３０２）。なお、リンクの選択操作としては、コンテナの基本パターンの設定時と同様に、マウスの右クリックあるいはキーボードの特定のキーの操作等、いかなるものであってもよい。
【０１１３】
ステップＳ１３０２で表示されるダイアログウインドウ１４０１には選択されたリンクの現在の状態が示される。本例では、リンク１１０６が選択されたので、この段階ではリンクサイズは固定であり、Link Type１４０５においては、固定長を示すFixed Length１４０６が選択されている。
【０１１４】
このダイアログウインドウ１４０１においてリンクを固定サイズから可変サイズに変更するために、Link Type１４０５においてリンクサイズを可変に設定するためのFlexible Length１４０７を選択する。これによりLinkDistance１４０８内に配置されているMax. Distance１４１２、Min. Distance１４１０、Distance１４１１が有効になり、数値の設定が可能となる。ユーザは、リンクの可変サイズを設定するために、そのリンクの長さの最大値をMax.Distance１４１２に、最小値をMin. Distance１４１０に、現在の値をDistance１４１１に設定することになる。
【０１１５】
設定を終えると、ユーザは一般的なダイアログウインドウ開閉ボタン１４０４によって当該設定の適用を指示する。ユーザインターフェース１０３はこの指示を検出すると、ステップＳ１３０３からステップＳ１３０４以降へ処理を進め、当該対象リンクに上記設定状態を反映させる。
【０１１６】
すなわち、まず、ステップＳ１３０４において、レイアウト編集アプリケーション１２１は、対象リンクが固定サイズか可変サイズかを判定する。固定サイズが指定されていればステップＳ１３０８へ進み、対象リンクを「固定サイズ」に設定し、ステップＳ１３０７で対象リンクの表示状態を「固定リンク」を表す「実線」とする。
【０１１７】
一方、ステップＳ１３０４において、可変サイズが指定されていれば、ステップＳ１３０５へ進み、レイアウト編集アプリケーション１２１は、対象リンクを「可変サイズ」に設定する。そして、ステップＳ１３０６にて、上記ダイアログウインドウ１４０１によって設定された対象リンクの現在値（基準値）、最大値、最小値を登録する。その後、ステップＳ１３０７で対象リンクの表示状態を「可変リンク」を表す「点線」とする。この結果、図１２のリンク１２０９に示すような状態にリンクのＵＩ表示が変化する（ステップＳ１３０６）。以上のダイアログウインドウ７０１の設定情報はメモリに格納される。
【０１１８】
なお、Distance１４１１に設定される現在の値には、現在のレイアウトとして配置されているコンテナの間の距離がデフォルト値として自動的に入力されるようにしてもよい。
【０１１９】
図１５は固定サイズのリンクを使用した場合であり、図１２に記載されている基本レイアウトにコンテンツを流し込んだレイアウト結果を示している。なお、図１２のリンク１２０９は可変リンクとなっているが、固定リンクが設定されているものと想定する。レイアウト計算方法は前述したとおりに従って行われる。
【０１２０】
例えば図１２においてコンテナ１２０３とコンテナ１２０４にそれぞれ違ったサイズのイメージデータ（１５０４および１５０５）が挿入された場合を考える。
【０１２１】
この場合、それぞれのコンテナはデータの大きさを最適とみなし、コンテナ１２０３は挿入されたイメージサイズになる枠１５０４（最適コンテナサイズ）に近づこうと右方向へサイズを変更しようとする。同様にコンテナ１２０４は挿入されたイメージサイズになる枠１５０５（最適コンテナサイズ）に近づこうと左方向へサイズを変更しようとする。
【０１２２】
しかしコンテナ１２０３とコンテナ１２０４はアンカー１２０１とアンカー１２０２によってそれぞれ左辺１２１２と右辺１２１３の移動ができず、上記のようにサイズを変更しようとすると両者の間隔を狭めるしかない。しかしながら、コンテナ間には固定サイズのリンク１５０３が設定されており、レイアウト計算時にその長さ維持されるため、コンテナ１２０３とコンテナ１２０４のサイズが変更されることになる。
【０１２３】
その結果、コンテナ１２０３とコンテナ１２０４はデータの縦横比に合わせた最適なサイズを確保することが出来ず、最終的に図１５に示すように、最適なサイズ（枠１５０４、枠１５０５）よりも小さくなってしまう。すなわちリンク１５０３のサイズが固定であるためコンテナ１５０１とコンテナ１５０２は最適サイズを達成できない（図１５において、各コンテナ内の一点差線で示した範囲がデータの持つ縦横比である）。
【０１２４】
一方、図１６は図１５と同様の状態でリンクを可変サイズにした場合を示している。この場合、上記の例でコンテナ１２０３とコンテナ１２０４の間には図示の通り可変サイズのリンク１２０９が設定されている。したがって、コンテナ１２０３とコンテナ１２０４のサイズが変更される際には、リンクサイズが縮まることでコンテナ１２０３とコンテナ１２０４のサイズを図１５の例より大きくすることができる。この結果、挿入されるデータサイズに合わせた最適なサイズを達成できる、あるいはより挿入データサイズ（最適サイズ）に近いコンテナの枠を設定することが出来る。図１６はこの結果を示しており、可変リンク１２０９はレイアウト計算の結果、可変リンク１６０３に示されるようなサイズ状態となる。なお、この場合コンテナ１２０３とコンテナ１２０４はそれぞれ最適なサイズ（データサイズに合った大きさ）になっている。
【０１２５】
［複数種類のレイアウト計算方法を用いた自動レイアウト処理］
＜全体フロー＞
次に、本実施形態による、複数種類のレイアウト計算方法を用いた自動レイアウト処理について説明する。
【０１２６】
本実施形態では、複数のコンテナを有するドキュメントテンプレートのレイアウトを、これら複数のコンテナの各々に流し込まれるコンテンツデータに応じて動的に変更する自動レイアウト処理を説明する。図１７は本実施形態による自動レイアウト処理の全体的な処理の流れを示すフローチャートである。まず、ステップＳ１７０１でレイアウトを計算するコンテナの集合を求める。ここで言うコンテナの集合とは、リンクで直接或いは間接に相互に結ばれているコンテナ全てを要素とする集合体のことであり、リンクセットともいい、前述したようにリンクにより関連付けられているコンテナ群を指す。このように、ステップＳ１７０１では、レイアウト全体に存在するリンクセットを見つける処理が行なわれる。
【０１２７】
次に、ステップＳ１７０２ではステップＳ１７０１で求めたリンクセットから１つのリンクセットが選択される。そしてステップＳ１７０３において、ステップＳ１７０２で選択された１つのリンクセットに関してレイアウトの最適化を行う。ステップＳ１７０３におけるレイアウトの最適化とは、レイアウト計算を行うということに等しく、この処理については「レイアウトの最適化フロー」にて、図１８を参照して詳細に説明する。
【０１２８】
次にステップＳ１７０４ではルールを違反していないかについてチェックを行っている。ここで言うルールとはオフセットルールのことであり、オフセットルールとはレイアウトの制約のことである。レイアウトの制約とは、コンテナや可変リンクの最大値・最小値、またページ枠の位置などを対象としたものであり、レイアウト計算を行う上で破ってはいけないルールである。言い換えると、レイアウト計算はオフセットルールを破らない範囲内で行われることになる。ステップＳ１７０４においてルールを違反していると判定された場合はステップＳ１７０３に戻り、再度レイアウトの最適化を行うこととなる。ルールを違反していないと判定された場合は、ステップＳ１７０４からステップＳ１７０５へ進む。ステップＳ１７０５では、ステップＳ１７０１で見つけた全てのリンクセットについて上記処理（レイアウトの最適化）を終了したかどうかについて判断される。未処理のリンクセットがあればステップＳ１７０２へ戻り、別のリンクセットを選択し、レイアウトの最適化を行っていく。もし全てのコンテナ集合について計算が終了した場合は、レイアウト全体フローを終了する。
【０１２９】
こうしてレイアウト全体フローを完了すると、図８のステップＳ８０４で示したようにプレビューとして表示したり、プリント出力のためのデータとして外部へ出力したりすることになる。
【０１３０】
［レイアウト最適化フロー］
図１８は本実施形態によるレイアウト最適化処理を説明するフローチャートである。以下、同図を参照して本実施形態の最適化レイアウト処理を説明する。
【０１３１】
まず、ステップＳ１８０１で、レイアウト編集アプリケーションはステップＳ１７０２で選択されたリンクセット（集合）からコンテナを１つ選択する。詳細には、マウス等を用いて選択されたコンテナを入出力インタフェース１４３を介して認識することにより、ドキュメントテンプレート上のどのコンテナが選択されたかを認識することが可能となる。なお、Ｓ１８０１により選択されたコンテナは一時的にメモリ１３６に保持されることとなる。
【０１３２】
次にステップＳ１８０２において、レイアウト編集アプリケーション１２１は、Ｓ１８０１により選択されたコンテナに適用するレイアウト調整アルゴリズムを取得する。これは、メモリ１３６或いは格納デバイス１３９によって保持されているアルゴリズム情報をパース（解析）することにより取得される。レイアウト調整アルゴリズム情報は図２５等により後述するユーザインターフェースを用いて設定され、例えば図３０（後述）に示されるようにメモリ１３６或いは格納デバイス１３９に保持される。ここではそのようなレイアウト調整アルゴリズム情報を探索し、ステップＳ１８０１で選択したコンテナに対してレイアウト計算を行うために適用すべきレイアウト調整アルゴリズムとして決定する。なお、ステップＳ１８０２の処理については、「適用アルゴリズムのパースフロー」にて、図１９を参照して詳細に説明する。
【０１３３】
ステップＳ１８０３において、レイアウト編集アプリケーション１２１は、ステップＳ１８０２におけるレイアウト調整アルゴリズムの探索結果に応じて処理を分岐する。ステップＳ１８０１で選択されたコンテナに適用すべきレイアウト調整アルゴリズムが「コンテンツ優先」であると判定した場合、処理はステップＳ１８０３からステップＳ１８０４に進む。ステップＳ１８０４において、レイアウト調整アルゴリズムは、ステップＳ１８０１で選択されたコンテナに挿入されるコンテンツ（データベースからの挿入データ）のサイズがそのコンテナの計算用の基準サイズであると設定し、メモリ１３６に一時的に保持する。例えばイメージであれば、当該イメージデータが有するサイズを計算用の基準サイズとする。また、テキストデータの場合は、文字数と、該テキストデータを流し込むべきコンテナの属性（テキストデータを反映する際のフォントタイプ、フォントサイズなどの文字属性）に基づいて、計算用の基準サイズが決定される。
【０１３４】
又、レイアウト編集アプリケーション１２１は、ステップＳ１８０１で選択したコンテナに対する適用レイアウト調整アルゴリズムが「コンテナ・コンテンツ優先」だと判定した場合は、処理をステップＳ１８０５に進める。ステップＳ１８０５では、ステップＳ１８０１で選択されたコンテナ自身がデザインされた時（基本レイアウト時）のコンテナサイズがコンテナの計算用の基準サイズとして設定される。そして、当該コンテナに挿入されるコンテンツ（データベースからの挿入データ）のサイズと共に、設定された計算用の基準サイズをメモリ１３６に一時的に保持する。
【０１３５】
又、レイアウト編集アプリケーション１２１は、ステップＳ１８０１で選択されたコンテナに対する適用レイアウト調整アルゴリズムが「基本デザイン優先」だと判定した場合、処理をステップＳ１８０６に進める。ステップＳ１８０６では、ステップＳ１８０１で選択されたコンテナのデザインサイズ（基本レイアウト時のコンテナサイズ）をそのコンテナの計算用の基準サイズとして設定し、メモリ１３６に一時的に保持する。なお、本願では計算用の基準サイズの変わりに目標形状ということもある。
【０１３６】
ステップＳ１８０４〜Ｓ１８０６の終了後、ステップＳ１８０７に進み、全てのコンテナの適用レイアウト調整アルゴリズムをパースしたかどうかがチェックされる。パースを行っていないコンテナがある場合は、ステップＳ１８０１へ戻り、当該リンクセットから別のコンテナが選択され、選択されたコンテナの適用レイアウト調整アルゴリズムがパースされる。リンクセット内の全てのコンテナについてパースが終了したと判定された場合はステップＳ１８０８に進み、レイアウト再計算処理が行われる。レイアウト再計算処理とは、適用されたレイアウト調整アルゴリズムに従ってそれぞれのリンクセット内のレイアウト計算を行う処理である。ステップＳ１８０８の処理については後の「レイアウト再計算処理フロー」にて詳しく説明をする。
図１８の処理により、レイアウト編集アプリケーションは、複数のレイアウトアルゴリズムからコンテナに適用すべきアルゴリズムを選択して、コンテナ毎に選択されたアルゴリズムに従ってレイアウト調整を実行することが可能となる。
【０１３７】
［適用レイアウト調整アルゴリズムのパースフロー］
図１９は、ステップＳ１８０１で選択されたコンテナに対して、ステップＳ１８０２で行われる適用レイアウト調整アルゴリズムのパースを示すフローチャートである。まず、ステップＳ１９０１においてレイアウト編集アプリケーション１２１は、ドキュメント指定アルゴリズムをコンテナの適用レイアウト調整アルゴリズムに設定する。つまり、デフォルトの設定としてドキュメントに設定されているレイアウト調整アルゴリズムを、とりあえずそのコンテナの適用アルゴリズムとして設定する。例えば、図３０のようなレイアウト調整アルゴリズム情報においては、ドキュメントの階層に設定されている「コンテンツ優先」というレイアウト調整アルゴリズムが設定されることになる。
【０１３８】
次に、ステップＳ１９０２において、レイアウト編集アプリケーション１２１は、コンテナに直接指定されているレイアウト調整アルゴリズムがあるかをチェックする。詳細には、メモリ１３６にコンテナ属性が保持されており、該メモリ１３６を参照することにより、直接指定されているレイアウト調整アルゴリズムがあるか否かを判定することが可能となる。
【０１３９】
レイアウト編集アプリケーション１２１が、Ｓ１９０２においてコンテナに直接指定されているレイアウト調整アルゴリズムがあると判定した場合、ステップＳ１９０３に進み、その指定アルゴリズムを当該コンテナに設定し、本パース処理を終了する。
【０１４０】
当該コンテナに直接指定されているレイアウト調整アルゴリズムがない場合は、処理はステップＳ１９０４に進む。ステップＳ１９０４では、レイアウト編集アプリケーション１２１は、当該コンテナを含むエリア（ある一定の範囲）に対してレイアウト調整アルゴリズムが指定されているかをチェックする。ここで言うエリアとは、ユーザが任意に選択した範囲や、図１８で説明したリンクセット（集合）を指すことができる。レイアウト編集アプリケーション１２１が、エリアに指定されているレイアウト調整アルゴリズムがあると判定した場合、ステップＳ１９０５に進み、その指定アルゴリズムを該エリア内の当該コンテナに設定し、パース処理を終了する。なお、エリアに対してレイアウト調整アルゴリズムが指定されていた場合、これらの情報についてもメモリ１３６等に保持されているため、レイアウト編集アプリケーション１２１が、メモリ１３６を参照することにより、Ｓ１９０４は判定可能となる。
【０１４１】
エリアに指定されているレイアウト調整アルゴリズムがない場合はステップＳ１９０６に進む。ステップＳ１９０６では、レイアウト編集アプリケーション１２１は、当該コンテナに流し込まれるコンテンツデータを含むレコードにおいて、使用するレイアウト調整アルゴリズムが指定されているかをチェックする。例えば、レコード１ではこのレイアウト調整アルゴリズム、レコード２ではこのレイアウト調整アルゴリズムというようにレコード単位でレイアウト計算に使用するレイアウト調整アルゴリズムを変更することが出来る。なお、レコード単位に使用するレイアウト調整アルゴリズムが指定されている場合、これらの情報についてもメモリ１３６等に保持されている。このため、レイアウト編集アプリケーション１２１２が、メモリ１３６を参照することにより、ステップＳ１９０６の判定が実行可能となる。
【０１４２】
レコードに指定されているレイアウト調整アルゴリズムがあればステップＳ１９０７に進み、現在のレコードの指定アルゴリズムをコンテナに設定し、パース処理を終了する。
【０１４３】
レコードに指定されているレイアウト調整アルゴリズムがない場合はステップＳ１９０８に進む。ステップＳ１９０８では、レイアウト編集アプリケーション１２１は、当該コンテナを含むページ内で使用されるレイアウト調整アルゴリズムが指定されているかをチェックする。ここで言うページ内とはページ上にある全てのコンテナに適用するための設定であり、ページ単位に異なるレイアウト調整アルゴリズムを指定することが出来る。なお、ページ単位に使用するレイアウト調整アルゴリズムが指定されている場合、これらの情報についてもメモリ１３６等に保持されているため、レイアウト編集アプリケーション１２１２が、メモリ１３６を参照することにより、Ｓ１９０６は判定可能となる。ページに指定されているレイアウト調整アルゴリズムがあればステップＳ１９０９に進み、現在のページの指定アルゴリズムをコンテナに設定し、パース処理を終了する。ステップＳ１９０８においてページに指定されているレイアウト調整アルゴリズムがないと判定された場合は、Ｓ１９０２、Ｓ１９０４、Ｓ１９０６、Ｓ１９０８の判定処理により、全てにおいてＮｏと判定されたこととなる。この場合、レイアウト編集アプリケーション１２１は、Ｓ１９０１により設定したドキュメント指定アルゴリズムをドキュメント内のコンテナに適用して、フローを終了する。
【０１４４】
以上のパース処理により、図３０に示す階層構造の、下位階層に設定された状態が優先的にコンテナに設定されていくことになる。
【０１４５】
［再計算処理フロー］
図２０は本実施形態によるレイアウト再計算処理（ステップＳ１８０８）を示すフローチャートである。
【０１４６】
まず、ステップＳ２００１で、レイアウト編集アプリケーション１２１は、マークを選択する。マークとはコンテナ枠線のことで、コンテナのどの辺を動かすのかを決めるために選択する。なお、ここで選択される枠線は、コンテナの移動可能な辺である。
【０１４７】
そして、ステップＳ２００２において、レイアウト編集アプリケーション１２１は、テンションの計算を行う。テンションとは計算用の基準サイズと現在のコンテナサイズの差に対応する。なお、計算用の基準サイズと現在のコンテナサイズの差の計算方法はレイアウト調整アルゴリズム毎に異なる。レイアウト計算においては、この差を縮めていく（テンションを小さくしていく）ことによってレイアウトを決定していく。また、計算用の基準サイズは上述した通り、適用されるレイアウト調整アルゴリズムに応じて変わるものであり、メモリ１３６に一時的に保持されている。さらに、現在のコンテナサイズについても一時的にメモリ１３６に保持されているため、レイアウト編集アプリケーションはＳ２００２において、メモリ１３６を参照することによりテンションの計算を行うことが可能となる。
【０１４８】
ステップＳ２００３では、レイアウト編集アプリケーション１２１は、ステップＳ２００２で計算したテンションに基づいてマークを移動する。なお、移動した後の位置情報（座標値など）およびマークの移動処理が終了したことは、メモリ１３６に保持される。
【０１４９】
ステップＳ２００４において全てのマークを選択したかをチェックしている。全てのマークとは全てのコンテナのエッジ（枠）のことであり、リンクセット内における全コンテナのテンション計算を行い、マークの移動が行われたか否かについてチェックする。Ｓ２００３により、マークの移動処理が行われたものについては、移動処理終了であることがメモリ１３６に保持されているため、レイアウト編集アプリケーションがメモリ１３６を参照することにより判定可能である。なお、未選択のマークが存在するならば、ステップＳ２００１に進み、未選択のマークを選択してステップＳ２００２以降の処理を繰り返す。全てのマークを選択し終わっていた場合はフローを終了する。
【０１５０】
［各種レイアウト調整アルゴリズムの計算方法］
次に、ステップＳ２００２，Ｓ２００３で実行されるいくつかのレイアウト調整アルゴリズムの計算方法の一例を説明する。なお、以下では一方向（横方向）にコンテナをレイアウト調整しているが、縦方向にレイアウト調整する場合も同様である。また２方向（縦横方向）にコンテナをレイアウト調整する処理に拡張できることが明らかであり、一つのアルゴリズム計算方法としては上述した最小２乗法を用いるものが挙げられる。また、コンテナのレイアウトを調整するためのレイアウト調整アルゴリズムは本実施形態で示されたものに限られるものではない。
【０１５１】
図２１の（Ａ）〜（Ｃ）はコンテンツ優先のレイアウト調整アルゴリズムを説明する図である。図２１の（Ａ）に示されるように、コンテナ２１０１とコンテナ２１０２が存在し、それらはリンク２１０３によって関連付けされている。それぞれのコンテナにはデータベースから挿入されるデータ（コンテンツ）が存在し、コンテナ２１０１にはコンテンツ２１０４、コンテナ２１０２にはコンテンツ２１０５が挿入されている。現在の各コンテナの幅サイズ（コンテンツ２１０４およびコンテンツ２１０５を挿入する前のコンテナの幅サイズ）はコンテナ２１０１が５、コンテナ２１０２が７、各コンテンツサイズの幅サイズはコンテンツ２１０４が８、コンテンツ２１０５が４である。
【０１５２】
コンテンツ優先のレイアウト調整アルゴリズムではこれらの情報を元に、レイアウト計算を行う。コンテンツ優先のレイアウト調整アルゴリズムでは上述した通りコンテンツサイズを計算用の基準サイズとみなし、コンテナサイズをレイアウト調整していく。レイアウト計算では現在のコンテナサイズ（コンテナ２１０１、コンテナ２１０２）と計算用の基準サイズ（コンテンツ２１０４、コンテンツ２１０５）との差（テンション）を縮めるよう現在のコンテナをレイアウト調整する。そして、このレイアウト調整によって、計算用の基準サイズに近づけようとする。
【０１５３】
図２１の（Ｂ）はテンションの計算処理を図示している。図２１の（Ｂ）に示されるように、コンテナ２１０１のテンションＴ1は８−５＝３、コンテナ２１０２のテンションＴ2は７−４＝３である。よってこのリンクセットのテンションの合計は６である。
【０１５４】
このテンションを減らすようにマークの移動を行った結果が図２１の（Ｃ）に示されている。ここではコンテナ２１０１のサイズは８、コンテナ２１０２のサイズは４となっており、ともに計算用の基準サイズ（コンテンツ２１０４のサイズ８とコンテンツ２１０５のサイズ４）を達成している。つまりレイアウト計算によるレイアウト結果のテンションは０となる。よって、コンテンツ優先のレイアウト調整アルゴリズムを使用した場合、コンテンツの大きさが優先され、コンテナサイズが決まることになる。
【０１５５】
図２２の（Ａ）〜（Ｃ）はコンテナ・コンテンツ優先のレイアウト調整アルゴリズムを説明する図である。なお、デザインとはユーザがレイアウト作成モードにおいてコンテナやリンクを作成していたときの状態（基本レイアウト）のことを指す。デザインサイズとはそれらのオブジェクトを作成したとき（デザイン時）のサイズである。
【０１５６】
図２２の（Ａ）に示されるように、コンテナ２２０１とコンテナ２２０２が存在し、それらはリンク２２０３によって関連付けされている。それぞれのコンテナにはデータベースから挿入されるデータ（コンテンツ）が存在し、コンテナ２２０１にはコンテンツ２２０４、コンテナ２２０２にはコンテンツ２２０５が挿入されている。現在の各コンテナの幅サイズ（コンテンツ２２０４およびコンテンツ２２０５が流し込まれる前のサイズ）はコンテナ２２０１が５、コンテナ２２０２が７であり、各コンテンツサイズの幅サイズはコンテンツ２２０４が８、コンテンツ２２０５が４である。また、デザイン時のコンテナサイズ２２０６と２２０７が存在する。
【０１５７】
つまり、図２２の（Ａ）の例では、ユーザは基本レイアウトとしてコンテナ２２０１およびコンテナ２２０２の幅サイズが６として設定されている。そして、例えば最初のレコードにおけるコンテンツデータを流し込んだ結果、レイアウト計算が行われコンテナサイズが現在のサイズ（コンテナ２１０１が５、コンテナ２２０２が７）に変更されている。
【０１５８】
この状態で、次にコンテナ・コンテンツ優先のレイアウト調整アルゴリズムを用いてレイアウト計算を実行するレコードを流し込もうとしている状態が図２２の（Ａ）である。
【０１５９】
コンテナ・コンテンツ優先のレイアウト調整アルゴリズムではコンテンツサイズおよび現在のコンテナサイズおよびデザイン時（基本レイアウト時）のコンテナサイズを考慮してレイアウト計算を行う。コンテナ・コンテンツ優先のレイアウト調整アルゴリズムでは上述した通りコンテンツサイズに加え、デザインサイズを加えたものを計算用の基準サイズとみなし、コンテナサイズをレイアウト調整していく。つまり、レイアウト計算では、現在のコンテナサイズ（コンテナ２２０１、コンテナ２２０２）とコンテンツサイズ（コンテンツ２２０４、コンテンツ２２０５）との差（テンション）、そして現在のコンテナサイズ（コンテナ２２０１、コンテナ２２０２）とデザインサイズ（コンテンツ２２０６、コンテンツ２２０７）との差を縮めるよう現在のコンテナをレイアウト調整させることによって、計算用の基準サイズに近づけようとする。
【０１６０】
図２２の（Ｂ）はテンションの計算処理を図示している。各コンテナのテンションは次のとおりである。
【０１６１】
コンテナ２２０１に関しては、コンテンツサイズと現在のコンテナサイズとのテンション（Ｔ1）が｜８−５｜＝３、デザインサイズと現在のコンテナサイズとのテンション（Ｔ3）が｜５−６｜＝１となる。また、コンテナ２２０２に関しては、コンテンツサイズと現在のコンテナサイズのテンション（Ｔ2）が｜４−７｜＝３、デザインサイズと現在のコンテナサイズとのテンション（Ｔ4）が｜６−７｜＝１となる。よってこのリンクセットのテンションの合計は３＋１＋３＋１＝８である。
【０１６２】
このテンションを減らすようにマークの移動を行った結果が図２２の（Ｃ）に示した状態である。
【０１６３】
ここではコンテナ２２０１のサイズは７、コンテナ２２０２のサイズは５となっている。よってレイアウト結果時のテンションは、コンテナ２２０１に関しては、コンテンツサイズとのテンション（Ｔ1）が｜８−７｜＝１、デザインサイズとのテンション（Ｔ3）が｜６−７｜＝１となる。また、コンテナ２２０２に関しては、コンテンツサイズとのテンション（Ｔ2）が｜４−５｜＝１、デザインサイズとのテンション（Ｔ4）が｜６−５｜＝１となる。よってこのリンクセットのテンションの合計は１＋１＋１＋１＝４である。この場合、テンション０の状態を達成できなかったが、これ以上、テンションが減らす計算方法がないため、レイアウト計算は終了される。
【０１６４】
このように、コンテンツサイズ、デザインサイズは一般的に異なるサイズであり、コンテンツサイズおよびデザインサイズの両者を満足させるためにコンテナをレイアウト調整させる際は、概してテンションが０にならない。従って、テンションが最小となるようにマークを移動し、それをレイアウト結果とする。よって、コンテナ・コンテンツ優先のレイアウト調整アルゴリズムを使用した場合、コンテンツの大きさとデザイン時のコンテナサイズの双方を吟味したレイアウト結果を得ることが出来る。
【０１６５】
図２３の（Ａ）〜（Ｃ）は基本デザイン優先のレイアウト調整アルゴリズムを説明する図である。本実施形態において、基本デザイン優先とは、デザイン時のサイズのみを計算用の基準サイズとしてレイアウト計算する方法である。
【０１６６】
図２３の（Ａ）に示されるように、コンテナ２３０１とコンテナ２３０２が存在し、それらはリンク２３０３によって関連付けされている。それぞれのコンテナにはデータベースから挿入されるデータ（コンテンツ）が存在し、コンテナ２３０１にはコンテンツ２３０４、コンテナ２３０２にはコンテンツ２３０５が挿入されている。現在の各コンテナの幅サイズ（コンテンツ２３０４およびコンテンツ２３０５が流し込まれる前の各コンテナの幅サイズ）はコンテナ２３０１が５、コンテナ２３０２が７、各コンテンツサイズの幅サイズはコンテンツ２３０４が８、コンテンツ２３０５が４である。また、デザイン時（基本レイアウト）のコンテナサイズ２３０６と２３０７が存在する。なお、デザイン時のコンテナサイズ２３０６および３０７は６である。
【０１６７】
基本デザイン優先のレイアウト調整アルゴリズムではこれらのうち、現在のコンテナサイズとデザインサイズの情報を元に、コンテナのレイアウト調整を行う。よってレイアウト計算では現在のコンテナサイズ（コンテナ２３０１、コンテナ２３０２）と計算用の基準サイズ（デザインサイズ２３０６、デザインサイズ２３０７）との差（テンション）を縮めるよう現在のコンテナをレイアウト調整させることによって、計算用の基準サイズに近づけようとする。
【０１６８】
図２３の（Ｂ）はテンションの計算を行う状態を図示している。現在、各コンテナのテンションはコンテナ２３１１の計算用の基準サイズとのテンション（Ｔ3）が６−５＝１となる。そしてコンテナ２３１２の場合は、計算用の基準サイズとのテンション（Ｔ4）が７−６＝１となる。よってこのリンクセットのテンションの合計は１＋１＝２である。
【０１６９】
図２３の（Ｃ）は、上記のテンションを減らすようにマークの移動を行った結果を説明しており、コンテナ２３０１，２３０２、コンテンツ２３０４，２３０５の調整後の状態が示されている。ここではコンテナ２３０１のサイズは６、コンテナ２３０２のサイズは６となっている。よってレイアウト結果時のテンションは、コンテナ２３０１は計算用の基準サイズとのテンションが６−６＝０、そしてコンテナ２３０２は計算用の基準サイズとのテンションが６−６＝０となる。よってこのリンクセットのテンションの合計は０＋０＝０である。つまりこのレイアウト結果では計算用の基準サイズが達成されている。
【０１７０】
なお、基本デザイン優先のレイアウト調整アルゴリズムを使用した場合は、コンテンツの大きさに関わらず、ユーザのデザイン時の大きさが優先され、コンテナサイズが決まることになる。
【０１７１】
しかし、このレイアウト調整アルゴリズムはコンテンツの大きさとは全く関わりがないため、レイアウト計算における可変要素がなくなってしまう。つまり、コンテナは常にデザイン時の大きさになってしまう。よって基本デザイン優先のレイアウト調整アルゴリズムはリンクセット内で他のレイアウト調整アルゴリズムと共に用いられることにより効果を発揮する。
【０１７２】
図２４の（Ａ）〜（Ｃ）は基本デザイン優先のレイアウト調整アルゴリズムとコンテンツ優先のレイアウト調整アルゴリズムが１つのリンクセット内で別々のコンテナに設定されている場合のレイアウト計算処理について説明する図である。
【０１７３】
図２４の（Ａ）に示されるように、コンテナ２４０１とコンテナ２４０２が存在し、それらはリンク２４０３によって関連付けされている。又、コンテナ２４０１には基本デザイン優先が、コンテナ２４０２にはコンテンツ優先がそれぞれ設定されている。それぞれのコンテナにはデータベースから挿入されるデータ（コンテンツ）が存在し、コンテナ２４０１にはコンテンツ２４０４、コンテナ２４０２にはコンテンツ２４０５が挿入されている。現在の各コンテナの幅サイズはコンテナ２４０１が｜ａ−ｂ｜＝５、コンテナ２４０２が｜ｅ−ｈ｜＝７、各コンテンツサイズの幅サイズはコンテンツ２４０４が｜ａ−ｄ｜＝８、コンテンツ２４０５が｜ｇ−ｈ｜＝４である。また、デザイン時のコンテナサイズ２４０６と２４０７が存在する。なお、デザイン時のコンテナサイズは２４０６および２４０７ともに６である。
【０１７４】
図２４の（Ｂ）に示されるように、コンテナ２４０１に設定されているレイアウト調整アルゴリズムは基本デザイン優先である。そのため、レイアウト計算では現在のコンテナサイズ（コンテナ２４０１）とデザインサイズ（デザインサイズ２４０６）との差（テンションＴ1）が使用される。またコンテナ２４０２にはコンテンツ優先のレイアウト調整アルゴリズムが設定されているため、現在のコンテナサイズ（コンテナ２４０２）とコンテンツサイズ（コンテンツ２４０５）との差（テンションＴ2）が使用される。これらのテンションを小さくさせ、現在のコンテナをレイアウト調整させることによって、計算用の基準サイズに近づけようとする。
【０１７５】
図２４の（Ｂ）において、コンテナ２４０１のテンションはコンテナ２４０１のデザインサイズ（６）と現在のコンテナサイズ（５）とのテンションＴ1＝｜ｂ−ｃ｜＝１となる。また、コンテナ２４０２のテンションは、現在のコンテナサイズ（７）とコンテンツサイズ（４）とのテンションＴ2＝｜ｅ−ｇ｜＝３となる。よってこのリンクセットのテンションの合計はＴ1＋Ｔ2＝｜ｂ−ｃ｜＋｜ｅ−ｇ｜＝４である。
【０１７６】
図２４の（Ｃ）は、上記のテンションを減らすようにマークの移動を行った結果を示している。ここではコンテナ２４０１のサイズは｜ａ−ｂ｜＝７、コンテナ２４０２のサイズは｜ｅ−ｈ｜＝５となっている。よってレイアウト結果において、コンテナ２４０１のテンションはデザインサイズ（６）と現在のコンテナサイズ（７）のテンションＴ1＝｜ｂ−ｃ｜＝１となる。また、コンテナ２４０２のテンションは現在のコンテナサイズ（５）とコンテンツサイズ（４）とのテンションＴ2＝｜ｅ−ｇ｜＝１となる。よってこのリンクセットのテンションの合計はＴ1＋Ｔ2＝２である。この場合、テンション０の状態を達成できなかったが、これ以上、テンションが減らないため、レイアウト計算は終了される。こうして、図２４の（Ｃ）におけるコンテナ２４０１のサイズ（７）はデザイン時のサイズ（６）に、図２４の（Ｃ）におけるコンテナ２４０２のサイズ（５）は挿入されたコンテンツのサイズ（４）にそれぞれ近づいてレイアウトされた。
【０１７７】
このように、基本デザイン優先のレイアウト調整アルゴリズムはその他のレイアウト調整アルゴリズムと共用した場合に効果を発揮する。また各コンテナに様々なレイアウト調整アルゴリズムが適用できることで、ユーザの求める多様なレイアウトのニーズに応えることができる。なお、上記では基本デザイン優先とコンテンツ優先の組み合わせを説明したが、他の組み合わせも可能であることはいうまでもない。また、リンクセットに３つ以上のコンテナが存在する場合も、上記２つのコンテナの場合の計算処理に準じて行えばよい。
【０１７８】
続いて、各レイアウトアルゴリズムの計算方法について説明する。なお、これのレイアウトアルゴリズムは可変コンテナに対して設定される。固定コンテナは、どのようなレイアウトアルゴリズムが適用されてもコンテナサイズの変更が一切生じないため、本願のレイアウトアルゴリズムを適用してもレイアウト変更処理が実行されない。なお、固定コンテナのレイアウト位置は、可変コンテナとリンクで接続された場合、変更される可能性が生じる。
【０１７９】
[第１レイアウトアルゴリズム（コンテンツサイズを考慮）]
図３２を用いて、第１レイアウトアルゴリズムを説明する。なお、第１レイアウトアルゴリズムは、コンテンツサイズを計算用の基準サイズとして計算するため、「コンテンツ優先レイアウトのアルゴリズム」とする。図３２において、３２０１〜３２０３は、デザイン時（コンテナ等を含むテンプレート作成時）の基本コンテナである。３２０５〜３２０７は、各コンテナに挿入されるコンテンツである。また、３２０４は、各コンテナを関連付けるリンクであり、図３２のリンクは、固定リンクとする。また、３２０８〜３２１０は、第１レイアウトアルゴリズム（コンテンツ優先レイアウトのアルゴリズム）を適用した結果を示す。
【０１８０】
３２０１〜３２０３で示すコンテナＡ、Ｂ、Ｃは固定リンク３２０４にて関連付けられている。各コンテナおよびリンクの水平方向のサイズは図示した通りであり、水平方向に合計５７というサイズを持っている。このレイアウトでは、コンテナＡの左辺とコンテナＣの右辺の位置が固定になるように設定されているとする。そのため、水平方向の合計５７という値は固定である。このレイアウトに３２０５〜３２０７で示したコンテンツＡ'、Ｂ'、Ｃ'が各コンテナへ挿入されると、テンション（レイアウトの負荷）が発生する。
【０１８１】
それぞれのコンテンツは実サイズを持っている。仮に、各コンテンツの実サイズは図示した通りとする（Ａ'は１７、Ｂ'は１３、Ｃ'は２７）。なお、コンテンツがテキストの場合、計算用の基準サイズは、データの流し込み先であるコンテナに設定されたフォントサイズや縦横サイズの可変／固定、最大値／最小値等に基づいて決定される。また、コンテンツがイメージの場合、当該イメージデータのサイズ（縦横画素数）が実サイズである。このコンテンツをコンテナに挿入した後にすべてのコンテンツを実サイズでレイアウトするためには、１７＋５＋１３＋７＋２７＝６９の水平サイズが必要になるが、このレイアウトは水平サイズが５７で固定になっている。したがって６９−５７＝１２がこのレイアウトにかかるテンションということになる。
【０１８２】
次に、上記テンションを各コンテナに分配する。本願のレイアウトアルゴリズムでは、このテンションが各コンテナにおいてつり合うように計算するものであり、そのときに用いる手法の一例が最小２乗法である。まず、第１レイアウトアルゴリズムにおける各コンテナのテンションＴの計算方法は、
Ｔ＝｜レイアウト結果のサイズ−コンテンツサイズ｜  …（１）
となる。
なお、テンションの値は必ずしも正になるとは限らないので、絶対値を用いる必要がある。
【０１８３】
そして、（１）式を用いて各コンテナにて算出されたＴの合計が現在対象としている集合の合計テンションとなる。ここで、図３２を用いて説明する。
各コンテナの計算後のサイズをａ、ｂ、ｃとすると、各コンテナにて発生するテンションを適切に分配するためには、
ｔ＝(ａ−１７)2＋(ｂ−１３)2＋(ｃ−２７)2  …（２）
という計算処理を行うことが望ましい。なお、ｔは、各コンテナにおけるテンションがつり合う値を算出するための変数である。この変数ｔが最小値となった場合が、各コンテナのテンションがつり合っている状態である。
【０１８４】
図３２のレイアウトは、単純なレイアウトであり、かつ、優先度の設定はされていないため、式（２）を用いなくとも変数ｔが最小になるのは、
｜ａ−１７｜＝｜ｂ−１３｜＝｜ｃ−２７｜    …（３）
と表すことができる。
さらに、計算後のレイアウトのサイズより、
ａ＋５＋ｂ＋７＋ｃ＝５７    …（４）
と表すことができる
【０１８５】
（３）および（４）により、各コンテナの計算後のサイズが求められる。ここでは、ａ＝１３，ｂ＝９，ｃ＝２３と算出された。よって、コンテンツと計算結果の差分を算出すると、各コンテナの差分は４となる。つまり、各コンテナにかかるテンションは４であり、計算後の各コンテナ（３２０８〜３２１０）Ａ”、Ｂ”、Ｃ”のサイズは図示したとおりになる。
【０１８６】
しかし、図３２の場合、式（３）、（４）により算出しているため、式（２）に記載した最小２乗法を用いなくてもレイアウト結果を算出することができる。これは図３２のレイアウトが単純なレイアウトであることに起因する。つまり、生成されたテンプレートによっては、式（２）の最小２乗法を使うことが望ましい。その例を図３３を用いて説明する。
【０１８７】
図３３のようなレイアウトにおいて、最小２乗法を用いた算出方法および結果と上述した最小２乗法を用いない場合の算出方法および結果を記述する。なお、図３３では、仮にコンテナＡに対してサイズ１５、コンテナＢに対してサイズ２５、コンテナＣに対してサイズ５のコンテンツが入力されるとする。現状のコンテナサイズは、コンテナＡおよびＢのサイズが１０、コンテナＣのサイズが９とする。本説明では、第１レイアウトアルゴリズムを対象としているので計算用の基準サイズはコンテンツサイズとなる。また、３３０１から３３０２の距離を２３とする。なお、図３３では、コンテナＡの左辺とコンテナＢの右辺の位置が固定となるように設定されていると仮定するため、３３０１から３３０２の距離は固定となる。各コンテナを関連付ける固定リンク３３０７のサイズは１とする。
【０１８８】
（１）最小２乗法を用いない場合
最小２乗法を用いない場合、各コンテナについてレイアウト算出結果のコンテナサイズが、計算用の基準サイズより大きくなるか否かを判別する。図３３の場合、各コンテナのレイアウト位置と制約条件（３３０１と３３０２が固定）、さらにコンテンツサイズを考慮する必要がある。コンテナＡは、左辺が固定であり、右辺が可変であるため右方向へのサイズ変更および移動が可能である。さらに、コンテナＡ３３０３およびコンテナＢ３３０４に挿入されるコンテンツサイズの合計値（＝３５）が上述した制約条件（３３０１〜３３０２の距離＝２３）よりも大きくなる。つまり、コンテナＡおよびＢに流し込まれた各コンテンツデータは、縮小しなければならないと判断できる。よって、レイアウト計算後のコンテナＡのサイズａは、計算用の基準サイズ（＝１５）よりも小さくなると判別できる。同様にコンテナＢについても解析することにより、コンテナＢも、計算用の基準サイズ（＝２５）より小さくなると判別できる。
【０１８９】
一方、コンテナＣは、現状のレイアウト位置や制約条件、コンテンツサイズからだけでは、レイアウト計算後のコンテナサイズが予測できない。よって、図３３のレイアウトでは、コンテナＣの計算後のサイズが計算用の基準サイズ（コンテンツＣのサイズ＝５）よりも大きくなる場合と、小さくなる場合について、レイアウト計算を行う必要がある。
【０１９０】
まず、コンテナＣの計算結果のサイズが計算用の基準サイズよりも大きくなる場合（ｃ＞５）を想定する。また、各コンテナのテンションの計算式は、｜レイアウト結果−計算用の基準サイズ｜を用いる。なお、各コンテナのレイアウト結果の値を、それぞれａ、ｂ、ｃとする。さらに、図３３では、３３０６が軸となっている。よって、図３３のレイアウトの場合、本レイアウトエンジンは、軸３３０６を境にして左側にあるコンテナＡ及びコンテナＣにて発生するテンションと右側にあるコンテナＢにて発生するテンションが等しくなった時点の情報に基づいてレイアウト結果を算出する。以上を踏まえて計算式を作成すると、次のようになる。
｜ａ−１５｜＋｜ｃ−５｜＝｜ｂ−２５｜（条件：ｃ＞５）  …（５）
【０１９１】
図３３のレイアウトでは、コンテナＡのレイアウト結果のサイズと１つの固定リンクの和が、コンテナＣのレイアウト結果のサイズと２つの固定リンクのサイズと等しくなる。さらに、３３０１から３３０２の距離は固定である。以上を踏まえた結果、
ａ＋１＝１＋ｃ＋１          …（６）
１＋ａ＋１＋ｂ＋１＝２３    …（７）
という制約条件が発生する。
【０１９２】
上記条件を踏まえて、（５）を計算処理すると、
１５−ａ＋ｃ−５＝２５−ｂ
１５−ａ＋（ａ−１）−５＝２５−（−ａ＋２０）
ａ＝４
となる。
【０１９３】
さらに、算出結果と式（６）、（７）を用いると、ｂ＝１６、ｃ＝３と算出される。しかし、式（５）の条件は、ｃ＞５となっている。つまり、算出結果ｃ（＝３）が式（５）の条件を満たしていないため、式（５）は破綻している。
【０１９４】
続いて、まず、コンテナＣの計算結果のサイズが計算用の基準サイズよりも小さくなる場合を想定する。この場合も、軸３３０６を境にして左側と右側にて発生するテンションを等しくする必要があるため、式（５）を用いることが可能であるが、条件が異なる。その式を（８）に示す。
｜ａ−１５｜＋｜ｃ−５｜＝｜ｂ−２５｜（条件：ｃ＜５）  …（８）
ここで式（６）、（７）を踏まえて、（８）を計算処理すると、
１５−ａ＋５−ｃ＝２５−ｂ
１５−ａ＋５−（ａ−１）＝２５−（−ａ＋２０）
ａ＝５．３
となる。
【０１９５】
さらに、算出結果と式（６）、（７）を用いると、ｂ＝１４．６・・・・、ｃ＝４．３・・・と算出される。この場合、式（８）の条件（ｃ＜５）を満たしているため、式（８）により算出された値がレイアウト結果となる。なお、本願では、小数点第１位以下を切り捨てた値をレイアウト結果とするが、これに限られる必要はない。
【０１９６】
（２）最小２乗法を用いた場合
続いて、最小２乗法を用いた場合について説明する。最小２乗法を用いた場合も図３３を用いて説明するが、基本的な条件は同じである。まず、最小２乗法にてレイアウト計算を行うための計算式を作成する。
ｔ＝(ａ−１５)2＋(ｂ−２５)2＋(ｃ−５)2  …（９）
さらに、式（６）、（７）を用いて（９）を変形すると、
ｔ＝(ａ−１５)2＋{(−ａ＋２０)−２５}2＋{(ａ−１)−５}2  …（１０）
となる。
【０１９７】
本レイアウトアルゴリズムでは、変数ｔを最小にすることを目的としている。式（１０）は、ａについての２次関数であり、傾きが正の２次関数における最小値は、頂点の値である。つまり、傾きが０の線が式（１０）と接する値に該当する。よって、傾きを０として、式（１０）をａにて微分すると、
０＝２（ａ−１５）−２（−ａ−５）＋２（ａ−６）
という計算式が成立する。この計算式を解くとａ＝５．３と算出される。さらに、算出結果ａを式（６）、（７）に代入するとｂ＝４．３、ｃ＝１４．７と算出される。
【０１９８】
つまり、最小２乗法を用いて算出したレイアウト結果も最小２乗法を用いずに算出したレイアウト結果も同じとなる。しかし、最小２乗法を用いない場合、場合分けをして計算処理をするため、レイアウト計算に関する処理の負担が増加する。一方、最小２乗法を用いた場合は、場合分けの必要がないため容易にレイアウト結果を算出することが可能となる。このように、図３３のような複雑なレイアウトについてレイアウト結果を算出する場合に、最小２乗法を用いる意義がある。また、図３３では、軸３３０６が１つであったため、２つの場合分けでレイアウト結果を算出することができたが、軸が増加するに従い、場合分けの条件が増加するため、最小２乗法の有効性が増す。
【０１９９】
また、コンテンツ優先レイアウトのアルゴリズムを用いることにより、出来るだけ各コンテナサイズをコンテンツサイズに近づくようにレイアウト処理を実行する。このため、コンテンツ優先レイアウトのアルゴリズムは、コンテンツの実サイズを用いてレイアウト処理を行いたい場合に効果を発揮する。
【０２００】
[第２レイアウトアルゴリズム（基本コンテナサイズとコンテンツサイズを考慮）]
続いて、図３４を用いて、第２レイアウトアルゴリズムについて説明する。なお、初期条件は図３２と同様である。３４０１〜３４０３は、デザイン時のコンテナである。３４０５〜３４０７は、各コンテナに挿入されるコンテンツである。３４０４は、各コンテナを関連付けるリンクであり、固定リンクとする。また、３４０８〜３４１０は、第２レイアウトアルゴリズムを図３４に適用することによって算出されるレイアウト計算結果である。また、第２レイアウトアルゴリズムは、基本コンテナサイズとコンテンツサイズを考慮しているため、「コンテナ・コンテンツ優先レイアウトアルゴリズム」とする。
【０２０１】
まず、第２レイアウトアルゴリズムにおける計算用の基準サイズは、各コンテナのサイズと各コンテナに入力されるコンテンツサイズの和を２で除算した値である。
よって、コンテナＡにおける計算用の基準サイズは「１６」、コンテナＢにおける計算用の基準サイズは「１１．５」、コンテナＣにおける計算用の基準サイズは「２３．５」となる。
【０２０２】
各コンテナのテンションＴの計算方法は、
Ｔ＝|レイアウト結果のサイズ−{(コンテンツサイズ＋基本コンテナサイズ)／２}|
…（１１）
である。
そして、（１１）式を用いて各コンテナにて算出されたＴの合計が現在対象としている集合の合計テンションとなる。ここで、図３４を用いて説明する。
【０２０３】
各コンテナの計算後のサイズをａ、ｂ、ｃとすると、各コンテナにて発生するテンションを適切に分配するためには、
ｔ＝(ａ−１６)2＋(ｂ−１１．５)2＋(ｃ−２３．５)2  …（１２）
を用いて計算処理することが望ましい。
図３４のレイアウトは、単純なレイアウトであり、かつ、優先度が設定されていないため、変数ｔが最小になるのは、
｜ａ−１６｜＝｜ｂ−１１．５｜＝｜ｃ−２３．５｜    …（１３）
と表すことができる。
さらに、計算後のレイアウトのサイズより、
ａ＋５＋ｂ＋７＋ｃ＝５７    …（１４）
と表すことができる。
【０２０４】
（１３）および（１４）により、コンテンツおよび基本コンテナを考慮した場合における各コンテナの計算後のサイズが求められ、ａ＝１４、ｂ＝９．５、Ｃ＝１６．５と算出される。よって、計算後の各コンテナ（３４０８〜３４１０）Ａ”、Ｂ”、Ｃ”の各サイズは図示したとおりになる。
【０２０５】
第１レイアウトアルゴリズムと同様に図３４のようなレイアウトの場合、最小２乗法を用いなくてもレイアウト結果を算出することは可能である。しかし、図３３のようなレイアウトに対して第２レイアウトアルゴリズムを適用する場合、やはり最小２乗法を用いることが望ましい。
【０２０６】
なお、最小２乗法を用いた計算方法は、計算用の基準サイズに｛（コンテンツサイズ＋基本コンテナサイズ）／２｝の計算結果を代入して、コンテンツ優先レイアウトのアルゴリズムと同様に処理すればよいため、詳細な説明は省略する。
【０２０７】
この第２レイアウトアルゴリズムを用いることにより、基本コンテナサイズおよびコンテンツサイズの両者を考慮したレイアウト結果を算出できるため、テンプレートの作成者の意図およびコンテンツ作成者の意図を反映することができる。
【０２０８】
[第３レイアウトアルゴリズム（デザイン時のコンテナサイズを考慮）]
本願では、上述した第１、第２レイアウトアルゴリズムの他に第３レイアウトアルゴリズムがある。この第３レイアウトアルゴリズムは、第３レイアウトアルゴリズムが設定されたコンテナとリンクにて関連付けられているコンテナに第１または第２レイアウトアルゴリズムが設定されていた場合、各コンテナに流し込まれたコンテンツサイズがデザイン時の基本コンテナサイズに近づくようにレイアウト変更を実行する。そのため、第３レイアウトアルゴリズムは、基本デザイン優先レイアウトアルゴリズムとする。第３レイアウトアルゴリズムが、１つの集合に含まれる全てのコンテナに対して設定されている場合、各コンテナに流し込まれるコンテンツサイズは基本コンテナサイズに一致するようにサイズ変更が行われる。つまり、第１レイアウトアルゴリズムや第２レイアウトアルゴリズムのような計算処理を行わなくてもレイアウト結果を算出することは可能である。しかし、１つの集合の中に第３レイアウトアルゴリズムと他のレイアウトアルゴリズムが設定された場合には、計算処理が必要となる。この計算処理について図３３を用いて説明する。
【０２０９】
図３３の初期条件は上述しているので省略する。ここでは、コンテナＡ、Ｂに対して第１レイアウトアルゴリズムが設定されており、コンテナＣに対して第３レイアウトアルゴリズムが設定されているとする。なお、最小２乗法を用いた場合の有効性は既に上述してある。よって、その有効性を生かすために、本説明でも最小２乗法を用いた場合に絞って説明する。
【０２１０】
コンテナＡ、Ｂの計算用の基準サイズは各コンテナに流し込まれるコンテンツサイズとなる（コンテナＡの計算用の基準サイズは１５、コンテナＢの計算用の基準サイズは２５）。一方、コンテナＣには、第３レイアウトアルゴリズムが設定されているため、計算用の基準サイズは基本コンテナサイズとなる（コンテナＣの計算用の基準サイズは９）。その結果、各コンテナのテンションがつり合うように分配するための変数ｔを算出する式は次のように記載される。
ｔ＝(ａ−１５)2＋(ｂ−２５)2＋(ｃ−９)2  …（１５）
【０２１１】
式（１５）に対して、式（６）、（７）を代入すると
ｔ＝(ａ−１５)＋{(−ａ＋２０)−２５}2＋{(ａ−１)−９}2  …（１６）
（１６）を式（１０）と同様の理由により、ａにて微分すると、
０＝２（ａ−１５）−２（−ａ−５）＋２（ａ−１０）
ａ＝７．５      …（２６）
さらに、算出結果と（６）、（７）を用いることにより、ｂ＝１２．５、ｃ＝６．５と算出される。
【０２１２】
よって、１つの集合において、例えばコンテンツ優先レイアウトのアルゴリズムと基本デザイン優先レイアウトのアルゴリズムを適用することで、コンテナ毎にコンテンツサイズまたは基本コンテナサイズに近づくようにレイアウト結果を算出することができる。つまり、コンテナ毎にテンプレート作成者またはコンテンツサイズ作成者の意図を反映したレイアウト結果を算出することが可能となる。
【０２１３】
このように基本デザイン優先レイアウトのアルゴリズムは１つの集合において他のレイアウトアルゴリズムと組み合わせて用いることにより、その効果を発揮する。
【０２１４】
［ＵＩ設定例（その１）］
図２５の（Ａ）〜（Ｇ）は、上述したような各種のレイアウト調整アルゴリズムを設定するためのユーザインターフェース（ＵＩ）例を示す図である。
【０２１５】
まず、ユーザの所定の操作により、レイアウト調整アルゴリズムを適用する範囲を指定するためのダイアログ２５００が表示される。ダイアログ２５００において選択されたものにより、ダイアログ２５０１〜２５４１の対応するダイアログが表示されることとなる。
【０２１６】
図２５の（Ａ）では、図２５の（Ｆ）のダイアログ２５００において「ドキュメント」が選択された場合、ドキュメント毎に適用するレイアウト調整アルゴリズムを選択するためにダイアログ２５０１が表示される。ユーザはダイアログ２５０１を用いてドキュメント内のコンテナに対するレイアウト調整アルゴリズムを選択することができる。ダイアログ２５０１にはコンテンツ優先のレイアウト２５０２、コンテナ・コンテンツ優先のレイアウト２５０３、基本デザイン優先２５０４のオプションが存在し、ユーザはいずれかのオプションを選択する。ダイアログ２５０１には、図２５の（Ｂ）〜（Ｅ）に示される「指定なし」のオプションが存在しないが、これはドキュメントのデフォルト値として使用すべきレイアウト調整アルゴリズムを決定しおく必要があるためである。ただしこれは以下に説明するように、適用ポリシーによって決まることであり、ここでは便宜上指定なしのオプションを選択肢から外している。ダイアログ２５０１において選択されたレイアウト調整アルゴリズムはドキュメント全体に影響するものであるが、実際のレイアウト計算時にドキュメント内の全てのコンテナに適用されるかは、適用ポリシーによって決まる。適用ポリシーについては後述の「適用ポリシー順序」において詳しく説明する。
【０２１７】
図２５の（Ｂ）では、ダイアログ２５００において「ページ」が選択された場合、アルゴリズムを適用すべきページやページの範囲を指定するためのページ設定画面を表示する。そのページ設定画面にて、ページやページ範囲を設定すると、ページ毎に適用するレイアウト調整アルゴリズムを選択するためにダイアログ２５１１が表示される。
【０２１８】
ユーザはダイアログ２５１１を用いてページ内のコンテナに対するレイアウト調整アルゴリズムの選択が可能である。
ダイアログ２５１１には指定なし２５１２、コンテンツ優先のレイアウト２５１３、コンテナ・コンテンツ優先のレイアウト２５１４、基本デザイン優先２５１５のオプションが存在し、ユーザはいずれかのオプションを選択することができる。
ダイアログ２５１１で選択されたレイアウト調整アルゴリズムは、当該設定ダイアログを開いたときに指定されていたページに対して影響する。図２５の（Ｂ）では指定なしが選択されている。
【０２１９】
なお、実際のレイアウト計算時にページ内の全てのコンテナに当該ダイアログ２５１１の設定が適用されるかは、後述の適用ポリシーによって決まる。
【０２２０】
図２５の（Ｃ）では、ダイアログ２５００において「エリア」が選択された場合、エリア毎に適用するレイアウト調整アルゴリズムを選択するためにダイアログ２５２１が表示される。なお、エリアに対してレイアウト調整アルゴリズムを選択する場合には、ダイアログ２５００にて、エリアを選択した後に表示されるドキュメントテンプレート上でエリアの指定を行わなければならない。
【０２２１】
ユーザはダイアログ２５２１を用いてエリア内のコンテナに対するレイアウト調整アルゴリズムを選択することができる。ダイアログ２５２１には指定なし２５２２、コンテンツ優先のレイアウト２５２３、コンテナ・コンテンツ優先のレイアウト２５２４、基本デザイン優先２５２５のオプションが存在し、ユーザはいずれかのオプションを選択することができる。
【０２２２】
ダイアログ２５２１で選択されたレイアウト調整アルゴリズムは、当該設定ダイアログを開いたときに指定されていた領域内のコンテナに影響するものである。図２５の（Ｃ）では指定なしが選択されている。なお、実際のレイアウト計算時にエリア内の全てのコンテナに当該ダイアログ２５２１の設定が適用されるかは、後述の適用ポリシーによって決まる。
【０２２３】
図２５の（Ｄ）では、ダイアログ２５００において「レコード」が選択された場合、レコードを選択するためのレコード選択画面が表示される。そのレコード選択画面にて指定されたレコード毎に適用するレイアウト調整アルゴリズムを選択するためにダイアログ２５３１が表示される。ユーザはダイアログ２５３１を用いてレコード内のコンテナに対するレイアウト調整アルゴリズムを選択することができる。ダイアログ２５３１には指定なし２５３２、コンテンツ優先のレイアウト２５３３、コンテナ・コンテンツ優先のレイアウト２５３４、基本デザイン優先２５３５のオプションが存在し、ユーザはいずれかのオプションを選択できる。ダイアログ２５３１で選択されたレイアウト調整アルゴリズムは当該設定ダイアログを開いたときに指定されていたレコード内の全コンテナに影響するものである。
【０２２４】
図２５の（Ｄ）では指定なしが選択されている。なお、実際のレイアウト計算時にレコードに関係する全てのコンテナに適用されるかは、適用ポリシーによって決まる。
【０２２５】
図２５の（Ｅ）では、ダイアログ２５００において「コンテナ」が選択された場合、コンテナを選択するためのコンテナ選択画面が表示される。そのコンテナ選択画面にて選択されたコンテナ毎に適用するレイアウト調整アルゴリズムを選択するためにダイアログ２５４１が表示される。ユーザはダイアログ２５４１を用いて任意のコンテナに対するレイアウト調整アルゴリズムを選択することができる。ダイアログ２５４１には指定なし２５４２、コンテンツ優先のレイアウト２５４３、コンテナ・コンテンツ優先のレイアウト２５４４、基本デザイン優先２５４５のオプションが存在し、ユーザはいずれかのオプションを選択できる。ここで選択されたレイアウト調整アルゴリズムは設定ダイアログを開いたときに指定されていたコンテナに影響するものである。
【０２２６】
図２５の（Ｅ）では指定なしが選択されている。実際のレイアウト計算時において、指定されたレイアウト調整アルゴリズムが当該コンテナに適用されるかは、後述の適用ポリシーによって決まる。なお、ダイアログ２５００において「コンテナ群」が選択された場合、コンテナ群を選択するためのコンテナ群選択画面が表示される。そのコンテナ群選択画面にて選択されたコンテナ群毎に適用するレイアウト調整アルゴリズムを選択するために、図２５の（Ｇ）のダイアログ２５５１が表示される。なお、ダイアログ２５５１についての選択処理等は上記と同等であるため詳細な説明は省略する。また、コンテナ群とは、本願におけるリンクにて関連付けられた集合を指す。
【０２２７】
以上のように、図２５の（Ａ）〜（Ｅ）（Ｇ）(*1)で指定されたレイアウト調整アルゴリズムは、ドキュメント、ページ、エリア、レコード、コンテナ等の各範囲に設定されたレイアウト調整アルゴリズムを示すレイアウト調整アルゴリズム情報としてメモリ１３６、格納デバイス１３９等により保持される。そのため、レイアウト編集アプリケーションはメモリ１３６または格納デバイス１３９を参照することにより図１９のフローチャートにおける判断処理を実行することができる。
【０２２８】
以上のような図２５の（Ａ）〜（Ｇ）(*1)のＵＩによってレイアウト調整アルゴリズムを設定すると、図３０に示すような階層構造で設定されたレイアウト調整アルゴリズムがメモリ１３６または格納デバイス１３９に格納されることになる。
【０２２９】
［適用ポリシー］
適用ポリシーは適用レイアウト調整アルゴリズムのパースフロー（図１９）で説明したように、ドキュメントの設定、ページの設定、レコードの設定、エリアの設定、コンテナの設定の順番で適用されていく。つまり、レイアウト調整アルゴリズムを適用する単位の小さいもの程、優先順位が高く設定されており、優先してレイアウト計算に使用される。また、図３０の階層構造でいえば、階層の低い程、設定内容の優先順位が高く、優先してレイアウト計算に使用されることになる。
【０２３０】
図２６ではあるドキュメントにおいて、各単位で設定されたレイアウト調整アルゴリズムにより、最終的に各コンテナの設定がどのようになるのかを示している。
この設定内容は図３０の階層構造から得られるものである。図３０に示すように、このドキュメントには「コンテンツ優先」が設定されている。よってこのドキュメント内の全てのコンテナは「コンテンツ優先」のレイアウト調整アルゴリズムがデフォルトとして設定される。
【０２３１】
次にページ単位では、図３０を参照することにより第１ページ２６１１に「コンテナ・コンテンツ優先」が、第２ページ２６２１と第３ページ２６３１には「コンテンツ優先」が設定されていることが分かる。第１ページ２６１１にはこれ以上に細かい単位でのレイアウト計算設定がないので、第１ページ内の全てのコンテナ（コンテナ２６１２、コンテナ２６１３、コンテナ２６１４）の適用レイアウト調整アルゴリズムは「コンテンツ優先」となる。
【０２３２】
第２ページ２６２１内では、複数のレコードについてレイアウト調整アルゴリズムの設定がなされている。なお、第２ページでは１つのページ内に複数のレコードのコンテンツデータを流し込むマルチレコード機能が採用されている。つまり、第２ページにおけるリンクセット２６２２には１レコード目、リンクセット２６２３には２レコード目、リンクセット２６２４には３レコード目のコンテンツデータが流し込まれることとなる。
【０２３３】
そして、第１レコードおよび第３レコードが流し込まれるリンクセット２６２２および２６２４には「コンテンツ優先」が、リンクセット２６２３には「コンテナ・コンテンツ優先」が設定されている。
【０２３４】
第２ページ２６２１では、レコード単位よりも細かい単位での設定が存在しない。従って、リンクセット２６２３内の全コンテナに「コンテナ・コンテンツ優先」が適用されることとなるが、リンクセット２６２２，２６２４内の全コンテナには「コンテンツ優先」が適用される。
【０２３５】
次に第３ページ２６３１にはユーザが指定した選択エリア２６３７が存在し、その選択エリア２６３７には「基本デザイン優先」が指定されている。さらに、選択エリア内のコンテナ２６３５には直接、選択エリア２６３７とは別のレイアウト調整アルゴリズム（「コンテンツ優先」）が指定されている。よって、選択エリア２６３７内のコンテナ２６３４、コンテナ２６３６には「基本デザイン優先」が、コンテナ２６３５には「コンテンツ優先」が適用されることになる。又、第３ページ２６３１に存在する選択エリア２６３７外のコンテナ２６３２、コンテナ２６３３には、当該ページに設定された「コンテンツ優先（２６３９）」が適用されることになる。
【０２３６】
以上の説明からも分かるように、図３０において下流において設定されたレイアウト調整アルゴリズムが優先的に適用されることとなる。
【０２３７】
［ＵＩ設定例（その２）］
図２７はレイアウト調整アルゴリズムを設定するための別のユーザインターフェース例を示す図である。例えば、図３０に示すようなアルゴリズム情報に基づいて各コンテナに設定されているレイアウト調整アルゴリズムが取得され、図２７に示すように複数種類の網掛けを用いることにより各コンテナに設定されているレイアウト調整アルゴリズムが明示される。このようなＵＩによれば、各コンテナに設定されたレイアウト調整アルゴリズムが一目瞭然であり、また、各コンテナへのレイアウト調整アルゴリズムの指定を容易に行える。
【０２３８】
タイトルバー２８０２とツールバー２８０３を持つ典型的なウィンドウ２８０１において、メインウィンドウ２８０４にはあるページ２８０５とそこにレイアウトされたコンテナが表示されている。またページ内のマージンエリア２８０６の線も表示されている。そしてパレット２８１１が存在し、パレット２８１１を用いてメインウィンドウ上のコンテナのレイアウト調整アルゴリズムを指定することが出来る。例えば、コンテンツ優先のレイアウト調整アルゴリズムをコンテナＢに適用したい場合は、マーク２８１２をコンテナＢ内へドラッグアンドドロップする操作を行う。同様に、コンテナ・コンテンツ優先のレイアウト調整アルゴリズムの場合はマーク２８１４を、基本デザイン優先のレイアウト調整アルゴリズムの場合はマーク２８１８を用いる。各コンテナの表示では、設定されているレイアウト調整アルゴリズムの種類に応じてコンテナの網掛けの種類を異ならせているので、各コンテナがどのレイアウト調整アルゴリズムを使用するかを一目で判断できる。
【０２３９】
もちろん、エリアを指定してレイアウト調整アルゴリズムを設定することもできる。例えば、コンテナＣ，Ｄ，Ｅのみが内包される矩形をマウス操作によりＵＩ上で描画することで、コンテナＣ，Ｄ，Ｅが選択状態となる。そして、選択状態となった複数のコンテナのいずれかへ所望のレイアウト調整アルゴリズムに対応するマーク（２８１２，２８１４，２８１８）をドラッグアンドドロップする。このような操作により選択エリア内の全コンテナに一括してレイアウト調整アルゴリズムを設定できる。なお、エリアの指定により図３０の階層構造におけるエリアの部分が、変更後の構造に応じて変更されることになる。また、あるエリアに属するコンテナについてレイアウト調整アルゴリズムの指定を行ったり、あるエリアに属するコンテナを別のエリアに属するようにエリア指定を行うと、当該コンテナが属していたエリアのくくりは解除されるものとする。
【０２４０】
また、図２７のＵＩにおいて、コンテンツ優先のレイアウト調整アルゴリズムが指定されたコンテナはリストボックス２８１３内にリスト表示される。また、コンテナ・コンテンツ優先のレイアウト調整アルゴリズムが指定されたコンテナはリストボックス２８１７内にリスト表示され、基本デザイン優先のレイアウト調整アルゴリズムが指定されたコンテナはリストボックス２８１９内にリスト表示されている。また、コンテナ・コンテンツ優先のレイアウト調整アルゴリズムにはデザインパワー２８１５とコンテンツパワー２８１６を入力するエディットボックスが存在するが、これについては後述の「アルゴリズム優先度」にて詳しく説明する。ユーザはこのような画面を見ながら、各コンテナに対してレイアウト調整アルゴリズムを簡便に決めていくことが出来る。
【０２４１】
図２８は図２７のＵＩを表示するための処理を示すフローチャートである。まずステップＳ２７０１においてレイアウト編集アプリケーション１２１は、ユーザからのレイアウト調整アルゴリズム設定画面の表示指示を認識して、図２７に示すようなレイアウト調整アルゴリズム設定画面を表示する。
【０２４２】
次にレイアウト編集アプリケーション１２１は、各コンテナに設定されているレイアウト調整アルゴリズムを検索する（Ｓ２７０２）。詳細には、図３０のような階層情報がメモリ１３６等に保持されているため、レイアウト編集アプリケーション１２１がメモリ１３６を参照することによりＳ２７０２の処理を実現することが可能となる。
【０２４３】
ステップＳ２７０３では、レイアウト編集アプリケーション１２１は、各コンテナについて設定されているレイアウト調整アルゴリズムに基づいて、各コンテナの網掛け、各リスト２８１３，２８１７，２８１９への表示を行う。こうして図２７に示すようなインターフェース表示が完成する。また、図２７のＵＩを用いて各コンテナ毎に設定されたレイアウト調整アルゴリズムの情報は、アルゴリズム情報としてメモリ１３６、格納デバイス１３９等により保持される。
【０２４４】
［アルゴリズム優先度］
コンテナ・コンテンツ優先のレイアウト調整アルゴリズムは、現在のコンテナサイズとコンテンツサイズとの差に加え、現在のコンテナサイズとデザイン時のコンテナサイズ（デザインサイズ）からのテンションを小さくしていくことでレイアウト結果を導き出す。よってそれぞれのテンションに重み値を設定することで、コンテンツサイズとデザインサイズのどちらにより近くレイアウトするかを決めることが出来る。
【０２４５】
図２９の（Ａ）〜（Ｄ）ではコンテナ２９０１およびコンテナ２９０２に対してコンテナ・コンテンツ優先のレイアウト調整アルゴリズムが適用される場合において、優先度が設定されることによりどのようにレイアウト計算されるのかについて説明している。
【０２４６】
図２９の（Ａ）に示されるように、コンテナ２９０１とコンテナ２９０２が存在し、それらはリンク２９０３によって関連付けされている。それぞれのコンテナにはデータベースから挿入されるデータ（コンテンツ）が存在し、コンテナ２９０１にはコンテンツ２９０４、コンテナ２９０２にはコンテンツ２９０５が挿入されている。
【０２４７】
現在の各コンテナの幅サイズはコンテナ２９０１が｜ａ−ｂ｜＝７、コンテナ２９０２が｜ｅ−ｈ｜＝６、各コンテンツサイズの幅サイズはコンテンツ２９０４が｜ａ−ｄ｜＝８、コンテンツ２９０５が｜ｇ−ｈ｜＝５である。また、デザイン時のコンテナサイズ２９０６と２９０７が存在する。
【０２４８】
コンテナ２９０１および２９０２には「コンテナ・コンテンツ優先」が設定されている。そのため、レイアウト計算では現在のコンテナサイズ（コンテナ２９０１）とデザインサイズ（デザインサイズ２９０６）との差（テンションＴ1）と、現在のコンテナサイズ（コンテナ２９０１）とコンテンツサイズ（コンテンツ２９０４）との差（テンションＴ3）が使用される。
【０２４９】
またコンテナ２９０２には「コンテナ・コンテンツ優先」が設定されているため、現在のコンテナサイズ（コンテナ２９０２）とコンテンツサイズ（コンテンツ２９０５）との差（テンションＴ2）と、現在のコンテナサイズ（２９０２）とコンテンツサイズ（コンテンツ２９０５）との差（テンションＴ4）が使用される。これらのテンションの合計を小さくさせ、現在のコンテナをレイアウト調整させることによって、計算用の基準サイズに近づけようとする。
【０２５０】
図２９の（Ｂ）はテンションの計算を行う状態を図示しているものである。コンテナ２９０１のテンションには、現在のコンテナサイズ（７）とコンテンツサイズ（８）とのテンションＴ1＝｜ｂ−ｄ｜＝１と、現在のコンテナサイズ（７）とデザインサイズ（５）とのテンションＴ3＝｜ｂ−ｃ｜＝２が存在する。
【０２５１】
また、コンテナ２９０２には、現在のコンテナサイズ（６）とコンテンツサイズ（５）とのテンションＴ2＝｜ｅ−ｇ｜＝１と、デザインサイズ（８）と現在のコンテナサイズ（６）のテンションＴ4＝｜ｆ−ｅ｜＝２が存在する。
【０２５２】
ここで、図２９の（Ｄ）に示すように、プロパティ２９３１とプロパティ２９３４において、それぞれコンテナＡ、コンテナＢに設定しているコンテナ・コンテンツ優先のレイアウト調整アルゴリズムにおける、デザインパワーとコンテンツパワーを設定できる。ここで言うパワーとは重み値と同等の意味であり、あるサイズに近づこうとする力である。例えばデザインサイズに近づこうとする力、あるいはコンテンツサイズに近づこうとする力を指す。ここでは通常のパワー（重み値）を１００％としてあり、それよりも値が大きければパワーが強くなる、つまりそのサイズに近づこうとする力が増す。逆にそれよりも小さい場合パワーは弱くなる、つまりそのサイズに近づこうとする力が弱まることになる。これをレイアウト計算の中ではテンションに相乗することで実現している。つまり、このパワーの値（重み値）をベースにテンションの比重を変化させて、コンテナのレイアウト調整を実行する。
【０２５３】
各プロパティ内では、コンテナＡではデザインパワー２９３２は１００％、コンテンツパワー２９３３は５０％、コンテナＢでも同様にデザインパワー２９３５は１００％、コンテンツパワー２９３６は５０％が設定されている。つまり、図２９の（Ａ）〜（Ｄ）のリンクセットにおいては、コンテナサイズを基本レイアウト作成時のデザインサイズに近づこうする力が、コンテンツサイズに近づけようとする力よりも２倍強いこととなる。
【０２５４】
よってこのリンクセットのテンションの合計は、
１／２×(Ｔ1＋Ｔ2)＋Ｔ3＋Ｔ4
＝１／２×(|ｂ−ｄ|＋|ｅ−ｇ|)＋|ｂ−ｃ|＋|ｆ−ｅ|
＝１／２×２＋２＋２
＝５
である。
【０２５５】
図２９の（Ｃ）は、このようにして計算されるテンションを減らすようにマークの移動を行った結果を示している。図２９の（Ｃ）では、コンテナ２９０１のサイズは｜ａ−ｂ｜＝６、コンテナ２９０２のサイズは｜ｅ−ｈ｜＝７となっている。よってレイアウト結果時のテンションは、
１／２×(Ｔ1＋Ｔ2)＋Ｔ3＋Ｔ4
＝１／２×(|ｂ−ｄ|＋|ｅ−ｇ|)＋|ｂ−ｃ|＋|ｆ−ｅ|
＝１／２×４＋１＋１
＝４
となる。この場合、テンション０の状態を達成できていないが、これ以上、テンションが減らなかったため、レイアウト計算を終了する。
【０２５６】
以上のように、上記の例では、コンテナＡ、コンテナＢにおいてコンテンツサイズよりもデザインサイズにやや近い形でレイアウトされた。このようにレイアウト調整アルゴリズムに優先度（パワーまたは重み値ともいう）が適用できることで、ユーザの求める多様なレイアウトのニーズに応えることができる。
【０２５７】
以上説明したように、上記実施形態によれば、自動レイアウトシステムにおいて、各コンテナに様々なレイアウト計算方法のレイアウト調整アルゴリズムの設定が可能になる。このため、複数のコンテナが関連付けられており、相互に影響を与えながらレイアウトを変化させるような場合においても、それぞれのコンテナに対してユーザが所望とするレイアウト調整アルゴリズムによるサイズ計算を行うことにより、ユーザが意図した様々なレイアウトを作成することが可能になる。さらに、設定したレイアウト調整アルゴリズムを視覚的に示すことが可能になるため、ユーザは自動レイアウトした後のレイアウト結果を予測しやすくなる。
【０２５８】
また、上記実施形態において、複数種類の計算方法アルゴリズムのそれぞれは、データ領域と目標形状との差異が小さくなるようにデータ領域をレイアウト調整するものであり、差異の算出過程が各レイアウト調整アルゴリズムで異なるものである。これにより、柔軟にユーザの意図を反映したレイアウト調整を可能としている。また、関連付けられた複数のコンテナについてレイアウト調整を行う場合にも、各レイアウト調整アルゴリズムを適用して得られた差異（テンション）の合計を小さくするようにコンテナをレイアウト調整すればよい。そのため、複数コンテナ間のネゴシエーション処理への適用が容易である。
【０２５９】
なお、本発明は、上記形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体(又は記録媒体)を、システム又は装置に供給し、そのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成されることは云うまでもない。
【０２６０】
この場合、記憶媒体から読み出されたプログラムコード自体が上記実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(ＯＳ)などが実際の処理の一部又は全部を行い、その処理によって上記実施の形態の機能が実現される場合も含まれることは云うまでもない。
【０２６１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わる記憶媒体に書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは云うまでもない。
また、本発明は、上記実施の形態の機能を実現するソフトウェアのプログラムコードがネットワークを介して配信されることにより、システム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納され、そのシステム又は装置のコンピュータ(又はＣＰＵやＭＰＵ)が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行することによっても、達成されることは云うまでもない。
【図面の簡単な説明】
【０２６２】
【図１Ａ】実施形態によるバリアブルプリントシステムの構成を示す図である。
【図１Ｂ】図１Ａにおけるホストコンピュータの構成の概略を示す図である。
【図１Ｃ】バリアブルデータプリントの概要を説明する図である。
【図２】実施形態によるバリアブルプリントシステムの他の構成を示す図である。
【図３】メニューバー、ツールバー、ワークエリア、フローティングパレットを含む、実施形態によるユーザインターフェースの例を示す図である。
【図４】ユーザインターフェースにおけるコンテナの表示例を示す図である。
【図５】実施形態によるコンテナルールを説明する図である。
【図６】実施形態によるリンクの作成処理を説明するフローチャートである。
【図７】リンク作成時のユーザインターフェースの遷移例を示す図である。
【図８】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図９】実施形態のレイアウトエンジンによるレイアウト計算処理を示すフローチャートである。
【図１０】実施形態によるレイアウト計算処理を説明するための図である。
【図１１】実施形態のレイアウト計算時における、コンテナの集合について説明した図である。
【図１２】可変リンクによってコンテナを配置したときのユーザインターフェースにおける表示例を示す図である。
【図１３】実施形態のユーザインターフェースにより可変リンクを設定するための処理を説明するフローチャートである。
【図１４】実施形態によるリンクの設定ダイアログウインドウを示す図である。
【図１５】固定リンクによるレイアウト結果例を示す図である。
【図１６】可変リンクによるレイアウト結果例を示す図である。
【図１７】本実施形態による自動レイアウト処理の全体的な処理の流れを示すフローチャートである。
【図１８】本実施形態によるレイアウト最適化処理を説明するフローチャートである。
【図１９】ステップＳ１８０１で選択されたコンテナに対して、ステップＳ１８０２で行われる適用アルゴリズムのパースを示すフローチャートである。
【図２０】本実施形態によるレイアウト再計算処理を示すフローチャートである。
【図２１】コンテンツ優先のレイアウト調整アルゴリズムを説明する図である。
【図２２】コンテナ・コンテンツ優先のレイアウト調整アルゴリズムを説明する図である。
【図２３】基本デザイン優先のレイアウト調整アルゴリズムを説明する図である。
【図２４】基本デザイン優先のレイアウト調整アルゴリズムとコンテンツ優先のレイアウト調整アルゴリズムが１つのリンクセット内で別々のコンテナに設定されている場合のレイアウト計算処理について説明する図である。
【図２５】各種のレイアウト調整アルゴリズムを設定するためのユーザインターフェース（ＵＩ）例を示す図である。
【図２６】各単位で設定されたレイアウト調整アルゴリズムにより各コンテナの設定がどのようになるのかを説明する図である。
【図２７】レイアウト調整アルゴリズムを設定するための別のユーザインターフェース例を示す図である。
【図２８】図２７のＵＩを表示するための処理を示すフローチャートである。
【図２９】コンテナ・コンテンツ優先とコンテンツ優先が１つのリンクセット内で別々のコンテナに設定されている場合のレイアウト計算例を示す図である。
【図３０】アルゴリズム情報の格納例を示す図である。
【図３１】レイアウト最適化処理を説明するための図である。
【図３２】コンテンツ優先レイアウトのアルゴリズムを説明する図である。
【図３３】最小２乗法を用いたレイアウト算出方法および結果と最小２乗法を用いない場合のレイアウト算出方法および結果を説明するためのレイアウト例を示す図である。
【図３４】コンテナ・コンテンツ優先レイアウトアルゴリズムを説明する図である。
【図１Ａ】
2006277727.tif 000003
【図１Ｂ】
2006277727.tif 000004
【図１Ｃ】
2006277727.tif 000005
【図２】
2006277727.tif 000006
【図３】
2006277727.tif 000007
【図４】
2006277727.tif 000008
【図５】
2006277727.tif 000009
【図６】
2006277727.tif 000010
【図７】
2006277727.tif 000011
【図８】
2006277727.tif 000012
【図９】
2006277727.tif 000013
【図１０】
2006277727.tif 000014
【図１１】
2006277727.tif 000015
【図１２】
2006277727.tif 000016
【図１３】
2006277727.tif 000017
【図１４】
2006277727.tif 000018
【図１５】
2006277727.tif 000019
【図１６】
2006277727.tif 000020
【図１７】
2006277727.tif 000021
【図１８】
2006277727.tif 000022
【図１９】
2006277727.tif 000023
【図２０】
2006277727.tif 000024
【図２１】
2006277727.tif 000025
【図２２】
2006277727.tif 000026
【図２３】
2006277727.tif 000027
【図２４】
2006277727.tif 000028
【図２５】
2006277727.tif 000029
【図２６】
2006277727.tif 000030
【図２７】
2006277727.tif 000031
【図２８】
2006277727.tif 000032
【図２９】
2006277727.tif 000033
【図３０】
2006277727.tif 000034
【図３１】
2006277727.tif 000035
【図３２】
2006277727.tif 000036
【図３３】
2006277727.tif 000037
【図３４】
2006277727.tif 000038