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