(57)【要約】 【課題】      複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、ユーザによる操作を効率化する。【解決手段】  割り当てられたデータを収め、そのデータをページ上にレイアウトする部分表示領域を相互に連結するリンクを部分表示領域間に設定し、部分表示領域に割り当てられたデータにより部分表示領域の位置を調整するレイアウト制御方法は、複数の部分表示領域に対して複数のリンクを設定し、複数の部分表示領域を指定し、指定した部分表示領域の位置情報を取得する。そして、複数のリンクを設定することが指示された場合、取得した位置情報に基づき、指定された複数の部分表示領域に対して複数のリンクを設定する。【選択図】  図１６
2008305414.tif 000002
【特許請求の範囲】
【請求項１】
指示手段と、指定手段と、決定手段と、リンク設定手段と、を備え、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御方法であって、
前記指示手段が、複数の部分表示領域を関連付けるリンクの設定を指示する指示工程と、 
前記指定手段が、前記リンクによって関連付けられる複数の部分表示領域を指定する指定工程と、
前記指示工程によって前記リンクを設定することが指示された場合、前記決定手段が、前記指定工程において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定工程と、
前記リンク設定手段が、前記決定工程において決定された前記部分表示領域間に前記リンクを設定するリンク設定工程と、
を有することを特徴とするレイアウト制御方法。
【請求項２】
前記決定工程は、前記指定工程において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定することを特徴とする請求項１に記載のレイアウト制御方法。
【請求項３】
割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御装置であって、
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、 
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段と、
を備えることを特徴とするレイアウト制御装置。
【請求項４】
前記決定手段は、前記指定手段において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定することを特徴とする請求項３に記載のレイアウト制御装置。
【請求項５】
割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理をコンピュータに実行させるレイアウト制御プログラムであって、当該レイアウト制御プログラムが、コンピュータを
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、 
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段として機能させることを特徴とするレイアウト制御プログラム。
【請求項６】
前記決定手段は、前記指定手段において指定された複数の部分表示領域の中の基準となる部分表示領域と前記基準となる部分表示領域の水平方向または垂直方向に交わる部分表示領域との間を前記リンクが設定される部分表示領域間として決定する処理を前記コンピュータに実行させることを特徴とする請求項５に記載のレイアウト制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキストやイメージで構成されたドキュメントの生成、編集、そして印刷のためのレイアウト制御技術に関するものであり、更に詳しくは、バリアブルデータドキュメントの生成、編集、そして印刷に好適なものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフサイクルが短くなっていること、インターネットの普及により、これを利用した消費者のカスタマイズサービス指向が強くなっていることなどの要因からＣＲＭ（Customer Relationship Management）、One-to-Oneマーケティングの必要性が注目されている。これらの手法は顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【０００３】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる情報量のコンテンツを最適にレイアウトして表示することが求められるようになった。
【０００４】
従来におけるバリアブルプリントシステムは、ドキュメント上に情報を表示する領域としてコンテナ（帳票フォームではフィールド領域とも呼ばれる）等をレイアウトして、データベースとコンテナとを関連付けることによりレイアウト表示を達成していた。
【０００５】
しかし、テキストおよびイメージが貼り付けられる部分表示領域であるコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップやイメージのクリッピングが発生し、またデータ量がコンテナサイズより小さいとコンテナ内に隙間が空いてしまい、いずれの場合でも表示しようとするテキストやイメージの情報量に応じた最適なレイアウト表示を実現することはできなかった。
【０００６】
その問題を解決するために、情報量に応じてコンテナサイズを可変にする自動レイアウトシステムが提案されている。この自動レイアウトシステムはテキストおよびイメージのコンテナサイズを可変に設定することが可能である。この自動レイアウトシステムにおいて、コンテナのサイズを可変とし、差し込まれるデータ量に応じてコンテナのサイズを大きくするよう変更できるものがある。また、テキストの場合において固定のコンテナサイズ内に入りきらないデータが挿入された場合、テキストのフォントサイズを縮小し、コンテナ内に全てのテキストを表示する技術も存在する。
【０００７】
しかし、コンテナのサイズを大きくした場合、ドキュメント上の他のコンテナに重なってしまうという問題が生じる。またフォントサイズを調節する場合はテキストの量が大きい場合、フォントサイズが小さくなりすぎるという問題も生じる。これらの問題を解決するために、さらなる自動レイアウトの技術として、あるコンテナのサイズが大きくなった場合、このコンテナに隣接する他のコンテナのサイズを小さくする技術が特許文献１の「レイアウトデザイン装置」に開示されている。
【特許文献１】特開平１１−３１６７９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述の自動レイアウトシステムにおいて、各コンテンツに貼り付けられるデータに合わせてコンテナの１例である可変表の行を増やし、それに応じて他のコンテナが移動する位置合わせの技術についてしか考慮していない。つまり、可変表の行が増えればそれだけ他のコンテナが移動し、改ページが行われる帳票のレイアウトデザインを作成するためのものである。しかしながら、上述したOne-to-oneマーケティングでは、決められた用紙サイズのページにユーザが所望とするコンテナ数をレイアウトすることが望まれている。つまり、従来のような単なる可変表の技術では対応できないという問題がある。そこで、それぞれのコンテナにデータを流し込み、各コンテナのサイズを可変にしつつ、決められた用紙サイズのページに必要な数のコンテナを動的に配置するような、自動レイアウトシステムの需要がある。このような自動レイアウトシステムでは、お互いのコンテナのサイズが可変であるため、各コンテナ同士で押し合いつつレイアウトを動的に変化させなければならない。レイアウトを動的に変化させるためには、各コンテナ間に関連付け（以下、リンク）を設定する必要があるが、リンクはコンテナ間において一つ一つに対して設定する必要があり、ユーザの操作負担を強いるものとなってしまう。すなわち、複数のコンテナをレイアウトして、それぞれのコンテナを動的にレイアウトするように設定するためには、コンテナ間にリンクを設定しなければならないが、コンテナの数が増えると、そのリンクの数も増えることになり、リンクを一つ一つ設定する作業にはコンテナの数に比例して増大し、ユーザの操作負担は大きくなってしまう。
【０００９】
本発明は上記の課題に鑑みてなされたものであり、複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、効率のよい操作を実現することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明に係るレイアウト制御方法は主として以下の工程を有することを特徴とする。
【００１１】
すなわち、指示手段と、指定手段と、決定手段と、リンク設定手段と、を備え、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御方法であって、
前記指示手段が、複数の部分表示領域を関連付けるリンクの設定を指示する指示工程と、 
前記指定手段が、前記リンクによって関連付けられる複数の部分表示領域を指定する指定工程と、
前記指示工程によって前記リンクを設定することが指示された場合、前記決定手段が、前記指定工程において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定工程と、
前記リンク設定手段が、前記決定工程において決定された前記部分表示領域間に前記リンクを設定するリンク設定工程と、を有することを特徴とする。
【００１２】
あるいは、上記目的を達成するために本発明に係るレイアウト制御装置は、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理を実行するレイアウト制御装置におけるレイアウト制御装置であって、
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、 
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段とを備えることを特徴とする。
【００１３】
あるいは、上記目的を達成するために、本発明に係るレイアウト制御プログラムは、割り当てられたデータを収める複数の部分表示領域が配置されたテンプレートと、前記データとを用いてレイアウト処理をコンピュータに実行させるレイアウト制御プログラムであって、当該レイアウト制御プログラムが、コンピュータを
複数の部分表示領域を関連付けるリンクの設定を指示する指示手段と、 
前記リンクによって関連付けられる複数の部分表示領域を指定する指定手段と、
前記指示手段によって前記リンクを設定することが指示された場合、前記指定手段において指定された前記複数の部分表示領域によって形成される複数の部分表示領域間の中から前記リンクを設定すべき部分表示領域間を、前記複数の部分表示領域の位置情報に基づいて決定する決定手段と、
前記決定手段において決定された前記部分表示領域間に前記リンクを設定するリンク設定手段として機能させることを特徴とする。
【発明の効果】
【００１４】
複数のコンテナ間に対して、一つの操作でリンクを一括設定することを可能にし、効率のよい操作を実現することが可能になる。
【発明を実施するための最良の形態】
【００１５】
本発明の好適な実施形態を図面を参照しつつ説明する。
【００１６】
（システム構成図）
図１Ａはコンテナサイズを可変に設定してドキュメントを印刷するシステム１００を図示している。このシステムにおいて実行するコンテナサイズの制御、コンテナ間のリンク設定は図１Ｂで詳しく説明されるホストコンピュータ１０１の制御の下に実行される。図６で記述されるプロセスは、レイアウト制御装置であるホストコンピュータ１０１内で実行され、システム１００上で実行可能となるレイアウト編集アプリケーションプログラム１２１（本発明のレイアウト制御プログラム）のようにソフトウェアの全体、あるいはその一部分で実行される。特にレイアウト編集や印刷のステップはホストコンピュータ１０１によるソフトウェアによって実行される。
【００１７】
ソフトウェアは、例えば、以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からホストコンピュータにロードされ、実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラム、あるいはそのプログラムを格納するコンピュータの可読媒体は、コンピュータと協働したドキュメントのレイアウト編集やバリアブルデータ印刷に必要な演算処理や表示制御、レイアウト制御、コンテンツに関する情報処理を実行する手段としてコンピュータの機能を特定する。
【００１８】
ホストコンピュータ１０１はキーボード１３２やマウス１３３のようなポインティングデバイスなどの入力装置、ディスプレイ装置１４４や状況に応じてはローカルプリンタ１４５を含む出力装置と接続する。入力／出力（Ｉ／Ｏ）インターフェース１３８はホストコンピュータ１０１をネットワーク１０７に接続してシステム１００を他のコンピュータ装置（例えば、データベースサーバ１１７）に接続することができる。そのネットワーク１０７の典型はローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）である。
【００１９】
ホストコンピュータ１０１は典型的に少なくとも１つのプロセッサーユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６、ビデオインターフェース１３７を含むＩＮＰＵＴ／ＯＵＴＰＵＴ（Ｉ／Ｏ）インターフェース、キーボード１３２やマウス１３３のためのＩ／Ｏインターフェース１４３を含んでいる。記憶装置１３９はハードディスクドライブ１４０やフロッピー（登録商標）ディスクドライブ１４１を含んでいる。ここでは図示されていないが磁気テープドライブもまた記憶装置として使用することができる。
【００２０】
ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される。ホストコンピュータ１０１はＧＮＵ／ＬＩＮＵＸやマイクロソフトウィンドウズ（登録商標）のようなオペレーションシステムや、典型的にはオペレーションシステムに従い形成されたコンピュータシステムのオペレーションによって、相互接続バス１３４を介して通信を行うホストコンピュータ１０１のプロセッサユニット１３５からＩ／Ｏインターフェース１４３を利用することができる。図１Ａに示したホストコンピュータ１０１を含んだシステムの例としては、ＩＢＭ互換ＰＣやＳＵＮ のＳｐａｒｃｓｔａｔｉｏｎ、あるいはそれらを含んだコンピュータシステムが考えられる。
【００２１】
レイアウトアプリケーションプログラム１２１は典型的にはハードディスクドライブ１４０に常駐し、プロセッサユニット１３５により読み出され、実行される。プログラム１２１を記憶する記憶装置１３９とネットワーク１０７からフェッチされるデータはハードディスクドライブ１４０、またはこれに呼応してメモリユニット１３６が使用され、アプリケーションプログラム１２１がＣＤ−ＲＯＭやフロッピーディスク上でエンコードされ、対応するＣＤ−ＲＯＭドライブ１４２やＦＤＤ１４１を通じて読み込まれユーザに提供される。
【００２２】
あるいはもう一つの方法としてアプリケーションプログラム１２１はネットワーク１０７からユーザによってインストールするようにしてもよい。さらにソフトウェアは磁気テープまたはＲＯＭまたは集積回路、光磁気ディスクまたは無線またはホストコンピュータ１０１とその他のデバイス間の赤外線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カード、そしてＥメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からホストコンピュータ１０１内にロードすることもできる。但し、これらのコンピュータ可読媒体は、単に関連するコンピュータ可読媒体の規範であり、媒体の種類がこれらに限定される趣旨ではなく、他のコンピュータ可読媒体も使用することも可能である。
【００２３】
また、レイアウト編集と名づけられたアプリケーション１２１はバリアブルデータ印刷（ＶＤＰ）を行うためのプログラムモジュールであり、２つのソフトウェアコンポーネントを含んでいる。これらのうち１つめのモジュールは、レイアウトエンジンモジュール１０５であり、これはデータが流し込まれる部分表示領域であるコンテナ（矩形の範囲）のサイズや位置の制限に従ってデータベース１１９に格納されているバリアブルデータから１レコードずつ読み込み、読み込んだデータとコンテナの制限とから、読み込んだデータが流し込まれるコンテナの大きさや位置等を計算するためのソフトウェアモジュールである。レイアウトエンジン１０５は各部分表示領域（コンテナ）のサイズと位置を決定するアプリケーションとして動作し、図示省略したプリンタドライバに描画情報を出力することで、プリンタドライバがバリアブルデータドキュメントのイメージ描画処理を行い、印刷データを生成する。
【００２４】
２つめのモジュールであるユーザインターフェースモジュール１０３はユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースとコンテナとを関連付けるメカニズムを提供するモジュールである。ユーザインターフェースモジュール１０３とレイアウトエンジンモジュール１０５はコミュニケーションチャネル１２３を介して通信することが可能である。ドキュメント作成のためのデータソースはデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ１１７上にあるデータベース１１９に格納されている。ホストコンピュータ１０１はネットワーク１０７との接続を介してデータベースサーバ１１７と通信することができる。バリアブルデータ印刷を実行する場合、レイアウト編集アプリケーション１２１はホストコンピュータ１０１か、若しくは他のコンピュータで構成されるファイルサーバ１１５に保存されるドキュメントテンプレートを生成する。またレイアウト編集アプリケーション１２１はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ１０１の記憶装置１３９に保存されるか、ファイルサーバ１１５に保存されるか、あるいはプリンタ１１３に直接印刷される。
【００２５】
プリントサーバ１０９は直接ネットワークに接続していないプリンタ１１３にネットワーク機能を提供するコンピュータである。プリントサーバ１０９とプリンタ１１３は典型的な通信チャネル１１１を介して接続する。
【００２６】
図２はレイアウトエンジンモジュール１０５をホストコンピュータ１０１の他にエンジンサーバ２２７にもレイアウトエンジン２２５を設けた構成を示す図である。エンジンサーバ２２７は典型的なコンピュータにより構成され、ファイルサーバ１１５に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン２２５によってドキュメントを生成するためにデータベース１１９に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェースモジュール１０３の制御の下、ユーザインターフェース（ＵＩ）画面を介して入力され、特定のレコードのみ印刷するように設定することができる。
【００２７】
（アプリケーション構成図）
（メインウインドウ）
図３で示されるアプリケーションウインドウ３０１は、ユーザインターフェースモジュール１０３（図１）によって、操作時にディスプレイ装置１４４に表示される。アプリケーションウインドウ３０１は、非表示にすることや、スクリーン上の色々な場所に移動することが可能なメニューバー３０２とツールバー３０３、そしてマウス１３３の位置・動作によって場所を移動可能なワークエリア３０６とオプションのパレット３１１とカーソル/ポインタデバイス３１３を有しており、これらにより特徴付けされる。
【００２８】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を有し、ツールバー３０３は、アプリケーションの特別なモードによって非表示にしたり、または表示することが可能な多くのツールボタン３０５を有する。オプションのルーラー３０８はワークエリア内のポインター、ページ、ライン、マージンガイド、コンテナまたはオブジェクトの位置を示すために使われる。パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール機能を提供するボタン３１２を有する。パレット３１１の表示はオプションで、ワークエリアの前面に表示することもでき、あるいは背面に隠すこともできる。また、このパレット３１１に対する表示制御は、アプリケーションウインドウ３０１の範囲内のみに制限したり、あるいはアプリケーションウインドウ３０１の外側に部分的、あるいはその全体を表示するようにすることもできる。
【００２９】
ツールバーエリア３０３には少なくとも、ユーザによる選択が可能な「ボタン」（４０３〜４０６）を備える（例えば、図４を参照）。以下、ボタン４０３〜４０６を説明する。
【００３０】
選択ツールボタン４０３は、コンテナの辺を選択、移動、サイズ変更、そしてコンテナのロック（固定）、あるいはロック解除をするために使われる。コンテナは、複数のコンテナの周りをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数のコンテナの選択を可能にする。
【００３１】
イメージコンテナツールボタン４０５は、スタティック或いはバリアブルイメージを持つコンテナを作成するために使われる。
【００３２】
テキストコンテナツールボタン４０４は、スタティック或いはバリアブルテキストを持つコンテナを作成するために使われる。
【００３３】
リンクツールボタン４０６は、コンテナ間に関連付けを行うリンクを作成するために使われ、リンクの距離をコントロールするためにも使われる。
【００３４】
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンとして実装される。
【００３５】
レイアウト編集アプリケーション１２１の図３に示したアプリケーションウインドウ３０１は、ページ内に各コンテナやリンクをレイアウトすることで、基本レイアウトを決定することができる。基本レイアウトとは、バリアブルデータプリントで基本となるレイアウトのことである。基本レイアウト内の各コンテナが固定コンテナである場合は、すべてのレコードの印刷結果のレイアウトは同じになる。また、基本レイアウト内の各コンテナが後述する可変コンテナである場合は、レコード単位に読み込まれるデータの量やサイズにより各コンテナのサイズや位置が、後述する制約の範囲内で変動することになる。よって、レイアウト編集アプリケーション１２１で作成されるドキュメントテンプレートは、あくまで基本レイアウトを決定するものであり、可変コンテナが含まれる場合は、最終的な印刷物のレイアウトは読み込まれるデータによりレイアウト調整されることになる。
【００３６】
（ドキュメントテンプレート）
図３に示したワークエリア３０６はドキュメントテンプレートのデザインを表示・編集するために使用される。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量やサイズに基づいてどのように変化するかを理解することを可能にするものである。外部のデータベースがテンプレートにリンクされている場合には、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージをそれらのコンテナに表示することができる。ドキュメントの構造とバリアブルデータコンテナの表示は、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示するようにすることができる。
【００３７】
ワークエリア３０６はスクロールバー３０７とオプションのルーラー３０８とドキュメントテンプレート３０９に特徴付けられる。ドキュメントテンプレート３０９はページが複数あることを示すことができる。与えられたドキュメントテンプレートのページサイズは、周知の技術としてユーザによって指定される。例えばメニューの「ファイル」から「ページ設定」を選択することでページサイズを設定するダイアログを表示し、そこでユーザが指定したページサイズが反映されることになる。それぞれのドキュメントにおける実際のページ数は、バリアブルデータによって変化する可能性があり、もし１ページ内にバリアブルデータを収めることができず、所定の用紙サイズのページに各コンテナを収めるような制約が基本レイアウトになかった場合には、追加のページは自動的に作成される。所定の用紙サイズのページに各コンテナを収めるように制約（後述するアンカーアイコン等により設定可能である）が基本レイアウトに設定されている場合は、ページ内で各コンテナがお互いに押したり押されたりしながら、各コンテナサイズと位置が決定され、必要に応じて流し込まれるバリアブルデータが縮小され、レコード毎に動的にレイアウトが決定される。
【００３８】
図３において破線で示されるページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示すものであり、任意に設定することが可能なページマージン３１０である。また、図４は１ページのドキュメントテンプレート３０９上に表示することが可能なオブジェクトの例を示す図であり、図４では複数のコンテナ４０７及び４０８が示されており、コンテナの辺４１４の位置を固定するアンカーアイコン４０９と固定されていない辺４１０、リンク４１２そしてスライダー４１３によりコンテナ間の相互の関係が規定されている。アンカーアイコン４０９は、コンテナの矩形の角、辺、またはコンテナの中央に設定することが可能である。アンカーアイコン４０９が設定されると、設定された個所の位置が固定となる。つまり、図４の例では、アンカーアイコン４０９は、コンテナ４０７の左上の角に設定されているため、コンテナ４０７はバリアブルデータが流し込まれ、バリアブルデータの画像サイズもしくはテキスト量が多い場合に、右方向及び下方向に拡大可能であることを示している。アンカーアイコン４０９が辺に設定されている場合は、その辺が固定となり、その他の３辺の各方向に拡大可能である。また、アンカーアイコン４０９がコンテナの中央に設定されている場合は、コンテナの中央位置が固定となり、コンテナ矩形の中央位置が変わらないように、４方向に拡大可能である。リンク４１２は詳細は後述するが、コンテナ４０７とコンテナ４０８が関連付けられていることを示しており、このリンクに設定されている長さ（範囲指定が可能）を保ちつつ、コンテナ４０８が右方向に移動可能であることを示している。スライダー４１３は、設定されている辺と水平方向に移動可能であることを示している。
【００３９】
（コンテナ）
ここで、コンテナについて説明する。コンテナは、ドキュメントテンプレート内にバリアブルデータファイルから固定あるいは可変のテキスト／イメージがレコード単位に流し込まれ、描画されるスペース（これを部分表示領域と呼ぶ）であり、図４に示されるように他のコンテナやオブジェクトと共にレイアウトされる。ユーザインターフェース画面を介して、ユーザからの操作指示により、コンテナはマウス１３３の操作により移動、サイズ調整、再作成される。
【００４０】
コンテナは、アンカーアイコン４０９、リンク４１２、スライダー４１３によりコンテナの変形に関する拘束条件が規定されている。テキストやイメージデータの情報量に応じてその変形が許容されている方向にコンテナスペースの変形が制御されて、テキストデータやイメージデータがそのコンテナ内にレイアウトされる。２つのコンテナに関して相互に変形が必要となる場合、各コンテナに収納するべきテキストデータやイメージデータの量に応じて、相互のコンテナの変形がバランスするように（各コンテナにストレスの無い状態）に各コンテナの形状が制御される。
【００４１】
コンテナはポインティングデバイスとしてのマウス１３３の動作によりワークエリア３０６内の位置が特定され（図３の３１３）、ユーザインターフェースとしての画面内（図３）で移動、サイズ調整が施され、新たなコンテナを追加することも可能である。コンテナは、アンカーアイコンや、リンクそしてスライダーによりコンテナ間の相互の関係等の変形に関する種々の条件が設定され、コンテンツを表示する視覚的表現、そしてコンテナ間のインタラクションとコンテナ内の情報の編集機能を有している。ここで、コンテナを定義すると以下のようになる。
【００４２】
（１）コンテナは固定あるいは可変のコンテンツが入力され、可変コンテンツは、データソースからデータをとってきて、異なるドキュメントでは異なるデータに応じてコンテナサイズを可変するという意味でダイナミック（動的）である。可変コンテンツはアニメーション化されたもの、あるいは他の方法で時間を変更するコンテンツを含むことは印刷に適合していないため意図していない。同様に、固定コンテンツはコンテナを使って生成される全てのドキュメントで、同じように表示される。けれども、可変コンテンツとリンクが設定されている場合、可変コンテナの動作によって、固定コンテンツはそれぞれのドキュメントで表示位置が異なるように表示制御される。
【００４３】
（２）コンテナは、コンテンツに適用される背景色、ボーダー、フォント・スタイルのようなテキスト設定のような装飾機能を持っている。このような設定をコンテナ属性と呼ぶ。コンテナ属性は、各コンテナごとに設定可能であるが、あるコンテナと同じコンテナ属性であるという設定を行うことも可能である。
【００４４】
（３）コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、典型的に印刷された出力物に対して反映され、装飾が反映された結果は可視化される。可変コンテンツはデータソースから特定のデータの表示をもたらす。すなわち、その特定のデータに対して、コンテナに設定されている条件に従い、コンテナのサイズが可変に設定される。可変に設定されたコンテナのレイアウト、およびコンテナ内の特定のデータ表現は、例えば、プリンタ１１３を介して印刷されるか、ディスプレイ装置１４４上で表示されるか、その両方により処理することが可能である。
【００４５】
（４）コンテナの設定に関し、システムはユーザインターフェースモジュール１０３を備え、例えば、コンテナの編集そして表示設定のためのインタラクティブなグラフィカルユーザインターフェース（ＧＵＩ）を有する。そして、ユーザインターフェースの要素はディスプレイ装置１４４上に表示される。しかしドキュメントは印刷されない。ユーザインターフェースモジュール１０３は、背景色やフォントのようなコンテナに関する装飾機能のいくつかをインターフェース画面上に表示させ、これらの装飾機能をコンテナの設定、編集、コンテナ表示に追加することができる。
【００４６】
（５）更に、ユーザインターフェースモジュール１０３による設定の例としては、コンテナ間のボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するためにコンテナに設定さするコーナー部のアイコンや、あるいはデータソースからデータをマージしたとき、コンテナの動作（例えば、上塗りした数、線、アイコンの設定、テキストの編集）を設定する。
（コンテナに対する制約）
コンテナはそれぞれのドキュメントにおけるコンテンツの内容を表示するために、コンテナをコンテンツと結びつけて表示制御、レイアウト制御するための制約がある。これらの制約（固定・可変コンテンツをコンテナと結びつけること）は、ユーザが一つのドキュメントテンプレートから多数のドキュメントをコントロールする主要な方法である。制約の例は、たとえば、コンテナのコンテンツの高さは、最大値４インチとするような制約が挙げられる。もうひとつの制約としては、コンテナのコンテンツの左エッジは、それぞれのドキュメントで同じ水平位置で表示しなければならないとするような制約である。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集のために設定することが可能である。
【００４７】
イメージがページ上に定義された位置を持っているように、コンテンツの配置もその位置が特定される。コンテナは位置とサイズを持ち、それらはバリアブルデータ印刷において、コンテナ内に挿入されるコンテンツの内容に応じてコンテナのレイアウトが設定された条件の下、コンテンツの内容を表示・編集することを可能にする。コンテナは、ユーザにドキュメントのコンテンツのサイズ・位置を指定することを可能にする。いくつかのドキュメントは一つのドキュメントテンプレートから生成されるので、コンテナはユーザインターフェースモジュール１０３により与えられるコンテナに対する制約を指定することができる。
【００４８】
１つのコンテナを構成する辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。たとえば、矩形のコンテナの左辺は、関連付けられたコンテンツが配置される左側の位置を与え、同様に、コンテナの高さは生成されたドキュメントに関連付けられたコンテンツの高さの制約を与える。
【００４９】
以下の記載において、コンテンツの表示を制限するために使われるある値を定義している用語『固定』は、全てのドキュメントで同じである。
【００５０】
（１）コンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、全てのドキュメントで同じになる。
【００５１】
（２）コンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、全てのドキュメントで同じになる。
【００５２】
（３）距離の制約が固定なら、指定された距離は全てのドキュメントの制約となる。
【００５３】
（４）コンテナの左右辺が固定の場合、コンテナの高さあるいは垂直方向の位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている高さ方向あるいは垂直方向に変えることが可能である。
【００５４】
（５）コンテナの上下辺が固定の場合、コンテナの幅あるいは水平位置は、コンテンツを完全にコンテナ内に収容するために、コンテナサイズは変形が許容されている幅方向あるいは水平方向に変えることが可能である。
【００５５】
（６）コンテナの垂直軸はコンテナの右と左辺の平行で、そして中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、すべてのドキュメントで同じである。この制約で、コンテナの幅は変化するかもしれない、左右辺両方が異なったドキュメントで、垂直軸にもっとも遠いかもっとも近いかもしれない、しかし軸は全てのドキュメントで同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
【００５６】
（７）同様に、もし水平軸が固定なら、コンテナの上そして下辺が垂直に位置されることを制約する、けれども高さは、この制約によって影響されない。
【００５７】
（８）水平、垂直軸両方が固定なら、コンテナの中心位置が固定されていることを意味する、しかし、幅・高さはこの制約によって影響されない。
【００５８】
（９）コンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、すべてのドキュメントで同じ場所で、そしてコンテナに関連付けられた同じ場所で表示される。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が全てのドキュメントで同じになることを意味している。
【００５９】
（１０）垂直辺あるいは垂直軸は、ページの左辺もしくは右辺、あるいは左ページマージンもしくは右ページマージン、あるいは他の水平位置に関連付けされて固定することができる。同様に、水平辺あるいは水平軸はページの上辺もしくは下辺、あるいは上下ページマージン、あるいは他の垂直位置に関連付けされて固定することができる。
【００６０】
「固定」の反対は、コンテナの辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間（レコード間）で変化するかもしれないことを意味する「可変」である。例えば、ページ内では、バリアブルデータのサイズや量により、動的にレイアウトが変更されることを期待するが、特定のコンテナについては、大きさや位置を固定にしたり、また、ページの角のコンテナの四隅は固定にしたいということを所望する場合がある。そのため、本レイアウト編集アプリケーション１２１では、各コンテナ（部分表示領域）について、辺、軸、角、中間位置等を固定にするか、可変にするかを適宜設定できるようにした。これにより、ユーザはドキュメントテンプレート１８０の基本レイアウトを決定する場合に、ユーザが所望とするように基本レイアウトを作成することができる。
【００６１】
（コンテナ表示・編集）
（新規コンテナの作成方法）
コンテナは、テキストコンテナとイメージコンテナの2種類ある。テキストコンテナはテキスト、そして埋め込みのイメージを持つ。イメージコンテナは、イメージだけを持つ。図４で参照されるように、新規テキストコンテナとイメージコンテナは、テキストコンテナツールボタン４０４、あるいはイメージコンテナツールボタン４０５をマウス１３３でクリックし、テンプレート３０９に四角形をドラッグすることによって、ドキュメントテンプレート３０９上に作成される。コンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上でマウス１３３をクリックすることによって作成される。デフォルトサイズのコンテナが挿入されるか、新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが提供される。コンテナは自動的に前もって定義され、計算されたスキーマによって作成され、ドキュメントテンプレート３０９上に配置される。ここで生成されたコンテナをマウス等の入力手段により選択し、右クリックでプロパティを指示する等の操作を行うことにより、コンテナのプロパティダイアログが表示され、コンテナの制約を設定することができる。コンテナのプロパティダイアログＵＩ（部分表示領域設定手段に相当する）では、上述した各種の制約を設定することができる。また、コンテナのプロパティダイアログでは、コンテナのサイズ（幅、高さ）や位置を決定することができ、可変サイズにする場合は、コンテナの基本パターン（基本サイズと基準位置）を設定し、更に、最大コンテナサイズ（幅、高さ）と最小コンテナサイズ（幅、高さ）を設定することが可能となっている。
【００６２】
（コンテナの表示方法）
図５Ａ〜５Ｄはコンテナを構成する辺に対するルールを例示的に説明する図である。レイアウト編集アプリケーション１２１は、辺の状態を表現するために、塗りつぶし線（５０３）あるいは点線（５０４）で辺を描き、アンカー（辺の近くに描画された５０６、５０７、５０９によって示されるような線、形状、アイコン）、ハンドル（移動、修正するために辺、形の近くに描画されたコントロール点、５０２）、スライダー（辺の両サイドに描画された短い並行線、図４の４１３）、拡縮アイコン（５０５）、そして色を特徴として持っている。
【００６３】
図５Ａ〜５Ｄに示すコンテナの表示方法のルールは、つぎの通りである。
【００６４】
１. それぞれの辺を固定するために、塗りつぶし線で描画する。
【００６５】
２. もし幅が固定なら、左と右の辺を塗りつぶし線で描画する。
【００６６】
３. もし高さが固定なら、上と下の辺を塗りつぶし線で描画する。
【００６７】
４. 軸は描画しない。
【００６８】
５. まだ描画されていない全ての辺は、それぞれの辺の近くに拡縮アイコンが描画され、点線になる。
【００６９】
６. 垂直辺あるいは軸のそれぞれのペアで、もし両者が固定なら、交差点にアンカーが描画される。
【００７０】
７. それぞれの固定辺で、もし辺のどこにもアンカーが描画されていなければ、エッジの中央にスライダーが描画される。
【００７１】
８. 垂直辺あるいは軸のそれぞれのペアで、もしアンカーやスライダーが描画されていなければ、交差点にハンドルが描画される。
【００７２】
上述のルール１、２、３で定義された線は、前述したように固定あるいは制限されているため、実線で描画される。ルール５のように可変の辺は、点線で描画される。ルール６、７、８で定義された固定された点は、アンカーを表示し、いくつかの固定された辺はスライダーを表示し、他はハンドルを表示する。
【００７３】
上記のルールは、ユーザにより後で設定された制約が優先される。つまり、後で別の制約が設定された場合、上記のルールが描画されるべき辺に影響すれば、実線や点線の描画内容が変更されることになる。
【００７４】
可変の辺が描画される場所は、コンテナのコンテンツに依存する。後で記述されるように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェースで可視になることを意味する、『動的な校正処理』が使われる。代わりの実行手段としては、すべてのドキュメントで平均化されるコンテナのコンテンツエリア、あるいは可変の辺がユーザインターフェースで、どこにレイアウトされるべきか決定するほかの手段で使われることができる。レイアウト編集アプリケーション１２１は以上のルールに従って、コンテナの表示制御、レイアウト制御を実行することができる。
【００７５】
コンテンツの表現は、コンテナの辺に設定されたアンカーアイコン、スライダーアイコン等の設定に従い、サイズを可変にすることが可能なコンテナに挿入されることにより可視化される。コンテナに設定される具体的なアイコン及びコンテナを構成する辺は、以下に説明するように機能する。
【００７６】
図４の辺４１０のように、点線はコンテナに挿入されるコンテンツに依存して、ドキュメント内の辺の位置が移動可能であることを意味する。そして、実線４１４は位置が制限された辺を意味する。
【００７７】
アンカーは辺または軸が交差した場所が固定されていることを意味する。図４のアイコン４０９は、交差する辺４１４が固定されていることを示すアンカーアイコンの例である。
【００７８】
スライダーは関係付けられた辺が、その辺の垂直方向に固定されているが、並行移動する可能性があることを意味する。幅・高さのサイズは、レイアウト編集アプリケーション１２１の制御の下、副次的なダイアログウインドウに表示され、コンテナサイズとして許容される基本値・最小値・最大値の基本パターンを設定することが可能である。
【００７９】
図５Ａにおいて、コンテナ５０１を構成する実線で示される辺５０３は固定であり、点線で示される辺５０４は幅・高さ両方が可変である。拡縮アイコン５０５は、隣接する辺５０４が可変であることを示す。また、図５Ｂにおいて、コンテナ５０１を構成する実線で示される辺５０３は固定であり、同図において、アンカーアイコン５０６は、辺５０３が交差する高さ方向および幅方向に変位が拘束されることを示す。
【００８０】
図５Ｃでは、コンテナ５０１は、コンテナの拡大あるいは縮小が任意のアンカーアイコン５０７で示されるような中心点の周りに幅方向及び高さ方向に均等に広がるという状態に設定されており、幅・高さ両方が各辺において可変である。また、図５Ｄにおいて、コンテナ５０１は、上辺５０８に対してスライダ−アイコン５０９が設定されており、固定されているが、点線で示される辺５０２は幅及び高さの両方が可変である。この場合、アンカーアイコン５０９を通る中心軸（垂直軸）を基準として、辺５０２の左右方向、及び上下方向に変位をすることが可能であり、これによりコンテナのサイズを変えることが可能である。ここでの拡大／縮小は、アンカーアイコン５０７の位置が常にコンテナ５０１の中心点となるようにレイアウト調整される。
【００８１】
（リンクの設定方法）
図６はレイアウト編集アプリケーション１２１によるリンクの設定方法を示すフローチャートであり、図７はユーザインターフェースの画面表示例を示す図である。以下、図６、図７を用いてコンテナにリンクを設定する操作方法について説明をする。まず、リンクをコンテナに設定するためには、リンク設定の対象となるコンテナ（最低２つ）を作成する（Ｓ６０１）。図７（Ａ）は、２つのコンテナ７０１、７０２が作成された状態を示している。
【００８２】
次に、前述したリンクツールボタン（図４を参照）を選択した状態にする（Ｓ６０２）。ここで、図７（Ａ）のコンテナ７０１と７０２は、前述した図４のコンテナ４０７と４０８と同じ内容のものを示しており、固定されている辺（実線で示される）によりコンテナが構成されることを示している。また、アイコン７０３と７０４は、図４におけるアイコン４０９と同じアンカーアイコンであることを示し、７０５はマウスポインタを意味している。
【００８３】
ステップＳ６０２において、リンクツールボタン４０６の選択が完了すると、次に、コンテナを選択する（Ｓ６０３）。この選択は、リンクを設定する対象となるコンテナの片方（たとえば、７０１）をマウス１３３によりクリックすることでコンテナは選択される。次に、リンクを設定する他方のコンテナ（たとえば、７０２）をマウス１３３によりクリックすることで、リンクを設定する他方のコンテナの選択が完了する（Ｓ６０４）。
【００８４】
図７（Ｂ）の７０６はステップＳ６０３でマウス１３３をクリックした位置（Ｐ１）とステップＳ６０４でマウスをクリックした位置（Ｐ２）とを結ぶ、マウスポインタ１３３の概略的な軌跡を示す線分であり（図６のＳ６０５）、この線分が交わるコンテナの辺７１１及び辺７１２の間にリンク７０７が設定され、最終的にリンク７０７がコンテナ間に設定された状態のインターフェース画面が更新される（Ｓ６０６）。リンク７０７が設定されたことにより、コンテナを表示するための画面表示も自動的に切り替えられる。切り替えられた画面（図７（Ｃ））において、辺７０８は点線で示されている辺であり、前述した通り可変の辺を示している。固定の辺（リンク設定前の７１１、７１２が対応）から可変の辺に７０８が切り替えられたのは、リンク７０７を設定したことにより、コンテナ７０１、７０２の辺を可変にする必要があるためであり、リンク７０７を設定したにもかかわらず、全ての辺が固定とすると、コンテナ間の相対的な関係をリンクにより特定するという矛盾を防ぐためであり、レイアウト編集アプリケーション１２１の制御の下、自動的に行われる処理である。
【００８５】
また、７０９は図５の５０５と同様に機能し、リンク７０７を設定したことにより、コンテナ７０１、７０２が変位できる方向をユーザに視覚的に示す識別用の表示である。図７（Ｃ）の例では、左のコンテナ７０１の右辺と右のコンテナ７０２の左辺が可変に変化したが、これは一例であり、左のコンテナ７０１、右のコンテナ７０２が、図４の４１３で示したスライダーを持つ設定により辺７０８が可変であることを表示するようにすることもできる。以上の処理はレイアウト編集アプリケーションの制御のもとに実行することができる。
【００８６】
（可変長のリンク）
図４６のインターフェース画面において、一般的な可変リンク４６０９が示されている。同図においては、図４と同様にアプリケーションウィンドウ３０１とツールバー３０３があり、ドキュメントテンプレート３０９上にコンテナ４６０３とコンテナ４６０４が存在する。それぞれのコンテナは典型的にアンカーアイコン４６０１、アンカーアイコン４６０２と固定された辺４６０５、辺４６０６から成り立つ。各コンテナ４６０３と４６０４の間には可変サイズのリンク４６０９があり、それぞれのコンテナを結んでいる。コンテナ４６０３とコンテナ４６０４の間にはリンクが設定されているのでそれぞれの右辺４６０７と左辺４６０８は点線で表現されている。このため各コンテナにインジケーター４６１０、インジケーター４６１１が表示され、これは辺４６０７と辺４６０８が可変であることを示している。
【００８７】
また、図４８はリンク４６０９の情報がセットされているダイアログウィンドウ４８０１の例を示す図である。このダイアログは典型的にタイトルバー４８０２、ツールボタン４８０３、ダイアログウィンドウの開閉を行うボタン４８０４、各種の情報をセットするエリア４８０９で構成されている。このダイアログウィンドウではリンクタイプが可変長（４８０７）のリンクであるか、あるいは固定長（４８０６）のリンクであるかの択一的な選択が行える。可変長の場合、リンクの長さの最大値（４８１２）そして最小値（４８１０）、また基準値（４８１１）が設定できる。ここで各コンテナ間の距離の基準値４８１１は、データを流し込んだ際に各コンテナのサイズが変更されない場合に用いられるリンクの長さである。
【００８８】
図４７は自動レイアウトシステムにおける可変リンクを設定するフローチャートである。マウス１３３によりリンク４６０９をクリックし、選択する（Ｓ４７０２）。レイアウト編集アプリケーション１２１は、マウスの右クリックあるいはキーボードの特定のキーにより選択されたリンク４６０９のプロパティダイアログウィンドウ４８０１を表示する（Ｓ４７０３）。この状態ではリンクサイズは可変ではなく固定であるため、固定４８０６がリンクタイプ４８０５において選択されている。リンクを固定サイズから可変サイズに変更するために、リンクタイプ４８０５においてリンクサイズを可変に設定する可変４８０７を選択する（Ｓ４７０４）。これによりリンク間隔４８０８内に配置されている最大値４８１２、最小値４８１０、基準値４８１１が有効化され、数値の設定が可能となる。ここで、リンクの可変サイズを設定するために、そのリンクの長さの最大値を４８１２、最小値を４８１０、基準値を４８１１において設定する（Ｓ４７０５）。一般的なダイアログウィンドウ開閉ボタン４８０４によって設定を適用すると図４６のリンク４６０９のような状態にリンクのＵＩ表示が変化する。（Ｓ４７０６）このダイアログウィンドウ４８０１の設定情報はメモリに格納される。
【００８９】
図４９は固定サイズのリンクを使用した場合のレイアウト結果を示す図である。レイアウト編集アプリケーション１２１のレイアウトエンジンモジュール１０５におけるレイアウト計算方法は前述したとおりに従って行われる。例えば図４６においてコンテナ４６０３とコンテナ４６０４にそれぞれ違ったサイズのデータが挿入された時、それぞれのコンテナはデータの大きさを最適と考え、コンテナ４６０３は挿入されたイメージサイズになる枠４９０４（最適コンテナサイズ）に近づこうと右方向へ大きく、同様にコンテナ４６０４も挿入されたイメージサイズになる枠４９０５（最適コンテナサイズ）に近づこうと左方向へやや大きくサイズを変更しようとする。
【００９０】
しかしコンテナ４６０３とコンテナ４６０４の間には固定サイズのリンク４９０３が設定されているとすると、コンテナ４６０３とコンテナ４６０４はそれぞれアンカー４６０１とアンカー４６０２によってそれぞれ左辺４６１２と右辺４６１３は移動出来ないため、変更しようとするサイズがリンクサイズを上回ってしまう。そしてこのリンクサイズは固定されているためレイアウト計算時に優先的に計算されるためコンテナ４６０３（図４６）とコンテナ４６０４（図４６）のサイズが変更されることになる。その結果、コンテナ４６０３とコンテナ４６０４はデータに合わせた最適なサイズを確保することが出来ず、最終的に図４９のコンテナ４９０１とコンテナ４９０２のように最適なサイズに比べて枠４９０４、枠４９０５分小さくなってしまう。つまり、リンク４９０３のサイズは固定であるためコンテナ４９０１とコンテナ４９０２は最適サイズを達成していない。
【００９１】
図５０はリンクを可変サイズにした場合を示している。この場合、上記の例でコンテナ４６０３とコンテナ４６０４の間には可変サイズのリンク４６０９（図４６）が設定されているとすると、コンテナ４６０３とコンテナ４６０４のサイズが変更される際に、リンクサイズが縮まることでコンテナ４６０３とコンテナ４６０４のサイズが上記の例より大きくなることができ、挿入されるデータサイズに合わせた最適なサイズを達成し、あるいはより挿入データサイズ（最適サイズ）に近づけてコンテナの枠を計算することが出来る。その結果が、図５０のコンテナ５００１とコンテナ５００２である。可変リンク４６０９はレイアウト計算の結果、可変リンク５００３のサイズとなり、この場合コンテナ５００１とコンテナ５００２は変形が連動して、それぞれ最適なサイズ（データサイズに合った大きさ）になっている。以上の処理は、プロセッサユニット１３５、レイアウト編集アプリケーションの制御のもとに実行することができる。
【００９２】
（レイアウト計算方法（全体フロー））
本実施形態のレイアウト編集アプリケーションは、ユーザインターフェース１０３を用いてコンテナを作成し、そのコンテナ間に関連付け（リンク設定）を行ってレイアウトを作成するレイアウトモードと、レイアウトエンジン１０５により、作成したレイアウトにデータソースの各レコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レイアウトエンジン１０５が各コンテナにデータを挿入してレイアウトを計算するが、その際の計算方法はプレビューモードと同じである。図８はレイアウト計算のフローを示している。
【００９３】
まず、プレビューモードを選択する（Ｓ８０１）。自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行い、レイアウトを作成するレイアウトモードと、作成したレイアウトに表示するデータレコード（以下、「レコード」）を挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、レイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レコードを挿入してレイアウトを計算する。その際の計算方法も同じである。プレビューモードになったら、プレビューするレコードを選択して挿入する（Ｓ８０２）。レコードの挿入を行うと、そのレコードをレイアウトするためにレイアウト計算を行う（Ｓ８０３）。そして、処理ステップＳ８０３で計算されたレイアウトを表示し（Ｓ８０４）、他のレコードについてもプレビューを行うかどうかを判断する（Ｓ８０５）。処理ステップＳ８０５で、他のレコードについてプレビューを行う必要がないと判断した場合は（Ｓ８０５-Ｎｏ）、処理をステップＳ８０７に進め、プレビューモードを終了する。一方、ステップＳ８０５の判断で、他のレコードについてプレビューを行うのであれば、他のレコードを選択して再度レイアウト計算を行い（Ｓ８０３）、プレビューを行う（Ｓ８０4）。プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、処理Ｓ８０４は印刷時の処理においては必要がないステップである。ステップＳ８０５は印刷するレコードを全て処理したかの判断を行う。ステップＳ８０３でレイアウト計算された結果を、描画出力して出力し、プリンタドライバを用いて印刷データとして生成し、プリンタに印刷データが出力される。この場合、全てのレコード（印刷すべく指定された全レコード）について印刷データの出力が終了した時点で本処理を終了することになる。以上の処理は、プロセッサユニット１３５の制御のもとに実行することができる。
【００９４】
（レイアウト計算方法）
図９はレイアウト計算の詳細な処理の流れを説明するフローチャートであり、図１０はそのときのユーザインターフェース画面の表示例を示した図である。本図はレイアウト計算の処理方法についてのみ説明するためのフローチャートであるため、バリアブルデータプリントの１レコードの印刷／プレビュー時のレイアウト計算方法に相当する。複数レコードの場合は、下記の処理が繰り返されることになる。
【００９５】
まず、レイアウト編集アプリケーション１２１は、レイアウトを計算するコンテナの集合を求める（Ｓ９０１）。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば、図１１を参照すると、ページ上に４つのコンテナＡ，Ｂ、Ｃ、Ｄがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡ・Ｂが集合１、コンテナＣ・Ｄが集合２となる。そして、１１０１はアンカー、１１０２は固定された辺、１１０３はコントロール点、１１０４は可変の辺の変化方向を示している矢印、１１０５は可変の辺、１１０６はリンク、そして１１０７はスライダーを示している。
【００９６】
次に、レイアウト編集アプリケーション１２１は、ステップＳ９０１で求めたコンテナの集合から、レイアウトを計算するために一つの集合を選択する（Ｓ９０２）。そして、選択したコンテナの集合について、レイアウトの計算を行う。まず、選択したコンテナの集合に含まれる可変要素である２つのコンテナ（Ａ，Ｂ）について、流し込まれるデータの画像サイズもしくはテキスト量から各コンテナがなにも制約を受けない場合の大きさを計算する。具体的には、レイアウト編集アプリケーション１２１は、コンテナＡが画像データ用コンテナであるか、テキスト用コンテナであるかを判断する。この判断は、前述したように、コンテナに対して設定されている属性により判断できる。次に、レイアウト編集アプリケーション１２１は、コンテナＡに流し込まれるデータを読み込み、コンテナＡが画像データ用コンテナである場合は、その画像データのサイズ（幅、高さのピクセル数、および解像度）がコンテナＡの制約を受けない場合の大きさになる。また、コンテナＡがテキスト用コンテナである場合は、そのテキストデータも文字数と、コンテナＡのコンテナ属性で指定されているフォントタイプ、フォントサイズ、文字ピッチ、行ピッチなどの文字属性に基づいて、コンテナＡに流し込まれるべきデータ量が計算できる。ここで、テキスト用コンテナの場合は、コンテナＡの縦横比が制約を考えないと決定できないため、制約を当てはめる。図１１の例では、コンテナＡは、左上および左下の角にアンカーが設定されているため、高さ（縦方向）が固定となる。よって、レイアウト編集アプリケーション１２１は、コンテナＡの基本パターンとして設定されている幅（横方向）のコンテナＡに、計算したデータ量（テキスト量）の文字を流し込めるか否かを判断する。すべて流し込めると判断された場合は、コンテナＡは、基本パターンで設定されているサイズ（幅、高さ）に変更はない。また、すべて流し込めないと判断された場合は、コンテナＡは、アンカー設定により高さが固定であるため、横方向に伸びることになる。ここで、レイアウト編集アプリケーション１２１は、コンテナＡの幅がどれだけになると、計算したデータ量の文字を流し込めるかを計算し、コンテナＡのサイズを算出する。
【００９７】
次に、レイアウト編集アプリケーション１２１は、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（Ｓ９０３）。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウト編集アプリケーション１２１は、ステップＳ９０２で算出したコンテナの集合のサイズ、つまりコンテナＡとコンテナＢとリンク１５０６（ここでは固定リンク）の合計サイズを求め、この合計サイズと、基本レイアウトにおける当該コンテナの集合のサイズ（図１１の例ではコンテナＡとコンテナＢのそれぞれのアンカーアイコンの距離に相当する）との差を求める。コンテナＡやコンテナＢの幅が大きくなると前ステップで計算されている場合は、差分値が発生する。レイアウト編集アプリケーション１２１は、この差分値をコンテナの集合の各要素に均等に分配することでレイアウト調整を行う。
【００９８】
レイアウト編集アプリケーション１２１は、レイアウトの最適化を行い、最適化の計算において、ルール（コンテナに課せられる制限）に違反する場合は、再度ルールを違反しないようにコンテナサイズの計算をする（Ｓ９０４）。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、可変リンクの場合はリンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、ステップＳ９０２で選択した集合のレイアウトは完成する。そして、ステップＳ９０２〜Ｓ９０４のステップをページ上のすべてのコンテナの集合について施し、ページ全体のレイアウトを計算し（Ｓ９０５）、レイアウト計算の処理を終了する。
【００９９】
図１０はレイアウト計算時に示されるユーザインターフェース画面を例示する図である。図１０の（Ａ）は、あるレコードが挿入されレイアウトが決定されている状態を表している。１００１と１００２はアンカー、１００３と１００４は固定された辺、１００５は可変の辺、１００６は可変の辺の変化方向を示している矢印、１００８はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入すると、図１０の（Ｂ）の状態になる。図１０の（Ａ）の状態から可変の辺がどのように変位したかを２点鎖線で示している。そして、ルールを加味したレイアウト計算が行われる。図１０の（Ｃ）はレイアウト計算された結果を示している。計算後の各コンテナ１０１２、１０１３のサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように（変形が連動するように）計算され、且つ、前述したルールに違反しないように計算される。図１０の（Ｃ）で示されるように、図１０の（Ｂ）で示した挿入するコンテンツサイズ（ａ１ｂ１ｃ１ｄ１，ｅ１ｆ１ｇ１ｈ１）と計算後のコンテンツサイズ（ａ２ｂ２ｃ２ｄ２，ｅ２ｆ２ｇ２ｈ２）は、左右双方のコンテナにおいて同等な差異をもってコンテナサイズが計算される。以上の処理は、プロセッサユニット１３５、レイアウトエンジンモジュール１０５の制御のもとに実行することができる。
【０１００】
（コンテナの優先順位）
（設定方法）
図５６は、優先順位の設定処理の流れを説明するフローチャートであり、図５７〜図６０のユーザインターフェース画面の例とともに各ステップの処理を説明する。
【０１０１】
まず、レイアウト編集アプリケーション１２１は、図６０に示すように、ユーザに対して優先順位を設定するコンテナを選択するためのポップアップメニュー６００２を表示させ、優先順位設定が選択されると、優先順位設定画面を表示する（Ｓ５６０１）。図６０において、６００１はコンテナである、６００２はポップアップメニュー、６００３はマウスポインターを示している。このとき、図６０では、優先順位の設定はポップアップメニューで選択されているが、コンテナのプロパティダイアログなどで選択するようにしてもよい。
【０１０２】
次に、レイアウト編集アプリケーション１２１は、ステップＳ５６０１で選択したコンテナと関連付けされているコンテナを一つの集合として認識して（Ｓ５６０２）、優先順位を設定していく（Ｓ５６０３）。本自動レイアウトシステムは、関連付けされたコンテナ同士が、相互にコンテンツのサイズに合わせてレイアウトを計算して、最適化が行われる（レイアウト計算方法を参照）。優先順位は、関連し合うコンテナについて、計算する順番を指定していくものであり、関連付けされているコンテナを一つの集合として認識して、優先順位を設定していく。例えば、図５７ではテキストコンテナＡ，Ｄ，ＦとイメージコンテナＢ，Ｃ，Ｅがレイアウトされている。リンク（５７０１）によって、コンテナが関連付けられており、コンテナＡ，Ｂ，Ｃ，ＤとＥ，Ｆの２つの集合になっている。ここで、マウスポインタ（５７０２）でコンテナＡを選択して優先順位の設定を行うと、コンテナＡ，Ｂ，Ｃ，Ｄについて優先順位を設定することになる。
【０１０３】
次に、レイアウト編集アプリケーション１２１は、ステップＳ５６０１で表示された優先順位設定画面（図５８を参照）で、ユーザが設定した優先順位をコンテナに設定していく（Ｓ５６０４）。図５８は優先順位を設定するダイアログユーザインターフェース（ＵＩ）画面の例を示す図である。同図において、５８０１はダイアログ、５８０２は優先順位を示しているＵＩ，５８０３は優先順位を設定するコンテナが表示されるリストボックスである。ここには、ステップＳ５６０２で一つの集合と認識されたコンテナがすべて表示される。５８０４は優先順位を変更する矢印ボタン。５８０５は設定をキャンセルするキャンセルボタン、５８０６は設定を反映させるＯＫボタンである。５８０２のＵＩで示されるように、リストボックス（５８０３）で上に表示されているコンテナは優先順位が高く、下に行くにつれて優先順位が低くなる。計算されるレイアウト計算が行われる順番は上から順番になる。図５８では、テキストコンテナＡ、イメージコンテナＢ、イメージコンテナＣ、テキストコンテナＤの順に計算される。
【０１０４】
図５９は、コンテナに設定する優先順位を変更する手順を説明する図である。例えば、図５９（Ａ）の５９０１で示しているように、マウスポインターなどで優先順位を変更したいコンテナ名を選択し、優先順位を上げるのであれば、５９０２の上矢印ボタン、下げるのであれば、下矢印ボタンを押下する。ここでは、テキストコンテナＤを選択して、優先順位を上げる操作を行ったものとする。すると、図５９の（Ｂ）で示すように、テキストコンテナＤの優先順位が一つ上がり、イメージコンテナＣの優先順位が一つ下がる。優先順位の設定方法は、この方法に限らず、ここではコンテナＡ，Ｂ，Ｃ，Ｄと４つのコンテナについて優先順位を設定するので、各コンテナについて優先順位１番、２番と番号で指定する方法でもよい。以上の処理は、プロセッサユニット１３５の制御のもとに実行することができる。
【０１０５】
（表示方法）
図６１、図６２、図６３はそれぞれ設定したコンテナに設定した優先順位を視覚的にユーザに示すユーザインターフェース（ＵＩ）画面を例示する図である。図６１、６２はコンテナのレイアウト表示と優先順位の設定を別ウインドウで表示するＵＩ画面を示している。図６１、図６２において、６１０１は自動レイアウトアプリケーションウインドウを示している。このウインドウを構成するページエリア、ツールバーなどは図３と同じであり、その他はここでは省略してある。６１０２はマウスポインタ、６１０３、６１０４は優先順位が設定されているコンテナの集合である。そして、６１０５は優先順位を表示するプロパティパレットであり、６１０６はコンテナ名が表示されているリストボックスである。図６２においても同様に、６２０１はマウスポインタ、６２０２はリストボックスを示している。６１０５と６１０６および６２０２によって、コンテナの優先順位をユーザに視覚的に表示することができる。６１０６・６２０２には、優先順位の高い順に上からコンテナ名が表示される。図６１で示しているように、マウスポインタ（６１０２）をコンテナの集合（６１０３）上に置くと、その集合内のコンテナ（コンテナＡ，Ｂ，Ｃ，Ｄ、Ｅ）が、優先順位の高い順位表示される。ここでは、コンテナＢ，Ａ，Ｅ，Ｃ，Ｄの順で優先順位が高いことを示している。図６２で示すように、マウスポインタ６２０１を別のコンテナの集合へ移動させると、リストボックス６２０２の表示が更新され、コンテナＦ，Ｇ，Ｈが優先順位の高い順に表示される、ここではコンテナＦ，Ｈ，Ｇの順に優先順位が高い状態に設定されている。
【０１０６】
図６３は、図６１、図６２の表示方法とは別の形式によるＵＩ画面を例示する図であり、同図において、６３０１はページ領域を示しているページマージン、６３０２はマウスポインタ、６３０３はコンテナの優先順位を数字により示す表示部、６３０４は優先順位が設定してあるコンテナの集合である。図６３で示しているＵＩ画面は、マウスポインタ６３０２をコンテナ上に移動させると、そのコンテナと関連付けられている各コンテナに設定されている優先順位が数字６３０３で表示される。ここでは、マウスポインタをコンテナＢ上に移動させている、するとコンテナＢと関連付けられているコンテナＡ，Ｃ，Ｄ，Ｅに設定されている優先順位が各コンテナ上に表示される、数字が小さいほうが優先順位が高く、（１）が一番優先順位が高く、（５）が最も優先順位が低いコンテナを示す。従って、図６３ではコンテナＢ，Ａ，Ｅ，Ｄ，Ｃの順に優先順位が設定されている。以上の処理は、プロセッサユニット１３５、レイアウト編集アプリケーションの制御のもとに実行することができる。
【０１０７】
（レイアウト計算方法）
次に、優先順位が設定されたコンテナが含まれる場合のレイアウトの計算処理を図６４のレイアウト計算のフローチャートを参照しつつ説明する。
【０１０８】
まず、ステップＳ６４０１において、プレビューモードを選択する。自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行ってレイアウト作成するレイアウトモードと、作成したレイアウトにレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。
【０１０９】
このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算であるが、実際に印刷する場合においても、レコードを挿入してレイアウトを計算する際の計算方法も同様である。ステップＳ６４０１の処理でプレビューモードが起動したら、プレビューするレコードがデータベース１１９に格納されているデータソースから選択されプレビューが実行される（Ｓ６４０２）。
【０１１０】
レコードの選択が行われプレビューが実行されると、レイアウト編集アプリケーション１２１は、そのレコードをレイアウトするために計算を行う。その際に前述した優先順位がコンテナに設定されているかをチェックする（Ｓ６４０３）。ステップＳ６４０３のチェックで、優先順位が設定されているコンテナが存在すると判断された場合（Ｓ６４０３-ＹＥＳ）、「優先順位の設定あり」としてレイアウトを計算する（Ｓ６４０４）。この「優先順位あり」の場合のレイアウト計算方法については、後で詳細に記述する。
【０１１１】
ステップＳ６４０３の判断処理で優先順位が設定されているコンテナが存在しなかった場合（Ｓ６４０３-ＮＯ）、処理をステップＳ６４０５に進めてレイアウト編集アプリケーション１２１は、「優先順位なし」としてレイアウトを計算する。
【０１１２】
そしてステップＳ６４０６において、レイアウト編集アプリケーション１２１は、優先順位ありとしてレイアウト計算された結果（Ｓ６４０４）、または、優先順位なしとしてレイアウト計算された結果（Ｓ６４０５）をレイアウト表示する。そして、ステップＳ６４０７において、他のレコードについてもプレビューを行うかどうかを判断し、他のレコードについてプレビューを行う必要がないと判断した場合は（Ｓ６４０７-ＮＯ）、プレビューモードを終了する（Ｓ６４０９）。他のレコードについてプレビューを行うのであれば（Ｓ６４０７-ＹＥＳ）、他のレコードを選択して再度レイアウト計算を行い（Ｓ６４０４、Ｓ６４０５）、プレビューを行う（Ｓ６４０６）。
【０１１３】
プレビューモードでなく印刷時におけるレイアウト計算の場合は、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、レコードを移動させてレイアウト計算を行うためのステップＳ６４０７、Ｓ６４０８の処理は印刷時におけるレイアウト計算では不要となり、全てのレコードについて印刷が終了した時点で終了する。
【０１１４】
（優先順位が設定されたコンテナに対する具体的なレイアウト計算方法）
レイアウトの優先順位がコンテナに設定されていた場合のレイアウト計算処理の流れを図６５のフローチャートを参照しつつ説明する。また図６６、６７はそのレイアウト計算処理に従ってユーザに示されるＵＩ画面の表示例を示す図である。
【０１１５】
ここで、図６６の６６０１はコンテナＡを示し、６６０３はコンテナＡに設定されている優先順位を示し、６６０２はコンテナＢ（６６０４）とコンテナＣ（６６０５）の間に設定されているリンクを示している。なお、６６０３で示される優先順位は数が小さいほうが高いものとする。ここでは優先順位（１）、（２）、（３）に従い、コンテナＡ，Ｂ，Ｃの順にレイアウト計算がされる。図６７の（Ａ）の破線で示される領域６７０１はコンテナＡに挿入されるコンテンツのサイズを示している。６７０２はコンテナＡのレイアウト計算後のコンテナＡ´、破線で示される領域６７０３はコンテナＢに挿入されるコンテンツのサイズを示している。６７０４はコンテナＢのレイアウト計算後のコンテナＢ´を示し、６６０５はコンテナＣのレイアウト計算後のコンテナＣ´を示している。
【０１１６】
まず、図６５のステップＳ６５０１において、レイアウト計算するコンテナの集合を求める。そして計算を行う一つの集合を選択する（Ｓ６５０２）。この場合、コンテナの集合は各コンテナ間がリンク６６０２により関連付けされている図６６のコンテナＡ，Ｂ，Ｃが該当する。
【０１１７】
そして、レイアウト編集アプリケーション１２１は、レイアウトするコンテンツデータをデータベース１１９から取得する（Ｓ６５０３）。ここで記述したコンテンツデータは、コンテンツの内容、サイズ、量などである。プロセッサユニット１３５はＩ/Ｏインターフェース１３８を介してデータベース１１９より取得したコンテンツデータからコンテンツデータをそのコンテンツを挿入するコンテナに割り当てる（Ｓ６５０４）。
【０１１８】
次に、ステップＳ６５０５において、レイアウト編集アプリケーション１２１は、優先順位の一番高いコンテナを抽出する。図６７の（Ａ）では、コンテナＡの優先順位が一番高いので、コンテナＡが抽出される。そして、抽出されたコンテナＡについて、ステップ６５０４で割り当てられたコンテンツデータに基づいてレイアウト計算を行う（Ｓ６５０６）。ここで、図６７（Ａ）の６７０１はコンテナＡに割り当てられたコンテンツデータのサイズに対応する領域を示す。計算の方法は、現在計算の対象になっているコンテナＡより優先順位が低いコンテナ（Ｂ、Ｃ）にルールが違反しない限り影響を与えることが可能である。その代わり、レイアウト計算の対象となるコンテナより優先順位が高いコンテナ（例えば、コンテナＢから見て優先順位の高いコンテナＡ）には影響を与えることができない。図６７（Ａ）の場合、コンテナＡのレイアウト計算では、コンテナＡより優先順位の低いコンテナＢ，Ｃのコンテナサイズに関係なく、計算をすることが可能である。コンテナＢについては、コンテナＡのレイアウト計算結果の影響を受けることになるが、コンテナＢのレイアウト計算結果は、優先順位の低いコンテナＣに影響を与えることが可能である。最も優先順位の低いコンテナＣは、コンテナＡ、Ｂのレイアウト計算結果の影響を受けつつ、自己のコンテナに対するレイアウト計算が実行されることになる。
【０１１９】
次に処理をステップＳ６５０７に進め、レイアウト編集アプリケーション１２１は、ステップ６５０６で計算されたレイアウト計算の結果より、コンテナのサイズと位置を決定する。そして、ステップＳ６５０７で決定したコンテナのサイズと位置を確定する（Ｓ６５０８）。図６７（Ｂ）の６７０２は、コンテナＡについて、計算が終了してサイズ・位置が確定された後のコンテナを示している。
【０１２０】
ステップＳ６５０９では、レイアウト編集アプリケーション１２１は、選択された集合内の全てのコンテナＡ，Ｂ、Ｃについて計算が終了したかどうかを確認する。全てのコンテナＡ，Ｂ、Ｃについて終了していなければ（Ｓ６５０９-ＮＯ）、計算したコンテナの次に優先度の高いコンテナを抽出し（Ｓ６５１０）、そのコンテナについてステップＳ６５０６〜Ｓ６５０８の処理を実行する。図６７の（Ｂ）の状態では、コンテナＡの計算が終了したあと、次に優先順位が高いコンテナＢについてコンテナサイズの計算、位置の決定等の処理が実行される。図６７の（Ｂ）において、６７０３はコンテナＢに割り当てられたコンテンツデータのサイズ（コンテンツサイズ）に対応する領域を示す。このコンテンツサイズに基づいてコンテナＢに対するレイアウト計算が行われるが、コンテナＢの優先順位はコンテナＡより優先順位が低いため、計算結果は、すでに前ステップでコンテナＡのサイズと位置は確定されているために、コンテナＡのレイアウト結果に影響を与えることができないことになる。
【０１２１】
したがって、コンテナＢのレイアウト計算はコンテナＡに影響を与えない範囲でコンテナサイズを計算しなければならないという拘束条件が課せられることになる。図６７（Ｂ）の６７０３で示すように、実際コンテナＢに挿入されるコンテンツのサイズはコンテナＡ´と重なってしまっている。そのため、計算結果が確定したコンテナＡ´に重複しないようにコンテナＢのレイアウトは実際のサイズより縮小して計算されることになる。コンテナＢについて計算が終了し、サイズと位置が確定したコンテナＢ´が図６７（Ｃ）の６７０４に示される。
【０１２２】
コンテナＢについてレイアウト計算が終了した後、次にコンテナＢより優先度が低いコンテナＣが抽出され（図６５のステップＳ６５１０）、コンテナＣについてレイアウト計算が行われる（Ｓ６５０６〜Ｓ６５０８）。しかし、図６７の例では、コンテナＣは集合内で一番優先順位が低いコンテナであり、そのコンテナについて計算するときは、その他全ての優先順位の高いコンテナ（Ａ、Ｂ）について、コンテナサイズと位置が確定されているため、コンテナＣのレイアウト計算結果を他のコンテナ（Ａ，Ｂ）に与えるようにレイアウト計算をすることができない。したがって、一番優先順位が低いコンテナがステップ６５１０で抽出されたときには、すでにそのコンテナのサイズ・位置も確定されていることになる。一番優先順位が低いコンテナについてもステップ６５０６〜６５０８で計算を行うが、他の優先順位の高いコンテナの計算結果に従いに実質的には確定してしまっていることになる。そして、集合内全てのコンテナについて、レイアウト計算が終了したら（Ｓ６５０９-ＹＥＳ）、ページ内にまだ計算していない集合があるかを確認する（６５１１）。まだ計算していない集合がある場合（Ｓ６５１１-ＮＯ）はステップ６５０２へ処理を戻し、レイアウト編集アプリケーション１２１は、前述した方法でレイアウト計算を行う。全ての集合について計算が終了しているのであれば、レイアウト編集アプリケーション１２１は、データベースからバリアブルデータのコンテンツを読み込み、計算されたコンテナに該コンテンツを流し込み（Ｓ６５１２）、処理を終了する。以上の処理は、プロセッサユニット１３５、レイアウト編集アプリケーション（ユーザインターフェースモジュール１０３、レイアウトエンジンモジュール１０５）の制御のもとに実行することができる。
【０１２３】
（リンクの自動設定）
次に、本発明の特徴であるリンクの自動設定に関する内容について説明する。図１２の（Ａ）はリンクの自動設定に関するＵＩ画面を例示する図である。１２０１はアプリケーションウインドウを示し、１２０２はコンテナ、１２０３はコンテナ間に設定されているリンク、１２０４はマウスポインタを示している。また、本実施形態でコンテナの位置について記述があるが、ドキュメント内左上を原点１２０５として、Ｘ方向は右側へ、Ｙ方向は下側へ増加していくことと定義する（図１２の（Ｂ）を参照）。コンテナの位置情報はそれぞれコンテナの各コーナー部の位置座標（（Ｘ１、Ｙ１）、（Ｘ２、Ｙ２）（Ｘ３、Ｙ３）等）により記述することができ、ドキュメントテンプレート３０９にレイアウトされている複数のコンテナ間の位置関係は、基準となるコンテナの位置座標情報と、他のコンテナとの位置座標情報と、を求めることにより相対的な位置関係を求めることが可能になる。
【０１２４】
図１６はリンクの自動設定の全体的な流れを説明するフローチャートである。まず、ステップＳ１６０１において、レイアウト編集アプリケーション１２１は、リンク設定を一括に行うコンテナが指定されたかを判断する。コンテナの設定は、ユーザによって任意に指定することが可能であるが、何も指定しなければ（Ｓ１６０１-ＮＯ）、ページ上の全コンテナが選択されたことになる（Ｓ１６０３）。一方、レイアウト編集アプリケーション１２１は、複数のコンテナが指定されたと判断した場合（Ｓ１６０１-ＹＥＳ）、処理をステップＳ１６０２に進め、プロセッサユニット１３５はユーザによって選択された複数のコンテナを認識する（Ｓ１６０３）。
【０１２５】
そして、プロセッサユニット１３５及びユーザインターフェースモジュール１０３による制御の下、認識したコンテナをユーザに視覚的に示すためにＵＩ画面を変更する（１６０４）。図１３は複数のコンテナＦ，Ｇ，Ｈを選択するＵＩ画面の例を示す図である。マウスポインタ１３０３等の指示入力手段によって、矩形１３０２をドラッグして矩形１３０２内に複数コンテナを入れることによって、矩形内のコンテナを複数個選択することが可能である。また、複数個のコンテナの選択はこの方法に限らず、選択しようとするコンテナを個別にマストポインタ１３０３によりドラッグして指定するようにしてもよい。
【０１２６】
図１４Ａは、図１３で説明した操作によりコンテナＦ，Ｇ，Ｈが選択されたことをユーザに示すためにＵＩ画面が切り替えられた状態を示す図である。図１４Ａでは、コンテナＦ，Ｇ、Ｈに対して、選択されたことを示す表示（図１４Ａの例ではハッチングを付して示している）１４０２が表示される。
【０１２７】
図１４Ｂは、図１４Ａのように矩形領域によりコンテナを複数指定するのではなく、マウスポインタ１３０３でコンテナを押下する（指定する）ことによる複数のコンテナの選択の例を示している。この方法では、図１４Ａで説明したように矩形領域による選択するでは選択することができないコンテナの配置（部分的に選択しないコンテナが含まれるような配置）のコンテナを複数選択することができる。
【０１２８】
選択されたコンテナは図１４Ａの場合と同様に選択されたことを示す表示５１０２が表示される。
【０１２９】
説明を図１６に戻し、ステップＳ１６０５において、レイアウト編集アプリケーション１２１は、選択された複数のコンテナ間にリンクを一括に設定する。このステップでは、リンクを一括で設定したことによって、レイアウトがリンクに設定されているルールに違反しないようにコンテナの設定を変更するステップも含まれるものとする。複数のコンテナが選択された状態で、図１４Ａに示すようなリンクツールボタン１４０３をマウスポインタで押下することによって、図７３のようなリンク作成方向ＵＩが表示される。本実施例では一括にリンクを設定する設定方向モードとして、以下の３つを含む。まず、第１リンク設定方向モードは７３０２の「Ｘ方向にリンク設定」であり、ユーザによって選択されたことを、レイアウト編集アプリケーション１２１が認識した場合、Ｘ方向にリンクが一括設定されることとなる。また、第２リンク設定方向モードは７３０３の「Ｙ方向にリンク設定」であり、ユーザによって７３０３が選択されたことを認識した場合、Ｙ方向にリンクが一括設定される。第３リンク設定方法モードは７３０４の「ＸおよびＹ方向にリンク設定」であり、ユーザによって７３０４が選択されたことを認識した場合、ＸおよびＹ方向にリンクを一括設定することとなる。
【０１３０】
リンクの一括設定は、ダイアログを別途表示して設定の有無をユーザに確認させるようにしてもよい。その場合は、ユーザの確認の入力があったときにリンクの一括設定が行われる。図１５は複数選択されたコンテナＦ，Ｇ，Ｈ間にリンクが一括で設定された状態を示す図である。リンクの一括設定により、コンテナＦ，Ｇ，Ｈの間にはリンク１５０２が設定される。このリンク設定のための具体的な内容は、後の詳述する。つぎに、本処理は、バリアブルデータを読み込んで、各コンテナに流し込み、自動レイアウトした結果をプレビューするプレビュー処理中にレイアウトの編集が行われている場合は、設定されたリンク１５０２の状態を考慮してレイアウト計算を行う（Ｓ１６０６）。このレイアウト計算については、図９，１０で説明した内容と重複するため説明は省略する。また、単に基本レイアウトの編集中であり、プレビュー表示や印刷要求を受けていない場合は、ステップＳ１６０６の処理は行われない。
【０１３１】
（リンクの一括作成）
図１７はリンクの一括作成の処理の流れを概略的に説明するフローチャートである。以後の説明では、矩形領域で複数のコンテナが選択された場合を例として処理の内容を説明するが、ただし、ページ内の全コンテナを選択した場合でも、マウスポインタで個別に複数コンテナを選択した場合も同じ手法で処理を行うことは可能である。
【０１３２】
まず、ステップＳ１７０１において、レイアウト編集アプリケーション１２１は、図１６のステップＳ１６０２で認識しているユーザにより選択されたコンテナの位置情報及びコンテナの個数（ConNum）を取得する。次に、レイアウト編集アプリケーション１２１は、選択されたコンテナの個数を記憶装置１３９（１４０、１４１）またはメモリユニット１３６に格納する（Ｓ１７０２）。そして、レイアウト編集アプリケーション１２１は、選択されたコンテナに対して、Ｘ方向に隣接する位置にコンテナが配置されている場合はＸ方向のリンクの作成を行う（Ｓ１７０３）。次に、Ｙ方向に隣接する位置にコンテナが配置されている場合は、レイアウト編集アプリケーション１２１は、Ｙ方向のリンクの作成を行う（Ｓ１７０４）。最後に、レイアウト編集アプリケーション１２１は、作成されたリンクによって、コンテナのレイアウトに関するルールが違反しないように、コンテナの設定（アンカーの設定等）を自動変更する（１７０５）。
【０１３３】
以上の各ステップ（Ｓ１７０１〜Ｓ１７０５）の具体的な処理を、以下図１８等の図面を参照しつつ説明する。尚、リンクの一括作成に関する処理は、レイアウト編集アプリケーション１２１に基づきプロセッサユニット１３５の全体的な制御の下、実行することが可能である。
【０１３４】
（コンテナの位置情報取得）
図１８はコンテナの位置情報を取得する処理の流れを説明するフローチャートである。まず、レイアウト編集アプリケーション１２１は、選択したコンテナに任意に順番を設定する（Ｓ１８０１）。この処理は、全てのコンテナについて位置情報を取得するために、順番を設定するものである。次に、レイアウト編集アプリケーション１２１は、変数iに１を代入して変数の初期化を行う（Ｓ１８０２）。この変数ｉはコンテナに設定された番号と対応し、この変数ｉにより各コンテナが対応付けられることになる。そして、i番目のコンテナについて、プロセッサユニット１３５は、まず、Ｘ方向について選択されているコンテナの位置情報を取得し（Ｓ１８０３）、次に、Ｙ方向について位置情報を取得する（Ｓ１８０４）。そしてプロセッサユニット１３５は、取得した情報を記憶装置１３９（１４０、１４１）またはメモリユニット１３６に格納する（Ｓ１８０５）。次に、レイアウト編集アプリケーション１２１は、変数iをインクリメントして、次のコンテナのＸ方向の位置情報（Ｓ１８０３）、Ｙ方向の位置情報を取得して（Ｓ１８０４）、データを格納し（Ｓ１８０５）、選択した全てのコンテナについてデータの取得と格納が終了するまで、以上の処理を繰り返す。選択した全てのコンテナに対して、処理が終了した場合（Ｓ１８０７-ＹＥＳ）、処理を終了する。
【０１３５】
（リンクの作成）
図１９Ａ，ＢはＸ方向のリンクの作成処理の流れを説明するフローチャートである。リンクの作成は、隣接するコンテナを抽出し、そのコンテナ間にリンクを設定する。ここで隣接するコンテナは、コンテナ間の距離が最小であることを意味しており、最小であるコンテナが複数見つかった場合は、リンクを複数設定する。
【０１３６】
まず、ステップＳ１９０１で、レイアウト編集アプリケーション１２１は、リンク設定の基準となるコンテナを設定し（この場合はコンテナ２１０４）、このコンテナ２１０４の左辺のＸ座標を基準として、コンテナ間の相対的な位置関係を求め、Ｘ方向の間隔の小さい順にコンテナの番号をリンク作成用に設定する。この順番の設定は、図２１Ａの２１６０に示すように、コンテナ２１０４の左辺のＸ座標を基準として、各コンテナのＸ方向の距離の小さい（Ｘ１＜Ｘ２）、コンテナ２１０５に順番（２）が設定され、この次にＸ方向の距離の小さいコンテナである２１０６に順番（３）が設定される。以下、同様に選択された全てのコンテナに対して、Ｘ方向の距離に従い、順番が設定される。この場合、同じＸ方向の位置に複数のコンテナがレイアウトされる場合は、Ｙ方向の距離の関係を求め、Ｙ方向の距離が小さいコンテナを早い順番に設定する。図２１Ａの２１５０は、コンテナに対して、リンク設定のための順番付けが完了した状態を示す図である。
【０１３７】
なお、本実施例ではコンテナの左辺が左上にあるコンテナに対して１番目と順番が設定されるが、これに限ることはなく、例えば右上、右下方向などから順番を設定するようにしても構わない。
次に、処理をステップＳ１９０２に進め、レイアウト編集アプリケーション１２１は、変数ｎに１を代入する。ステップＳ１９０３で、レイアウト編集アプリケーション１２１は、Ｘ方向に隣接するコンテナの番号（ステップ１９０１で設定した順番）を格納するＣｏｎｔＸ[  ]を用意し、この値を０で初期化をする。
【０１３８】
次に、ステップＳ１９０４において、レイアウト編集アプリケーション１２１は、Ｘ方向の距離の最小値を格納するＤｉｓｔＸ＿Ｍｉｎを用意し、初期値にページ幅を代入する（１９０４）。
【０１３９】
そして、ステップＳ１９０５において、レイアウト編集アプリケーション１２１は、隣接するコンテナをチェックするための変数iにｎ＋１を代入する。これは、ステップＳ１９０１でＸ方向の距離が小さい順に順番を設定しているため、隣接しており、かつ、リンクを設定する必要があるコンテナは、自身コンテナ（図２１Ａの場合は、コンテナ２１０４が対応する。）より順番が後のものになる。したがって、ステップＳ１９０５の処理は、チェックするコンテナをｎ＋１番目からになるように変数を制御するためである。
【０１４０】
次に、処理を図１９ＢのフローチャートのステップＳ１９０６に移行して、ｎ番目のコンテナとi番目のコンテナのＹ方向の位置が重なるかどうかをチェックする。本実施形態におけるリンクの一括設定では、作成されるリンクは、コンテナ同士が同じ水平方向または垂直方向にあるということを前提にしている。従って、Ｘ方向のリンクについてはステップ１９０６のチェックを行い、コンテナ同士が水平方向にレイアウトされているかを判断する。例えば、図２１Ａの２１６０において、コンテナ２１０４と、コンテナ２１０５とのＹ方向の距離はＹ１であり、コンテナ２１０４と、コンテナ２１０６のＹ方向の距離はＹ２である。
【０１４１】
ステップＳ１９０６の判断で、Ｙ方向の位置が重なると判断された場合（Ｓ１９０６-ＹＥＳ）、処理をステップＳ１９０７に進め、レイアウト編集アプリケーション１２１は、n番目のコンテナとi番目のコンテナのＸ方向の位置の差を計算して、結果をＤｉｓｔＸに代入する。
【０１４２】
次に、処理をステップＳ１９０８に進め、レイアウト編集アプリケーション１２１は、前ステップで計算されたＤｉｓｔＸと、最小の距離が格納されているＤｉｓｔＸ＿Ｍｉｎとを比較する。もし、ＤｉｓｔＸが最小値（ＤｉｓｔＸ＿Ｍｉｎ）よりも小さいのであれば（Ｓ１９０８-ＹＥＳ）、処理をステップＳ１９０９に進め、レイアウト編集アプリケーション１２１は、ＣｏｎｔＸ[]を０で初期化し、変数ｋに０を代入する。
【０１４３】
そして、距離が最小であったコンテナの番号をＣｏｎｔＸ[ｋ]に代入する（１９１０）。
【０１４４】
一方、ステップ１９０８でＤｉｓｔＸが最小値よりは小さくなかった場合（Ｓ１９０８-ＮＯ）、処理をステップＳ１９１１に進め、レイアウト編集アプリケーション１２１は、さらに比較を行いＤｉｓｔＸとＤｉｓｔＸ＿Ｍｉｎが一致するかどうかを判断する（Ｓ１９１１）。もし一致するのであれば（Ｓ１９１１-ＹＥＳ）、そのコンテナ番号をＣｏｎｔＸ[ｋ]に代入して、ｋに１を加算する。
【０１４５】
ステップ１９１０を処理した後、あるいは、Ｓ１９１１でＤｉｓｔＸが最小値よりも大きいと判断された場合や、ステップ１９０６でi番目のコンテナがＹ方向に重なっていない場合は、レイアウト編集アプリケーション１２１は、次のコンテナをチェックするために変数iをインクリメントする（Ｓ１９１２）。
【０１４６】
ステップＳ１９１３では、レイアウト編集アプリケーション１２１は、選択されているコンテナすべてについてチェックを行ったかどうかを判断し、まだ行っていなければ、ステップＳ１９０６へ進み処理を繰り返す。全てについてチェックが終了した場合は、検出された隣接するコンテナへリンクを設定する処理を行う（Ｓ１９１４）。この処理については後述する。
【０１４７】
そして、リンク設定の処理が終了したら、変数ｎをインクリメントし（Ｓ１９１５）、選択された全てのコンテナについて、これまでの処理が行われたかどうかを判断し、まだ行われていなければ、ステップＳ１９０３に進み処理を繰り返す（Ｓ１９１６）。全てについて処理が終了していれば処理を終了する。
【０１４８】
図２０は、図１９Ｂのステップ１９１４のリンク設定処理の流れを説明するフローチャートである。まず、ステップＳ２００１において、ＣｏｎｔＸ[０]が０であるかどうかを判断する。もし、０であるならば（Ｓ２００１-ＹＥＳ）、隣接したコンテナが検出されなかったことを意味するので、リンクの設定処理は行わずに終了する。
【０１４９】
一方、ＣｏｎｔＸ[０]が０でなかった場合は（Ｓ２００１-ＮＯ）、ｋに０を代入する（Ｓ２００２）。そして、ｎ番目のコンテナとＣｏｎｔＸ[ｋ]番目のコンテナ間にＸ方向のリンクを設定する。リンクを設定したら、ｋをインクリメントして（Ｓ２００４）、ＣｏｎｔＸ[ｋ]をチェックする（２００５）。ＣｏｎｔＸ[ｋ]が０になるまで、格納されている全てのコンテナについてリンクの設定を行う。ＣｏｎｔＸ［ｋ］が０になったら、リンクの設定処理を終了する。  
図２１Ａ、ＢはＸ方向のリンク設定を説明する図である。図２１Ａにおいて、２１０１，２１０２は選択外のコンテナを示し、２１０３は複数のコンテナを指定する矩形領域、２１０４〜２１１１はリンクの一括処理を行うように選択されたコンテナを示し、２１１２はマウスポインタを示している。コンテナ内の番号は、図１９のステップ１９０１でコンテナに順番を付けられた番号である。番号はＸ方向の位置の小さい順に設定されており、２１０４，２１０５，２１０６，２１０７，２１０８，２１０９，２１１０，２１１１の順に番号が設定されている。ここで、リンク設定ツールボタン２１１３を押下すると、リンクが設定される。図２１Ｂの２１１４〜２１１７は設定されたＸ方向のリンクを示しており、各コンテナのＸ方向に対して最小距離にあるコンテナ間にリンクが設定されている。
【０１５０】
なお、図２１Ａ、および図２１Ｂのフローチャートにおいては各コンテナのＸ方向に対して最小距離にあるコンテナ間にリンクを設定することを記載したが、最小距離に限らない場合の処理の流れについて図６８に記載する。なお、基本的な処理の流れは上記した図１６とほぼ同様であるので異なる点のみを記載する。
【０１５１】
まず、図６８におけるＳ６８０１〜Ｓ６８０４は同様の処理であるため説明を省略する。レイアウト編集アプリケーション１２１は、マウス等により、ある特定の指示がされた場合（例えば右クリックなど）、図６９に示すようなリンク設定ＵＩをディスプレイ装置１４４に表示する（Ｓ６８０５）。図６９はリンク設定モードを選択するためのＵＩ図であり、リンク設定ＵＩ６９０１には図示するように第１設定モードとしての「基準コンテナと最短コンテナにリンク設定」と、第２設定モードとしての「基準コンテナとＸまたはＹ方向に交わるコンテナに設定」とが記載されており、ユーザがどちらかのリンク設定方法を選択したことを認識することにより、次のステップへと進む。「基準コンテナと最短コンテナにリンク設定」は上述したリンク設定方法のことを指すので、「基準コンテナとＸまたはＹ方向に交わるコンテナに設定」が選択された場合の処理について記載する。ここで、「基準コンテナとＸまたはＹ方向に交わるコンテナに設定」について、図７２を用いて具体的に説明する。上述した「基準コンテナと最短コンテナにリンク設定」の場合、図７２においてコンテナ７２０１乃至７２０３がリンク設定対象であり、コンテナ７２０１を基準としてリンクを生成する場合、コンテナ７２０３はコンテナ７２０１との最短距離に位置していないためリンク７２０５が設定されることがなかったが、「基準コンテナとＸまたはＹ方向に交わるコンテナに設定」が選択された場合、コンテナ７２０１とＹ方向で交わるコンテナ７２０２に対してリンク７２０４が設定され、７２０３に対してリンク７２０５が設定されることとなる。
【０１５２】
レイアウト編集アプリケーション１２１は、図６９におけるリンク設定ＵＩにおいて設定方法を選択し、「ＯＫ」ボタンが押されたことを認識すると、該選択されたコンテナ間にリンクを設定する（Ｓ６８０６）。なお、Ｓ６８０６〜Ｓ６８０９に関しても図１６におけるＳ１６０５〜Ｓ１６０６の処理と同様であるためここでは説明を省略する。
リンクの一括作成およびコンテナの位置情報取得についての詳細は、上述した図１７および図１８の処理と同様であるためここでは省略する。
【０１５３】
続いて、「基準コンテナとＸまたはＹ方向に交わるコンテナに設定」におけるリンク作成フローを図７０Ａおよび図７０Ｂを用いて説明する。
【０１５４】
なお、Ｓ７００１〜Ｓ７００５は、Ｓ１９０１〜Ｓ１９０３およびＳ１９０５〜Ｓ１９０６と同様の処理であるため詳細については省略する。
【０１５５】
レイアウト編集アプリケーションは、Ｓ７００５において、ｉ番目のコンテナはｎ番目のコンテナのＹ方向の位置と重なると判定した場合、ｎ番目のコンテナとｉ番目のコンテナの間に他のコンテナがあるか否かを判定する（Ｓ７００６）。詳細には、図１８の処理により各コンテナの位置情報を記憶装置１３９またはメモリユニット１３６に格納しているので、レイアウト編集アプリケーション１２１が参照することにより、判定可能である。
【０１５６】
Ｓ７００６の判定の結果、ｎ番目のコンテナとｉ番目のコンテナの間に他のコンテナがないと判定した場合、ｎ番目のコンテナとリンクを用いて関連付けるためにＳ７００８へ進む。しかし、Ｓ７００６の判定の結果、間に他のコンテナがあると判定した場合、レイアウト編集アプリケーション１２１は、レイアウト編集アプリケーション１２１がｉ番目のコンテナとｎ番目のコンテナを直接的にリンクを設定できるか否かを判定する（Ｓ７００７）。詳細には、各コンテナサイズの情報は図１８の処理により各コンテナの位置情報を記憶装置１３９またはメモリユニット１３６に格納しているので、レイアウト編集アプリケーション１２１が参照することにより、判定可能である。
【０１５７】
Ｓ７００７は、ｎ番目のコンテナとｉ番目のコンテナが他のコンテナを介することなく直接的にリンクを設定することができる場合に、Ｓ７００８へ進むことを指し、具体的には図７１において５番目のコンテナと８番目のコンテナはＹ方向の位置が重なると判定することができるが、５番目のコンテナと８番目のコンテナの間に７番目のコンテナがあり、５番目のコンテナから８番目のコンテナへは７番目のコンテナを介して、間接的にしかリンクを設定することができない。このような場合、５番目のコンテナから８番目のコンテナに対してリンクは設定されない。また、４番目のコンテナと８番目のコンテナはＹ方向の位置が重なっており、間には７番目のコンテナがある。しかし、８番目のコンテナのＹ方向は７番目のコンテナに対して垂直方向にはみ出しており、４番目のコンテナから８番目のコンテナに対して、間にある７番目のコンテナを介することなく直接的にリンクを設定することができるためリンク７１０２が生成されることとなる。
【０１５８】
なお、Ｓ７００８からＳ７０１３の処理は図１９におけるＳ１９１０〜Ｓ１９１３の処理と同様であるため詳細については省略し、図７０ＢのＳ７０１１の処理については図１９ＢのＳ１９１４を説明した図２０の処理の流れと同様であるため、ここでは詳細について省略する。
【０１５９】
図７１は、Ｘ方向のリンク設定を説明する図である。なお、図７１は図２１Ｂと基本的に同じであるため異なる点のみを記載する。図２１Ｂでは５番目のコンテナとＸ方向の最短距離に位置する６番目のコンテナにのみリンク２１１６が設定されていたが、図７１では、５番目のコンテナと７番目のコンテナはＸ方向の最短距離に位置されていないが、リンク７１０１が設定されている。これは、図６９のリンク設定ＵＩにより「基準コンテナとＸまたはＹ方向に交わるコンテナに設定」を選択したため、７番目のコンテナは基準コンテナ（５番目のコンテナ）のＹ方向と交わっていることによりリンク７１０１が設定されることとなる。さらに、図２１Ｂでは４番目のコンテナと８番目のコンテナはＸ方向の最短距離に位置していないため、リンクが設定されなかったが、図７１では、リンク７２０２が設定されている。これは、両者の間には７番目のコンテナが存在するが、８番目のコンテナは基準となるコンテナ（４番目のコンテナ）とＹ方向で交わり、さらに７番目のコンテナのＹ方向の位置をＹ方向にはみ出しているため、４番目のコンテナから８番目のコンテナに対して直接的にリンクを設定することが可能である。よってリンク７１０２が設定されることとなる。
【０１６０】
図２２Ａ，ＢはＹ方向のリンクの作成フローを示している。各ステップについては、方向が変化するのみで、Ｘ方向の処理（図１９Ａ、Ｂ）とほぼ同じ処理である。
【０１６１】
まず、レイアウト編集アプリケーション１２１は、順番が設定されたコンテナをＹ方向の位置について小さい順番に、Ｙ方向のリンクを作成するための順番を設定する（Ｓ２２０１）。このとき、同じＹ方向の位置のコンテナがあった場合は、Ｘ方向の距離が小さいコンテナを早い順番に設定する。次に、ｎに１を代入する（Ｓ２２０２）。そして、レイアウト編集アプリケーション１２１は、Ｙ方向に隣接するコンテナの番号（ステップＳ２２０１で設定した順番）を格納するＣｏｎｔＹ[]を用意し、これを０で初期化をする（Ｓ２２０３）。また、Ｙ方向の距離の最小値を格納するＤｉｓｔＹ＿Ｍｉｎを用意し、初期値にページ幅を代入する（Ｓ２２０４）。次に、隣接するコンテナをチェックするための変数iにｎ＋１を代入する（２２０５）。
【０１６２】
次に、処理を図２２ＢのステップＳ２２０６に移行して、レイアウト編集アプリケーション１２１は、ｎ番目のコンテナとi番目のコンテナのＸ方向の位置が重なるかどうかをチェックする（Ｓ２２０６）。ステップ２２０６で重なると判断された場合（Ｓ２２０６-ＹＥＳ）、レイアウト編集アプリケーション１２１は、n番目のコンテナとi番目のコンテナのＹ方向の位置の差を計算して、その結果をＤｉｓｔＹに代入する（Ｓ２２０７）。
【０１６３】
そして、レイアウト編集アプリケーション１２１は、前ステップで計算されたＤｉｓｔＹと最小の距離が格納されているＤｉｓｔＹ＿Ｍｉｎとを比較する（Ｓ２２０８）。もし、ＤｉｓｔＹが最小値よりも小さいのであれば、処理をステップＳ２２０９に進め、レイアウト編集アプリケーション１２１は、ＣｏｎｔＹ[]を０で初期化し、変数ｋに０を代入する。そして、距離が最小であったコンテナの番号をＣｏｎｔＹ[ｋ]に代入する（２２１０）。
【０１６４】
一方、ステップＳ２２０８でＤｉｓｔＹが最小値よりは小さくなかった場合（Ｓ２２０８−ＮＯ）、処理をステップＳ２２１１に進め、レイアウト編集アプリケーション１２１は、さらに比較を行いＤｉｓｔＹとＤｉｓｔＹ＿Ｍｉｎが一致するかどうかを判断する（Ｓ２２１１）。もし一致するのであれば（Ｓ２２１１-ＹＥＳ）、レイアウト編集アプリケーション１２１は、そのコンテナ番号をＣｏｎｔＹ[ｋ]に代入して、ｋに１を加算する（Ｓ２２１０）。
【０１６５】
ステップ２２１０を処理した後、あるいは、ステップ２２１１でＤｉｓｔＹが最小値よりも大きいと判断された場合、ステップ２２０６でi番目のコンテナがＸ方向に重なっていない場合は、レイアウト編集アプリケーション１２１は、次のコンテナをチェックするためにiをインクリメントする（Ｓ２２１２）。ステップＳ２２１３において、レイアウト編集アプリケーション１２１は、選択されているコンテナすべてについてチェックを行ったかどうかを判断し、まだ全てのコンテナに対してチェックを行っていなければ、ステップＳ２２０６へ進み処理を繰り返す。全てのコンテナに対してチェックが終了した場合は、レイアウト編集アプリケーション１２１は、検出された隣接するコンテナへリンクを設定する処理を行う（Ｓ２２１４）。この処理については後述する。
【０１６６】
そして、Ｙ方向のリンク設定の処理が終了したら、ステップＳ２２１５において、変数ｎをインクリメントする。そして、選択された全てのコンテナについて、これまでの処理が行われたかどうかを判断し、まだ、行われていなければ、ステップＳ２２０３に進み処理を繰り返す（Ｓ２２１６）。全てについて処理が終了していれば全体の処理を終了する。
【０１６７】
図２３は、図２２ＢのステップＳ２２１４におけるＹ方向のリンクを設定する処理の流れを説明するフローチャートである。まず、ステップＳ２３０１において、レイアウト編集アプリケーション１２１は、ＣｏｎｔＹ[０]が０であるかどうかを判断する。もし０であるならば（Ｓ２３０１-ＹＥＳ）、隣接したコンテナが検出されなかったことを意味するので、リンクの設定処理は行わずに終了する。一方、０でなかった場合は（Ｓ２３０１-ＮＯ）、レイアウト編集アプリケーション１２１は、変数ｋに０を代入する（Ｓ２３０２）。そして、ｎ番目のコンテナとＣｏｎｔＹ[ｋ]番目のコンテナ間にＹ方向のリンクを設定する。リンクを設定したら、レイアウト編集アプリケーション１２１は、変数ｋをインクリメントして（Ｓ２３０４）、ＣｏｎｔＹ[ｋ]をチェックし、ＣｏｎｔＹ[ｋ]が０になるまで、格納されている全てのコンテナについてリンクの設定を行う（Ｓ２３０３）。ＣｏｎｔＹ［ｋ］が０になったら（Ｓ２３０５-ＹＥＳ）、リンクの設定処理を終了する。
【０１６８】
図２４Ａ、Ｂはリンク作成の状態を示すＵＩ画面の例を示す図である。図２４Ａにおいて、２４０１は複数のコンテナの選択を指定する矩形領域、２４０２〜２４０９は選択されたコンテナ、２１１０はマウスポインタを示している。コンテナ内の番号は、図２２のステップＳ２２０１でコンテナに順番を付けた番号である。（１）のコンテナからみて、Ｙ方向の距離の小さい順に他のコンテナ（（２）〜（８））の順番は設定されており、２４０２，２４０３，２４０４，２４０５，２４０６，２４０７，２４０８，２４０９の順に番号が設定されている。ここで、図２４Ｂの２４１５で示すように、リンク設定ツールボタンを押下すると、リンクが設定される。２４１１〜２１１３は作成されたＹ方向のリンクを示しており、各コンテナのＹ方向に対して最小距離にあるコンテナ間にリンクが設定されている。また、２１１３のように、コンテナ（１）からコンテナ（４）コンテナ（５）５間へ２本のリンクが設定されているが、これはＹ方向の最小距離に２つのコンテナがあったためである。
【０１６９】
なお、Ｙ方向にリンクを一括設定する場合にも、上述したＸ方向にリンクを一括設定する場合と同様に、図６９のリンク設定ＵＩによる選択により、最小距離に位置しないコンテナに対してもリンクを設定することが可能となる。
【０１７０】
（コンテナの計算のための優先順位の設定）
コンテナに対してリンクを一括設定する際、コンテナの計算の順番を指定するための優先方向の設定をすることが可能である。この処理を図５１、図５２、図５３を参照しつつ説明する。ここで、図５２はリンクの一括設定により作成されたリンクとそのコンテナを示す図である。左右に示される５３０１はページ幅を示し、５３０２はリンクの一括設定が行われたコンテナ、５３０３はリンクを示している。設定される優先順位は、Ｘ方向とＹ方向どちらかの方向を指定して、指定された方向から、コンテナに優先順位が設定される。方向の指定は、図５３のようなダイアログで行われ、ユーザによって指定される。５３０４はダイアログボックスであり、ユーザインターフェースモジュール１０３により表示制御される。５３０５は方向指定を行うラジオボタン、５３０６は設定をキャンセルするボタン、５３０７はＯＫボタンを示している。方向を指定して、ＯＫボタンを押下することで優先順位が自動に設定される。
【０１７１】
図５１は優先順位の設定フローの流れを説明するフローチャートである。まず、ステップＳ５１０１において、前述した図５３のダイアログにより指定された優先方向を判断する。ここで、Ｘ方向が指定されていたならば、レイアウト編集アプリケーション１２１は、コンテナの左辺のＸ座標の位置について、小さい順にコンテナの順番を設定する（Ｓ５１０２）。もし、同じＸ座標に複数のコンテナがレイアウトされていた場合、レイアウト編集アプリケーション１２１は、それらのコンテナの上辺のＹ座標が小さい順に順番を設定する。
【０１７２】
一方、優先方向にＹ方向が指定されていたならば、レイアウト編集アプリケーション１２１は、コンテナの上辺のＹ座標について、小さい順にコンテナの順番を設定する（Ｓ５1０３）。もし、同じＹ座標に複数のコンテナがレイアウトされていた場合、レイアウト編集アプリケーション１２１は、それらのコンテナの上辺のＸ座標が小さい順に順番を設定する。順番の設定が終了したら、その順番に沿って優先順位を設定する（Ｓ５1０４）。この優先方向の指定により、コンテナに関する計算の優先順位を設定することができる。
【０１７３】
図５４Ａ、Ｂは、Ｘ方向を優先させてコンテナに優先順位を設定する処理の例を示す図であり、図５４Ａは優先順位が設定される前のコンテナとリンクを示している。ここで、左右の５４０１はページ幅を示し、５４０２はコンテナを示している。そして、５４０３は全コンテナの左辺のＸ座標を示している。コンテナの優先順位は、Ｘ座標の小さい（ページ上の左から）順番に設定される。図５４Ｂは優先順位が設定された後のコンテナとリンクを示している。各コンテナ内の数字が優先順位を示している。Ｘ座標の小さい順に設定されるので、５４０４，５４０５，５４０６，５４０７，５４０８，５４０９，５４１０，５４１１の順にコンテナの優先順位が設定される。
【０１７４】
同様に図５５Ａ、Ｂは、Ｙ方向を優先させてコンテナに優先順位を設定する処理の例を示す図であり、図５５Ａは優先順位が設定される前のコンテナとリンクを示している。ここで、左右の５５０１はページ幅を示し、５５０２はコンテナを示している。そして、５５０４は全コンテナの上辺のＹ座標を示している。コンテナの優先順位は、Ｙ座標の小さい（ページ上の上から）順番に設定される。図５５Ｂは優先順位が設定された後のコンテナとリンクを示している。各コンテナ内の数字が優先順位を示している。Ｙ座標の小さい順に設定されるので、５５０４，５５０５，５５０６，５５０７，５５０８，５５０９，５５１０，５５１１の順に優先順位が設定される。
【０１７５】
（リンク設定の修正）
一括設定されたコンテナ間のリンクに関して、ユーザは、例えば、キーボード１３２、またはマウス１３３の指示入力手段を介して、修正の指定をすることができる。この場合、指定されたリンクに関して、リンクの属性（可変、固定）の変更や、リンクの設定をキャンセルすることが可能である。この変更や設定のキャンセルはユーザインターフェースモジュール１０３、プロセッサユニット１３５の制御の下に実行することが可能である。また、コンテナをそれぞれ指定することにより、個別にリンクの設定を指定することができる。これにより、ユーザは、一括設定されたリンクの他、新たに追加してリンクの設定を行うことが可能になる。
【０１７６】
（コンテナに関する設定の自動変更（ページ上の一番外側にある辺をロック））
図１７のステップ１７０５にあたる、コンテナのアンカーの設定を変更する処理について説明する。ここで行う処理は、リンクを作成したコンテナの辺が、ページ内にレイアウトされているコンテナの最も外側に位置する辺と同じ位置であったときは、その辺の位置を自動的にロック（固定）するものである。同じコンテナで横方向の辺とこれに交差する縦方向の辺がロックされた場合は、自動的にその辺により形成されるコーナー部にアンカーが設定される。
【０１７７】
図２５は、アンカーの設定に関する全体的な処理の流れを説明するフローチャートである。ステップＳ２５０１において、コンテナの左辺をロックして、ステップＳ２５０２において、コンテナの右辺をロックする。更に、ステップＳ２５０３、ステップＳ２５０４において、コンテナの上辺、下辺をロックする。各辺をロックする詳細な処理の流れは図２６、図２８、図３０、図３２のフローチャートに基づき説明する。
【０１７８】
（左辺のロック）
図２６は、図２５におけるステップＳ２５０１のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ２６０１において、レイアウト編集アプリケーション１２１は、レイアウトされている全コンテナの左辺の最小Ｘ座標を取得する。そして、取得した最小Ｘ座標をＭｉｎ＿Ｘに代入する（Ｓ２６０２）。次に、ステップＳ２６０３において、変数iに１を代入し、ステップ２６０４において、変数ｋに０を代入する。
【０１７９】
さらに、レイアウト編集アプリケーション１２１は、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする（Ｓ２６０５）。ここで、変数iはコンテナの番号を示しており、変数ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。
【０１８０】
次に、ステップＳ２６０６において、レイアウト編集アプリケーション１２１は、i番目のコンテナの左辺のＸ座標とＭｉｎ＿Ｘが等しいかどうかをチェックする。等しいのであれば、処理をステップＳ２６０７に進め、iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する。そして、ｋおよびiをインクリメントする（Ｓ２６０８，Ｓ２６０９）。
【０１８１】
ステップ２６０６で等しくなかった場合は（Ｓ２６０６-ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、iをインクリメントする（Ｓ２６０９）。そして、すべてのコンテナについて処理が終了したかどうかを確認し（Ｓ２６１０）、終了していなければ、ステップＳ２６０６へ進み処理を繰り返す。終了していれば、処理をステップＳ２６１１に進め、ｋに０を代入する。そして、処理をステップＳ２６１２に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば、ロックを設定せずにこの処理を終了する。値が０でないならば、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの左辺をロックする（Ｓ２６１３）。そして、変数ｋをインクリメントする（Ｓ２６１４）。この処理をＬｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップ２６１３と２６１４を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番左にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【０１８２】
図２７はコンテナの左辺のロック状態を示す図であり、２７０１は複数のコンテナの選択を指定する矩形、２７０２，２７０３，２７０４はリンク、２７０５はロックされた辺を示し,２７０６は最小のＸ座標を示している。この図で示されるように、図２６の処理を行うと、最小のＸ座標にあるコンテナの左辺がロックされる。
【０１８３】
図２８は図２５におけるステップ２５０２の右辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ２８０１において、レイアウト編集アプリケーション１２１は、レイアウトされている全コンテナの右辺の最大Ｘ座標を取得する。そして、ステップＳ２８０２において、取得した最大Ｘ座標をＭａｘ＿Ｘに代入する。次に、ステップＳ２８０３において、変数iに１を代入し、また、ステップＳ２８０４において、変数ｋに０を代入する。さらに、ステップＳ２８０５において、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする。ここで、変数iはコンテナの番号を示しており、ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。
【０１８４】
次に、ステップＳ２８０６でレイアウト編集アプリケーション１２１は、i番目のコンテナの右辺のＸ座標とＭａｘ＿Ｘが等しいかどうかをチェックする。等しいのであれば（Ｓ２８０６−ＹＥＳ）、処理をステップＳ２８０７に進め、iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する。そして、変数ｋおよび変数iをインクリメントする（Ｓ２８０８，Ｓ２８０９）。ステップＳ２８０６で等しくなかった場合は（Ｓ２８０６−ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、処理をステップＳ２８０９に進め、変数iをインクリメントする。
【０１８５】
そして、すべてのコンテナについて終了したかどうかを確認し（Ｓ２８１０）、終了していなければ（Ｓ２８１０−ＮＯ）、ステップＳ２８０６へ進み処理を繰り返す。終了していれば（Ｓ２８１０−ＹＥＳ）、処理をステップＳ２８１１に進め、変数ｋに０を代入する。
【０１８６】
そして、処理をステップＳ２８１２に進め、レイアウト編集アプリケーション１２１は、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば、ロックを設定せずにこの処理を終了する。一方、値が０でないならば（Ｓ２８１２−ＮＯ）、処理をステップＳ２８１３に進めＬｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの右辺をロックする。
【０１８７】
そして、ステップＳ２８１４において、変数ｋをインクリメントし、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップＳ２８１３とステップＳ２８１４の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番右にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【０１８８】
図２９はコンテナの右辺のロック状態を示す図である。同図において、２９０１は複数のコンテナの選択を指定する矩形、２９０２，２９０３はリンク、２９０４はロック,２９０５は最大のＸ座標を示している。図２９で示されるように、図２８の処理を行うと、最大のＸ座標にあるコンテナの右辺がロックされる。
【０１８９】
（上辺のロック）
図３０は図２５におけるステップ２５０３の上辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ３００１において、レイアウト編集アプリケーション１２１は、レイアウトされている全コンテナの上辺の最小Ｙ座標を取得する。そして、ステップＳ３００２において、取得した最小Ｙ座標をＭｉｎ＿Ｙに代入する。次に、ステップＳ３００３において、変数iに１を代入し、ステップＳ３００４において、変数ｋに０を代入する。さらに、ステップＳ３００５において、レイアウト編集アプリケーション１２１は、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする。ここで、変数iはコンテナの番号を示しており、ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。
【０１９０】
次に、処理をステップＳ３００６に進め、レイアウト編集アプリケーション１２１は、i番目のコンテナの上辺のＹ座標とＭｉｎ＿Ｙが等しいかどうかをチェックする。等しいのであれば（Ｓ３００６−ＹＥＳ）、処理をステップＳ３００７に進め、変数iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する。そして、変数ｋおよび変数iをインクリメントする（Ｓ３００８，Ｓ３００９）。
【０１９１】
ステップ３００６で等しくなかった場合は（Ｓ３００６−ＮＯ）、レイアウト編集アプリケーション１２１は、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、変数iをインクリメントする（Ｓ３００９）。そして、処理をステップＳ３０１０に進め、すべてのコンテナについて処理が終了したかどうかを確認し、終了していなければ（Ｓ３０１０−ＮＯ）、ステップ３００６へ進み処理を繰り返す。処理が終了していれば（Ｓ３０１０−ＹＥＳ）、処理をステップＳ３０１１に進め、変数ｋに０を代入する。そして、処理をステップＳ３０１２に進め、レイアウト編集アプリケーション１２１は、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば（Ｓ３０１２−ＹＥＳ）、ロックを設定せずにこの処理を終了する。値が０でないならば（Ｓ３０１２−ＮＯ）、処理をステップＳ３０１３に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの上辺をロックする。そして、処理をステップＳ３０１４に進め、変数ｋをインクリメントし（３０１４）、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップＳ３０１３とＳ３０１４を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番上にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【０１９２】
図３１はコンテナの上辺のロック状態を示す図である。同図において、３１０１は複数のコンテナの選択を指定する矩形、３１０２，３１０３はリンク、３１０４は最小のＹ座標を示している。この図で示されるように、図３０の処理を行うと、最小のＹ座標にあるコンテナの上辺がロックされる。
【０１９３】
図３２は図２５におけるステップ２５０４の下辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ３２０１において、レイアウト編集アプリケーション１２１は、レイアウトされている全コンテナの下辺の最大Ｙ座標を取得する。そして、ステップＳ３２０２において、取得した最大Ｙ座標をＭａｘ＿Ｙに代入する。次に、ステップＳ３２０３において、変数iに１を代入し、ステップＳ３２０４において、変数ｋに０を代入する。さらに、ステップＳ３２０５において、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする。ここで、iはコンテナの番号を示しており、ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。
【０１９４】
次に、処理をステップＳ３２０６に進め、レイアウト編集アプリケーション１２１は、i番目のコンテナの下辺のＹ座標とＭａｘ＿Ｙが等しいかどうかをチェックする。等しいのであれば、処理をステップＳ３２０７に進め、変数iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する。そして、ステップＳ３２０８において、変数ｋおよび変数iをインクリメントする（Ｓ３２０８，Ｓ３２０９）。
【０１９５】
ステップＳ３２０６で等しくなかった場合は（Ｓ３２０６−ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、変数iをインクリメントする（Ｓ３２０９）。そして、すべてのコンテナについて処理を終了したかどうかを確認し（Ｓ３２１０）、終了していなければ（Ｓ３２１０−ＮＯ）、ステップ３２０６へ進み処理を繰り返す。終了していれば（Ｓ３２１０−ＹＥＳ）、処理をステップＳ３２１１に進め、変数ｋに０を代入する。そして、処理をステップＳ３２１２に進め、レイアウト編集アプリケーション１２１は、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば、ロックを設定せずにこの処理を終了する。値が０でないならば（Ｓ３２１２−ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの下辺をロックする（Ｓ３２１３）。そして、処理をステップＳ３２１４に進め、変数ｋをインクリメントし、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップＳ３２１３とＳ３２１４を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番下にある辺がロックされる。複数の辺が見つかった場合は、見つかった複数の辺すべてがロックされる。
【０１９６】
図３３はコンテナの下辺のロック状態を示す図である。同図において、３３０１は複数のコンテナの選択を指定する矩形、３３０２，３３０３はリンク,３３０４は最大のＹ座標を示している。この図で示されるように、図３２の処理を行うと、最大のＹ座標にあるコンテナの下辺がロックされる。
【０１９７】
図３４はアンカーの設定の状態を示す図である。ここで、３４０１はページ端を示し、３４０２はコンテナ、３４０３，３４０４はリンク、３４０５，３５０６，３４０７はロックされた辺を示している。上述の処理でページ内の外側に位置する辺３４０７がロックされたときに、同じコンテナの縦と横の辺がロックされて、コンテナの角が固定になったときは、３４０８で示されるようにアンカーが自動的に設定される。
【０１９８】
（フレキシブルなリンクの設定）
図３５，３６は、上述のリンクの一括作成処理で、作成されるリンクが固定長さではなく、最大・最小値をもつフレキシブルなリンクとして設定するための処理の流れを説明するフローチャートである。ここで、リンクを設定するコンテナを選択する操作は上述の内容と同様なので重複を避けるためここでは説明を省略するが、フレキシブルなリンクの最大、最小値の設定処理は、図２０及び図２３のフローが変更になることになるので、ここではその変更点のみを説明する。
【０１９９】
図３５は、図２０で示したＸ方向のリンク作成のフローチャートにおいて、作成されるリンク長をフレキシブルに設定するための処理の流れを説明するフローチャートである。まず、ステップＳ３５０１において、レイアウト編集アプリケーション１２１は、変数ｋに０を代入する。そして、ステップＳ３５０２において、ＣｏｎｔＸ［ｋ］の値をチェックする。もし値が０であるならば（Ｓ３５０２−ＹＥＳ）、リンク作成処理は終了する。一方、値が０でなければ（Ｓ３５０２−ＮＯ）、処理をステップＳ３５０３に進め、ｎ番目のコンテナと、ＣｏｎｔＸ[ｋ]番目のコンテナの間にＸ方向のリンクを設定する。そして、ステップＳ３５０４において、作成されたリンクの長さをＬｉｎｋ＿Ｄｉｓｔに代入する。ステップＳ３５０５では、Ｌｉｎｋ＿Ｄｉｓｔに係数１．２を乗算し、その値を作成したリンクの最大値に設定する。そして、Ｌｉｎｋ＿Ｄｉｓｔに係数０．８を乗算し、その値を作成したリンクの最小値に設定する（Ｓ３５０６）。ステップＳ３５０７において、変数ｋをインクリメントして、リンクを設定するコンテナがある限り、ステップＳ３５０３からＳ３５０６までの処理を続ける。
【０２００】
同様に図３６は、図２３で示したＹ方向のリンク作成のフローチャートにおいて、作成されるリンク長をフレキシブルに設定するための処理の流れを説明するフローチャートである。まず、ステップＳ３６０１において、変数ｋに０を代入する。そして、ステップＳ３６０２で、ＣｏｎｔＹ［ｋ］の値をチェックする。もし値が０であるならば、リンク作成処理は終了する。値が０でなければ（Ｓ３６０２−ＮＯ）、処理をステップＳ３６０３に進め、ｎ番目のコンテナと、ＣｏｎｔＹ[ｋ]番目のコンテナの間にＹ方向のリンクを設定する。そして、ステップＳ３６０４において、作成されたリンクの長さをＬｉｎｋ＿Ｄｉｓｔに代入する。ステップＳ３６０５では、Ｌｉｎｋ＿Ｄｉｓｔに係数１．２を乗算し、その値を作成したリンクの最大値に設定する。そして、Ｌｉｎｋ＿Ｄｉｓｔに係数０．８を乗算し、その値を作成したリンクの最小値に設定する（Ｓ３６０６）。ステップＳ３６０７において、変数ｋをインクリメントして、リンクを設定するコンテナがある限り、ステップＳ３６０３からＳ３６０６までの処理を続ける。
【０２０１】
以上説明した図３５、図３６の処理により、作成されたリンクの長さの１２０％を最大値、８０％を最小値として設定することが可能になる。ただし、リンク長の最大、最小値は上述の係数に限定されるものではなく、例えば、図４８のＵＩ画面を介してユーザによって任意に指定することができるものとする。
【０２０２】
（コンテナに関する設定の自動変更（ユーザの指定した範囲にある辺をロック））
次に、コンテナに関する設定の自動変更として、ユーザから入力された範囲にある辺をロックする処理について説明する。
【０２０３】
図３７は、本ロック処理の全体的な処理の流れを説明するフローチャートであり、フローを示している。まず、ステップＳ３７０１において、レイアウト編集アプリケーション１２１は、ユーザによるポインティングデバイス（１３２、１３３）の入力により指定されたＸ，Ｙ方向の範囲を、指定範囲情報として保持する変数「Ｖａｌｕｅ＿Ｘ，Ｖａｌｕｅ＿Ｙ」に代入する。ここでの範囲とは、ページ内の一番外側の辺の座標から、どのくらい内側までをロックの対象とするかを決める値である。そして、ステップＳ３７０２〜Ｓ３７０５の処理によりコンテナの各辺をロックする。以下、各辺のロックについて具体的に説明する。
【０２０４】
（左辺のロック）
図３８は、図３７におけるステップＳ３７０２のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ３８０１において、レイアウト編集アプリケーション１２１は、レイアウトされている全コンテナの左辺の最小Ｘ座標を取得する。そして、取得した最小Ｘ座標をＭｉｎ＿Ｘに代入する（Ｓ３８０２）。次に、ステップＳ３８０３において、変数iに１を代入し、ステップＳ３８０４において、変数ｋに０を代入する。
【０２０５】
さらに、レイアウト編集アプリケーション１２１は、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする（Ｓ３８０５）。ここで、変数iはコンテナの番号を示しており、変数ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。
【０２０６】
次に、ステップＳ３８０６において、レイアウト編集アプリケーション１２１は、i番目のコンテナの左辺のＸ座標からＭｉｎ＿Ｘを減算して、その値が指定範囲情報のＸ座標であるＶａｌｕｅ＿Ｘ以下であるかをチェックする。Ｖａｌｕｅ＿Ｘ以下であれば（Ｓ３８０６-ＹＥＳ）、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する（Ｓ３８０７）。そして、変数ｋおよび変数iをインクリメントする（Ｓ３８０８，Ｓ３８０９）。
【０２０７】
ステップ３８０６でＶａｌｕｅ＿Ｘ以下でない場合は（Ｓ３８０６-ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、変数iをインクリメントする（Ｓ３８０９）。そして、すべてのコンテナについて処理が終了したかどうかを確認し（Ｓ３８１０）、終了していなければ（Ｓ３８１０−ＮＯ）、ステップＳ３８０６へ進み処理を繰り返す。終了していれば（Ｓ３８１０-ＹＥＳ）、処理をステップＳ３８１１に進め、変数ｋに０を代入する。そして、処理をステップＳ３８１２に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば、ロックを設定せずにこの処理を終了する。値が０でないならば（Ｓ３８１２−ＮＯ）、処理をステップＳ３８１３に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの左辺をロックする。そして、処理をステップＳ３８１４に進め、変数ｋをインクリメントし、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップＳ３８１３とＳ３８１４の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番左からユーザが指定した範囲内にあるコンテナの左辺はすべてロックされる。
【０２０８】
図３９はコンテナの左辺のロック状態を示す図であり、３９０１は複数のコンテナの選択を指定する矩形、３９０２，３９０３，３９０４はリンク、３９０５はロックされたコンテナの辺,３９０６は最小のＸ座標、３９０７はロック対象となる指定範囲の境界線、３９０８はＶａｌｕｅ＿Ｘの間隔を示している。この図で示されるように、図３８の処理を行うと、最小のＸ座標３９０６から、Ｖａｌｕｅ＿Ｘ３９０８で指定された範囲内にあるコンテナの左辺がロックされる（３９０５）。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【０２０９】
（右辺のロック）
図４０は、図３７におけるステップＳ３７０３のコンテナの右辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ４００１において、レイアウト編集アプリケーション１２１は、レイアウトされている全コンテナの右辺の最大Ｘ座標を取得する。そして、取得した最大Ｘ座標をＭａｘ＿Ｘに代入する（Ｓ４００２）。次に、ステップＳ４００３において、変数iに１を代入し、ステップＳ４００４において、変数ｋに０を代入する。
【０２１０】
さらに、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする（Ｓ４００５）。ここで、変数iはコンテナの番号を示しており、変数ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。  次に、ステップＳ４００６において、Ｍａｘ＿Ｘからi番目のコンテナの右辺のＸ座標を減算して、その値が指定範囲情報のＸ座標であるＶａｌｕｅ＿Ｘ以下であるかどうかをチェックする。Ｖａｌｕｅ＿Ｘ以下であれば（Ｓ４００６-ＹＥＳ）、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する（Ｓ４００７）。そして、変数ｋおよび変数iをインクリメントする（Ｓ４００８，Ｓ４００９）。
【０２１１】
ステップＳ４００６でＶａｌｕｅ＿Ｘ以下でない場合は（Ｓ４００６−ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、変数iをインクリメントする（Ｓ３８０９）。そして、すべてのコンテナについて処理が終了したかどうかを確認し（Ｓ４０１０）、終了していなければ（Ｓ４０１０−ＮＯ）、ステップＳ４００６へ進み処理を繰り返す。終了していれば（Ｓ４０１０−ＹＥＳ）、処理をステップＳ４０１１に進め、変数ｋに０を代入する。そして、処理をステップＳ４０１２に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば、ロックを設定せずにこの処理を終了する。値が０でないならば（Ｓ４０１２−ＮＯ）、処理をステップＳ４０１３に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの右辺をロックする。そして、処理をステップＳ４０１４に進め、変数ｋをインクリメントし、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップＳ４０１３とＳ４０１４の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内に一番右からユーザが指定した範囲内にあるコンテナの右辺はすべてロックされる。
【０２１２】
図４１はコンテナの左辺のロック状態を示す図であり、４１０１は複数のコンテナの選択を指定する矩形、４１０２，４１０３，４１０４はリンク、４１０５はロックされたコンテナの辺,４１０７は最大のＸ座標、４１０６はロック対象となる指定範囲の境界線、４１０８はＶａｌｕｅ＿Ｘの間隔を示している。この図で示されるように、図４０の処理を行うと、最大のＸ座標から、Ｖａｌｕｅ＿Ｘ４１０８で指定された範囲内にあるコンテナの右辺がロックされる（４１０５）。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【０２１３】
（上辺のロック）
図４２は、図３７におけるステップＳ３７０４のコンテナの上辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ４２０１において、レイアウトされている全コンテナの上辺の最小Ｙ座標を取得する。そして、取得した最小Ｙ座標をＭｉｎ＿Ｙに代入する（Ｓ４２０２）。次に、ステップＳ４００３において、変数iに１を代入し、ステップＳ４２０４において、変数ｋに０を代入する。
【０２１４】
さらに、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする（Ｓ４２０５）。ここで、変数iはコンテナの番号を示しており、変数ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。  次に、ステップＳ４２０６において、i番目のコンテナの上辺のＹ座標からＭｉｎ＿Ｙを減算して、その値がＶａｌｕｅ＿Ｙ以下かどうかをチェックする。Ｖａｌｕｅ＿Ｙ以下であれば（Ｓ４２０６−ＹＥＳ）、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する（Ｓ４２０７）。そして、変数ｋおよび変数iをインクリメントする（Ｓ４２０８，Ｓ４２０９）。
【０２１５】
ステップＳ４２０６でＶａｌｕｅ＿Ｙ以下でない場合は（Ｓ４２０６−ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、変数iをインクリメントする（Ｓ４２０９）。そして、すべてのコンテナについて処理が終了したかどうかを確認し（Ｓ４２１０）、終了していなければ（Ｓ４２１０−ＮＯ）、ステップ４２０６へ進み処理を繰り返す。終了していれば（Ｓ４２１０−ＹＥＳ）、処理をステップＳ４２１１に進め、変数ｋに０を代入する。そして、処理をステップＳ４２１２に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば、ロックを設定せずにこの処理を終了する。値が０でないならば（Ｓ４２１２−ＮＯ）、処理をステップＳ４２１３に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの上辺をロックする。そして、処理をステップＳ４２１４に進め、変数ｋをインクリメントし、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップＳ４２１３とＳ４２１４の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内の一番上からユーザが指定した範囲内にあるコンテナの上辺はすべてロックされる。
【０２１６】
図４３はコンテナの上辺のロック状態を示す図であり、４３０１は複数のコンテナの選択を指定する矩形、４３０２，４３０３はリンク、４３０４は最小のＹ座標、４３０５はロック対象となる指定範囲の境界線、４３０８はＶａｌｕｅ＿Ｙの間隔を示している。この図で示されるように、図４２の処理を行うと、最小Ｙ座標から、Ｖａｌｕｅ＿Ｙ４３０８で指定された範囲内にあるコンテナの上辺がロックされる（４３０６）。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【０２１７】
（下辺のロック）
図４４は、図３７におけるステップＳ３７０５のコンテナの下辺をロックする処理の流れを具体的に説明するフローチャートである。まず、ステップＳ４４０１において、レイアウトされている全コンテナの下辺の最大Ｙ座標を取得する。そして、取得した最大Ｙ座標をＭａｘ＿Ｙに代入する（Ｓ４４０２）。次に、ステップＳ４４０３において、変数iに１を代入し、ステップＳ４４０４において、変数ｋに０を代入する。
【０２１８】
さらに、Ｌｏｃｋ＿Ｃｏｎｔ[]を用意し、０で初期化をする（Ｓ４４０５）。ここで、変数iはコンテナの番号を示しており、変数ｋはＬｏｃｋ＿Ｃｏｎｔ[]の添字を示す変数であり、Ｌｏｃｋ＿Ｃｏｎｔ[]は、ロック対象のコンテナの番号を格納する配列である。  次に、ステップＳ４４０６において、Ｍａｘ＿Ｙからi番目のコンテナの下辺のＹ座標を減算して、その値がＶａｌｕｅ＿Ｙ以下かどうかをチェックする。Ｖａｌｕｅ＿Ｙ以下であれば（Ｓ４２０６−ＹＥＳ）、i番目のコンテナは、ロック対象として指定された範囲内であるので、変数iをＬｏｃｋ＿Ｃｏｎｔ[ｋ]に代入する（Ｓ４４０７）。そして、変数ｋおよび変数iをインクリメントする（Ｓ４４０８，Ｓ４４０９）。
【０２１９】
ステップＳ４４０６でＶａｌｕｅ＿Ｙ以下でない場合は（Ｓ４４０６−ＮＯ）、Ｌｏｃｋ＿Ｃｏｎｔに代入せずに、変数iをインクリメントする（Ｓ４４０９）。そして、すべてのコンテナについて処理が終了したかどうかを確認し（Ｓ４４１０）、終了していなければ（Ｓ４４１０−ＮＯ）、ステップＳ４４０６へ進み処理を繰り返す。終了していれば（Ｓ４４１０−ＹＥＳ）、ステップＳ４４１１に進め、変数ｋに０を代入する。そして、処理をステップＳ４４１２に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値をチェックする。もし、値が０ならば、ロックを設定せずにこの処理を終了する。値が０でないならば（Ｓ４４１２−ＮＯ）、処理をステップＳ４４１３に進め、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]番目のコンテナの下辺をロックする。そして、処理をステップＳ４４１４に進め、変数ｋをインクリメントし、Ｌｏｃｋ＿Ｃｏｎｔ[ｋ]の値が０になるまで、ステップＳ４４１３とＳ４４１４の処理を繰り返す。この処理により、リンクを設定したコンテナの辺の中で、ページ内の一番下からユーザが指定した範囲内にあるコンテナの辺がすべてロックされる。この場合、複数の辺が該当する場合は、該当する複数の辺すべてがロックされる。
【０２２０】
図４５はコンテナの下辺のロック状態を示す図であり、４５０１は複数のコンテナの選択を指定する矩形、４５０２，４５０３はリンク,４５０４は最大のＹ座標、４５０５はロック対象となる指定範囲の境界線、４５０８はＶａｌｕｅ＿Ｙの間隔を示している。この図で示されるように、図４４の処理を行うと、最大Ｙ座標から、Ｖａｌｕｅ＿Ｙで指定された範囲内にあるコンテナの下辺がロックされることになるが、ここでは、選択した範囲内にロック対象のコンテナがないのでロックはされていない。
【０２２１】
以上説明したとおり、本実施形態によれば、複数のコンテナ間に対して、一つの操作でリンクを一括設定することが可能になり、効率のよい操作を実現することが可能になる。
【０２２２】
（他の実施形態）
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０２２３】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０２２４】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【０２２５】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０２２６】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０２２７】
【図１Ａ】本発明の実施形態にかかるコンピュータシステムの構成を示す図である。
【図１Ｂ】ホストコンピュータの具体的な構成を説明する図である。
【図２】レイアウトエンジンモジュールをホストコンピュータ１０１の他にエンジンサーバ２２７にもレイアウトエンジン２２５を設けた構成を示す図である。
【図３】メニューバー、ツールバー、ワークエリア、フローティングパレットを含むユーザインターフェース画面を示す図である。
【図４】コンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナを示す図である。
【図５Ａ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図５Ｂ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図５Ｃ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図５Ｄ】コンテナを構成する辺に対するルールを例示的に説明する図である。
【図６】リンクの設定方法を示するフローチャートである。
【図７】リンク作成時のユーザインターフェースの画面表示例を示す図である。
【図８】レイアウト計算の処理の流れを説明するフローチャートである。
【図９】レイアウト計算の詳細な処理の流れを説明するフローチャートである。
【図１０】図９のフローに対応するユーザインターフェース画面の表示例を示した図である。
【図１１】レイアウト計算時におけるコンテナの集合について説明した図である。
【図１２】リンクの自動設定に関するＵＩ画面を例示する図である。
【図１３】複数のコンテナＦ，Ｇ，Ｈを選択するＵＩ画面の例を示す図である。
【図１４Ａ】図１３で説明した操作によりコンテナＦ，Ｇ，Ｈが選択されたことをユーザに示すためにＵＩ画面が切り替えられた状態を示す図である。
【図１４Ｂ】マウスポインタ１３０３でコンテナを押下する（指定する）ことによる複数のコンテナの選択の例を示す図である。
【図１５】複数選択されたコンテナＦ，Ｇ，Ｈ間にリンクが一括で設定された状態を示す図である。
【図１６】リンクの自動設定の全体的な流れを説明するフローチャートである。
【図１７】リンクの一括作成の処理の流れを概略的に説明するフローチャートである。
【図１８】コンテナの位置情報を取得する処理の流れを説明するフローチャートである。
【図１９Ａ】Ｘ方向のリンクの作成処理の流れを説明するフローチャートである。
【図１９Ｂ】Ｘ方向のリンクの作成処理の流れを説明するフローチャートである。
【図２０】図１９ＢのステップＳ１９１４のリンク設定処理の流れを説明するフローチャートである。
【図２１Ａ】Ｘ方向のリンク設定を説明する図である。
【図２１Ｂ】Ｘ方向のリンク設定を説明する図である。
【図２２Ａ】Ｙ方向のリンクの作成処理の流れを説明するフローチャートである。
【図２２Ｂ】Ｙ方向のリンクの作成処理の流れを説明するフローチャートである。
【図２３】図２２ＢのステップＳ２２１４のリンク設定処理の流れを説明するフローチャートである。
【図２４Ａ】リンク作成の状態を示すＵＩ画面の例を示す図である。
【図２４Ｂ】リンク作成の状態を示すＵＩ画面の例を示す図である。
【図２５】アンカーの設定に関する全体的な処理の流れを説明するフローチャートである。
【図２６】図２５におけるステップＳ２５０１の左辺をロックする処理の流れを具体的に説明するフローチャートである。
【図２７】コンテナの左辺のロック状態を示す図である。
【図２８】図２５におけるステップＳ２５０２の右辺をロックする処理の流れを具体的に説明するフローチャートである。
【図２９】コンテナの右辺のロック状態を示す図である。
【図３０】図２５におけるステップＳ２５０３の上辺をロックする処理の流れを具体的に説明するフローチャートである。
【図３１】コンテナの上辺のロック状態を示す図である。
【図３２】図２５におけるステップＳ２５０４の下辺をロックする処理の流れを具体的に説明するフローチャートである。
【図３３】コンテナの下辺のロック状態を示す図である。
【図３４】アンカーの設定の状態を示す図である。
【図３５】最大・最小値をもつフレキシブルなリンクを設定するための処理の流れを説明するフローチャートである。
【図３６】最大・最小値をもつフレキシブルなリンクを設定するための処理の流れを説明するフローチャートである。
【図３７】ユーザの指定した範囲にある辺をロックする処理の全体的な処理の流れを説明するフローチャートである。
【図３８】図３７におけるステップＳ３７０２のコンテナの左辺をロックする処理の流れを具体的に説明するフローチャートである。
【図３９】コンテナの左辺のロック状態を示す図である。
【図４０】図３７におけるステップＳ３７０３のコンテナの右辺をロックする処理の流れを具体的に説明するフローチャートである。
【図４１】コンテナの左辺のロック状態を示す図である。
【図４２】図３７におけるステップＳ３７０４のコンテナの上辺をロックする処理の流れを具体的に説明するフローチャートである。
【図４３】コンテナの上辺のロック状態を示す図である。
【図４４】図３７におけるステップＳ３７０５のコンテナの下辺をロックする処理の流れを具体的に説明するフローチャートである。
【図４５】コンテナの下辺のロック状態を示す図である。
【図４６】自動レイアウトシステムにおける典型的な可変リンクによるコンテナの配置を説明する図である。
【図４７】自動レイアウトシステムにおける可変リンクを設定するフローを示している。
【図４８】リンク４６０９の情報がセットされているダイアログウィンドウの例を示す図である。
【図４９】自動レイアウトシステムにおける固定リンクによるレイアウト結果を示す図である。
【図５０】自動レイアウトシステムにおける可変リンクによるレイアウト結果を示す図である。
【図５１】優先順位の設定フローの流れを説明するフローチャートである。
【図５２】リンクの一括設定により作成されたリンクとそのコンテナを示す図である。
【図５３】自動優先順位設定のダイアログボックスの表示例を示す図である。
【図５４Ａ】Ｘ方向を優先して優先順位が設定される前のコンテナとリンクを示す図である。
【図５４Ｂ】Ｘ方向を優先して優先順位が設定された後のコンテナとリンクを示す図である。
【図５５Ａ】Ｙ方向を優先して優先順位が設定される前のコンテナとリンクを示す図である。
【図５５Ｂ】Ｙ方向を優先して優先順位が設定された後のコンテナとリンクを示す図である。
【図５６】優先順位の設定処理の流れを説明するフローチャートである。
【図５７】コンテナの集合を単位として優先順位を設定する内容を説明する図である。
【図５８】優先順位を設定するダイアログユーザインターフェース（ＵＩ）画面の例を示す図である。
【図５９】コンテナに設定する優先順位を変更する手順を説明する図である。
【図６０】優先順位を設定するモードへ移行するためのポップアップメニューの例を示す図である。
【図６１】優先順位の設定をユーザに示すＵＩ画面の例を示す図である。
【図６２】優先順位の設定をユーザに示すＵＩ画面の例を示す図である。
【図６３】優先順位の設定をユーザに示すＵＩ画面の例を示す図である。
【図６４】優先順位が設定されたコンテナのレイアウトの計算処理の流れを説明するフローチャートである。
【図６５】レイアウトの優先順位がコンテナに設定されていた場合のレイアウト計算処理の流れを説明するフローチャートである。
【図６６】図６５のレイアウト計算処理で表示されるＵＩ画面の例を示す図である。
【図６７】図６５のレイアウト計算処理で表示されるＵＩ画面の例を示す図である。
【図６８】リンクの自動設定において、最小距離に限らない場合の処理の流れを説明するフローチャートである。
【図６９】リンクの自動設定方法を選択するためのＵＩ画面の例を示す図である。
【図７０Ａ】リンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、リンク作成処理の流れを説明するフローチャートである。
【図７０Ｂ】リンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、リンク作成処理の流れを説明するフローチャートである。
【図７１】図７０Ａ，Ｂの処理によるＸ方向のリンク設定を説明する図である。
【図７２】図７０Ａ、Ｂの処理によるリンクの自動設定において、最小距離に限らない自動リンク設定方法が選択された場合の、具体例を示す図である。
【図７３】リンクの自動設定処理におけるリンク生成方向を選択するためのＵＩ画面の例を示す図である。
【符号の説明】
【０２２８】
１０１  ホストコンピュータ
１０３  ユーザインターフェースモジュール
１０５  レイアウトエンジンモジュール
１１９  データベース
１２１  レイアウト編集アプリケーションプログラム
１３２  キーボード
１３３  マウス
１４３  Ｉ／Ｏインタフェース
１４４  ディスプレイ装置
３０１  アプリケーションウインドウ
３０３  ツールバー
４０６  リンクツールボタン
４０７、４０８  コンテナ
４０９  アンカーアイコン
４１０  固定されていない辺
４１２  リンク
【図１Ａ】
2008305414.tif 000003
【図１Ｂ】
2008305414.tif 000004
【図２】
2008305414.tif 000005
【図３】
2008305414.tif 000006
【図４】
2008305414.tif 000007
【図５Ａ】
2008305414.tif 000008
【図５Ｂ】
2008305414.tif 000009
【図５Ｃ】
2008305414.tif 000010
【図５Ｄ】
2008305414.tif 000011
【図６】
2008305414.tif 000012
【図７】
2008305414.tif 000013
【図８】
2008305414.tif 000014
【図９】
2008305414.tif 000015
【図１０】
2008305414.tif 000016
【図１１】
2008305414.tif 000017
【図１２】
2008305414.tif 000018
【図１３】
2008305414.tif 000019
【図１４Ａ】
2008305414.tif 000020
【図１４Ｂ】
2008305414.tif 000021
【図１５】
2008305414.tif 000022
【図１６】
2008305414.tif 000023
【図１７】
2008305414.tif 000024
【図１８】
2008305414.tif 000025
【図１９Ａ】
2008305414.tif 000026
【図１９Ｂ】
2008305414.tif 000027
【図２０】
2008305414.tif 000028
【図２１Ａ】
2008305414.tif 000029
【図２１Ｂ】
2008305414.tif 000030
【図２２Ａ】
2008305414.tif 000031
【図２２Ｂ】
2008305414.tif 000032
【図２３】
2008305414.tif 000033
【図２４Ａ】
2008305414.tif 000034
【図２４Ｂ】
2008305414.tif 000035
【図２５】
2008305414.tif 000036
【図２６】
2008305414.tif 000037
【図２７】
2008305414.tif 000038
【図２８】
2008305414.tif 000039
【図２９】
2008305414.tif 000040
【図３０】
2008305414.tif 000041
【図３１】
2008305414.tif 000042
【図３２】
2008305414.tif 000043
【図３３】
2008305414.tif 000044
【図３４】
2008305414.tif 000045
【図３５】
2008305414.tif 000046
【図３６】
2008305414.tif 000047
【図３７】
2008305414.tif 000048
【図３８】
2008305414.tif 000049
【図３９】
2008305414.tif 000050
【図４０】
2008305414.tif 000051
【図４１】
2008305414.tif 000052
【図４２】
2008305414.tif 000053
【図４３】
2008305414.tif 000054
【図４４】
2008305414.tif 000055
【図４５】
2008305414.tif 000056
【図４６】
2008305414.tif 000057
【図４７】
2008305414.tif 000058
【図４８】
2008305414.tif 000059
【図４９】
2008305414.tif 000060
【図５０】
2008305414.tif 000061
【図５１】
2008305414.tif 000062
【図５２】
2008305414.tif 000063
【図５３】
2008305414.tif 000064
【図５４Ａ】
2008305414.tif 000065
【図５４Ｂ】
2008305414.tif 000066
【図５５Ａ】
2008305414.tif 000067
【図５５Ｂ】
2008305414.tif 000068
【図５６】
2008305414.tif 000069
【図５７】
2008305414.tif 000070
【図５８】
2008305414.tif 000071
【図５９】
2008305414.tif 000072
【図６０】
2008305414.tif 000073
【図６１】
2008305414.tif 000074
【図６２】
2008305414.tif 000075
【図６３】
2008305414.tif 000076
【図６４】
2008305414.tif 000077
【図６５】
2008305414.tif 000078
【図６６】
2008305414.tif 000079
【図６７】
2008305414.tif 000080
【図６８】
2008305414.tif 000081
【図６９】
2008305414.tif 000082
【図７０Ａ】
2008305414.tif 000083
【図７０Ｂ】
2008305414.tif 000084
【図７１】
2008305414.tif 000085
【図７２】
2008305414.tif 000086
【図７３】
2008305414.tif 000087