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