(57)【要約】      （修正有）【課題】レコードのコンテンツを収める可変サイズのコンテナに優先度を設けて、レイアウトの自由度を高める。【解決手段】テンプレートには少なくとも２つのコンテナと、それらを関連づけるリンクを設けることができる。テンプレート作成時にはテンプレート画面上で、ポインタ１２０２をおいたコンテナ集合において指定された優先順位のリスト１２０６が表示される。プレビューあるいは印刷時には、レコードをテンプレートでレイアウトする際に、データがコンテナに収まらない場合は、優先順位の高いコンテナの可変の辺を移動して、コンテナサイズを点テンツサイズに応じて拡張する。次にコンテナ集合内の次の優先順位のコンテナを、優先順位の高いコンテナとの距離の制限を越えない限度で拡張または縮小する。これを、優先順位の順に各コンテナについて繰り返す。この後、決定されたコンテナにコンテンツが挿入されて文書が完成し、表示又は印刷される。【選択図】図１２
2005216180.tif 000002
【特許請求の範囲】
【請求項１】
文書にレイアウトすべきデータに応じて動的に文書のレイアウトを変更可能な文書処理装置であって、
データを配置するための領域を示す複数の領域情報に対して、当該領域にデータを入れることで当該領域のサイズを決定する順序を示す優先順位を独立して設定する優先順位設定手段と、
データを配置するための領域を示す領域情報と前記優先順位設定手段により該領域に関連づけられた優先順位を示す優先順位情報とを含むテンプレートを記憶する記憶手段と、
前記テンプレートに従って前記優先順位により示される順序で前記領域に対応するデータを順次配置し、前記領域のサイズまたは位置が変更可能な場合には、当該領域のサイズまたは位置を、該領域よりも高い優先順位に関連づけられた領域を侵さないように前記データにあわせて変更する配置手段と
を備えることを特徴とする文書処理装置。
【請求項２】
前記領域毎に指定された優先順位情報を付した前記テンプレートを作成する作成手段と、作成されたテンプレートを、前記優先順位情報とともに表示する表示手段とをさらに備えることを特徴とする請求項１に記載の文書処理装置。
【請求項３】
前記表示手段は、作成されたテンプレート含まれる各領域を識別子を付して表示し、また、前記優先順位にしたがって前記識別子を配置したリストを表示することを特徴とする請求項２に記載の文書処理装置。
【請求項４】
前記テンプレートには、前記領域を関連づけるリンク情報が含まれ、前記優先順位情報は、前記リンク情報により関連づけられた領域における優先順位を示し、前記配置手段は、前記リンク情報による関連づけを維持したまま、前記領域にデータを配置することを特徴とする請求項１に記載の文書処理装置。
【請求項５】
コンピュータにより、文書にレイアウトすべきデータに応じて動的に文書のレイアウトを変更させるためのプログラムであって、
データを配置するための領域を示す複数の領域情報に対して、当該領域にデータを入れることで当該領域のサイズを決定する順序を示す優先順位を独立して設定する優先順位設定手段と、
データを配置するための領域を示す領域情報と前記優先順位設定手段により該領域に関連づけられた優先順位を示す優先順位情報とを含むテンプレートを記憶する記憶手段と、
前記テンプレートに従って前記優先順位により示される順序で前記領域に対応するデータを順次配置し、前記領域のサイズまたは位置が変更可能な場合には、当該領域のサイズまたは位置を、該領域よりも高い優先順位に関連づけられた領域を侵さないように前記データにあわせて変更する配置手段と
してコンピュータを機能させるためのプログラム。
【請求項６】
前記領域毎に指定された優先順位情報を付した前記テンプレートを作成する作成手段と、作成されたテンプレートを、前記優先順位情報とともに表示する表示手段としてさらにコンピュータを機能させることを特徴とする請求項５に記載のプログラム。
【請求項７】
前記表示手段は、作成されたテンプレート含まれる各領域を識別子を付して表示し、また、前記優先順位にしたがって前記識別子を配置したリストを表示することを特徴とする請求項６に記載のプログラム。
【請求項８】
前記テンプレートには、前記領域を関連づけるリンク情報が含まれ、前記優先順位情報は、前記リンク情報により関連づけられた領域における優先順位を示し、前記配置手段は、前記リンク情報による関連づけを維持したまま、前記領域にデータを配置することを特徴とする請求項５に記載のプログラム。
【請求項９】
データを配置するための領域を示す領域情報と領域に関連づけられた優先順位を示す優先順位情報とを含むテンプレートを用いて文書にレイアウトすべきデータに応じて動的に文書のレイアウトを変更可能な文書処理方法であって、
データを配置するための領域を示す複数の領域情報に対して、当該領域にデータを入れることで当該領域のサイズを決定する順序を示す優先順位を独立して設定する優先順位設定工程と、
前記テンプレートに従って前記優先順位により示される順序で前記領域に対応するデータを順次配置し、前記領域のサイズまたは位置が変更可能な場合には、当該領域のサイズまたは位置を、該領域よりも高い優先順位に関連づけられた領域を侵さないように前記データにあわせて変更する配置工程と
を備えることを特徴とする文書処理方法。
【請求項１０】
前記領域毎に指定された優先順位情報を付した前記テンプレートを作成する作成手段と、作成されたテンプレートを、前記優先順位情報とともに表示手段により表示させる表示工程とをさらに備えることを特徴とする請求項９に記載の文書処理方法。
【請求項１１】
前記表示工程は、作成されたテンプレート含まれる各領域を識別子を付して表示させ、また、前記優先順位にしたがって前記識別子を配置したリストを表示させることを特徴とする請求項９に記載の文書処理方法。
【請求項１２】
前記テンプレートには、前記領域を関連づけるリンク情報が含まれ、前記優先順位情報は、前記リンク情報により関連づけられた領域における優先順位を示し、前記配置工程は、前記リンク情報による関連づけを維持したまま、前記領域にデータを配置することを特徴とする請求項９に記載の文書処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえばデータベースに登録されたレコードの各フィールドを予め定めた位置に配置して文書を完成させる自動レイアウト機能を有する文書処理装置に関するものである。
【背景技術】
【０００２】
近年、商品の多品種化で商品ライフサイクルが短くなっていること、インターネットの普及により、これを利用した消費者のカスタマイズサービス指向が強くなっていることなどの要因からＣＲＭ（Customer Relationship Management）、One-to-Oneマーケティングの必要性が注目されている。これらの手法は顧客満足度を高め、顧客の開拓や囲い込みを目指すものである。
【０００３】
One-to-Oneマーケティングはデータベース・マーケティングの一種で、顧客の年齢、性別、趣味、嗜好、購買履歴等の個人属性情報をデータベース化し、その内容を分析、顧客のニーズに合った提案を行うものであり、その代表的な手法としてバリアブルプリントが挙げられる。ここ最近ではＤＴＰ（デスクトップパブリッシング）技術の進展とデジタル印刷装置の普及に伴って、文書を顧客毎にカスタマイズして出力するバリアブルプリントシステムが開発され、顧客毎に異なる情報量のコンテンツを最適にレイアウトして表示することが求められるようになった。
【０００４】
従来におけるバリアブルプリントシステムは、ドキュメント上に情報を表示する領域としてコンテナ（帳票フォームではフィールド領域とも呼ばれる）等をレイアウトして、データベースとコンテナとを関連付けることによりレイアウト表示を達成していた。
【０００５】
しかし、テキストおよびイメージが貼り付けられる部分領域であるコンテナのサイズが固定であったため、データベース内のデータがコンテナに挿入されたときに、データ量がコンテナサイズより多いとテキストのオーバーラップやイメージのクリッピングが発生し、またデータ量がコンテナサイズより小さいとコンテナ内に隙間が空いてしまい、いずれの場合でも表示しようとするテキストやイメージの情報量に応じた最適なレイアウト表示を実現することはできなかった。
【０００６】
その問題を解決するために、情報量に応じてコンテナサイズを可変にする自動レイアウトシステムが提案されている。この自動レイアウトシステムはテキストおよびイメージのコンテナサイズを可変に設定することが可能である。この自動レイアウトシステムにおいて、コンテナのサイズを可変とし、差し込まれるデータ量に応じてコンテナのサイズを大きくするよう変更できるものがある。また、テキストの場合において固定のコンテナサイズ内に入りきらないデータが挿入された場合、テキストのフォントサイズを縮小し、コンテナ内に全てのテキストを表示する技術も存在する。
【０００７】
しかし、コンテナのサイズを大きくした場合、ドキュメント上の他のコンテナに重なってしまうという問題が生じる。またフォントサイズを調節する場合はテキストの量が大きい場合、フォントサイズが小さくなりすぎるという問題も生じる。これらの問題を解決するために、さらなるレイアウトを変更する技術として、あるコンテナのサイズが大きくなった場合、このコンテナに隣接する他のコンテナのサイズを小さくする技術が特許文献１の「レイアウトデザイン装置」に開示されている。
【特許文献１】特開平７−１２９６５８号公報（段落００４９、図８）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載されているレイアウトデザイン装置は、配置素材の優先順位を管理しており、この優先順位の順序で各素材が配置され、レイアウトが決定されている。よって、単位各素材を配置する順序を決定しているだけであり、必ず一番優先度の低い素材の領域が狭くなってしまい、ユーザが所望とするレイアウトを得ることができなかった。また、特許文献１に記載されている自動レイアウトシステムでは、各素材の種類によって優先順位を決定してしまうため、データベースのデータのサイズによって自動的にレイアウトの計算を行った際、どのように各コンテナのサイズを変化させるかユーザが詳細に設定することができなかった。例えば、２つの可変コンテナＡおよびＢがあり、双方にデータベースからデータが挿入されたとする。コンテナＡ，Ｂに挿入されるデータが双方とも大きくページ内に収まらなかった際は、特許文献１に記載されている仕組みでは各素材の種類により設定されている優先順位に基づいてレイアウトが決定されるため、画像、図形、文字の順序に優先順位が設定されている場合、例えば、画像が入るコンテナＡが先に大きさ及び位置が決定され、次に文字が入るコンテナＢの大きさ及び位置が固定的に決定されることになる。
【０００９】
このため、たとえば、コンテナに入るコンテンツの種類に関係なく、作成するドキュメント内に作成したひとつのコンテナを、他のコンテナより優先的に表示（印刷）したいとしても、特許文献１の自動レイアウトシステムでは、コンテンツの種類により固定的に優先順位が決定されてしまう。つまり、コンテンツの種類に関係なく、他のコンテンツに比べてアピールしたいコンテンツが挿入されるコンテナについても、他のコンテンツの種類との兼ね合いでサイズが決定され、コンテナ毎に独立して優先的にレイアウトすることはできなかった。
【００１０】
また、優先順位を平等にして、各コンテナに入るコンテンツのサイズにより各コンテナが大きくなり、複数のコンテナがお互いに押し合うことでレイアウトを決定するようなこともできなかった。
【００１１】
本発明は上記従来例に鑑みてなされたもので、テンプレートにおいてデータが配置される、特に３つ以上の領域に優先順位を付与することで、データのレイアウトの自由度を高めることができる文書処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記問題点を解決する本発明は、以下に示す構成を備える。
【００１３】
文書にレイアウトすべきデータに応じて動的に文書のレイアウトを変更可能な文書処理装置であって、
データを配置するための領域を示す複数の領域情報に対して、当該領域にデータを入れることで当該領域のサイズを決定する順序を示す優先順位を独立して設定する優先順位設定手段と、
データを配置するための領域を示す領域情報と前記優先順位設定手段により該領域に関連づけられた優先順位を示す優先順位情報とを含むテンプレートを記憶する記憶手段と、
前記テンプレートに従って前記優先順位により示される順序で前記領域に対応するデータを順次配置し、前記領域のサイズまたは位置が変更可能な場合には、当該領域のサイズまたは位置を、該領域よりも高い優先順位に関連づけられた領域を侵さないように前記データにあわせて変更する配置手段とを備える。
【発明の効果】
【００１４】
本発明によれば、テンプレートにおいてデータが配置される領域に優先順位を付与することで、データのレイアウトの自由度を高めることができる。また、優先順位を領域毎に表示することで、レイアウト結果の予測可能性を向上させることができる。
【発明を実施するための最良の形態】
【００１５】
本発明の実施例を適用するのに好適である実施例について説明を行う。まず発明の概略について説明する。本実施形態は、ドキュメントテンプレート（単にテンプレートとも呼ぶ。）に定義されたコンテナに従って、データベースのレコード等を配置した文書を作成する、いわゆるバリアブルプリントと呼ばれる機能をコンピュータにより実現するためのコンピュータソフトウエアに関する。また特に、コンテナサイズをそのコンテンツのサイズに応じて変更できる自動レイアウト機能（あるいはこの機能を有する文書処理装置）を有する自動レイアウトシステムをコンピュータにより実現するためのコンピュータソフトウエアに関する。このソフトウエアが実行可能にロードされたコンピュータは、文書処理装置として機能する。本実施形態では特に、データをテンプレートに従って配置する際に、データのコンテナサイズをデータサイズに応じて変更する。そのとき、テンプレートで与えられているコンテナの優先順位にしたがって、高優先順位のコンテナを優先してデータを挿入してデータサイズに応じたサイズの変更を行い、低優先順位のコンテナについては、高優先順位のコンテナを侵さないように、かつ、コンテナ間にリンクによって定義された一定距離を維持するように、そのサイズを変更する。
【００１６】
次に、本発明を適用可能な本実施形態におけるコンピュータシステムの構成、およびアプリケーション構成について説明する。
【００１７】
＜システム構成図＞
図１Ａはバリアブルデータドキュメントを印刷するシステム１００を図示している。本明細書で示された方法は図１Ｂで詳しく説明される汎用コンピュータモジュール１０１で所定のプログラムを実行することで実践される。図１Ａに記述されるプロセスは、コンピュータモジュール１０１で実行され、システム１００上で実施可能となるレイアウト編集アプリケーションプログラム１２１のように、ソフトウェアの全体あるいは一部分で実行される。特にレイアウト編集や印刷のステップは、コンピュータ１０１によって実行されるソフトウェアの指示によって実施される。ソフトウェアは例えば以下に記述されるような記憶装置を含むコンピュータの可読媒体に格納される。ソフトウェアはコンピュータの可読媒体からコンピュータにロードされ、コンピュータ１０１によって実行される。そのようなソフトウェアや媒体に記録されたコンピュータプログラムを持つコンピュータの可読媒体はコンピュータプログラム製品である。コンピュータでそのコンピュータプログラム製品を使用することで、ドキュメントのレイアウト編集やバリアブルデータ印刷を行える装置として、そのコンピュータは機能する。
【００１８】
コンピュータモジュール１０１にはキーボード１３２やマウス１３３のようなポインティングデバイスなどの入力装置がつながれ、ディスプレイ装置１４４や状況に応じてはローカルプリンタ１４５を含む出力装置が連結される。入力／出力インターフェース１３８はコンピュータモジュール１０１をネットワーク接続１０７から接続してシステム１００の他のコンピュータ装置につなげることができる。そのネットワーク接続１０７の典型はローカルエリアネットワーク（ＬＡＮ）、あるいはワイドエリアネットワーク（ＷＡＮ）である。
【００１９】
コンピュータモジュール１０１は、一般的には少なくとも１つのプロセッサーユニット１３５、例えば半導体のランダムアクセスメモリ（ＲＡＭ）やリードオンリーメモリ（ＲＯＭ）から構成されるメモリユニット１３６、ビデオインタフェース１３７を含むＩＮＰＵＴ／ＯＵＴＰＵＴ（Ｉ／Ｏ）インターフェース、キーボード１３２やマウス１３３のためのＩ／Ｏインターフェース１４３を含んでいる。
【００２０】
記憶装置１３９は、一般的にはハードディスクドライブ１４０やフレキシブルディスクドライブ１４１を含んでいる。図１Ｂには示されていないが磁気テープドライブもまた使用される可能性がある。ＣＤ−ＲＯＭドライブ１４２は不揮発性のデータソースとして提供される。コンピュータモジュール１０１は、ＧＮＵ／ＬＩＮＵＸやマイクロソフト社のウィンドウズ（登録商標）のようなオペレーティングシステムに従って、あるいはコンピュータシステムの常套的なオペレーションモードによる方法によって、相互接続バス１３４を介して通信を行うコンピュータモジュール１０１に含まれる各構成要素（符号１３５〜符号１４３）を利用する。
【００２１】
図１Ｂに記述した配置のコンピュータの例としては、ＩＢＭ互換ＰＣやＳＵＮ社のＳｐａｒｃｓｔａｔｉｏｎ、あるいはそれらを含んだコンピュータシステムが考えられる。
【００２２】
図１Ａのレイアウトアプリケーションプログラム１２１は、通常は図１Ｂのハードディスクドライブ１４０に常駐し、プロセッサ１３５により実行、読み込み、コントロールされる。いくつかの事例では、アプリケーションプログラム１２１がＣＤ−ＲＯＭやフレキシブルディスク上にエンコードされており、対応するフレキシブルディスクドライブ１４２やＣＤ−ＲＯＭドライブ１４１を通じて読み込まれてユーザに提供される。あるいはもう一つの方法として、アプリケーションプログラム１２１はネットワーク接続１０７からユーザによって読み込まれてもよい。さらにソフトウェアは、磁気テープまたはＲＯＭまたは集積回路、光磁気ディスクまたは無線またはコンピュータモジュール１０１とその他のデバイス間の赤外線通信、ＰＣＭＣＩＡカードのようなコンピュータ可読カード、そしてＥメール通信やＷＥＢサイト上の記録情報を持つインターネットやイントラネットを含む、他の適当な大きさのコンピュータ可読媒体からコンピュータモジュール１０１内にロードされる可能性もある。上記の例は単に関連するコンピュータ可読メディアの一例である。他のコンピュータ可読媒体も使用される可能性はある。
【００２３】
またレイアウト編集アプリケーション１２１は、バリアブルデータ印刷（ＶＤＰ）を行うよう指示し、２つのソフトウェアコンポーネントを含んでいる。これらのうち第１ののコンポーネントはレイアウトエンジン１０５であり、これは長方形のコンテナで与えられた制限やサイズによって、コンテナを構成する矩形および線の位置を計算するためのソフトウェアコンポーネントである。第２のコンポーネントであるユーザインターフェース１０３は、ユーザにドキュメントテンプレートを作成させ、ドキュメントテンプレート内でデータソースと関連付けるメカニズムを提供する。ユーザインターフェース１０３とレイアウトエンジン１０５はコミュニケーションチャネル１２３を介して通信する。ドキュメント生成のためのデータソースは、一般的にデータベースアプリケーションを動かしている他のコンピュータによって構成されたデータベースサーバ１１７上にある一般的なデータベース１１９である。ホストコンピュータ１０１はネットワーク接続１０７によってデータベースサーバ１１７と通信する。バリアブルデータ印刷アプリケーション１２１はホストコンピュータ１０１か一般的に他のコンピュータで構成されるファイルサーバ１１５に保存されるドキュメントテンプレートを生成する。またバリアブルデータ印刷アプリケーション１２１はデータとマージされたドキュメントテンプレートによって構成されたドキュメントを生成する。これらのドキュメントはホストコンピュータ１０１のローカルファイルシステムに保存されるか、ファイルサーバ１１５に保存されるか、あるいはプリンタ１１３に直接印刷される。プリントサーバ１０９は直接ネットワークにつながっていないプリンタにネットワーク機能を提供するコンピュータである。プリントサーバ１０９とプリンタ１１３は一般的な通信チャネル１１１を介して接続される。
【００２４】
図２は、図１Ａの構成から、レイアウトエンジン２２５を独立させてエンジンサーバ２２７によりレイアウトエンジンを実行させるための構成を示す。エンジンサーバ２２７は一般的なコンピュータである。ファイルサーバ１１５に保存されたドキュメントテンプレートは印刷や他の目的がある際、レイアウトエンジン２２５によってドキュメントを生成するためにデータベース１１９に保存されたデータと結合することができる。そのようなオペレーションはユーザインターフェース１０３を介して要求されるか、特定のレコードのみ印刷するように要求される。
【００２５】
＜アプリケーション構成＞
（メインウインドウ）
図３で示されるように、ユーザインターフェース１０１は、操作時にビデオディスプレイ１４４に表示されるアプリケーションウインドウ３０１によって形成されたユーザインターフェースを含んでいる。ウインドウ３０１は、非表示にすることやスクリーン上の色々な場所に移動することが可能なメニューバー３０２とツールバー３０３、そしてマウス１３３の位置・動作によって場所を移動可能なワークエリア３０６とオプションのパレット３１１とカーソル/ポインタデバイス３１３から特徴付けされる。
【００２６】
メニューバー３０２は、周知の技術として知られているように、メニューオプションの階層の下に拡張される多くのメニューアイテム３０４を持つ。
【００２７】
ツールバー３０３は、アプリケーションの特別なモードによって非表示にする又は表示することが可能な多くのツールボタンとウィジット３０５を持つ。
【００２８】
オプションのルーラ３０８はワークエリア内のポインタ、ページ、ライン、マージンガイド、レイアウト枠（コンテナ）またはオブジェクトの位置を示すために使われる。
【００２９】
パレット３１１はバリアブルデータライブラリのような追加機能にアクセスするために使われる。パレット３１１は移動、リサイズ、クローズをするためのウインドウコントロール３１２を持つ。パレット３１１はオプションで、ワークエリアの前面に表示されたり、あるいはオブジェクトの背面に隠される。パレット３１１はアプリケーションウインドウ３０１の範囲内のみに表示されることを制限される場合もあるし、あるいはアプリケーションウインドウ３０１の外側に部分的・全体を表示することを許される場合もある。
【００３０】
ツールバーエリア３０３は図４に示すように、少なくとも以下のユーザ選択可能な「ボタン」を持つ。
* 選択ツールボタン４０３：コンテナの辺を選択、移動、サイズ変更、リサイズそしてロック・ロック解除するために使われる。コンテナは、複数のコンテナの周りに選択ボックスをドラッグする、あるいは複数コンテナを選択する間にCTRLキーを押しつづけることによって、複数選択を可能にする。
* イメージコンテナツールボタン４０４：スタティック（固定）あるいはバリアブルイメージを持つコンテナを作成するために使われる。
* テキストコンテナツールボタン４０５：スタティック（固定）あるいはバリアブルテキストを持つコンテナを作成するために使われる。
* リンクツールボタン４０６：コンテナ間の距離をコントロールするために使われる。
これらのボタンは、周知の技術であるように操作状況に合わせて変化するアイコンのツールチップとして実装される。
【００３１】
（ドキュメントテンプレート）
ワークエリア３０６はドキュメントテンプレートのデザインを表示および編集するために使われる。これはユーザに下準備で印刷されたドキュメントの概観をデザインすること、そしてマージされたドキュメントが、バリアブルデータの量またはサイズに基づいてどのように変化するかを理解することを可能にする。
【００３２】
もし外部データソース（例えばデータベースのレコード等）がテンプレートにリンクされていたら、現在のドキュメントのプレビューができるように、バリアブルテキストとイメージがコンテナに表示される。
【００３３】
ドキュメントの構造とバリアブルデータのコンテナの描写をする視覚的な手がかりとなるオブジェクトは、カーソルをコンテナ上に移動させたときや、コンテナを選択したときにいつも表示される。
【００３４】
ワークエリア３０６はスクロールバー３０７とオプションのルーラ３０８とドキュメントテンプレート３０９により特徴付けられる。ドキュメントテンプレート３０９はページが複数あることを示すことができる。
【００３５】
与えられたドキュメントテンプレートのページサイズは、周知の技術によりユーザによって指定される。それぞれのドキュメントでの実際のページ数はバリアブルデータによって変化する可能性がある。もし１ページ内に収めることができなかった場合、追加のページは自動的に作成される。
【００３６】
それぞれのページ内の境界線は、ページ上の印刷可能なオブジェクトの最大幅を示すページマージン３１０である。ページマージン３１０は利用者が定義できる。
【００３７】
また、図４は１ページのドキュメントテンプレート３０９上に表示することが可能なオブジェクトの例である。それらは、複数のコンテナ４０７、４０８と、任意に適用できるアンカーアイコン４０９と、固定されていない辺４１０、リンク４１２そしてスライダ４１３を持つ。
【００３８】
（コンテナ）
コンテナは、ドキュメントテンプレート内の固定あるいは可変テキストやイメージなどを持つスペースであり、他のコンテナやオブジェクトとともにレイアウトされる。コンテナはマウス１３３を操作してポインタ３１３を使い、図３、図４等のユーザインターフェースで示されるように移動、サイズ調整そして再作成される。
【００３９】
より正確には、コンテナは、設定の集まり、視覚的表現そしてインタラクションと編集動作をもっている。下記はコンテナの定義の全部分である。
* コンテナは固定あるいは可変のコンテンツを持つ。可変コンテンツは、データソース（たとえばデータベースのレコード）から取得され、異なるドキュメントでは異なっていてもよい、という意味でダイナミックである。可変コンテンツとしては、アニメーション化されたもの、あるいは他の方法で時間に応じて変化するものは印刷に適合していないため含まない。固定コンテンツはひとつのテンプレートを用いて生成される全てのドキュメントで同じに表示される。けれども、可変コンテンツを含むコンテナの位置やサイズの変化によって、固定コンテンツを含むコンテナはそれぞれのドキュメントで位置が異なる可能性がある。
* コンテナは、コンテンツに適用される背景色、ボーダー、フォントスタイルといったテキスト設定のような装飾機能を持っている。
* コンテナはドキュメントを生成したときにデータソースからのデータとマージされる。装飾機能は、どんな固定コンテンツでもそうであるように、一般的に印刷された出力物であり可視である。可変コンテンツはデータソースからの特定のデータとして得られ、表示あるいは印刷される。コンテナに収められるコンテンツは、例えば印刷されるか、スクリーン１４４上で表示されるか、あるいはその両方で出力され得る。
* コンテナはユーザインターフェースを持つ。例えばコンテナの編集そして表示設定のためのインタラクティブなＧＵＩを持つ。インターフェースの要素は普通はスクリーン１４４上に表示される。ユーザインターフェース１０３は、背景色やフォントのようなコンテナの装飾機能のいくつかを表示する。そしてコンテナの設定の編集や表示を行わせるための機能も有する。ユーザインターフェース機能の目的の例としては、ボーダー、あるいは、コンテナのサイズや位置を対話的に変更、表示するための角アイコン、あるいはコンテナがデータソースからデータをマージされたとき、コンテナの動作を示すための上塗りした数、線、アイコン、テキストがある。
【００４０】
（コンテナ制約）
コンテナはそれぞれのドキュメントで表示または印刷されるコンテンツをどのようにコンテナに収めるか制御するための制約を持つ。これらの制約は、ユーザが一つのドキュメントテンプレートによって多数のドキュメントをコントロールする主要な手段である。制約の一例としては「このコンテナのコンテンツの高さは、最大値４インチです。」というものがある。他の制約の例としては「コンテナのコンテンツの左エッジは、それぞれのドキュメントで同じ水平位置で表示しなければならない。」というものもある。ここに記述される内容は、ＧＵＩを使ってこのような制約を表示、編集するためのいろいろな方法である。
【００４１】
イメージがページ上に定義された場所を持っているように、固定コンテンツの配置を指定するコンテンツプレイスホルダは、デジタル印刷技術でよく知られている。以下の説明において、コンテナは位置とサイズとを持ち、それらは公知の技術で知られている手法で編集され、表示することができる。
【００４２】
ユーザは、コンテナの位置やサイズ、制約等を指定することで、ドキュメントのコンテンツのサイズおよび位置を指定することができる。複数のドキュメントが一つのドキュメントテンプレートから生成されるので、コンテナの多数の可能な設定と制約を指定および表示させるためにユーザインターフェースを使わなければならない。
【００４３】
１つのコンテナの辺は、関連付けられたコンテンツがドキュメント内で表示される仮想の境界線を定義する。すなわち、コンテナの左辺は、同一のテンプレートが適用されるどのドキュメント内でも、当該コンテナに関連付けられたコンテンツが配置される左端に対応する。同様に、コンテナの高さは、同一のテンプレートを適用して生成されたドキュメント内で当該コンテナに関連づけられたコンテンツの高さの制約として理解される。本明細書においては、ユーザインターフェース１０３を参照してコンテナの辺あるいは大きさを論じるところで、この区別は明らかにされるであろう。
【００４４】
下記の検討では、コンテンツの表示を制限するために使われるいくつかの値を定義している用語「固定」は、全てのドキュメントで同じである。
* もしコンテナの幅が固定なら、関連付けられたコンテンツに割り当てられる幅は、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、そのコンテナを含むページに関して同じ（固定値）になる。
* もしコンテナの高さが固定なら、関連付けられたコンテンツに割り当てられる高さは、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、そのコンテナを含むページに関して同じ（固定値）になる。
* もし距離の制約が固定なら、指定された距離（固定値）は、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントのための制約である。
* もしコンテナの左右辺が固定なら、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、コンテナの辺の水平方向についての位置が、そのコンテナを含むページに関して同じであることを意味している。しかしコンテナの高さあるいは垂直方向の位置は変わる可能性がある。例えば、もしコンテナの左辺が固定なら、コンテナに関連付けられたコンテンツは、ひとつのテンプレートを適用して生成されるひとつのドキュメントでページの上に近く表示され、他のドキュメントでページの下に近く表示されることもある。しかし左辺の水平位置は全てのケースで同じである。
* もしコンテナの上下辺が固定なら、辺の垂直方向の位置が、そのコンテナを含むテンプレートを適用して生成される全てのドキュメントで、そのコンテナを含むページに関して同じである。しかしコンテナの幅あるいは水平位置は変わる可能性がある。
* コンテナの垂直軸はコンテナの右辺および左辺と平行で、その中間に位置される想像上の垂直線である。もしコンテナの垂直軸が固定なら、コンテナの左右辺の水平位置の平均は、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じである。この制約で、コンテナの幅は変化する可能性がある。たとえば、相異なるドキュメントで、対応するコンテナの左右辺の水平方向の位置は、垂直軸に遠いか、あるいは近いかという点で相違する可能性がある。しかし、垂直軸は、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じ水平位置にある。コンテナの高さと水平位置はこの制約によって影響されない。
* コンテナの水平軸はコンテナの上辺および下辺と平行で、その中間に位置される想像上の水平線である。 垂直軸と同様に、もしコンテナの水平軸が固定なら、コンテナの上辺そして下辺の垂直方向の位置を制約する。けれども高さは、この制約によって影響されない。
* もし水平軸および垂直軸がともに固定なら、コンテナの中心位置（垂直軸と水平軸との交点）が固定されていることを意味する。しかし、コンテナの幅および高さはこの制約によって影響されない。
* もしコンテナの角、コンテナの辺の中間位置、あるいはコンテナの中心位置が固定なら、そのコンテナに関連づけられるコンテンツは、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じ場所に表示される。例えば、もしコンテナの左上角が固定なら、配置されたコンテナの左上位置が、そのコンテナを含むテンプレートを適用して生成されるすべてのドキュメントで、そのコンテナを含むページに関して同じになることを意味している。
* 垂直辺あるいは垂直軸は、ページの左辺あるいは右辺、あるいは左ページマージン、あるいは右ページマージン、あるいは他の水平位置に関連付けされて固定になる。同様に、水平辺あるいは水平軸は、ページの上辺あるいは下辺あるいはマージン、あるいは他の垂直位置に関連付けされて固定になる。
【００４５】
「固定」の反対は、辺、軸、角、中間位置、あるいはドキュメント制約がドキュメント間で変化する可能性があることを意味する「可変」である。しかしドキュメントの特定な設定でそうする必要が無いかもしれない。例えば、変更による辺の実際の好ましい位置のような他の外部制約がある、しかし、もし外部制約が適用されないなら、辺は固定されてないものとしてラベル付けされているので辺の位置は変更できる。
【００４６】
＜レイアウトモード（コンテナ表示および編集）＞
バリアブル印刷されるドキュメントの作成手順は、テンプレートを作成するテンプレート作成処理（レイアウトモード）と、作成されたテンプレートにコンテンツを挿入してドキュメントを作成するドキュメント作成処理（ドキュメントをプレビュー表示する場合を特にプレビューモードと呼ぶ。）という２つのフェーズに分けることができる。まず、レイアウトモードについて説明する。
【００４７】
（新規コンテナの作成方法）
コンテナには、テキストコンテナとイメージコンテナの２種類がある。テキストコンテナはテキストおよび埋め込みイメージを収める。イメージコンテナはイメージだけを収める。
【００４８】
図４に示すように、新規テキストコンテナとイメージコンテナは、テキストコンテナツール４０４、あるいはイメージコンテナツール４０５をマウス１３３でクリックし、テンプレート３０９に四角形をドラッグすることによって、ドキュメントテンプレート３０９上に作成される。
【００４９】
あるいは、コンテナは、適切なツール４０４、４０５をアクティブにした後に、ドキュメントテンプレート３０９上でクリックすることによって簡単に作成できる。新たなコンテナが作成された場合、デフォルトサイズのコンテナが挿入されるか、または新規コンテナの寸法を入れるために、ダイアログボックスあるいは他のプロンプトが表示される。また、コンテナを、前もって定義あるいは計算されたスキーマによって自動的に作成および配置することもできる。
【００５０】
（コンテナの表示方法）
ドキュメントテンプレート内に作成されたコンテナの辺の状態は、図４に示すようにユーザインターフェース上にグラフィカルに表示されるのが好ましい。共通する表現で辺の状態を示すことで状態に対応する画像オブジェクトの種類をより少なくできる。
【００５１】
図５（Ａ）−図５（Ｄ）はコンテナの表示例を示す図である。アプリケーション１２１は、辺の状態を表現するために、実線５０３あるいは点線５０４で辺を描写する。コンテナは、アンカー（辺の近くに描画されたオブジェクト５０６、５０７、５０９によって示されるような線、形状、アイコン）、ハンドル（移動、修正するために、辺や形の近くに描画されたコントロール点）５０２、スライダ（辺の両サイドに描画された短い並行線、図４の４１３）、拡縮（矢印）アイコン５０５、そして色を特徴として持っている。
【００５２】
図５（Ａ）−（Ｄ）のコンテナ表示方法のルールは、つぎの通りである。
１．それぞれの辺が固定されているならば、その辺を実線で描画する。
２．もし幅が固定なら、左と右の辺を実線５０３で描画する。
３．もし高さが固定なら、上と下の辺を実線５０３で描画する。
４．軸は描画しない。
５．まだ描画されていない辺は、その辺の近くに拡縮アイコン５０５が描画され、点線５０４で描画される。
６．垂直辺あるいは軸と水平辺あるいは軸との交点には、交差する辺または軸がともに固定なら、アンカーが描画される。
７．固定辺のどこにもアンカーが描画されていなければ、その辺の中央にスライダが描画される。
８．垂直辺あるいは軸と水平辺あるいは軸との交点には、アンカーもスライダも描画されていなければ、ハンドルが描画される。
【００５３】
可変の辺は、点線で描画される。ルール６、７、８に従って描画される固定点にはアンカーが表示され、固定された辺にはスライダが表示され、他の辺にはハンドルが表示される。
【００５４】
上記説明で、辺はただ一度描画されることが必要である。もしルールが描画されるべき辺に影響すれば、後のルールはその描画されるべき辺に影響しない。また、例えばもしコンテナがとても小さいくアイコンがお互い重なるか、あるいは他の表示機能を不明瞭にするならば、アイコンは省略されて描画してもよい。
【００５５】
可変の辺が描画される場所はコンテナのコンテンツに依存する。後で説明するように、ドキュメントテンプレートにコンテンツがマージされて、ユーザインターフェース上にドキュメントを表示する「動的な校正処理」が行われる。
【００５６】
これらのコンテンツ表現は、コンテナの辺の状態を表示するグラフィカルな手段を提供する。その表現の解釈は下記のとおりである。
* 図４の辺４１０のように、点線は、コンテナのコンテンツに応じたドキュメント内の辺の位置を意味する。
* 実線は制限された辺を意味する。なぜなら、実線で表示された辺は固定されているか（辺４１４）、あるいはコンテナの幅または高さが固定されている（コンテナ４０８では両方が固定されている）ためである。
* アンカーは、辺または軸の交点が固定されていることを意味する。それゆえ、アンカー点は、そのアンカー点を含むドキュメントテンプレートを適用したすべてのドキュメントにおいて、同一の水平、垂直位置に現れる。当然アンカーは固定される。図４のアイコン４０９は、交差する辺４１４が固定されていることを意図しているアンカーアイコンの例である。
* スライダは、関連付けられた辺が固定されていることを意味する、しかしコンテナは、辺に沿って「スライドの長さ」だけスライドされた位置に移動できる。例えば、図４で、スライダ４１３の操作により、コンテナ４０８のコンテンツはドキュメント内で左あるいは右に移動されて表示されることもある。
【００５７】
これらのアイコンや辺のいくつかあるいは全ては、どのツール、どのコンテナを選択したりハイライトあるいはアクティブにするかによって、描画されたりされなかったりする。一般的に、コンテナの辺およびアイコンはドキュメントテンプレートをデザインするために表示されるものであって、作成されたドキュメントテンプレートを適用した印刷物には描画されない。
【００５８】
コンテナの幅および高さの最小値および最大値の設定は、副次的なダイアログウインドウに表示される。
【００５９】
図５（Ａ）で、コンテナ５０１は幅および高さ両方が固定されていない。固定された辺５０３は実線で表現される。可変の辺５０４は点線で表現される。点線は、その辺が、コンテナの内容となるコンテンツサイズに応じて可変であることを示す。一方、拡縮アイコン５０５は、隣接する辺５０４がリンクにより関連づけられた他のコンテナのサイズ変更や移動に応じて可変であることを示すインジケータである。
【００６０】
図５（Ｂ）で、コンテナ５０１は幅および高さ両方が可変である。アンカーアイコン５０６は、交差している２つの辺５０３が固定されていることを示している。
【００６１】
図５（Ｃ）で、コンテナ５０１は、アンカーアイコン５０７で示される点を中心にして均等に拡大あるいは縮小できる状態で、幅および高さ両方が可変である。
【００６２】
図５（Ｄ）で、コンテナ５０１は、上辺５０８が固定されていることを除けば、幅および高さ両方が可変である。上辺５０８の中心に示されるアンカーアイコン５０９は、その辺５０８が固定されており、コンテナの左辺および右辺が、アイコン５０９を通り垂直に描画される中心軸（垂直軸）の周りで、移動し得ることを示す。
【００６３】
＜ドキュメントテンプレートのデータの例＞
図２６は、ドキュメントテンプレートのデータ（テンプレートデータと呼ぶ。）の一例を示す。図２６において、テンプレートデータ２６０１は、メモリ１３６あるいはハードディスク１４０に格納されている。テンプレートデータには、以下の要素が含まれる。
（１）全体サイズ２６０２：テンプレート全体のページのサイズを示す。サイズは、たとえば、縦および横の長さ、または定型用紙サイズなどで示される。
（２）コンテナ情報２６０３：テンプレートに配置されるコンテナ毎に、そのコンテナを特定するための識別情報やコンテナの基準の位置（位置情報）、辺の長さ（サイズ情報）、コンテナを構成する辺や点の属性（属性情報）、コンテナに関連づけられるコンテンツの情報等を示す。位置情報およびサイズ情報は、テンプレート作成時に定義されたものであり、位置情報は、コンテナの作成時にユーザにより設定されたコンテナの基準の位置になる。位置が可変のコンテナであれば、コンテナに流し込まれるコンテンツのサイズ（画像サイズ、テキスト量）に応じて大きさが変更され、各コンテナの大きさにより動的に位置が変更されることになる。アンカー等により位置が固定されているコンテナであれば、固定された位置を示す。このような位置情報は、少なくともコンテナの対角点の位置を特定できる情報を含む。もちろん、全点についてテンプレート上における位置を持ってもよいし、ひとつの点についてはテンプレート上における位置の情報を持ち、他の点については相対的な位置の情報を持つようにしてもよい。すなわち、コンテナの一つの点とコンテナのサイズによって定義することもできる。また、固定されている点についてはテンプレート上における位置で定義し、可変の点については相対的な位置で定義しても良い。
【００６４】
属性情報は、図４および図５を参照して説明した、コンテナの辺や辺、軸またはそれらの交点等の属性を示す。ひとつのコンテナは、たとえば位置とサイズとにより、上辺、下辺、左辺、右辺、水平軸、垂直軸、各角点、中心点、幅、高さが定まる。それら各要素について、可変であるか、固定されているかが属性情報により定義される。図４のユーザインターフェースによりドキュメントテンプレートを作成した場合、コンテナの辺や点や軸を選択した状態で、パレット３１１内に表示されるメニュー「固定する」「可変とする」などから、オペレータが所望の項目を選択することで、選択された点や辺に対応して、コンテナ情報２６０３に「固定」「可変」いずれかの属性が書き込まれる。コンテナ作成直後の既定値はたとえばすべて「可変」としておく。なおこの例では、ひとつの辺や軸について「固定」であるとは、辺や軸の長さや長手方向の位置ではなく、長手方向に直交する方向についての位置が固定されていることを意味している。また、点や辺の属性を設定することで、自動的にその他の点や辺の属性が定まる場合には、その属性も書き込む。たとえば角点を「固定」と指定した場合、それを挟む辺も「固定」とされる。これは逆も同様である。またたとえば、中心点の位置を「固定」と指定すると、中心点の属性に「固定」と書き込まれると共に、水平軸及び垂直軸の属性も「固定」と書き込まれる。この場合、幅や高さは可変のままであれば、幅および高さの属性は「可変」のまま維持される。
【００６５】
関連づけられるコンテンツに関する情報（コンテンツ関連情報）には、たとえば、それがテキストコンテナであるかイメージコンテナであるかの種別を示す情報や、そのコンテナに挿入されるデータソースの識別子、たとえばデータベース名、レコード名、フィールド名等の一部又は全部、コンテンツを抽出するための条件式などの関連付け情報が含まれる。また、テキストコンテナの場合には、フォントに関する情報、たとえばフォント種類やサイズ、色、斜体や太字、下線等の文字修飾情報等もコンテンツ関連情報に含まれる。
【００６６】
コンテナ情報２６０３は、ドキュメントテンプレートに設けられたコンテナの数だけ保持される。
（３）リンク情報２６０４：リンクとはコンテナ間の関連付けであり、特にリンクで結ばれた２つのコンテナ間の距離を一定（固定リンク）や可変範囲（可変リンク）とする旨の情報である。リンク情報としては、たとえば、水平方向及び垂直方向それぞれについて、２つのコンテナの識別子、およびそれらコンテナの対向する辺の間にリンクが設定されたことを示す情報や、リンクに沿った方向についてのコンテナ間の距離などを含む。リンク情報は定義されたリンク毎に保持される。リンク情報の形態としては、水平方向及び垂直方向それぞれについて、各コンテナの辺の位置を保持し、その辺の間にリンクが設定された旨を示す情報を保持してもよい。
（４）固定情報２６０５：可変部分以外の固定部分を定義するための情報が含まれる。たとえば、当該テンプレートが適用されて生成される全ドキュメント（全レコード）に共通の文や画像等が定義できる。文や画像については、そのデータそのものを含まずに、位置情報を定義するだけでも良い。もちろん、テンプレート上において配置される位置を定義するための情報も含む。
（５）優先順位情報２６０６：優先順位情報は、テンプレートに含まれるリンクにより関連づけられたコンテナの優先順位を示す情報である。データベースのレコードをテンプレートにしたがって文書化する際には、たとえば、より高い優先順位のコンテナが、優先的にコンテンツに合わせてサイズ変更される。すなわち、優先順位の高いコンテナは、コンテンツサイズに応じた大きさになるよう優先順位の低いコンテナに優先してその大きさが計算される。一方優先順位の低いコンテナは、優先順位の高いコンテナの大きさが決まった後に従属的に位置やサイズが計算される。本実施形態では、優先順位情報２６０６は、たとえば、リンクにより構成されるコンテナ集合の要素であるコンテナ（要素コンテナ）の識別子と、各コンテナ識別子に対応する優先順位を示す値との組により示される。もちろん、コンテナの識別子を優先順位にしたがって並べただけの構成であっても、優先順を示すことはできる。この場合には、識別子の順序が優先順位情報を構成する。
【００６７】
＜リンクの設定方法＞
図２５はリンクの設定方法を示したフロー図である。また図６（Ａ）−（Ｃ）はＵＩ例を示している。それらを用いてコンテナにリンクを設定する方法について説明をする。
【００６８】
まず、リンクを設定するためには、リンクを設定するためのコンテナ（最低２つ）を作成する（ステップ２５０１）。次に、図４に示すリンクツールボタン４０６を選択した状態にする（ステップ２５０２）。図６（Ａ）−（Ｃ）は、２つのコンテナを作成し、リンクツールが選択されていた状態から、リンクを設定する動作を行った際のユーザインターフェースの例を示している。図６（Ａ）−（Ｃ）を順に説明していく。
【００６９】
図６（Ａ）の辺０６０１、０６０２は、前述した図４の辺４０７、４０８と同じであり、固定されている辺である。また、アンカー０６０３と０６０４は、アンカー４０９と同じものである。まず、ユーザがリンクを設定する一方のコンテナをクリックして選択する（ステップ２５０３）。次に図６（Ｂ）で示されるように、他方のコンテナまでマウスポインタを移動してクリックする（ステップ２５０４）。図６（Ｂ）の線０６０６は、図６（Ａ）で最初にクリックをした位置と移動後のマウスポインタの位置とを結んだ線を示しており、どの位置にリンクが設定されるのかをユーザに示すＵＩである。ステップ２５０４が終わった後、コンテナは図６（Ｃ）の状態になり、設定した場所にリンク０６０７が表示される（ステップ２５０５）。また、リンクが設定されたことにより、コンテナを示すオブジェクトも自動的に変更される（ステップ２５０６）。辺０６０８、０６１０は、点線で示されている辺であり、可変の辺を示している。図６（Ｃ）のようにコンテナの辺の状態が変化したのは、リンクを設定したことにより、コンテナの辺を可変にする必要があるためであり、リンクを設定したにもかかわらず、全ての辺が固定という矛盾を引き起こすことを防ぐために、自動的に行われる処理である。また、拡縮アイコン（矢印）０６０９は図５のアイコン５０５と同じで、リンクを設定したことにより、コンテナが変化できる方向をユーザに視覚的に示したオブジェクトである。図６（Ｃ）の例では、左のコンテナの右辺０６０８と右のコンテナの左辺０６１０が可変に変化したが、これは一例であり、右コンテナが、図４に示すスライダ４１３を持つ設定に変化してもかまわない。
【００７０】
この処理を図２６のデータ処理の観点から説明すると以下のようになる。たとえば、ステップ２５０１では、コンテナを作成することにより、コンテナ情報３３０３が定義される。そして、ステップ２５０６において、ステップ２５０３とステップ２５０４で選択された２つのコンテナ間にリンクが設定された旨を、リンク情報として記憶する。そしてステップ２５０６において、リンクが設定された２つのコンテナの対向する辺の属性を必要に応じて変更する。たとえば、対向する辺の少なくとも一方が可変であれば、辺の属性を変更する必要はない。しかし、双方が固定であれば、リンクを設定する意義が失われるために、少なくとも一方を可変とする。図６の例では、両方を可変に変更している。もちろん、辺の属性が変更された場合には、変更された属性についてコンテナ情報２５０３に含まれる属性が変更された辺についてその属性情報を書き換える。
【００７１】
なお、上記記載では「対向する」との表現を用いているが、線どうしが見かけ上対向する場合のほか、線自体は対向していなくとも（すなわち２つの線の長手方向の投影が重複しなくとも）、線の延長線が対向する関係にあれば、その延長線の間でリンクを設定することができる。本明細書ではこのように延長線が対向する場合も含めて、リンクで関連づけられたコンテナに関しては、辺が「対向する」と表現することにする。すなわち、たとえばテンプレートの対角に沿って配置された小コンテナ間にもリンクを設定できる。
【００７２】
以上のように、リンクで関連づけられたコンテナの対向する辺の一方が可変で他方が固定であれば、コンテンツサイズに応じて可変の辺は移動する可能性がある。そして、その可変の辺の移動量に応じて、固定辺の側のコンテナは、コンテナ自体が平行移動する（アンカーがない場合）。リンクで定義されたコンテナ間の距離（リンクに沿った方向についての距離）は維持される。双方の辺が可変であれば、コンテンツのサイズに応じて量コンテナのサイズが可変となるが、コンテナ間の距離はこの場合も維持される。
【００７３】
＜優先順位の設定方法＞
図７はオペレータによる優先順位の設定方法を示している。図７の順は、図１Ａ乃至図２のコンピュータにより、オペレータの操作に応じて実行される。図７の手順は、予め定義されたテンプレートが表示されている状態から開始される。テンプレートは、テンプレート名称やその中に定義するコンテナ、コンテナ属性等のテンプレートの属性情報、リンク情報、固定情報など、図２５に示す情報をテンプレート毎に定義することで作成される。以下、各ステップの説明に、図８〜図１１のＵＩ図も参照する。
【００７４】
まず、ユーザによって図１１に示すように、テンプレートモードにおけるテンプレート表意画面から優先順位を設定するコンテナが選択され、ポップアップメニューを表示させ、優先順位設定が選択されると、優先順位設定画面を表示する（０７０１）。図１１において、１１０１はコンテナ、１１０２はポップアップメニュー、１１０３はマウスポインタを示している。このとき、図１１では、コンテナの優先順位設定の指示はポップアップメニューから選択されているが、コンテナのプロパティダイアログなどで選択されてもかまわない。
【００７５】
次に、ステップ０７０１で選択したコンテナとリンクにより関連付けされているコンテナを一つの集合として認識して、優先順位を設定していく（０７０２）。本自動レイアウトシステムは、関連付けされたコンテナ同士が、相互にコンテンツのサイズに合わせてレイアウトを計算して、最適化を行う（図１５等を参照して詳述する）。本発明の優先順位は、関連し合うコンテナについて、計算順番を指定していくものであるため、関連付けされているコンテナを一つの集合として認識して、優先順位を設定していく。例えば、図８ではテキストコンテナＡ，Ｄ，ＦとイメージコンテナＢ，Ｃ，Ｅがレイアウトされている。リンク（０８０３など）によってコンテナが関連付けられており、コンテナＡ，Ｂ，Ｃ，ＤとコンテナＥ，Ｆの２つのコンテナの集合が形成されている。ここで、マウスポインタ（０８０４）でいずれかのコンテナを選択すると、選択されたコンテナを含むコンテナ集合について優先順位の設定を行うことができる。たとえばコンテナＡを選択して優先順位の設定を行うと、コンテナＡ，Ｂ，Ｃ，Ｄのコンテナ集合について各コンテナの優先順位を設定することができる。
【００７６】
次に、ステップ０７０１で表示された優先順位設定画面で、ユーザが設定した優先順位をコンテナに設定していく（０７０４）。
【００７７】
以上の手順をコンピュータによるデータ処理の観点から説明すると以下のようになる。まずユーザの操作に応じて優先順位設定モードに移行し、そのモードにおいて着目テンプレート上のいずれかのコンテナが選択されると、ステップ０７０２では、選択されているコンテナと直接または間接にリンクされて関連づけられているコンテナをテンプレート上に定義されているコンテナから探し、得られたコンテナの集合を着目コンテナ集合として記憶する。このために、たとえばまず選択されたコンテナの識別子が、着目コンテナ集合の要素コンテナとしてメモリの所定領域に記録される。それとともに、着目テンプレートのリンク情報２６０４を参照し、選択されたコンテナに関連づけられているコンテナの識別子を検索する。ヒットしたコンテナの識別子も、着目コンテナ集合の要素コンテナとして別途メモリに記録される。さらに新たな追加された要素コンテナに関連づけられたコンテナをリンク情報２６０４を参照して検索する。このようにして、検索の都度新たに追加される要素コンテナ全部についてリンクにより関連づけられたコンテナの検索を行い、あらたなコンテナが見つかればその識別子を要素コンテナとしてメモリに追加的に記録する。すべての要素コンテナについて検索が終了し、新たなコンテナが見出されなくなったなら、着目コンテナ集合の要素をすべて検索し終えたこととなる。ここまでがステップ０７０２で行われる。
【００７８】
ここで、ステップ０７０２ではまず優先順位情報２６０６を参照しても良い。もし着目コンテナ集合に対して優先順位の付与がされていれば、着目コンテナ集合の要素コンテナの識別子はすべて優先順位情報に記憶されているため、リンク情報を検索する処理を省略することができる。その場合、優先順位情報２６０６に選択されたコンテナの識別子が含まれていなければ、新たに優先順位を設定する手順であるから、上記リンク情報の検索によるコンテナ集合の要素コンテナ識別子の収集を行う。
【００７９】
次にステップ０７０３において、オペレータに入力された優先順位に対応する優先順位情報を、優先順位情報０２０６として保存する。優先順位は、図９等で説明するように、着目コンテナ集合の要素コンテナの順序により指定される。そこで、指定された順序で、要素コンテナの識別子を配列したり、あるいは、識別子ごとに優先順位を示す値（順序を示す数値など）を対応付けて、コンテナ集合毎にまとめて保存する。たとえば、図８のコンテナＡ，Ｂ，Ｃ，Ｄを要素とするコンテナ集合では、この順序で優先順位が付与されたとすれば、「Ａ，Ｂ，Ｃ，Ｄ」と識別子を並べた情報や、「Ａ：１，Ｂ：２，Ｃ：３，Ｄ：４」などと識別子と優先順位を対応付けた情報として優先順位情報２６０６は保存される。もちろんこれは一例に過ぎず、コンテナ集合とそのコンテナ要素ごとの
優先順位が識別できればどのような形式であってもよい。
【００８０】
最後に、ステップ０７０４において、設定された優先順位をテンプレートを表示した画面上に表示する。たとえば、着目コンテナ集合について、優先順位情報２６０６を参照して、保存された優先順位情報にしたがって要素コンテナの識別子を順番に並べて表示する。この表示は、テンプレートを表示した枠外に表示したり、あるいは、識別子に対応するコンテナ画像に重畳して優先順を表示するなど、種々の方法で実現できる。ここで着目コンテナは、たとえばマウスカーソルの位置により決定される。マウスカーソルの位置が、コンテナやリンク上にある場合、そのコンテナを要素として含むコンテナ集合あるいは、そのリンクで関連づけられたコンテナを要素として含むコンテナ集合が、着目コンテナ集合となる。この判定は、コンテナやリンクを示すオブジェクトの表示範囲と、マウスポインタの位置とを比較することで実現できる。
【００８１】
図９は優先順位を設定するダイアログＵＩを示している。０９０１はダイアログ、０９０２は優先順位を示しているＵＩ，０９０３は優先順位を設定するコンテナが表示されるリストボックスである。ここには、ステップ０７０２で一つの集合と認識されたコンテナがすべて表示される。０９０４は優先順位を変更する矢印ボタン、０９０５は設定をキャンセルするキャンセルボタン、０９０６は設定を反映させるＯＫボタンである。ＵＩ０９０２で示されるように、リストボックス（０９０３）で上に表示されているコンテナは優先順位が高く、下に行くにつれて優先順位が低くなる。計算される順番は上から順番になる。図９では、テキストコンテナＡ、イメージコンテナＢ、イメージコンテナＣ、テキストコンテナＤの順に計算される。
【００８２】
図１０は、図７のステップ０７０３においてオペレータが優先順位を変更する方法を示している。図１０（Ａ）の選択欄１００１で示しているように、マウスポインタなどで優先順位を変更したいコンテナ名を選択する。そして、優先順位を上げるのであれば上矢印ボタン、下げるのであれば下矢印ボタン（１００２）を押下する。ここでは、テキストコンテナＤを選択して、優先順位を上げる操作を行ったものとする。すると、１０（Ｂ）で示すように、テキストコンテナＤの優先順位が一つ上がり、イメージコンテナＣの優先順位が一つ下がる。
【００８３】
優先順位の設定方法は、この方法に限らず、ここではコンテナＡ，Ｂ，Ｃ，Ｄと４つのコンテナについて優先順位を設定するので、各コンテナについて優先順位１番、２番と番号で指定する方法でも良い。
【００８４】
このようにしてオペレータにより指定された各コンテナに対応する優先順位が、優先順位情報２６０６として保存される。
【００８５】
＜優先順位の表示方法＞
図１２、１３、１４は、図７のステップ０７０４において、各コンテナに設定されている優先順位を視覚的にユーザに示す方法について示している図である。それぞれについて説明する。
【００８６】
図１２、１３はそれぞれ別ウインドウで設定した優先順位を表示する方法を示している。図１２はマウスカーソルがコンテナ集合１２０３に属する要素コンテナにおかれた場合の表示であり、図１３はマウスカーソルがコンテナ集合１２０４に属する要素コンテナにおかれた場合の表示である。図１２において、ウインドウ１２０１は、自動レイアウトアプリケーション（すなわち本実施形態の文書処理装置を実現するためのプログラムに相当する。）ウインドウを示している、その他ページエリア、ツールバーなどは図３と同じであり、その他はここでは省略してある。画面には、そのほかマウスポインタ１２０２、コンテナ集合１２０３、１２０４が表示されている。コンテナ集合１２０３，１２０４はそれぞれ優先順位が設定されている。プロパティパレット１２０５は、テンプレートの枠外に表示されており、優先順位を表示している。リストボックス１２０６はコンテナ名が表示されているリストボックスである。図１３においても同様に、１３０１はマウスポインタ、１３０２はリストボックスを示している。
【００８７】
図１２および図１３では、パレット１２０５とリストボックス１２０６および１３０２によって、コンテナの優先順位がユーザに視覚的に表示される。リストボックス１２０６，１３０２には、優先順位の高い順に上からコンテナ名が表示される。図１２で示しているように、マウスポインタ１２０２をコンテナの集合１２０３上（すなわち要素コンテナまたはリンクの画像オブジェクト上）に置くと、リストボックス１２０６に、その集合内の要素コンテナ（コンテナＡ，Ｂ，Ｃ，Ｄ、Ｅ）が優先順位の高い順位表示される。ここでは、高い方からコンテナＢ，Ａ，Ｅ，Ｃ，Ｄの順で優先順位が設定されていることを示している。
【００８８】
図１３で示すように、マウスポインタ１３０１を別のコンテナの集合１２０４へ移動させると、リストボックス１３０２の表示が更新され、コンテナＦ，Ｇ，Ｈが優先順位の高い順に表示される、ここではコンテナＦ，Ｈ，Ｇの順に優先順位が高い。
【００８９】
＜プレビュー表示処理＞
図１５は、テンプレートを用いたレイアウトのプレビュー表示時のフローを示している。これもまた図１Ａ〜図２のコンピュータにより実行される。まず、オペレータによりプレビューモードが選択されると、プレビューモードの処理が開始される（１５０１）。前述した自動レイアウトシステムでは、コンテナを作成して、そのコンテナ間に関連付けを行いレイアウト作成するレイアウトモード（図２５参照）と、作成したレイアウトにレコードを挿入して、実際にレコードが挿入された後のレイアウト結果をプレビューするプレビューモードに分けられる。このプレビューモードにおいて、実際のレコードが挿入され、前述した優先順位に従ってレイアウトを計算する。ただし、プレビューモードは、表示上でのレイアウト計算である。実際に印刷する場合においても、レコードを挿入してレイアウトを計算する。その際の計算方法も同じである。
【００９０】
プレビューモードになったら、オペレータの操作に応じてプレビューするレコードが選択される（１５０２）。レコードの選択が行われ、プレビュー実行の指示がオペレータから与えられると、選択されたレコードをレイアウトするために計算を行う。その際に、まず前述した優先順位がコンテナに設定されているかをチェックする（１５０３）。このためには、テンプレートデータ２６０１の優先順位情報２６０６を参照し、何らかの優先順位情報が保存されているか判定する。そして前記チェックで、優先順位が設定されているコンテナが存在すると判断された場合、すなわち優先順位情報２６０６に何らかの優先順位情報が保存されている場合には、優先順位ありとしてレイアウトを計算する（１５０４）。この優先順位ありの場合のレイアウト計算方法については、図１９を参照して詳細に記述する。ステップ１５０３で優先順位が設定されているコンテナが存在しなかった場合、優先順位なしとしてレイアウトを計算する（１５０５）。この処理は図１６を参照して後で説明する。
【００９１】
次に、ステップ１５０４または１５０５で計算されたデータのレイアウトを表示する（１５０６）。もちろん印刷の場合にはここでプリンタにデータを送信して印刷を実行する。そして他のレコードについてもプレビューを行うかどうかを判断する（１５０７）。ステップ１５０７で、他のレコードについてプレビューを行う必要がないと判断した場合は、プレビューモードを終了する（１５０９）。他のレコードについてプレビューを行うのであれば、他のレコードを選択して再度レイアウト計算を行い、プレビューを行う（１５０８）。プレビューモードでなく印刷時においては、印刷するレコード全てについて順にレイアウトの計算を行う。したがって、ステップ１５０７、１５０９は存在しない。そして全てのレコードについて印刷が終了した時点で終了する。
【００９２】
＜レイアウト計算処理（優先順位なし）＞
図１６は図１５のステップ１５０５における優先順位を設定しない場合のレイアウト計算手順を示したフロー図である。また、図１７はそのときのＵＩ表示例を示した図である。
【００９３】
まず、レイアウト計算の対象となるコンテナの集合を求める（１６０１）。レイアウト計算は、関連付けられたコンテナを一つの集合として計算を行う。例えば図１８を参照すると、ページ上に４つのコンテナがレイアウトされており、各コンテナに関連付けが設定されている。この場合、コンテナＡとコンテナＢ、そしてコンテナＣとコンテナＤがリンクによって関連付けされている。したがって、コンテナＡ・Ｂが集合１、コンテナＣ・Ｄが集合２となる。前述した通りであるが、１８０１はアンカー、１８０２は固定された辺、１８０３はコントローラー、１８０４は可変の辺の変化方向を示している矢印、１８０５は可変の辺、１８０６はリンク、そして１８０７はスライダーを示している。
【００９４】
コンテナ集合を特定するための情報は、図１６では優先順位情報２６０６から得られないので、リンク情報２６０４を参照して獲得する。すなわち、テンプレートの配置されたコンテナのうちから適当なコンテナの識別子を選択し、リンク情報を検索して、その識別子のコンテナと直接または間接に関連するコンテナの識別子を獲得して、獲得したコンテナ識別子をメモリに着目コンテナ集合の要素コンテナとして記録する。これは図７のステップ０７０２と同様である。
【００９５】
次に、ステップ１６０１で求めたコンテナの集合から、レイアウトを計算するために一つのコンテナを選択する（１６０２）。そして、レイアウトするコンテンツデータを取得する（１６０３）。ここでレイアウトするデータは、ステップ１５０２またはステップ１５０８で選択されているレコードに含まれるデータである。コンテンツデータは、コンテンツの内容、サイズ、量などを含む。次に、取得したコンテンツデータからそれに対応するコンテナに挿入するデータサイズを得る（１６０４）。そして、渡されたコンテンツデータのデータサイズを元に、各コンテナのサイズを計算する（１６０５）。
【００９６】
ステップ１６０５でコンテナサイズの計算を行ったことにより、各コンテナのサイズと位置が決定される（１６０６）。この時点では、レイアウトの最適化を行っていないため、得られたサイズ及び位置は仮決定である。次に、レイアウトされるコンテナのサイズが、実際のコンテンツのサイズとできる限り差が少なくなるように、レイアウトの最適化を行う（１６０７）。レイアウトの最適化は、動的にサイズを変化することが可能なように関連付けられたコンテナにおいて、それぞれに挿入されるコンテンツのサイズとレイアウトされるサイズとの差が、できる限り同じになるように行われる。レイアウトの最適化を行い、ルールに違反していた場合は、再度ルールを違反しないように計算をする（１６０８）。ここで記述したルールとは、レイアウト作成時にユーザによって設定される制限であり、コンテナのサイズと位置、リンクの長さなどである。ルールを違反しないようにレイアウトが計算されたら、その集合のコンテナのサイズ・位置は確定され、レイアウトが完成する（１６０９）。最後に、確定された位置およびサイズのコンテナに対応するコンテンツを流し込む（１６１０）。そして、ステップ１６０２〜１６１０をページ上のすべての集合について施し、ページ全体のレイアウトを計算する（１６１１）。
【００９７】
図１７（Ａ）〜（Ｃ）は優先順位の設定なしでレイアウト時のＵＩ例である。図１７（Ａ）は、あるレコードが挿入されレイアウトが決定されている状態を表している。１７０１と１７０２はアンカー、１７０３と１７０４は固定された辺、１７０５は可変の辺、１７０６は可変の辺の変化方向を示している矢印、１７０８はリンクをそれぞれ示している。この状態において、レコードを変更し、異なったサイズのコンテンツを挿入する。図１７（Ｂ）は図１７（Ａ）の状態に新しいコンテンツのサイズを重ねて示している。１７０９はそれぞれのコンテナに挿入されるコンテンツのサイズを表している。そして、レイアウト計算が行われる。図１７（Ｃ）はレイアウト計算された結果を示している。計算後の各コンテナのサイズは、実際挿入されるコンテンツのサイズと同等に差異があるように計算され、かつ前述したルールを違反しないように計算される。図１７の場合には、リンクされた２つのコンテナの外側および上下の辺がアンカーにより固定されているため、変更可能な内側の辺を各コンテナサイズに応じて移動し、コンテナの位置及びサイズが決定される。図１７（Ｃ）で示されるように、図１７（Ｂ）で示した挿入されるコンテンツサイズ（１７０９）と計算後のコンテンツサイズ（１７１０）は、双方において同等な差異がある。
【００９８】
なお、１つのコンテナについて可変の辺が２以上ある場合には、各辺はコンテナサイズの変更に応じて同じ量だけ移動するものとする。したがって、コンテンツを収めるために必要なコンテナ面積が求められると、対応するコンテナは、固定辺以外の辺を等距離ずつ同方向（外側または内側）へと移動して、求められた面積になる各辺の位置（角点の位置でもよい。）が決定される。リンクされた各コンテナについて同様に必要なコンテナの位置及びサイズを決定したなら、リンクにより規制される相互の位置関係に応じて、リンクで接続された辺を移動させる。すなわち、必要なサイズのコンテナを求めた後、リンクで接続された辺の距離を計算し、各々の辺を、その位置からリンクで定義された距離になるよう、等距離ずつ移動させる。このようにして、コンテナを決定し、そのコンテナにコンテンツを挿入する。
【００９９】
＜レイアウト計算方法（優先順位有り）＞
図１９は、図１６のステップ１５０４における優先順位がコンテナに設定されていた場合のレイアウト計算手順を示したフロー図である。また図２０、２１はそのときのＵＩ表示例を示した図である。双方を用いて説明をする。
【０１００】
図２０の２００１はコンテナ、２００１は優先順位、２００２はリンクを示している。なお、優先順位は丸囲み数字で示されており、数が小さいほうが高いものとする。ここではコンテナＡ，Ｂ，Ｃの順に優先順位が付されている。図２１の点線２１０１はコンテナＡに挿入されるコンテンツのサイズを示している、枠線２１０２はコンテナＡのレイアウト計算後のコンテナＡ´を示し、点線２１０３はコンテナＢに挿入されるコンテンツのサイズを示している。枠線２１０４はコンテナＢのレイアウト計算後のコンテナＢ´、枠線２００５はコンテナＣのレイアウト計算後のコンテナＣ´を示している。
【０１０１】
図１９において、まず、レイアウト計算するコンテナの集合を求める（１９０１）。そして計算を行う一つの集合を選択する（１９０２）。図２０（Ａ）のコンテナＡ，Ｂ，Ｃがそれにあたる。そして、レイアウトするコンテンツデータを取得する（１９０３）。ここで記述したコンテンツデータは、コンテンツの内容、サイズ、量などである。次に、各コンテナに取得したコンテンツデータのデータ量を得る（１９０４）。なお、ステップ１９０１〜１９０４は、図１６のステップ１６０１〜１６０４と同様の手順である。ただし、着目コンテナ集合の要素コンテナを得るためには、優先順位情報２６０６を参照し、そこに優先順位と共に保存されたコンテナの識別子を獲得すればよい。
【０１０２】
次に、優先順位の一番高いコンテナに着目する（１９０５）。これももちろん、優先順位情報２６０６を参照してもっとも優先順位の高いコンテナが着目コンテナとなる。着目コンテナは、たとえばメモリ等の所定領域にコンテナ識別子が保存され必要に応じて参照される。図２１の例では、コンテナＡが一番優先順位が高いので、まずコンテナＡに着目する。そして、着目したコンテナについてレイアウト計算を行う（１９０６）。ステップ１９０４で渡されたコンテンツデータサイズを用いて、コンテナのサイズを計算する。図２１（Ａ）の点線２１０１がコンテナＡに渡されたコンテンツサイズである。この着目コンテナは、当該コンテナより優先順位が低いコンテナに対してはルール違反しない限りそのサイズや位置に影響を与えることが許されている。その代わり、着目コンテナより優先順位が高いコンテナには影響を与えることができない。図２１（Ａ）の場合、コンテナＡのレイアウト計算では、コンテナＡより優先順位の低いコンテナＢ，Ｃのコンテナサイズに関係なく、コンテンツを収めるためのサイズを拡張することが可能である。次にステップ１９０６で計算されたコンテナのサイズと位置とをメモリに保存する（１９０７、１９０８）。図２１（Ｂ）の枠線２１０２は、コンテナＡについて、計算が終了してサイズ・位置が確定（保存）された後のコンテナを示している。
【０１０３】
次に選択された集合内の全てのコンテナについて計算が終了したかどうかを確認する（１９０９）。全てのコンテナについて終了していなければ、現在の着目コンテナの次に優先度の高いコンテナに着目し、そのコンテナについてステップ１９０６〜１９０８を行いコンテナサイズおよび位置を計算する（１９１０）。図２１（Ｂ）では、コンテナＡの計算が終了したあと、次に優先順位が高いコンテナＢについて計算を行う。図２１（Ｂ）で点線２１０３はコンテナＢに渡されたコンテンツサイズである。このコンテンツサイズに基づいてコンテナＢのサイズおよび位置の計算を行う。コンテナＢはコンテナＡより優先順位が低いためコンテナＡに影響を与えることができない。すでに前ステップでコンテナＡのサイズと位置とは確定した値として保存されている。したがって、コンテナＢの位置及びサイズは、コンテナＡに影響を与えない範囲で計算しなければならない。点線２１０３で示すように、コンテナＢに挿入されるべきコンテンツのサイズはコンテナＡ´と重なってしまっている。そのため、コンテナＢは、コンテンツサイズより小さいサイズで与えられることになる。
【０１０４】
図２１（Ｃ）はコンテナＢについて計算が終了し、サイズと位置が確定したコンテナＢ´を示している。コンテナＢ´は点線２１０３で示した、実際のコンテンツサイズより縮小されている。この例では、コンテナＢは、優先順位の高いコンテナＡ'により制限されるだけでなく、コンテナＣによっても制限されている。これは、たとえばコンテナＣの上辺が固定辺であるなど、優先順位以外の理由で制限を受けることがあるためである。
【０１０５】
最後に、コンテナＢについて計算が終了した後、次に優先度が高いコンテナＣについてレイアウト計算を行う。図２１の例では、コンテナＣはコンテナ集合内で一番優先順位が低い。集合内で一番優先順位が低いコンテナについては、そのコンテナが計算されるときには、その他全てのコンテナについてコンテナサイズと位置が確定されているため、どのコンテナにも影響を与えることができない。したがって、一番優先順位が低いコンテナにステップ１９１０で着目したときには、すでにそのコンテナのサイズ・位置も確定されていることが多い。一番優先順位が低いコンテナについてもステップ１９０６〜１９０８でサイズや位置の計算を行う。
【０１０６】
集合内全てのコンテナについて、レイアウト計算が終了したら、ページ内にまだ計算していない集合があるかを確認する（１９１１）。まだ、計算していない集合がある場合はステップ１９０２へ遷移し前述した方法でレイアウト計算を行う。全ての集合について計算が終了しているのであれば、計算されたコンテナにコンテンツを流し込む（１９１２）。
【０１０７】
コンテナサイズおよび位置を計算する場合には、着目コンテナについて移動できない辺がどの辺であるかを決定し、次に残りの辺、すなわち移動可能な辺を、コンテナサイズとコンテンツサイズとが一致するように移動させ、辺の位置を決定する。もちろん、移動量に制限がある場合には、コンテナサイズがコンテンツサイズにもっとも近くなるように辺の位置を決定する。移動可能でない辺とは、アンカにより固定されている辺と、着目コンテナよりも優先順位が高いコンテナとの距離が一定に固定されているために（すなわちリンクにより関連づけられているために）移動できない辺である。アンカにより固定された辺の位置は、コンテナ情報として格納された辺の位置がその辺の位置となり、移動できない。アンカにより固定されているか否かは、辺の属性により反転できる。また、高優先順位のコンテナにより移動できない辺の位置は、既に決定されている高優先順位のコンテナの辺の位置に、リンク情報により定義されている距離を加えて求めることができる。
【０１０８】
そして、可変の辺の位置を次に決定する。このためにはまず、移動できない辺を固定して、コンテナサイズをコンテンツサイズと同じくした場合の、コンテナサイズ（各辺の長さ）を計算する。可変の辺が複数ある場合には、各辺のテンプレートで定義された位置からの移動量が等しくなるように、辺の長さを計算する。この辺の長さを、移動できない辺の位置を基準として縦横それぞれの方向について加算することで、各辺の位置が決定できる。そして、この状態で、制限に反している辺があれば、その辺を制限にあうように移動させる。たとえば、ページの外枠からはみ出した辺があれば、その辺の位置はページの外枠の位置に変更される。このように、制限に合わせて移動された辺は、移動できない辺の一つとなる。そこで、その辺を移動できない辺に加えて、上記手順を再度繰返し、可変の辺の位置を決定する。
【０１０９】
この手順により、全ての辺の位置について、制限に抵触することなく決定できた場合か、または、全ての辺が移動できない辺となった場合に、着目コンテナの位置とサイズとが決定される。
【０１１０】
ここで、以下のようにすることで、優先順位が指定されたコンテナ集合と指定されていないコンテナ集合とが混在するテンプレートについても本発明を適用できる。すなわち、ページ内にまだ着目していないコンテナ集合がある場合には、そのコンテナ集合に優先順位が指定されたものすなわち優先順位情報に保存されたものがあるか判定し、優先順位が指定されたものがあれば、そのコンテナ集合に着目してステップ１９０３から繰返す。そして、図１９のステップ１９０２から実行する。一方、残りのコンテナ集合に優先順位が指定されたものがないのであれば、図１６のステップ１６０２に分岐する。こうして、混在している場合にも、優先順位に応じたレイアウトが可能となる。
【０１１１】
このように、本実施形態に係る発明は、領域（コンテナ）毎に指定された優先順位情報を付したテンプレートを作成する作成手段と、作成されたテンプレートを、優先順位情報とともにプレビュー表示するプレビュー表示手段とを備えている。
【０１１２】
また、プレビュー表示手段は、作成されたテンプレート含まれる各コンテナを識別子を付して表示し、また、優先順位にしたがってコンテナの識別子を配置したリストを表示することができる。
【０１１３】
また、テンプレートには、コンテナを関連づけるリンク情報が含まれ、優先順位情報は、リンクにより関連づけられたコンテナにおける優先順位を示し、配置手段により、リンクによる関連づけを維持したまま、各コンテナにデータを配置することができる。
【０１１４】
以上のようにして、テンプレートにおいてデータが配置される領域に優先順位を付与することで、データのレイアウトの自由度を高めることができる。また、優先順位を領域毎に表示することで、レイアウト結果の予測可能性を向上させることができる。
【０１１５】
また、リンクにより関連づけたコンテナ相互間に優先順位を指定することができるので、テンプレートに設けた所望のコンテナ間に優先順位を付すことができ、よりレイアウトの自由度が向上する。
【０１１６】
また、リンクにより関連づけがされていないコンテナ集合間では、互いに独立に優先順位を指定することができる。このため、よりレイアウトの自由度が向上する。
【０１１７】
［第１実施形態の変形例］
図１４は、図１２および図１３の表示方法とは別の優先順位の表示方法を示している。図１４において、１４０１はページ領域を示しているページマージン、１４０２はマウスポインタ、１４０３はコンテナの優先順位を示している数字、１４０４は優先順位が設定してあるコンテナの集合である。図１４で示している方法は、マウスポインタをコンテナ上に移動させると、そのコンテナと関連付けられている各コンテナに設定されている優先順位が数字で表示される。ここでは、マウスポインタをコンテナＢ上に位置させている。するとコンテナＢと直接又は間接に関連付けられているコンテナＡ，Ｃ，Ｄ，Ｅに設定されている優先順位が各コンテナ上に表示される、数字が小さいほうが優先順位が高く、(1)が一番高い。しがたって、図１４ではコンテナＢ，Ａ，Ｅ，Ｃ，Ｄの順に優先順位が設定されていることがわかる。
【０１１８】
このように表示することで、優先順位と対応するコンテナとの対応付けを直感的に把握しやすい方法で表示でき、操作性をより向上させることができる。
【０１１９】
［第２実施形態］
本発明の第２実施形態は、前述した優先順位の設定方法および表示方法についてである。したがって、以下に説明する点以外は、第１実施形態と共通である。
【０１２０】
＜優先順位設定および表示方法＞
図２２の２２０１はアプリケーションウインドウ、２２０２はマウスポインタ、２２０３、２２０４はテンプレートに含まれるコンテナの集合、２２０５は作成されているコンテナの情報が表示されているオブジェクトパレット、２２０６はオブジェクトパレット内の作成されたコンテナ名を表示しているリストボックス、２２０７は作成されたコンテナ名、２２０８はマウスポインタによって選択状態になったコンテナ名、２２０９はマウスポインタによって選択されたコンテナ名に対応するコンテナＵＩが選択されたことを示すため表示状態を変更した例、２２１０は優先順位の設定をＯＮ／ＯＦＦすることができるラジオボタンを示している。
【０１２１】
まず、ユーザがコンテナを作成して、コンテナ間にリンクを設定する。作成されたコンテナやリンクによって、オブジェクトパレット２２０５にコンテナ情報がリストアップされる。ここでは、コンテナＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈが作成され、Ａ，Ｂ，Ｃ，Ｄ，Ｅ間にリンクで関連付けが設定されているグループ（コンテナ集合）と、Ｆ，Ｇ，Ｈ間に関連付けが設定されているグループがある。したがって、オブジェクトパレット内のリストボックス２２０５には「ＣｏｎｔａｉｎｅｒＧｒｏｕｐ１」としてコンテナＡ，Ｂ，Ｃ，Ｄ，Ｅが、「ＣｏｎｔａｉｎｅｒＧｒｏｕｐ２」としてコンテナＦ，Ｇ，Ｈがリストアップされている。さらに、リストボックス内のコンテナや、コンテナグループをマウスポインタ２２０２で選択すると、表示が変化（図では反転表示２２０８）して選択されたことをアピールする。さらに、選択されたコンテナ名に対応するレイアウトエリア内のコンテナも、選択されたことをアピールするために、表示方法が変更される（２２０９）。ここでは、コンテナに斜め線を入れて選択されたことを示しているが、他の方法で示してもかまわない。
【０１２２】
オブジェクトパレット２２０５において、ラジオボタン２２１０を用いて優先順位がＯＮにされると、リストボックスに表示されているコンテナ名の上方から順に優先順位が高く設定される。コンテナグループ１を例にとると、コンテナＡ，Ｂ，Ｃ，Ｄ，Ｅの順番に優先順位が高く設定される。デフォルト状態では、コンテナが作成された順番に上からリストアップされる。優先順位の変更方法については、後述する。
【０１２３】
また図２３で示しているように、優先順位ＯＮの状態（２３０６）で、マウスポインタ（２３０１）でリストボックスのコンテナ名を選択する。ここでは、コンテナＢを選択する。前述したように選択されたコンテナは表示を変化（図では反転表示２３０２）させ選択されてことをアピールする。現在、優先順位がＯＮであるため、リストボックスに表示されているコンテナの上から順に優先順位が設定されている。したがって、コンテナＢの次に優先順位が高いコンテナはコンテナＣ，またコンテナＢより一つ優先順位が高いコンテナはコンテナＡとなる。ここで、選択されたコンテナと同時にそれらのコンテナもユーザに示すために、選択されたコンテナＢがレイアウトエリア内で表示方法を領域２３０３のように変更したのと同様に、コンテナＡとコンテナＣについても表示方法を変更する。コンテナＡは網掛け、コンテナＣは水玉模様へと変更されたことにより、ユーザは、選択したコンテナＢの前の優先順位と後の優先順位を、視覚的に確認することができる。コンテナの表示方法は、ここで説明した変更方法に限らず、選択されたことと、隣接する優先順位であることをアピールできるものであれば、どんなものでもかまわない。
【０１２４】
以上は、ユーザインターフェース画面の説明であり、表示処理の手順すなわち、図７のステップ０７０４において、上述のような表示が行われる。テンプレートデータは、図２６に示したとおりの構造で十分である。上記表示を実現するためには、優先順位情報２６０６に保存されている全てのコンテナ集合毎の優先順位情報に基づいて、各コンテナ集合に識別子（コンテナグループ番号）を付与し、各コンテナ集合について保存されている優先順位情報にしたがって、コンテナ識別子をリストボックスに順番にリスト表示する。そして、リスト上のコンテナ識別子が選択されたなら、その選択された識別子に対応する、テンプレート内のコンテナを、識別可能にたとえば斜線を付して表示する（図２２）。
【０１２５】
さらに、優先順位情報を参照して、選択された識別子のコンテナの前後の優先順位を有するコンテナ識別子を読み、その識別子に対応するテンプレート内のコンテナを、それぞれ識別可能に表示する（図２３）。
【０１２６】
＜優先順位変更方法＞
図２２，図２３で示したオブジェクトパレットを用いて優先順位の変更が可能である。図２４は変更方法を示している。２４０１はオブジェクトパレット、２４０２はリストボックス、２４０３は優先順位設定ラジオボタン、２４０４はマウスポインタ、２４０５は選択され表示が変化したコンテナ名、２４０６、２４０７はマウスに選択されドラッグ操作実行中のコンテナ名、２４０８はコンテナ名を示している。
【０１２７】
まず図２４（Ａ）で示されるように、ラジオボタンをＯＮにして優先順位の設定を有効にする。そして、マウスポインタで優先順位を変更したいコンテナ名を選択する。すると、選択されたコンテナ名は、表示を変化させ選択されたことを示す。次に図２４（Ｂ）で示されるように、マウスポインタによって選択されたコンテナ名をドラッグする（２４０６）。ドラッグされるコンテナ名は、ドラッグされていることを示すためにマウスポインタに引きずられて表示される。次に図２４（Ｃ）で示されるように、ドラッグしたコンテナ名を優先順位を変更する位置へドロップする（２４０７）。この例では、コンテナＢとコンテナＣの間にコンテナＡをドロップしているので、優先順位をコンテナＢ，Ａ，Ｃの順に変更している。最後に図２４（Ｄ）で示すように、変更された優先順位の順番にリストボックス内のコンテナ名を表示して終了。同時に、優先順位の設定も表示されている順番に変更される。以上のような操作に応じて、優先順位が入れ替えられた順序になるように優先順位情報２６０６も更新される。
【０１２８】
このように、本実施形態によれば、テンプレートにおいてデータが配置される領域に優先順位を付与することで、データのレイアウトの自由度を高めることができる。さらに、優先順位のリストを操作して優先順位を変更することができるために、より操作性を向上させることができる。
【０１２９】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３０】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１３１】
【図１Ａ】実施形態のコンピュータシステム構成図を示している図である。
【図１Ｂ】実施形態のコンピュータモジュールの概略図を示す図である。
【図２】実施形態の他のコンピュータシステム構成図を示す図である。
【図３】実施形態のメニューバー、ツールバー、ワークエリア、フローティングパレットを含む典型的なアプリケーションのメインウインドウを示す図である。
【図４】実施形態のコンテナ間のリンク、アンカーやスライダーを持つ典型的なコンテナの一面をスクリーン、ツール、アイコンで示す図である。
【図５】実施形態の典型的なコンテナルールを示す図である。
【図６】リンク作成時のＵＩ図例を示している図である。
【図７】本発明の実施例１における優先順位を設定するフローを示している図である。
【図８】本発明の優先順位設定時おけるコンテナの集合についての図である。
【図９】本発明の実施例１における優先順位を設定するダイアログの例を示している図である。
【図１０】本発明の実施例１における優先順位を設定するダイアログでの操作例を示している図である。
【図１１】本発明の実施例１における優先順位を設定するモードへ移行するためのポップアップメニューの例を示している図である。
【図１２】本発明の実施例１における優先順位をユーザに示すＵＩの例を示している図である。
【図１３】本発明の実施例１における優先順位をユーザに示すＵＩの例を示している図である。
【図１４】本発明の実施例１における優先順位をユーザに示すＵＩの例を示している図である。
【図１５】本発明におけるレイアウト計算の全体フローを示している図である。
【図１６】本発明におけるレイアウト計算の、優先順位なしの場合のフローを示している図である。
【図１７】本発明の図１６のフローに対応したＵＩ例を示している図である。
【図１８】本発明のレイアウト計算時におけるコンテナの集合について説明した図である。
【図１９】本発明におけるレイアウト計算の、優先順位ありの場合のフローを示している図である。
【図２０】本発明の図１９に対応するＵＩ例を示している図である。
【図２１】本発明の図１９のフローに対応したＵＩ例を示している図である。
【図２２】本発明の実施例２における優先順位設定方法およびＵＩを示している図である。
【図２３】本発明の実施例２における優先順位設定方法およびＵＩを示している図である。
【図２４】本発明の実施例２における優先順位変更方法を示している図である。
【図２５】本発明のリンクを作成するフローを示している図である。
【図２６】テンプレートデータの構成例を示している図である。
【符号の説明】
【０１３２】
１０１  汎用コンピュータモジュール
１０３  ユーザインターフェース
１０５  レイアウトエンジン
１１９  データベース
１２１  レイアウトアプリケーションプログラム
１３２  キーボード
１３３  マウス
１４３  Ｉ／Ｏインタフェース
１４４  ビデオディスプレイ
３０１  アプリケーションウインドウ
３０３  ツールバー
３１３  カーソル/ポインタデバイス
４０６  リンクツールボタン
４０７、４０８  コンテナ
４０９  アンカーアイコン
４１０  固定されていない辺
４１２  リンク
【図１Ａ】
2005216180.tif 000003
【図１Ｂ】
2005216180.tif 000004
【図２】
2005216180.tif 000005
【図３】
2005216180.tif 000006
【図４】
2005216180.tif 000007
【図５】
2005216180.tif 000008
【図６】
2005216180.tif 000009
【図７】
2005216180.tif 000010
【図８】
2005216180.tif 000011
【図９】
2005216180.tif 000012
【図１０】
2005216180.tif 000013
【図１１】
2005216180.tif 000014
【図１２】
2005216180.tif 000015
【図１３】
2005216180.tif 000016
【図１４】
2005216180.tif 000017
【図１５】
2005216180.tif 000018
【図１６】
2005216180.tif 000019
【図１７】
2005216180.tif 000020
【図１８】
2005216180.tif 000021
【図１９】
2005216180.tif 000022
【図２０】
2005216180.tif 000023
【図２１】
2005216180.tif 000024
【図２２】
2005216180.tif 000025
【図２３】
2005216180.tif 000026
【図２４】
2005216180.tif 000027
【図２５】
2005216180.tif 000028
【図２６】
2005216180.tif 000029