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