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