(57)【要約】【課題】  多数の文書を印刷する場合、多数の文書の印刷プレビューを表示するのは煩雑な作業になる。【解決手段】  テンプレートに少なくとも１つのコンテナを設定してレイアウトを形成し、そのコンテナの少なくとも１つの選択された特徴に関連した少なくとも１つの制約を確立し、各特徴に関して、ユーザにより選択された対応する特徴を検知し、レイアウトが修正されてコンテナにコンテンツを置くことにより文書を生成し、少なくとも１つのコンテナの少なくとも１つの寸法、及び又はレイアウトの少なくとも１つのコンテナの位置は、レイアウトの各制約が満たされる条件で置かれたコンテンツの特性に基づいて変更される。【選択図】  図６Ｄ
2005122728.tif 000002
【特許請求の範囲】
【請求項１】
テンプレートに基づいて可変データ文書のためのレイアウトを生成する方法であって、
前記テンプレートに少なくとも１つのコンテナを設定してレイアウトを形成する設定工程と、
前記コンテナの少なくとも１つの選択された特徴に関連した少なくとも１つの制約を確立する確立工程と、
グラフィカルユーザインターフェース（ＧＵＩ）を用いて前記設定工程で設定されたコンテナに関連して、前記確立工程で確立された制約を表示する工程と、
前記レイアウトを修正して複数のコンテナにコンテンツを置くことにより前記文書を生成する修正工程とを有し、
前記少なくとも１つのコンテナの少なくとも１つの寸法と前記レイアウトの少なくとも１つのコンテナの位置は、前記レイアウトの各制約が満たされる条件で置かれたコンテンツの特性に基づいて変更されることを特徴とする方法。
【請求項２】
前記確立工程は、前記コンテナの各特徴に２つの前記制約を確立することを特徴とする請求項１に記載の方法。
【請求項３】
前記特徴は、前記コンテナの角、前記コンテナの両辺の中心点、前記両辺の非中心点、前記コンテナの中心線上の非中心点、及び前記コンテナの中心点からなるグループから選択されることを特徴とする請求項２に記載の方法。
【請求項４】
前記置かれたコンテンツの特性は、前記コンテンツのサイズを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記サイズは、前記置かれたコンテンツの幅を含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記サイズは、前記置かれたコンテンツの高さを含むことを特徴とする請求項４に記載の方法。
【請求項７】
ユーザによる選択は、前記ＧＵＩの前記レイアウトの表示で示される、対応する特徴に一致させるポインティングデバイスのユーザ操作によって実行されることを特徴とする請求項１に記載の方法。
【請求項８】
前記確立工程は、
前もって制約が設定されていなかった、対応する特徴に制約を設定する工程と、
前もって制約が設定されていた制約を除去するために対応する特徴をリセットする工程との１つを含むことを特徴とする請求項１に記載の方法。
【請求項９】
設定された制約を有する各特徴に制約シンボルが設けられていることを特徴とする請求項８に記載の方法。
【請求項１０】
前記コンテナは矩形であり、前記寸法は前記コンテナの高さと幅を有し、前記各コンテナに対して、前記コンテンツは、テキスト及び／或は画像コンテンツを有することを特徴とする請求項１に記載の方法。
【請求項１１】
前記特徴は、前記コンテナの角を含み、前記角のそれぞれは前記レイアウトで固定されている制約を有することを特徴とする請求項１０に記載の方法。
【請求項１２】
前記特徴は前記コンテナの辺の中心点を有し、前記設定された制約を有する辺の各中心点に対して、(1)辺は同期して拡張或は収縮し、(2)辺の中心は固定されるという条件に基づいて、前記コンテナの寸法及び／又は位置が変更されることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記特徴は前記コンテナの対応する辺の非中心点を有し、前記設定された制約を有する各辺に対して、(1)辺の長さが自由に拡張或は収縮でき、(2)辺はその辺に直交する方向に移動しないという条件に基づいて、前記コンテナの寸法及び／又は位置が変更されることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記特徴は、前記コンテナの横方向及び縦方向の中心線上の非中心点を有し、設定された制約を有する各中心線に対して、(1)中心線が固定されて、(2)前記中心線に平行な辺は同期して拡張或は収縮可能で、(3)前記中心線に直交する辺が固定中心線から独立して位置付けられるという条件に基づいて、前記コンテナの寸法及び／又は位置が変更されることを特徴とする請求項１０に記載の方法。
【請求項１５】
前記特徴は前記コンテナの中心点を有し、設定された制約を有する各中心点に対して、(1)中心点が固定されて、(2)前記コンテナの平行辺の第１組が第１の量だけ拡張或は収縮し、前記コンテナの平行辺の他の組が第２の量だけ拡張或は収縮するという条件に基づいて、前記コンテナの寸法及び／又は位置が変更されることを特徴とする請求項１０に記載の方法。
【請求項１６】
更に、前記コンテナの他の角に更に、所定の規則に従って制約を設定する工程を有することを特徴とする請求項１１に記載の方法。
【請求項１７】
前記設定工程は、
テンプレートに第１及び第２コンテナを設定して前記レイアウトを形成する工程を有し、
前記確立工程は、
前記ＧＵＩを使用して前記第１と第２の辺の選択を表示するとともに、前記第１コンテナの第１の辺を選択し、前記第２コンテナの第２の辺を選択する工程を有し、
前記修正工程は、
前記コンテナにコンテンツを置くことにより前記文書を生成するために前記レイアウトを修正する工程を有し、
前記第１及び第２コンテナの寸法及び位置の少なくとも１つが、前記第１及び第２の辺の間の位置的なオフセットが固定されている条件で、前記置かれたコンテンツの特性に応じて変更されることを特徴とする請求項１に記載の方法。
【請求項１８】
ユーザによる選択は、前記ＧＵＩ内の前記レイアウトに表示された、対応する辺に少なくとも一致するポインティングデバイスによるユーザ操作により実施され、
前記第１及び第２の辺の間の位置的なオフセットを表すストラット記号を表示する工程を更に有することを特徴とする請求項１７に記載の方法。
【請求項１９】
前記選択は、前記第１コンテナ内を前記ポインティングデバイスにより選択する操作により実施され、前記ポインティングデバイスを前記第２コンテナに移動することにより行われ、これにより前記第１及び第２の辺を拡張し、前記ポインティングデバイスの非選択操作により前記辺の間のストラットを形成することを特徴とする請求項１８に記載の方法。
【請求項２０】
前記選択は、前記第１コンテナ内での前記ポインティングデバイスの第１操作と、前記第２コンテナ内での前記ポインティングデバイスの第２操作により実行されることを特徴とする請求項１８に記載の方法。
【請求項２１】
前記確立工程は、前記レイアウトのガイドを確立し、前記１つのコンテナとガイド間のオフセットを設定する工程を有し、
前記修正工程は、前記コンテナにコンテンツを置くことにより前記文書を生成することにより前記レイアウトを修正する工程を有し、前記１つのコンテナの寸法及び位置の少なくとも１つは、オフセットが維持される条件で、前記置かれたコンテンツの特性に基づいて変更されることを特徴とする請求項１に記載の方法。
【請求項２２】
前記テンプレートに更にコンテナを設定し、このコンテナと前記ガイドとの間に更にオフセットを設定することを特徴とする請求項２１に記載の方法。
【請求項２３】
前記レイアウト内で前記ガイドを移動する工程を更に有することを特徴とする請求項２１に記載の方法。
【請求項２４】
前記オフセットの設定は、前記ＧＵＩの前記レイアウトの表示で示される前記ガイドに一致させるポインティングデバイスのユーザ操作で実行され、
更に、前記ガイドと前記コンテナと間の関連性を示すシンボルを前記ＧＵＩに表示する工程を有することを特徴とする請求項２１に記載の方法。
【請求項２５】
前記設定工程は、前記テンプレートに第１及び第２コンテナを設定して前記レイアウトを形成する工程を有し、
前記修正工程は、前記第１及び第２コンテナにコンテンツを置くことにより文書を生成して前記レイアウトを修正し、前記第１及び第２コンテナの寸法及び位置の少なくとも１つが、前記第１コンテナの少なくとも１つの特性が前記第２コンテナの対応する１つの特性に同期して変更される条件で、前記コンテンツの特性に基づいて変更されることを特徴とする請求項１に記載の方法。
【請求項２６】
前記コンテンツは少なくともテキストコンテンツを有し、前記第１コンテナの１つの特性は、前記テキストコンテンツにおけるテキストサイズ、行間及び文字間からなるグループから選択されることを特徴とする請求項２５に記載の方法。
【請求項２７】
前記確立工程は、更に少なくとも１つのコンテナに、ガターにより近接のカラムが分離された多数の列を確立する工程を有し、
前記修正工程は、少なくとも１つのコンテナにテキストコンテンツを置くことにより文書を修正し、前記１つのコンテナと列の寸法は、前記ガターの寸法を固定したまま変更されることを特徴とする請求項１に記載の方法。
【請求項２８】
前記コンテナは可視背景を有し、前記設定工程では、前記複数の列を設定し、前記列が位置している前記コンテナ内に境界を設定する工程を更に含むことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記確立工程は、少なくとも１つのコンテナに、隣接列がガターで分離された複数の列を確立する工程を有し、
前記修正工程は、前記ガターを固定したままで前記１つのコンテナと列の寸法を可変にして、前記レイアウトを修正して前記１つのコンテナにテキストコンテンツを置くことにより少なくとも１つの文書を生成する工程を含むことを特徴とする請求項１に記載の方法。
【請求項３０】
前記確立工程は、前記少なくとも１つのコンテナに複数の列を確立し、テキストが置かれるべき隣接列は、２つの境界と前記２つの境界の中間に位置するガターによって形成され、前記２つの境界の１つの位置を変更して隣接する列間のガターの寸法を変更する工程を有し、
前記修正工程では、少なくとも１つのコンテナにテキストコンテンツを置くことにより前記文書を修正することを特徴とする請求項１に記載の方法。
【請求項３１】
前記１つの境界の位置は、前記１つの境界に沿った位置で、前記１つの境界上でユーザ行った選択指示により変更されることを特徴とする請求項３０に記載の方法。
【請求項３２】
前記選択指示は、前記ＧＵＩの前記レイアウト表示で示された前記１つの境界に一致させ、前記レイアウト内で前記選択された境界を別の位置に移動するポインティングデバイスのユーザ操作により実行されることを特徴とする請求項３１に記載の方法。
【請求項３３】
前記修正工程では、前記コンテナにコンテンツを置くことにより前記文書を生成して前記レイアウトを修正することにより、前記コンテナの内部マージンが前記コンテナの背景色とテンプレートの背景との間の関係に基づいて決定される条件に基づいて、前記コンテナの寸法及び位置の少なくとも１つが変更されることを特徴とする請求項１に記載の方法。
【請求項３４】
前記確立工程は、固定サイズで、前記コンテナに関連した可変位置を有するコンテナを確立する工程を有し、
前記修正工程は、前記コンテナにコンテンツを置くことにより文書を生成して前記レイアウトを修正し、前記コンテナが関連するコンテナ範囲を侵すことなく前記コンテナの寸法及び位置の少なくとも１つが前記コンテンツの特性に応じて変更することを特徴とする請求項３４に記載の方法。
【請求項３５】
前記コンテナ範囲は、前記コンテナを囲む最大領域であることを特徴とする請求項３４に記載の方法。
【請求項３６】
前記コンテナ範囲は、前記コンテナ内の最小領域であることを特徴とする請求項３４に記載の方法。
【請求項３７】
前記少なくとも１つのコンテナは高さ及び幅を有し、
前記確立工程は、前記高さ及び幅の少なくとも１つを固定寸法に設定する工程を有し、
前記修正工程は、前記コンテナにコンテンツを置くことにより文書を生成することにより前記レイアウトを修正する工程を有し、前記高さ及び幅の１つの組が前記固定寸法に設定されている状態で、前記コンテナの寸法及び位置の少なくとも１つが前記置かれたコンテンツの特性に基づいて変更されることを特徴とする請求項１に記載の方法。
【請求項３８】
前記設定工程は、ユーザが選択した、前記１つの高さ及び幅を規定する前記コンテナの辺を検知する工程を含むことを特徴とする請求項３７に記載の方法。
【請求項３９】
前記ユーザの選択は、前記ＧＵＩの前記レイアウトが表示された対応する辺に合致させるような、ポインティングデバイスのユーザ操作により実行され、
前記辺の間の固定寸法の記号表示を前記ＧＵＩに表示する工程を更に有することを特徴とする請求項３８に記載の方法。
【請求項４０】
前記設定工程は、前記テンプレートのコンテナ配列を設定して前記レイアウトを形成する工程を有し、
前記確立工程は、
(i)前記レイアウトに複数のガイドを設定して、前記アレイを前記コンテナで規定されるセルを形成する列及び行に分離し、
(ii)各ガイドと前記コンテナのそれぞれの対応する辺との間のオフセットを確立し、
前記修正工程は、前記コンテナにコンテンツを置くことにより文書を生成することにより前記レイアウトを修正する工程を有し、前記オフセットが維持されている状態で、前記コンテナの寸法及び位置の少なくとも１つが前記置かれたコンテンツの特性に基づいて変更されることを特徴とする請求項１に記載の方法。
【請求項４１】
前記設定工程は、前記テンプレートの列及び行にコンテナのアレイを設定する工程を有し、
前記確立工程は、
隣接するコンテナ間にオフセットを確立して前記列及び行のマージンサイズを特定し、
前記修正工程は、前記コンテナにコンテンツを置くことにより文書を生成することにより前記レイアウトを修正する工程を有し、前記オフセットが維持されている状態で、前記コンテナの寸法及び位置の少なくとも１つが前記置かれたコンテンツの特性に基づいて変更されることを特徴とする請求項１に記載の方法。
【請求項４２】
前記オフセットは、第１コンテナと、隣接する列及び行の直に隣接するコンテナとの間にセットされ、更に、列及び行のそれぞれに隣接するコンテナ間に長さ０の複数のオフセットを設定することを特徴とする請求項４１に記載の方法。
【請求項４３】
プログラムを記憶し、テンプレートに基づいて可変データ文書のためのレイアウトを生成する手順をコンピュータに実行させるコンピュータにより読み取り可能な記憶媒体であって、
前記テンプレートに少なくとも１つのコンテナを設定してレイアウトを形成するコードと、
前記コンテナの少なくとも１つの選択された特徴に関連した少なくとも１つの制約を確立するコードと、
グラフィカルユーザインターフェース（ＧＵＩ）を用いて前記設定されたコンテナに関連して、前記確立された制約を表示するコードと、
前記レイアウトを修正して複数のコンテナにコンテンツを置くことにより前記文書を生成するコードとを有し、
前記少なくとも１つのコンテナの少なくとも１つの寸法と、前記レイアウトの少なくとも１つのコンテナの位置は、前記レイアウトの各制約が満たされる条件で、前記置かれたコンテンツの特性に基づいて変更されることを特徴とする記憶媒体。
【請求項４４】
テンプレートに基づいて可変データ文書のためのレイアウトを生成するコンピュータ装置であって、
前記テンプレートに少なくとも１つのコンテナを設定してレイアウトを形成する手段と、
前記コンテナの少なくとも１つの選択された特徴に関連した少なくとも１つの制約を確立する手段と、
グラフィカルユーザインターフェース（ＧＵＩ）を用いて前記設定されたコンテナに関連して、前記確立された制約を表示装置に表示する手段と、
前記レイアウトを修正して複数のコンテナにコンテンツを置くことにより前記文書を生成する手段とを有し、
前記少なくとも１つのコンテナの少なくとも１つの寸法と、前記レイアウトの少なくとも１つのコンテナの位置は、前記レイアウトの各制約が満たされる条件で、前記置かれたコンテンツの特性に基づいて変更されることを特徴とするコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テキスト及び図形から構成される文書の作成、編集及び印刷のためのソフトウェア実現方法及びプロセスに関し、特に、可変データ文書の作成、編集及び印刷に関する。
【０００２】
本出願は、参考として全体の内容を本明細書に取り入れられている、２００３年１０月１５日出願のオーストラリア特許出願Ｎｏ．２００３９０５６５９に基づいて３５Ｕ．Ｓ．Ｃ．§１１９の下で優先権を主張する。
【背景技術】
【０００３】
［可変データ印刷］
従来、多数の文書を印刷するときに使用される印刷プロセスは、文書の物理的表現を要求するアナログ処理であった。それらは、印刷前に作成されなければならないブロマイド及び／又は印刷プレートを含んでいた。これは、カスタム化された文書を作成するのに高い費用がかかり、多数回にわたる連続した文書印刷は、通常、全く同じ文書の多数のコピーを印刷することを含んでいたことを意味する。
【０００４】
カスタム化文書は、印刷前に文書の物理的コピーを準備する必要のないデジタル印刷プロセスを使用して生成されても良い。最近になるまで、デジタルプロセスは高いコストを要していたか、又は従来のアナログ印刷プロセスにより作成される印刷物より品質の上で劣る結果しか出せなかった。
【０００５】
しかし、この５年の間に、デジタル印刷の進歩により、高品質のカスタム化文書を作成するための費用は著しく低減された。そのような進歩の結果、可変データ印刷が一層普及してきた。文書の著者が個々の文書のみならず、その著者が意図している読者のために各文書がカスタム化されている何種類もの関連文書をも作成することを可能にする可変データ印刷ソフトウェアが利用できるようになっている。
【０００６】
高品質カスタム化印刷を実現可能にするためには、いくつかの問題を解決しなければならない。１つの問題は印刷出力の品質である。ごく最近になって、デジタルプロセスは従来の印刷プロセスの分解能に近づくことができるようになった。もう１つの問題は、特に文書が複数の高分解能画像を含む場合に、高品質の文書をデジタル形態で表現するために通常は大量のデータが要求されるということである。これにより、多数のカスタム化文書をコンピュータネットワークを介してデジタルプリンタへ電子的に送信することが実用的でなくなる。第３の問題は、通常、単純な文書と比較して、カスタム化文書の作成及び維持に、より多くの労力と技術が必要になることである。カスタム化文書は、可変データを文書テンプレートに挿入することにより作成される。文書テンプレートは、可変データを挿入するためのスロットを有する文書である。文書テンプレートは、多数の文書に共通するいくつかのデータと、テンプレートの可変データスロットにデータを挿入することにより生成される各カスタム文書をどのようにレイアウトすべきかを定義する情報とを含んでいても良い。様々に異なるサイズのデータ又は欠落したデータに対応できるようにページのレイアウトを定義する必要があるため、可変データテンプレートをオーサリングすることは、単純な文書をオーサリングする場合より困難である。加えて、テンプレートとデータとの関係を定義し、それを維持しなければならない。従って、可変データ印刷技術を使用してカスタム化文書を作成するために、データベース技術が要求される場合が多い。
【０００７】
デジタル印刷ハードウェアの性能は、劇的なコストダウンを伴いつつ、ハイエンドアナログ印刷により作成される結果に匹敵する結果をもたらすレベルまで改善されてきた。ＰＰＭＬなどの新しい規格は、大量の反復データを送信することなく、複数群の関連文書をネットワークを介してプリンタへ送信することを可能にする。これにより、可変データ印刷に要求されるネットワーク帯域幅は縮小される。
【０００８】
可変データ文書のオーサリング及び管理の複雑さの問題を容易に解決する方法はない。長年にわたり、ワード処理ソフトウェアにおいては、カスタム化印刷は「メールマージ」という未熟な形態で利用されていたが、このメールマージは個別の出力文書のレイアウトの制御を非常に粗雑な形でしか支援しない。最も進んだ可変データ印刷ソフトウェアによれば、文書ごとに異なる場合もあるデータのサイズ及び形状に合わせて調整される精巧で、融通性に富むレイアウトの作成が可能であるが、それらのアプリケーションは依然として複雑であり、その使用は困難である。
【０００９】
［レイアウトモデル］
通常、テキストと図形の双方を含む文書は種類の異なるアイテムの集積として編成されている。これらアイテムはテキスト、図形、又はアイテムの集積であるグループなどの他の種類の抽象オブジェクトであると考えられる。レイアウトアイテムは、通常、矩形の形状を有するか、又は矩形の範囲を有する。アイテムをどのようにしてレイアウトすべきかを定義するためにアプリケーションごとに許可される規則がレイアウトモデルを表す。可変データ印刷アプリケーションでは、それらの規則は、アイテムのサイズが変化するにつれてレイアウトをどのようにして計算するかを定義しなければならない。
【００１０】
［階層レイアウトモデル］
可変データ印刷の問題を解決する現在の方法は、通常、レイアウトを定義するために階層モデルを使用する。それらのモデルはＨＴＭＬ文書及びＸＭＬ文書に使用されるモデルに類似している。そのようなモデルの例は、ＣＳＳボックスモデル及びＸＳＬ：ＦＯである。そのようなレイアウトモデルにおいては、矩形レイアウトエリアの内側に矩形のアイテムを垂直又は水平に積み重ねることにより、それらのアイテムがレイアウトエリア内にレイアウトされる。
【００１１】
水平及び垂直に積み重ねるのに加えて、いくつかのアプリケーションにより支援される別の、より一般的な代替方法では、アイテムをページ上の複数行の語句のように縦方向の列又は横方向の行として積み重ねることができる。この形態のレイアウトにおいては、１つの行又は列にはめ込むべきアイテムが多すぎる場合、新たな行又は列が開始され、余剰のアイテムは次の行又は列へ「ラップ（wrap）」される。これはワードプロセッサにおけるワードラッピングと同様である。アイテムをレイアウトするこの方法は、ウェブアプリケーションの場合のように、ページ又はレイアウトエリアのサイズが非常に幅広く変化するようなアプリケーションで最も有用である。可変データ印刷アプリケーションの場合には、レイアウトの品質が通常は重要であり、アイテムが次の行又は列へラップすると、レイアウトが好ましく見えなくなってしまうことが多いため、積み重ねは、可変データ印刷アプリケーションにはそれほど有用ではない。
【００１２】
階層レイアウトモデルでは、複雑なレイアウトは複数群のアイテムを使用することにより定義できる。１つのグループは、他の複数のアイテムを含み、それ自体がレイアウトである矩形レイアウトアイテムである。１つのグループの中のアイテムは、そのグループの境界を規定する矩形の内側にレイアウトされる。
【００１３】
レイアウトにおけるアイテムの位置は、例えば、垂直スタックにある１つのアイテムがその垂直スタックを含む矩形の左側に対して常にできる限り遠い位置にあるように左寄せされるような整列オプションにより制御されても良い。グループ内の全てのアイテムが同じ整列状態を有するように、整列は、そのグループと関連付けられても良いし、或はそのグループ内の各アイテムが、対応する関連整列オプションを有していても良い。センタリング、左寄せ及び右寄せを含む様々な整列オプションが一般に支援されている。
【００１４】
アイテムの位置は、個別のアイテムに関連付けられるか又はそれを含むレイアウト又はグループと関連付けられるマージンにより制御されても良い。マージンは、２つの隣接するアイテムの間の最小許容距離を定義する
［制約ベースモデル］
現在の階層レイアウトモデルは、以前に開発された、より一般的な制約ベースモデルより単純に理解できる。制約ベースモデルは、コンピュータ支援デザイン（ＣＡＤ）アプリケーション、ユーザインターフェース構成及びウィンドウ管理に使用されてきた。ユーザインターフェース構成アプリケーションでは、レイアウトされるべきオブジェクトはボタン又は入力フィールドなどのウィジェット（widgets）である。ウィンドウ管理アプリケーションにおいては、レイアウトされるべきオブジェクトは、コンピュータオペレーティングシステムのためのユーザインターフェースの一部としてデータのビューを表現するために使用されるウィンドウである。
【００１５】
ユーザインターフェース構成アプリケーションでは、グラフィカルユーザインターフェース（ＧＵＩ）を様々に異なる画面分解能や、様々に異なるフォント及びテキストサイズの使用などの変更に適応させるために、動的レイアウト制約が使用される。動的レイアウトは、複数のプラットフォームに対してユーザインターフェースを構築するプロセスを単純化する。
【００１６】
ウィンドウ管理アプリケーションでは、ユーザは、ウィンドウが追加又は削除されるとき、又はウィンドウがサイズ又は位置を変化させるときに維持されるウィンドウ間の関係を作成するために動的制約を適用することができる。
【００１７】
ＣＡＤアプリケーションは非常に一般的な幾何学的制約を有し、レイアウトモデルはより複雑で、使用しにくく、レイアウト計算は文書レイアウトモデルの場合より遅くなる。例えば、ＣＡＤアプリケーションに使用されるいくつかの制約ソルバー（solvers）は、１次方程式を使用したのでは表現できない、２本の線が平行であるということの指定を支援する。
【００１８】
ユーザインターフェース（ＵＩ）アプリケーション及びウィンドウ管理アプリケーションに使用される制約ベースレイアウトモデルは、図形編集作業中に１秒間に何度もレイアウトを更新する必要があるような場合に、頻繁に対話形式で使用されるのに十分な速度を有していなければならず、そのため、レイアウト方法はそのような作業を十分に支援できるほど高速でなければならない。それらのアプリケーションは、通常、レイアウト計算を実行するために特殊化制約ソルバーを使用する。それらのアプリケーションに使用される制約ソルバーは、通常、１次方程式（即ち、１次等式）又は１次不等式、或はその双方として表される線形制約を支援する。通常、それらの制約ソルバーは、解の質を規定する目標関数を更に有する。制約ソルバーは、制約のいずれにも違反せずに目標関数の値を最小（又は最大）にすることを目的としている。目標関数も１次関数である場合、この種の問題を線形プログラムと呼ぶ。この種の問題はよく理解されている最適化問題であり、それらを解決するための周知のアルゴリズムが存在している。通常、この種の問題を解決するために、シンプレックスアルゴリズム（simplex algorithm）と呼ばれるアルゴリズムが使用される。
【００１９】
１組の制約と、目標関数とにより定義されるレイアウト問題が与えられた場合、その問題が過剰制約であることがあり、その場合には解は存在しない。或は、問題は制約不足であるかもしれず、その場合には、多数の解が存在するか、解は１つになるであろう。レイアウトを計算可能にするためには、レイアウトモデルはレイアウトが厳密に１つの解を有することを保証する必要がある。これを実現する１つの方法は、ユーザに対して解がないこと、又は多くの解がありすぎることを報告し、ユーザに問題を修正させる。問題が過剰制約又は制約不足である理由に関してユーザに意義のある情報を提示するのは容易ではないため、この方法は一般に受け入れられる解決方法ではない。システムが過剰制約である場合、多くの制約は互いに関して同時に矛盾していると考えられる。システムが制約不足である場合には、ユーザが矛盾する制約を追加することをどのようにして防止するかは自明ではないであろう。これは、グラフィカルインターフェースを使用して制約が編集されているときに特に困難である。
【００２０】
解が存在しないという事態を回避するための周知の方法の１つは、制約階層（constraint hierarchy）と呼ばれる形態をとるように制約の優先順位を規定する。制約に対する解が存在しない場合、解が可能になるまで、制約は逆の優先順位で無視される。
【００２１】
制約不足の問題を回避するための周知の方法は、非線形目標関数を使用する。適切な厳密凸関数（convex function）が使用される場合、問題は常に１つの独自の解を有する。線形制約及び２次目標関数を有する最適化問題を解決するための周知の技法が存在するため、通常は２次目標関数が使用される。それらのうちで最も単純な方法はシンプレックスアルゴリズムの変形である。
【００２２】
可変データ文書の生成に伴うもう１つの問題は、生成中の文書のプレビューの問題である。ワードプロセッサやデスクトップパブリッシングアプリケーションは、印刷に取り掛かる前にユーザが作業内容を全体的に評価するのを補助するために、「プリントプレビュー」機能を使用することが多い。多数の文書をプレビューしなければならない場合、これは煩雑な作業になる。
【発明の開示】
【発明が解決しようとする課題】
【００２３】
本発明の目的は、可変文書印刷と関連する１つ以上の問題点を実質的に克服するか又は少なくとも軽減することである。
【課題を解決するための手段】
【００２４】
本発明の一態様によれば、テンプレートに基づいて可変データ文書のためのレイアウトを生成する方法が開示され、前記方法は、
前記テンプレートに少なくとも１つのコンテナを設定してレイアウトを形成する設定工程と、
前記コンテナの少なくとも１つの選択された特徴に関連した少なくとも１つの制約を確立する確立工程と、
グラフィカルユーザインターフェース（ＧＵＩ）を用いて前記設定工程で設定されたコンテナに関連して、前記確立工程で確立された制約を表示する工程と、
前記レイアウトを修正して複数のコンテナにコンテンツを置くことにより前記文書を生成する修正工程とを有し、
前記少なくとも１つのコンテナの少なくとも１つの寸法と前記レイアウトの少なくとも１つのコンテナの位置は、前記レイアウトの各制約が満たされる条件で置かれたコンテンツの特性に基づいて変更されることを特徴とする。
【００２５】
上記方法を実行するための装置及びコンピュータプログラムを含む、本発明の他の態様も開示される。
【００２６】
次に、添付の図面を参照して本発明の少なくとも１つの実施例を説明する。
【発明を実施するための最良の形態】
【００２７】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。
【００２８】
１．概要
ソフトウェアアプリケーションとして実現されるのが好ましい可変データ文書作成及び印刷システムを開示する。このアプリケーションは、類似する形態を有するが、コンテンツは異なっている場合もあるような複数の文書を作成させる。これは、文書テンプレートの作成及び編集と、文書テンプレート上のエリアと可変データの関連付けとにより実現される。
【００２９】
文書テンプレートは複数のコンテナを含んでいても良く、各々のコンテナはテキスト又は画像データなどのコンテンツを保持するように構成されている。コンテナの位置及びサイズを固定することは可能であるが、ユーザ指定規則に従って、文書ごとにコンテナの寸法又は位置を変化させても良い。それらのコンテナのコンテンツは静的コンテンツ又は可変コンテンツのいずれであっても良い（即ち、データベース等の何らかのデータソースに応じて決まる）。
【００３０】
ユーザはデータを獲得すべき様々な種類のデータソースを指定してもよい。データソースは複数のデータレコードを含む。アプリケーションは、データを文書テンプレートのコンテナと関連付けるためのメカニズムを提供する。
【００３１】
文書テンプレートと、データソースからのデータは、その後、「マージ」されて、データソースと文書テンプレートのコンテナとの関連付けに基づいて複数の文書を生成する。通常、データソースのレコードごとに、又はレコード群ごとに１つの文書が生成される。その後、文書をディスクにセーブするか、又は必要に応じて印刷することができる。
【００３２】
これらの構成は従来の技術と比較していくつかの独立した利点を提供する。例えば、従来の技術とは異なり、文書テンプレートを編集するときに、ユーザは常にマージされた文書の内の１つを見ることを選択できる。これは、文書テンプレートとデータが動的にマージされるためである。その結果、（文書テンプレートではなく）文書がどのように見えるかを見るために特殊なプレビューエリアへ移行することが必要である従来の技術とは異なり、テンプレートを編集している間に、最終結果としての文書のうちの１つがどのように見えるかを少なくとも見ることが可能である。
【００３３】
コンテナに対する制約（コンテナがどちらに移動し、どちらにサイズを変化するかを判定する）はその場で示され、従来の技術のように別個の画面又はエリアへ移行する必要なく、コンテナ上の様々な位置をクリックすることにより、その場で編集できる。これにより、従来の技術と比較して、文書テンプレートの作成が簡略化される。
【００３４】
２．実施の形態の概要
基本的な実施の形態は、少なくともユーザインターフェースと、レイアウトエンジンとを具備する可変データ文書作成及び印刷アプリケーションである。１つの特定の実施の形態は、プリンタと共にパーソナルコンピュータで実行可能であるソフトウェアである。別の実施の形態では、アプリケーションは、可変データ文書集合の印刷を支援するプリンタ又はプリントコントローラに埋め込まれるプロセッサにおいて実行可能であるソフトウェアとして組み込まれる。更に、別の実施の形態においては、アプリケーションは、視聴者に対してカスタマイズされた文書をサーブすることができるウェブサーバで実行可能であるソフトウェアとして組み込まれる。それらの実施の形態は、適切なハードウェア構造でそのようなソフトウェアが実行される場合も含む。
【００３５】
可変データ印刷とは、関連文書の集合を印刷することを表す。非可変データ印刷の場合、文書は個別に印刷され、文書ごとのデータは通常プリンタへ別個に送信される。可変データ印刷においては、複数の関連文書を含むプリントジョブがプリンタへ送信される。通常、可変データプリントジョブにおける文書は、複数の文書で出現する共有要素を含む。このデータは、通常、文書ごとに繰り返されるのではなく、ジョブごとに一度だけプリンタへ送信される。可変データプリントジョブが印刷されるとき、各文書に共有データが挿入される。これには、文書のページが印刷されるにつれて、ページのレイアウトを計算することが必要であろう。この場合、レイアウト方法はプリンタ又はプリントサーバのソフトウェアの一部になるであろう。より典型的には、各文書のレイアウトはクライアントマシンで計算され、レイアウトはプリントジョブの一部としてプリンタへ送信されるが、この場合、レイアウト方法はクライアントマシンで実行される。
【００３６】
３．システムの説明
図１Ａは、可変データ文書を印刷するためのシステム１００を示す。ここで説明する方法は、図１Ｂに詳細を示す汎用コンピュータモジュール１０１の内部で実施されても良く、その場合、説明するプロセスは、コンピュータモジュール１０１内部で実行され、システム１００を介して動作可能であるレイアウト編集アプリケーションプログラム１２１などのソフトウェアとして全体又は一部を実現されても良い。特に、レイアウト編集及びその結果としての印刷工程は、コンピュータ１０１により実行されるソフトウェアの命令により実現されても良い。ソフトウェアは、例えば、以下に説明する記憶装置を含むコンピュータ読み取り可能な媒体に格納されていても良い。ソフトウェアはコンピュータ読み取り可能な媒体からコンピュータにロードされた後、コンピュータ１０１により実行される。そのようなソフトウェア又はコンピュータプログラムが記録されているコンピュータ読み取り可能な媒体は、コンピュータプログラム製品である。このコンピュータプログラム製品をコンピュータで使用した結果、文書レイアウト編集及び可変文書印刷のための好都合な装置が得られるのが好ましい。
【００３７】
コンピュータモジュール１０１は、キーボード１３２などの入力装置及びマウス１３３などの指示装置と、表示装置１４４及びオプションであるローカルプリンタ１４５を含む出力装置とに接続されている。入出力インターフェース１３８は、ネットワーク接続１０７を介してコンピュータモジュール１０１をシステム１００の他の計算装置に接続することができる。通常、ネットワーク接続１０７は、ローカルエリアネットワーク（ＬＡＮ）又はワイドエリアネットワーク（ＷＡＮ）である。
【００３８】
コンピュータモジュール１０１は、通常、少なくとも１つのプロセッサユニット１３５と、例えば、半導体ランダムアクセスメモリ（ＲＡＭ）及び読み取り専用メモリ（ＲＯＭ）から形成されているメモリユニット１３６と、ビデオインターフェース１３７を含む入出力（Ｉ／Ｏ）インターフェースと、キーボード１３２及びマウス１３３に対するＩ／Ｏインターフェース１４３とを含む。記憶装置１３９が設けられており、通常はハードディスクドライブ１４０と、フロッピー（登録商標）ディスクドライブ１４１とを含む。磁気テープドライブ（図示せず）も使用されて良い。データの不揮発性供給源として、通常、ＣＤ−ＲＯＭドライブ１４２が設けられている。コンピュータモジュール１０１はGNU/Linux又はMicrosoft Windows（登録商標）などのオペレーティングシステムを使用し、コンピュータモジュール１０１の構成要素１３５〜１４３は、通常、そのオペレーティングシステムに従って、当業者には知られている、それらの構成要素により形成されるコンピュータシステムの従来通りの動作モードを結果としてもたらすように、相互接続バス１３４を介して通信する。説明した構成を実施できるコンピュータの例には、IBM-PC及びその互換機、Sun Sparcstations又はそこから派生した類似のコンピュータシステムがある。
【００３９】
通常、レイアウト編集アプリケーションプログラム１２１はハードディスクドライブ１４０に常駐しており、実行時にはプロセッサ１３５により読み取られ、制御される。プログラム１２１及びネットワーク１０２０から取り出されるデータの中間格納は、可能であればハードディスクドライブ１４０と協調して、半導体メモリ１３６を使用して実現されても良い。場合によっては、アプリケーションプログラム１２１は、ＣＤ−ＲＯＭ又はフロッピー（登録商標）ディスクに符号化されてユーザに供給され、対応するドライブ１４２又は１４１を介して読み取られても良く、或はネットワーク接続１０７からユーザにより読み取られても良い。更に、磁気テープ、ＲＯＭ又は集積回路、磁気光ディスク、コンピュータモジュール１０１と別の装置との間の無線送信チャネル又は赤外線送信チャネル、ＰＣＭＣＩＡカードなどのコンピュータ読み取り可能なカード、並びにＥメール送信及びウェブサイトなどに記録された情報を含めたインターネット及びイントラネットを含む、他の適切なサイズに規定されたコンピュータ読み取り可能な媒体から、コンピュータモジュール１０１にソフトウェアがロードされることも可能である。以上挙げた媒体は関連するコンピュータ読み取り可能な媒体の単なる例である。他のコンピュータ読み取り可能な媒体を使用しても差し支えない。
【００４０】
レイアウト編集用として名付けられてはいるが、アプリケーション１２１は可変データ印刷（ＶＤＰ）を実行するためにも動作し、２つのソフトウェア要素を含む。それらの要素のうちの第１の要素はレイアウトエンジン１０５であり、これは矩形のエリアの中で所与の制約及びサイズによって、矩形及び行の位置を計算するためのソフトウェア要素である。第２に、ユーザインターフェース１０３要素は、ユーザに文書テンプレートを構成させ、文書テンプレート内の複数の領域をデータソースと関連付けさせるメカニズムを提供する。ユーザインターフェース１０３とレイアウトエンジン１０５は、通信チャネル１２３を介して通信する。文書生成のためのデータソースは、通常、一般にデータベースアプリケーションが実行されている別のコンピュータにより形成されるデータベースサーバ１１７においてホスティングされる（hosted）データベース１１９である。ホストコンピュータ１０１は、ネットワーク接続１０７によってデータベースサーバ１１７と通信する。可変データ印刷アプリケーション１２１は、ホストコンピュータ１０１又は一般に別のコンピュータにより形成されるファイルサーバ１１５にセーブされることが可能である文書テンプレートを生成する。可変データ印刷アプリケーション１２１はまた、データとマージされた文書テンプレートにより形成される文書を生成する。それらの文書はホストコンピュータ１０１にあるローカルファイルシステムにセーブされるか、ファイルサーバ１１５にセーブされるか、或は直接、印刷のためにプリントサーバ１０９又はプリンタ１１３へ送信されることが可能である。プリントサーバ１０９は、直接にネットワーク接続できないプリンタにネットワーク能力を提供するコンピュータである。プリントサーバ１０９とプリンタ１１３は典型的な通信チャネル１１１を介して接続されている。
【００４１】
図２は、可変データ文書を印刷するための他のシステム例を示す図である。図２は、レイアウトエンジン１０５の別個のバージョン２２５を含むエンジンサーバ２２７が追加されている点を除いて図１に類似している。エンジンサーバ２２７は別の典型的なコンピュータである。ファイルサーバ１１５に格納された文書テンプレートは、レイアウトエンジン２２５による印刷又は他の目的のために文書を生成するためにデータベース１１９に格納されているデータと組み合わされることが可能である。そのような動作はユーザインターフェース１０３を介して要求されても良いし、或は単に特定のレコードが印刷されることを要求するために要求されても良い。
【００４２】
４．メインウィンドウ
図３は、メニューバー、ツールバー、作業エリア及びフローティングパレットを含むアプリケーションのメインウィンドウの一例を示す図である。
【００４３】
図３を参照すると、ユーザインターフェース１０３は、動作中にビデオディスプレイ１４４に表示されるアプリケーションウィンドウ３０１により形成されるグラフィカルユーザインターフェースを含む。ウィンドウ３０１は、メニューバー３０２と、いくつかの実施の形態において、その場所から切り離されて画面上の様々な場所へ移動されることができるツールバーエリア３０３と、作業エリア３０６と、オプションであるフローティングパレット３１１と、通常はマウス１３３の位置又は動きと関連する場所を占めるカーソル／ポインタデバイス３１３とを有している。
【００４４】
メニューバー３０２は、起動されたとき、現在の技術において一般的であるように、メニューオプションの階層を示すように拡張された複数のメニュー項目３０４を有する。
【００４５】
ツールバー３０３は、各々がアプリケーションの特定のモードに応じて隠蔽されるか又は表示される複数のツールボタン又はウィジェット３０５を有する。
【００４６】
オプションであるルーラー３０８は、作業エリアにおいてポインタ、ページ、行、マージンガイド、コンテナ又は他のオブジェクトの位置を指示するために使用される。ルーラー３０８は、例えば、インチ、ミリメートル又は画素などの使用される単位を数値で指示しても良い。
【００４７】
フローティングパレット３１１は、可変データライブラリなどの追加機能をアクセスするために使用されることができる。パレット３１１は、そのウィンドウの移動、サイズ設定又は閉鎖を可能にする独自のウィンドウコントロール３１２を有する。パレット３１１はオプションとして常時作業エリアの前面にとどまっていても良いし、或は他のオブジェクトの背後に隠されても良い。パレット３１１は、アプリケーションウィンドウ３０１の範囲内にのみ現れるように制約されていても良いし、或はその一部又は全体がアプリケーションウィンドウ３０１の外に現れることも可能である。
【００４８】
図４は、コンテナ作成の例示、コンテナ間の第１の種類のストラット（struts）、アンカー（anchors）及びスライダを含む本実施の形態に係る画面、ツール及びアイコンを例示する図である。
【００４９】
図４を参照すると、少なくとも次のようなユーザ選択可能なアイコン「ボタン」を有するツールバーエリア３０３が示されている。
【００５０】
・選択ツールボタン４０３：コンテナの辺を選択、移動、スケーリング、サイズ再設定及びロック／ロック解除するために使用される。コンテナは、コンテナを選択している間にコンテナの周囲に選択ボックスをドラッグするか、又はＣＴＲＬキーを押し続けることにより多重選択されることも可能である。
【００５１】
・イメージコンテナツールボタン４０５：静止画像又は可変画像を保持するコンテナを作成するために使用される。
【００５２】
・テキストコンテナツールボタン４０４：静止テキスト又は可変テキストを保持するコンテナを作成するために使用される。
【００５３】
・ストラットツールボタン４０６：コンテナ間の距離を制御するために使用される。
【００５４】
これらのボタンは、当該技術では良く知られているように、コンテキストセンシティブツールチップ（context semsitive tool tips）によって実現されることが可能である。
【００５５】
５．文書テンプレート
作業エリア３０６は文書テンプレートを見て、そのデザインを編集するために使用される。これにより、ユーザは準備中の文書が印刷された場合にどのように見えるかをデザインし、文書テンプレートとマージされるべき可変データの量及びサイズに基づいて、マージ後の各文書がどのように変化するかを理解することができる。
【００５６】
テンプレートに外部データソースがリンクされている場合、可変テキスト及び可変画像は、ユーザが作業中に現文書を下見できるようにコンテナ内に表示される。
【００５７】
文書の構造及びその可変データコンテナの挙動を記述するビジュアルクルーは、ユーザがカーソルをロールオーバするか又はコンテナを選択するたびに表示される。
【００５８】
作業エリア３０６は、スクロールバー３０７と、オプションであるルーラー３０８と、文書テンプレート３０９とを特徴としている。文書テンプレート３０９は複数のページを示すことができる。
【００５９】
所定の文書テンプレートのページサイズは、当該技術において良く知られているように、ユーザにより指定される。各文書の実際のページ数は、可変データに応じて異なるであろう。１ページに全てが収まらない場合には、データを表示するために追加のページが自動的に作成される。
【００６０】
各ページ境界の中に、そのページにおける印刷可能オブジェクトの最大範囲を指示するオプションのページマージン３１０がある。
【００６１】
図４には、文書テンプレート３０９の１ページに現れることが可能であると思われる複数のオブジェクトの例も示されている。それらはオプションであるアンカーアイコン４０９、非固定辺４１０、ストラット４１２及びスライダ４１３を特徴とする複数のコンテナ４０７，４０８である。
【００６２】
６．コンテナ（Containers）
コンテナは、文書テンプレートの中の、テキスト、画像及び他のコンテナ又はオブジェクトなどの静的コンテンツ又は動的コンテンツを挿入できるスペースである。コンテナは、ユーザインターフェースに示すように、ポインタ３１３及びマウス１３３を介する制御を使用したコンテナの操作により、移動、スケーリング及び再整形されることができるであろう。
【００６３】
更に厳密に言えば、コンテナは設定、視覚的見かけ、並びに対話及び編集の挙動の集積である。以下に、コンテナの定義の全ての部分を示す。
【００６４】
・コンテナは、静的及び／又は動的コンテンツを有する。動的コンテンツは、データソースに由来し、異なる文書に対して異なっていることもあるという意味で動的である。動的コンテンツは、印刷には適合しないような、時間の経過に伴って変化するアニメーション又は他のコンテンツを含むことを意図されていない。同様に、静的コンテンツは、このコンテナを使用して生成される全ての文書において同じに見えるが、動的コンテンツのアクションによって、静的コンテンツが文書ごとに異なる場所に配置されることがある。
【００６５】
・コンテナは、コンテナのコンテンツに適用される背景色、境界、フォントや文体などのテキスト設定のような装飾特徴を有していても良い。
【００６６】
・コンテナは、文書を生成するときにデータソースからのデータとマージされても良い。装飾特徴は、通常、静的コンテンツのように印刷済み出力の中に見ることができる。動的コンテンツは、データソースからの特定のデータの見かけに表れる。このようなコンテナの表現は、例えば、印刷されるか又は画面１４４に表示されるか、或は印刷と表示の双方が実行されることが可能であろう。
【００６７】
・コンテナはユーザインターフェース、例えば、コンテナの設定を編集し、見るための対話型グラフィカルユーザインターフェースを更に有していても良い。インターフェース要素は、通常、画面１４４に現れるが、印刷される文書には表れない。ユーザインターフェース１０３は、背景色又はフォントなどのコンテナの装飾特徴の一部を表示しても良く、また、コンテナの設定を編集し、見ることを可能にするための特徴を更に追加しても良い。特殊目的用ユーザインターフェースの例によれば、コンテナのサイズ又は位置を表示し、対話によって変更するための境界又は角アイコン、或はコンテナがデータソースからのデータとマージされるときにコンテナの挙動を指示するためのオーバレイ数、行、アイコン又はテキストを備えることが特徴となっている。
【００６８】
本実施の形態の一態様によれば、一連の新たな直接操作技法と、コンテナのグラフィカルユーザインターフェース要素を含む表示の方法が開示される。
【００６９】
６．１コンテナ制約
本実施の形態によれば、コンテナは、各文書において関連コンテンツがどのように表示されれば良いかを制御するいくつかの制約を有していても良い。それらの制約は、静的コンテンツ及び動的コンテンツをコンテナと関連付ける手段と共に、ユーザが単一の文書テンプレートからの複数の文書の生成を制御するための第１の方法である。制約の一例は、「このコンテナのコンテンツは最大で４インチの高さである」というものであろう。別の制約は「このコンテナの左辺は各文書において同じ水平位置に現れなければならない」というものであろう。ここで説明するのは、グラフィカルユーザインターフェースを使用してそのような制約を表示し、編集するための一連の方法である。
【００７０】
１ページ上で何らかの定義済み場所を有する画像のように、静的コンテンツの場所を指定するコンテンツプレースホルダ（Placeholders）は、デジタル印刷技術においては良く知られている。以下の説明中、コンテナは位置とサイズを有し、当該技術で知られている方式に類似する方式で表示され、編集されると仮定するが、本実施の形態は可変データ印刷に特定した表示及び編集の方法に集中している。
【００７１】
コンテナは、ユーザが文書中のコンテンツのサイズ及び位置を指定することを可能にする。単一の文書テンプレートからいくつかの文書を生成できるので、コンテナは多数の可能性及び制約を指定し、表示するためのユーザインターフェースを有していなければならない。
【００７２】
コンテナの辺（稜線）は、関連するコンテンツが文書内で現れる仮想境界を定義する。従って、本明細書において、コンテナの左辺というときには、それは生成されるどの文書にあっても関連するコンテンツが表示されることが可能である場所の最も左側の辺というのと同等であろう。同様に、コンテナの高さというときには、それは生成されるどの文書にあっても関連するコンテンツの高さに対する制約を論じていると理解されるであろう。本願明細書がユーザインターフェース１０３に関連してコンテナの辺又はサイズを論じる場合、この区別が明確にされるであろう。
【００７３】
以下の説明中、「固定（fixed）」という用語は、コンテンツの見かけを制御するために使用される何らかの値が全ての文書において同じであることを定義している。
【００７４】
・コンテナの幅が固定されている場合、それは関連するコンテンツに許可されている幅が全ての文書において同じであることを意味する。
【００７５】
・コンテナの高さが固定されている場合、それは関連するコンテンツに許可されている高さが全ての文書において同じであることを意味する。
【００７６】
・距離制約が固定されている場合、全ての文書について指定距離が一定である。
【００７７】
・コンテナの左辺又は右辺が固定されている場合、それはページに対して全ての文書について、その辺の水平（横）方向の位置が同じであるが、コンテナの高さ或は縦方向の位置は変化しても良いことを意味する。例えば、コンテナの左辺が固定されている場合、関連するコンテンツは１つの文書ではページの最上部近くに現れ、別の文書ではページの一番下に現れることも可能であるが、左辺は全てのケースにおいて同じ水平位置を有する。
【００７８】
・コンテナの上辺又は下辺が固定されている場合、それはページに対して全ての文書について辺の縦方向の位置が同じであるが、コンテナの幅或は水平方向の位置は変化しても良いことを意味する。
【００７９】
・コンテナの縦軸は、コンテナの左辺と右辺との中間に位置し、それらの辺と平行である想像上の垂直（縦）線である。コンテナの縦軸が固定されている場合、そのコンテナの左辺と右辺の水平方向位置の平均は全ての文書について同じである。この制約があると、コンテナの幅は変化でき、従って、様々に異なる文書において、左辺と右辺は共に縦軸から遠ざかるか、又は縦軸に接近する場合もあるが、この縦軸は全ての文書について、同じ水平位置に留まる。コンテナの高さと縦方向位置はこの制約によって影響を受けない。
【００８０】
・同様に、横軸が固定されている場合、これはコンテナの上辺及び下辺が縦方向に位置する場所を制約するが、高さはこの制約によって影響を受けない。
【００８１】
・横軸と縦軸の双方が固定されている場合、それはコンテナの中心点が固定されていることを意味するが、幅と高さはこの制約によって影響を受けない。
【００８２】
・コンテナの１つの角、コンテナの１つの辺の中間点、又はコンテナの中心点が固定されている場合、それは全ての文書において、その点が同じ場所に現れ、コンテナに対して同じ場所に現れることを意味する。例えば、コンテナの左上角が固定されている場合、それはそのコンテナのコンテンツが配置されるであろう場所の左上の点が全ての文書について同じであることを意味する。
【００８３】
・縦方向の辺又は縦軸はページの左側の辺、又は右、又は左ページマージン、又は右ページマージン、或は他の何らかの水平位置に対して固定されていても良い。同様に、横方向の辺又は横軸は、ページの上辺又は下辺又はマージン、或は他の何らかの縦方向位置に対して固定されていても良い。「固定」という用語をこのように微細に区別することは、ページサイズが文書間で異なる場合にのみ重要である。それは、ページサイズが全ての文書で同じであれば、それらの可能性は生成される文書に相違を生み出さないからである。
【００８４】
「固定」の反対は「非固定」であり、これは辺、軸、角、中間点又は距離制約が文書ごとに異なっても良いが、特定の文書の集合においては必ずしもそうではないことを意味している。例えば、実際には辺の位置が変化することを阻止する他の外部制約は存在するであろうが、それらの外部制約が適用されなければ、辺の位置は変化することが可能であろうという事実は、辺がそれでも依然として非固定とラベル付けされることを意味している。
【００８５】
６．２  コンテナ状態
コンテナの「辺状態（edge state）」は、先に説明したように「固定」又は「非固定」とすることができる８つ特性、即ち、左辺、右辺、縦軸、上辺、下辺、横軸、幅及び高さの１セットとして定義される。辺は最小又は最大コンテナサイズ設定、或は他のコンテナの位置などの他の制約により影響を受けることもあり得るので、辺状態は辺の位置を完全には制約しない。従って、「辺状態」は、コンテナが持ちうる８つの状態全てのうちの一部のみを表しているにすぎない。
【００８６】
コンテナのグラフィカルユーザインターフェースは、辺状態を図形表現にマッピングすることと、辺及びコンテナ表現の直接操作を辺状態への調整にマッピングすることとから一部分取り出されるため、多くの実施の形態において辺状態は重大である。
【００８７】
コンテナの完全状態は、辺状態以上のものを含むのが好ましい。コンテナは、辺位置を更に制御する幅及び高さに関する最小設定及び最大設定を有していても良い。内側マージンは、関連するコンテンツが表示されうる場所を制御し、これはコンテナの辺を配置できる場所に影響を及ぼすことになる。テキストのフォント、文体、サイズ及び整列の設定、並びに画像のクロッピング（cropping）、スケーリングなどもコンテナの状態の一部となりうると考えられ、コンテンツ位置、サイズ及び見かけに影響を及ぼすであろう。背景色及び境界色、境界線重み、型などの装飾設定も各コンテナの状態の一部である。そのような面は、文書におけるコンテンツの位置には影響を及ぼさないであろうが、見かけには影響する。
【００８８】
実施の形態によっては、辺状態は固定又は非固定のいずれかをとり得る上述の８つの特性を含む。ページサイズは変化できないので、ここでは「固定」という用語は、それ以上の修飾子を持たない。それらの８つの特性は２8通りの異なる辺状態をもたらし、合わせて２５６をとり得る。
【００８９】
それら２５６の辺状態の全てが使用される必要はない。例えば、コンテナの左辺が固定され、縦軸が固定され且つ右辺は非固定である場合を考える。縦軸は固定されているので、左辺から縦軸までの距離は全ての文書について右辺から縦軸までの距離と等しくなければならない。左辺も固定されているので、縦軸から左辺までの距離は全ての文書について一定であり、それは右辺も固定されていることを示唆する。
【００９０】
いくつかの実施の形態は、各々が独自の挙動を示す辺状態の部分集合をモデル化している。先に説明した辺状態の挙動は、他のいくつかの状態と同一であるため、その辺状態が全ての実施の形態で使用されるわけではない。別の実施の形態はそのような状態を採用し、ユーザインターフェースにおいて、独特のコンテナの挙動をモデル化するのではなく、辺が固定されているか否かをモデル化し、編集する手段として、それらを表現しても良いであろう。
【００９１】
特定の１つの実施の形態は６つの特有の水平（横方向）制約と、６つの特有の垂直（縦方向）制約との積として形成される３６通りのコンテナ状態を使用する。
【００９２】
コンテナに対する水平制約は次の通りである。
【００９３】
１．左辺、右辺、縦軸及び幅が非固定である；
２．左辺のみが固定されている；
３．右辺のみが固定されている；
４．左辺と右辺が共に固定されている；
５．縦軸のみが固定されている；及び
６．幅は固定されているが、左辺、右辺及び縦軸は非固定である。
【００９４】
コンテナに対する垂直制約は次の通りである。
【００９５】
１．上辺、下辺、水平軸及び高さが非固定である；
２．上辺のみが固定されている；
３．下辺のみが固定されている；
４．上辺と下辺が共に固定されている；
５．横軸のみが固定されている；及び
６．高さは固定されているが、上辺、下辺及び横軸は非固定である。
【００９６】
「固定」という用語が修飾子を有する場合、例えば、各々の辺又は軸を、ページの左辺又は右辺のいずれかに対して固定することが可能であろうという場合、特有の辺状態は３６通りを超えるであろう。
【００９７】
尚、上記のリストの中で「左辺と右辺が共に固定されている」とラベル付けされた制約は、「左辺、右辺、縦軸及び幅が全て固定されている」及び「左辺及び縦軸が固定されている」、並びに実際にいくつかの他の類似の制約と同じ挙動を有することに注意されたい。「固定」の様々な概念を表現するためにビジュアルキューを使用する実施の形態は、辺状態がより少ない数の「固定」制約を採用すれば、より少ない数のそのようなキューを使用でき、それにより、そうでない場合と比較して生成する視覚的混乱が少なくなるため、一般にはより単純で対称的な制約が好ましい。
【００９８】
本開示の一態様は、以下に説明するように、辺状態をコンテナの図形表現及び編集方法と関連付ける。
【００９９】
６．３コンテナの表示及び編集
６．３．１新たなコンテナを作成する方法
２つのクラスのコンテナ、即ち、テキストコンテナ及びイメージコンテナを説明する。テキストコンテナはテキスト及び／又は埋め込み画像を保持する。イメージコンテナは画像のみを保持する。
【０１００】
図４を参照すると、新たなテキストコンテナ及びイメージコンテナは、文書テンプレート３０９において、マウス１３３を使用してテキストコンテナツール４０４又はイメージコンテナツール４０５をそれぞれクリックし、その後、テンプレート３０９内で矩形をドラッグすることにより作成できる。
【０１０１】
或は単純に、適切なツール４０４，４０５を起動した後に、文書テンプレート３０９の中をクリックすることによりコンテナを作成しても良い。デフォルトサイズのコンテナが挿入されるか、或は新たなコンテナの寸法を入力するためのダイアログボックス又は他のプロンプトが提供されるかのいずれかである。コンテナによっては、何らかの事前に定義済み又は計算済みスキーマに従って自動的に作成、配置されても良い。その他の代替方式を考案しても良い。
【０１０２】
６．３．２コンテナを表示する方法
先に説明した３６通りの辺状態の各々が図形表現へマッピングされるのが好ましい。いくつかの辺状態は、状況によっては１つの表現を共有することもあるため、図形表現の数は３６通り未満になる場合もある。
【０１０３】
図５（Ａ）〜（Ｄ）は、１つのコンテナに関する第１の辺規則の例を示す図である。
【０１０４】
アプリケーション１２１は、辺を実線（アイテム５０３を参照）又は破線（５０４を参照）として描画し、更に、辺状態を表現するために、アンカー（辺の上又はその付近に描画され、５０６，５０７，５０９により示すように複数の線、形状及び／又はアイコンから構成されている）、ハンドル（辺又は形状を移動又は修正させるためにその上又はその付近に描画されるコントロールポイント、５０２を参照）、スライダ（辺の両側に描画される短い平行線、図４を参照、４１３とラベル付けされたアイテム）、成長アイコン（５０５を参照）及び色を特徴として有する。
【０１０５】
図５（Ａ）〜（Ｄ）のコンテナ表示方法の規則は順に次の通りである。
【０１０６】
１．固定された辺ごとに、その辺を実線で描画する；
２．幅が固定されている場合、左辺及び右辺を実線で描画する；
３．高さが固定されている場合、上辺及び下辺を実線で描画する；
４．縦軸及び横軸は描画されない；
５．まだ描画されていない全ての辺は破線で描画され、各辺の付近に成長アイコンが描画される；
６．縦方向の辺及び／又は軸の対ごとに、それらが共に固定されているならば、その交差点にアンカーを描画する；
７．固定された辺ごとに、その辺の上のどこにもアンカーが描画されていなければ、辺の中心にスライダを描画する；
８．縦方向の辺及び／又は軸の対ごとに、その場所にアンカー又はスライダが描画されていなければ、その交差点にハンドルを描画する。
【０１０７】
規則１、２及び３は、線が固定又は制約されている場合に、それらが実線で描画されることを保証する。規則５は非固定の辺が破線で描画されることを保証する。規則６，７及び８は、固定された点はアンカーを表示し、固定された辺のいくつかはスライダを表示し、その他はハンドルを表示することを保証する。
【０１０８】
上記の規則において、辺は一度描画されるだけで良く、従って、ある規則が辺を描画させたならば、その後の規則はその辺を再度描画させない。アイコンを別の方法で描画するか又は省略するほうが好都合である場合、例えば、コンテナが非常に小さく、アイコンが互いに重なり合うか又は表現の他の特徴を分かりにくくする虞れがある場合には、そのようにしても良い。
【０１０９】
非固定の辺が描画される厳密な場所は、コンテナコンテンツの内容によって決まるであろう。先に説明したように、コンテンツが文書テンプレートとマージされ、ユーザインターフェースに目に見えるように表れることを意味する「ライブプルーフィング（live proofing）」が使用される。それに代わる実施の形態は、全ての文書について平均されたコンテナのコンテンツエリアを使用するか、又はユーザインターフェースにおいて非固定の辺が配置されるべき場所を決定する他の何らかの手段を使用することができる。
【０１１０】
これらのコンテナの表現は、コンテナの辺状態を表示する図形的方法を提供する。表現の解釈は次の通りである。
【０１１１】
・破線は、その辺の文書内における位置がコンテナのコンテンツに応じて決まることを意味する。図４において、そのような辺は４１０とラベル付けされている。
【０１１２】
・実線は、その辺が固定されている（辺４１４など）か、又はコンテナの幅又は高さが固定されている（コンテナ４０８では共に固定されている）ために、辺が制約されていることを意味する。
【０１１３】
・アンカーは、そのアンカーと交わる辺及び／又は軸が固定されていることを意味する。従って、アンカーポイントは、全ての文書において同じ横及び縦方向位置に現れる。そのため、定義上、アンカーは固定されている。図４のアイコン４０９は、交わる辺４１４が固定されていることを指示するアンカーアイコンの一例である。
【０１１４】
・スライダは、関連する辺が固定されているが、コンテナはその辺に沿って「縦方向にスライドして」数多くの位置に配置されて良いことを意味する。例えば、図４において、スライダ４１３は、コンテナ４０８のコンテンツが文書の中で、その特定の線図に見られる位置の左又は右に現れて良いことを指示している。
【０１１５】
これらのアイコン又は辺の一部又は全ては、どのツール又はどのコンテナが選択され、ハイライティングされ、又はその他の方法で起動されるかに応じて描画されるか、又は描画されない。コンテナ辺及びアイコンは、一般に、文書テンプレートのデザインを補助する手段であるので、印刷される文書では描画されない。
【０１１６】
最小幅、最大幅、最小高さ及び最大高さなどの設定は、２次ダイアログウィンドウに表示されることが可能である。
【０１１７】
図５（Ａ）において、コンテナ５０１の幅及び高さは共に非固定である。固定された辺５０３は実線で表されており、非固定の辺５０４は破線で表されている。成長アイコン５０５は、隣接する辺５０４が非固定であることを示す追加標識又は代替標識である。
【０１１８】
図５（Ｂ）において、コンテナ５０１の幅と高さは共に非固定である。アンカーアイコン５０６は、そのアイコンと交わる２つの辺５０３が固定されていることを付加的に又は代替的に示す。
【０１１９】
図５（Ｃ）において、コンテナ５０１の幅と高さは共に非固定であり、オプションのアンカーアイコン５０７で示すように、中心点の周囲でコンテナの拡張又は縮小が均等に起こる。
【０１２０】
図５（Ｄ）において、上辺５０８が固定されていることを除いて、コンテナ５０１の幅と高さは非固定である。アンカーアイコン５０９は、中心にアイコンが位置している上辺５０８が固定されていることを示すと共に、コンテナの左右の辺がアイコンを垂直に通って描画された中心軸線（垂直軸）に関して拡張又は縮小することを示す。
【０１２１】
６．３．３  コンテナ特性をその場で編集する方法
マウス１３３及びポインタ３１３によっていずれかの辺５０３又は５０４の上又はそれに近接する場所をクリックすることにより、辺５０３／５０４は固定状態と非固定状態との間でスワップされ、それに従ってユーザインターフェース３０１の図形表現が更新される。
【０１２２】
マウス１３３とポインタ３１３との組み合わせを使用して、コントロールポイント５０２をドラッグすることにより、対応する１つ以上の辺をコントロールポイント５０２の位置に従わせても良い。マウス１３３／ポインタ３１３によって選択場所からコントロールポイント５０２を解放すると、ドラッグされてきた位置に固定辺はとどまるが、その場合、新たな位置を無効にさせる外部制約は存在せず、一方、非固定の辺はコンテナ内部のコンテンツのサイズ及び形状などのファクタと、コンテナ又は辺に適用され得る他の何らかの制約により判定される計算上の位置に戻る。後述する、非固定の辺及びコンテナの位置を判定するために使用されるアルゴリズムの説明を参照されたい。
【０１２３】
非固定の辺の中心又は２つの非固定の辺の交差点に位置するコントロールポイントは固定されるか又は全く示されなくても良く、１つの非固定の辺の両端部に位置するコントロールポイントは、その辺と平行な方向に移動するように制限されても良い。
【０１２４】
更に、コンテナの頂点又は辺の付近をマウス１３３によってクリックするか、又はその頂点に位置するコントロールポイント又は辺の中央をクリックすることにより、その頂点又は辺にアンカーを追加しても良い。また、アンカーアイコンの付近をクリックするか、或はアンカーを選択し、次にインターフェースでメニューアイテム、ボタン又は他のコントロールを起動することにより、アンカーを除去しても良い。
【０１２５】
このようにしてアンカーを追加すると、その結果、アンカーと交わる１つ以上の辺又は軸は固定される。
【０１２６】
外部からの他の制約がない限り、コンテナは少なくとも１つの固定されたポイントを有することが望ましい。それは、この条件がないと、横方向位置又は縦方向位置の定義が不十分であるようなコンテナの作成が可能になると考えられるからである。例えば、固定された辺又は軸を持たないコンテナが有効である外部制約を持たない場合、そのコンテナのコンテンツは、論理上はページ上のどの場所にも出現できることになってしまうであろう。これは、そのようなコンテナのコンテンツが文書のどこに現れるかをユーザが予測することを困難にするであろう。そのため、実施の形態によっては、コンテナをそのような定義の不十分な状態に置くような遷移を許可しないことにより、この可能性を防止している。
【０１２７】
先に説明したように、コンテナが外部制約を有しているならば、コンテナは対応する固定された辺を持たずに幅又は高さが固定されていても良い。例えば、コンテナの横方向の位置を何らかの水平制約により確定できるのであれば、コンテナは左右の辺が非固定であっても固定された幅を有することが可能であろう。そのような外部制約については以下に説明するが、それらは「ストラット（struts）」と呼ばれる。
【０１２８】
コンテナに外部制約ストラットが付随しているならば、先に説明した、辺を固定するための方法に類似する方法で辺上をクリックすることにより、幅又は高さを固定できる。この状況では、コンテナに横ストラットが結合されている場合、非固定の左又は右の辺の上又はその付近をクリックすることにより、コンテナの幅が固定され、コンテナに縦ストラットが結合されている場合には、非固定の上又は下の辺の上又はその付近をクリックすることにより、高さが固定される。
【０１２９】
辺、軸、幅及び高さの固定／非固定を操作することは、コンテナの辺状態の間の遷移に相当する。固定された辺又は角の位置を変更するなどの他の操作は、他のコンテナ状態情報を修正する。
【０１３０】
各コンテナが常に有効辺状態を有することを保証するために、コンテナに制約が追加されるか又はコンテナから制約が除去されるたびに１組の規則が適用され、問題を解決するように他の制約に対して必要な調整が実行されるのが好ましい。新たな制約構成を示すように画面表示を更新することにより、調整は直ちにユーザに対して示される。これにより、ユーザインターフェース１０３は、コンテナが望ましくない状態になることを防止する。
【０１３１】
規則は各コンテナの横方向寸法及び縦方向の寸法に個別に次のように適用される。
【０１３２】
１．外部制約によりいずれかの辺が固定されるか又は作用を受けた場合、その辺と平行な軸は非固定になる。
【０１３３】
２．軸が非固定になった場合、少なくとも１つの平行な辺は外部制約により固定されるか又は作用を受ける。
【０１３４】
３．対向する辺が非固定になり、それらの辺に対する全ての外部制約が除去された場合、それらの辺と平行な軸は固定される。
【０１３５】
４．軸が固定された場合、その軸と平行な辺は非固定になり、それらの辺に作用する外部制約は除去される。
【０１３６】
５．幅が固定された場合、左右の辺と縦軸は非固定になる。
【０１３７】
６．高さが固定された場合、上下の辺と横軸は非固定になる。
【０１３８】
６．３．４  代替コンテナユーザインターフェース：別個の制約
コンテナユーザインターフェースの別の（第２の）実施の形態は、コンテナの辺状態を目で見て明確に区別でき、別個に編集可能な制約に分割するように、コンテナを表示し、コンテナを編集させる。
【０１３９】
この実施の形態では、幅及び高さの制約はコンテナのコンテンツエリアを横切るバーにより指示される。辺は辺の固定又は非固定の性質を示すだけである。
【０１４０】
コンテナ表示方法に従った第２の実施の形態の規則は順に次の通りである。
【０１４１】
１．辺又は軸ごとに、その線が固定されていれば、それを実線で描画し、そうでない場合には破線で描画する；
２．幅が固定されている場合、コンテンツエリアに実線の幅バーを描画し、そうでない場合にはそれを破線で描画する；
３．高さが固定されている場合、コンテンツエリアに実線の高さバーを描画し、そうでない場合にはそれを破線で描画する；及び
４．縦方向の辺及び／又は軸の対ごとに、それらが共に固定されていれば、その交差点にアンカーを描画し、そうでない場合にはハンドルを描画する。
【０１４２】
前述したように、第２の実施の形態においては、実線は、既にスライダがなすであろう挙動と同じ挙動を示すため、スライダの必要はない。先の実施の形態は、辺の固定／非固定に加えて、幅及び高さの制約を指示するために実線を使用していたので、これは先の実施の形態には当てはまらない。
【０１４３】
第２の実施の形態の幅バー及び高さバーは、コンテナに対する幅及び高さの制約をそれぞれ表示し、編集する図形的手段である。バーは辺に似た外観を呈し、固定及び非固定をそれぞれ示すために実線又は破線の見かけを有する。図３８には、２つのコンテナ３８０２及び３８０３に渡された幅バー３８０５及び高さバー３８０６が示されており、その横方向の位置と縦方向の位置は、コンテナ３８０１のサイズと、結合ストラット３８０４の長さとによりそれぞれ決定される。オプションとして、固定された辺などの他の制約が幅又は高さの固定を無意味にするであろうと考えられるならば、バーは不活動状態（inactive）であるか又は描画されなくても良いであろう。例えば、コンテナの左辺が固定され、右辺が非固定である場合、ユーザが幅を固定してしまうと、コンテナは先に説明した３６通りの好ましい辺状態の集合から外れた辺状態をとることになるため、そのような事態を阻止することが望ましいであろう。そのような状況では、幅バーは示されないであろう。
【０１４４】
この第２の実施の形態において、コンテナを編集する場合には、マウス１３３及びポインタ３１３を使用して辺、軸、幅バー又は高さバーをクリックして、辺を固定から非固定に、又は非固定から固定に変化させる。辺、ハンドル又はアンカーをドラッグすることは先に説明したように作用し、アンカーをクリックすると、それと交わる非固定の辺又は軸が固定され、交わる線が共に既に固定されている場合には、それらが共に非固定になる。これにより、横方向の位置又は縦方向の位置のいずれかの定義が不十分であるようなコンテナが残された場合、中心軸の一方又は双方を固定することで、この問題を修正できるであろう。例えば、アンカーをクリックしたことにより、コンテナの全ての辺が非固定のままである場合、コンテンツの場所として複数の場所が可能であり、従って、この問題を修正するために、その縦軸と横軸の双方を固定することによりコンテナの中心点を固定することが可能であろう。他の外部制約又は規則により、この過程が不必要になるか、又は１つの軸のみを固定することで十分な場合もあると考えられるであろう。
【０１４５】
６．３．５  代替コンテナユーザインターフェース：サイズフレーム
別の（第３の）実施の形態においては、コンテナの挙動は、各々が別個の矩形フレームにより表現される最小範囲及び最大範囲の直接操作により制御される。
【０１４６】
図６Ａ〜図６Ｃは、コンテナに関する第３の例示的規則を示す。
【０１４７】
図６Ａを参照すると、コンテナ６０１は各頂点と、オプションとして各辺の中央とにコントロールポイント６０３が配置されている最小範囲フレーム６０２と、各頂点と、オプションとして各辺の中央とにコントロールポイント６０５が配置されている最大範囲フレーム６０４とを具備する。
【０１４８】
最小範囲フレーム６０２は、常に、横方向と縦方向の双方で最大範囲フレーム６０４の内側に現れるか、又はそれと一致するように現れる。
【０１４９】
第３のフレーム６０６は、コンテナ６０１の内側のコンテンツの実際の範囲を現す。このコンテンツフレーム６０６は、常に最大範囲フレームの内側に現れるか、又はそれと一致するように現れると共に、常に最小範囲フレームの外側に現れるか、又はそれと一致するように現れる。コンテンツフレーム６０６の好ましいサイズは、コンテナ６０１の内側のコンテンツのサイズ及び形状などの要因、並びにコンテナに適用されうる他の何らかの制約により判定される。
【０１５０】
ユーザがこれら３つのフレームを互いに容易に区別できるようにするために、各フレームとそのコントロールポイントはオプションとして、異なる線重み、型又は色により表現されても良い。
【０１５１】
１つ或はそれ以上のコンテナを含む文書テンプレートを見るときの視覚的混乱（clutter）を減少させるために、最小範囲フレーム及び最大範囲フレームと、それらに関連するコントロールポイント６０３，６０５及びコンテンツフレーム６０６は、オプションとして、それらが関連している特定のコンテナが「活動状態（active）」にされない限り、例えば、コンテナにより占められているエリアの中にポインタを配置することにより、又はマウスによってコンテナをクリックすることにより隠蔽されても良い。
【０１５２】
最小範囲フレーム６０２と最大範囲フレーム６０４は、マウス１３３を使用してそれぞれ対応するコントロールポイント６０３，６０５を直接操作することによりリサイズ（サイズを変更）可能である。最小範囲フレーム６０２をリサイズすることにより、ユーザは、コンテナ６０１の内側にどのようなコンテンツが現れるかに関わらず、コンテンツフレーム６０６の可能最小サイズを決定できる。最大範囲フレーム６０４をリサイズすることにより、ユーザは、コンテナ６０１の内側にどのようなコンテンツが現れるかに関わらず、コンテンツフレーム６０６の可能最大サイズを決定できる。
【０１５３】
最小範囲フレーム６０２をリサイズするとき、フレームのいずれかの頂点又は辺の位置が最大範囲フレーム６０４の外側までドラッグされると、コントロールポイント６０３が解放された後、その頂点又は辺は、最大範囲フレーム６０４の対応する頂点又は辺と等しくなるように自動的に移動されるか、或は頂点又は辺が最大範囲フレーム６０４の対応する頂点又は辺に到達した後にそれ以上移動することを停止するか、或は最大範囲フレーム６０４の対応する頂点又は辺が、ドラッグされている頂点又は辺と一致するか又はその外側に出るように自動的に拡張される。
【０１５４】
最大範囲フレーム６０４をリサイズするとき、フレームのいずれかの頂点又は辺の位置が最小範囲フレーム６０２の内側までドラッグされると、コントロールポイント６０５が解放された後、その頂点又は辺は最小範囲フレーム６０２の対応する頂点又は辺と等しくなるように自動的に移動されるか、或は頂点又は辺が最小範囲フレーム６０２の対応する頂点又は辺に到達した後にそれ以上移動することを停止するか、或は最小範囲フレーム６０２の対応する頂点又は辺が、ドラッグされている頂点又は辺と一致するか又はその内側に来るように自動的に縮小される。
【０１５５】
最大範囲フレーム６０４内におけるコンテンツフレーム６０６の位置は、最大範囲フレーム６０４内における最小範囲フレーム６０２の相対位置に従って確定される。
【０１５６】
最小範囲フレーム６０２は、マウス１３３によってそれをドラッグすることにより、最大範囲フレーム６０４内の任意の位置へ移動できる。
【０１５７】
オプションとして、最小範囲フレーム６０２は、マウス１３３によってドラッグされている間に、左、右及び横方向の中心位置合わせ、並びに上、下及び縦方向の中心位置合わせを含めた最大範囲フレーム６０４内の好ましい位置の選択肢の内の最も近接する位置に「スナップ（snap）」するようにプログラムされても良い。
【０１５８】
図６Ａにおける横（水平）方向の寸法ａ，ｂ，ｃ及びｄは、最大範囲フレーム６０４、コンテンツフレーム６０６及び最小範囲フレーム６０２のそれぞれの縦方向の辺の距離を示す。
【０１５９】
ある特定の時点におけるフレーム内のコンテンツにより判定されるコンテンツフレーム６０６のサイズが与えられれば、寸法ａ，ｂ，ｃ及びｄは、常に下記の式に従う。
【０１６０】
ａ：ｂ＝ｄ：ｃ
図にはラベル付けされていないが、対応する縦方向の寸法にも対応する式が適用される。
【０１６１】
従って、最大範囲フレーム６０４内におけるコンテンツフレーム６０６の位置は式を解いた後の横方向の寸法ａ，ｂ，ｃ及びｄと、対応する縦方向の寸法とに従って決定される。
【０１６２】
図６Ｂは、最小範囲フレーム６０２が最大範囲フレーム６０４の左上に位置しており、従って、コンテンツフレーム６０６も同様に最大範囲フレームの左上に位置しているような１つの特定のケースを示す。
【０１６３】
図６Ｃは、最小範囲フレーム６０２が横方向と縦方向の双方で最大範囲フレーム６０４内の中央に位置し、従って、コンテンツフレーム６０６も横方向と縦方向の双方で最大範囲フレーム６０４内の中央に位置している別の特定のケースを示す。
【０１６４】
図６Ｄ及び図６Ｅは、コンテナ範囲が使用される可変データ文書を生成する方法６２０を説明するフローチャートである。この方法６２０は、アプリケーション１２１の中で実現され、スタートポイント６２２の後、ステップ６２４では文書テンプレートが検索され、ディスプレイ１４４のＧＵＩ３０１の中に表示される。ステップ６２６は、通常はマウス１３３及び対応するポインタ３１３の動きを介してユーザによりコンテナの描画を検出する。
【０１６５】
描画されるとき、コンテナは、デフォルトとして、図６Ａ〜図６Ｃに示すような最小コンテナ範囲６０２及び最大コンテナ範囲６０４という２つの制約を有する。コンテナの初期状態では、最小コンテナ範囲６０２は最大コンテナ範囲６０４と一致している。ステップ６３４では、いずれの範囲のコントロールポイントもコンテナ範囲を修正するために操作されることができるであろう。
【０１６６】
コンテナはテンプレートにおいてレイアウトを形成するために表現され、その後、ステップ６２８で様々な制約が適用される。ステップ６２８は、レイアウト中のコンテナの中でここで説明するような数多くの種類の制約の組み込みを含んでいても良い。現在論じている実施の形態においては、適用されるべき制約は図６Ａ〜図６Ｃに示すようなコンテナ範囲の制約である。ステップ６３０で、再びマウス１３３及びポインタ３１３を使用してコンテナ範囲が描画され、ステップ６３２では、コンテナ範囲はレイアウト中のコンテナと関連付けられる。ステップ６３４では、コンテナ範囲を修正するために、範囲のコントロールポイントが選択、操作されても良い。そのような修正は、範囲の１つ以上の辺をコンテナの辺と一致するように設定すること（図６Ｂ）、及び範囲フレームを関連するコンテナに対して移動又は位置決めすることを含んでいても良い。
【０１６７】
次のステップ６３６では、ユーザはステップ６２８に戻ることにより、更に別の制約を適用しても良い。更に別の制約は、最小範囲フレームと最大範囲フレームの双方を構成するための機会を提供する別の範囲フレームを含んでいても良く、或はその他の制約が適用されても良い。例えば、最大範囲フレームと、最大範囲フレームと関連していない別のコンテナとの間にストラットが適用されても良い。それにより、最大範囲フレームと関連するコンテナのサイズを制約し続ける一方で、別のコンテナの変化に従って範囲フレームを動的に移動させることが可能になるであろう。
【０１６８】
ステップ６３６の後、ステップ６３８の操作を経て、ユーザはレイアウトが完成する時点までレイアウトに、更に別のコンテナを追加しても良い。レイアウトが完成したならば、ステップ６４０はコンテンツのレコードをレイアウトに挿入して文書を生成する。ステップ６４２は、コンテンツの全てのレコードに関してこのプロセスを繰り返させ、それにより、１組の可変データ文書の作成を可能にする。全てのレコードが消費され、文書が生成されたならば、それらはステップ６４４で必要に応じてプルーフィングされ（proofed）（１１．１０−１１．１３章を参照）且つ／又は印刷される。この方法６２０はステップ６４６で終了する。
【０１６９】
７．イメージコンテナ
イメージコンテナは、写真、イラスト、ロゴ又は線図などの画像を含むことを目的とする特定の種類のコンテナである。
【０１７０】
イメージコンテナは、含まれるべき画像のスケーリングを制御するための挙動の選択肢のうちの１つを有することができる。それらの選択肢は次の通りである。
【０１７１】
・「全画像当てはめ」。これにより、画像全体がコンテナの中に嵌り込み、画像の縦横比が維持されるように、画像はスケールアップ又はスケールダウンされる。
【０１７２】
・「ボックスのサイズへの画像当てはめ」。これにより、コンテナ全体が画像により満たされ、画像の縦横比が維持され、画像の残りの部分は視界から切り取られるように、画像はスケールアップ又はスケールダウンされる。
【０１７３】
・「伸長当てはめ」。これにより、画像は、元来の画像の縦横比を無視して、横方向と縦方向の双方でコンテナのサイズに厳密に当てはまるようにスケールアップ又はスケールダウンされる。
【０１７４】
・「スケーリングせず」。これにより、画像にスケーリングは適用されず、コンテナの外側に出る画像の部分はいずれも視界から切り取られる。
【０１７５】
更に、コンテナの内側にあり、コンテナより小さい画像が横方向の左、中央又は右と、縦方向の上、中央又は下との何らかの組み合わせである特定の方向に整列されるように、イメージコンテナを設定することができる。
【０１７６】
８．テキストコンテナ
テキストコンテナは、様々なフォント及び段落文体によってフォーマッティングでき、且つテキストコンテナの様々な辺に対して整列又は行端揃えできるようなテキストの範囲を含むことを目的とする特定の種類のコンテナである。
【０１７７】
テキストコンテナは静止テキスト、可変テキスト又はそれらの組み合わせのいずれかを含む。テキストコンテナに画像などの他のオブジェクトを挿入することも可能であり、それらのオブジェクトはテキストの流れと同じように流れる。
【０１７８】
静止テキストは、コンテナ内へ直接に文字を打ち込むことにより入力される。可変テキストは、１１章で更に詳細に説明するように、ライブラリからコンテナへ可変データオブジェクトをドラッグすることにより追加される。１つのテキストコンテナに２つ以上の可変テキストオブジェクトを表示することができる。
【０１７９】
静止テキストのフォーマッティングは、個別の文字、語句又は段落全体に適用されることが可能であるが、フォーマッティングオプションは可変テキストアイテムのインスタンス全体にのみ適用可能である。
【０１８０】
８．１  テキストフォーマッティング
テキストフォーマッティングは次のようなオプションを含む。
【０１８１】
・フォント
・フォントサイズ
・太字
・イタリック体
・下線
・色
・行間隔
・強制大文字化
・自動ハイフネーション
８．２  整列
下記のテキスト整列オプションはいくつかの特定の実施の形態で許可される。
【０１８２】
・横方向の整列：左（デフォルト）、横方向の中心位置合わせ、右又は行端揃え
・縦方向の整列：上（デフォルト）、縦方向の中心位置合わせ、下
異なる実施の形態においては、垂直方向に行端揃えされたテキストなどの他のオプションが適切であろう。
【０１８３】
８．３  カラム（列）  （Columns）
テキストコンテナの中のテキストは、１つのカラム、又は２つ以上の縦方向のカラムのいずれかに配列されれば良く、「ガター（gutter）」として知られるスペースが、各カラムの左右の辺を、それぞれ隣接するカラムから分離している。
【０１８４】
従来の技術においては、隣接するカラムの間に分割線を引くことによりカラム幅を調整可能にすることが一般的であるが、ガターは事前にプロパティシート又はダイアログボックスで値を変更することにより、或は類似の非直接的方法により設定されている。
【０１８５】
図７Ａ及び図７Ｂは、３つのカラムを有するテキストコンテナ７０１と、マウス１３３及びポインタ３１３などの指示デバイスを使用する直接操作によって、カラム幅とガター幅の双方を再設定できる方法とを示す。
【０１８６】
図７Ａを参照すると、テキストコンテナ７０１は、テキストの３つのカラム７０２に分割されている。図示されるように、線７０３は隣接するカラムの間の中央分割線を表し、線７０４は隣接するカラム７０２の間のガター境界を表わしている。
【０１８７】
マウス１３３及びポインタ３１３によって中央分割線７０３を引くことにより、隣接するカラムの幅を調整できる。線引き機能の間に、カラム線引き機能が活動中であることを指示するために、デフォルトポインタの場所に特殊ポインタ７０５が表示される。
【０１８８】
図７Ｂに示すように、指示デバイスによってガター境界線７０４を引くことにより、ガターの幅を調整できる。線引き機能の間に、ガター線引き機能が活動中であることを指示するために、デフォルトポインタの場所に特殊ポインタ７０６が表示される。
【０１８９】
同じカラム間スペースの中にある２本のガター境界線は、各々のガター境界線と中央分割線との間で等しい間隔が常に維持されるように同時に調整される。
【０１９０】
更に図７Ｂに示すように、３つ以上のカラムが存在している場合には、各々のガターを個別に操作することが可能である。
【０１９１】
８．４  可変フォントサイズ
様々なボリュームのテキストを収縮又は成長させることによりコンテナの内側にはめ込むため、及びテキスト全体をテキストコンテナの内側にはめ込んだ状態を保ちつつ、外部制約に従ってコンテナのサイズを変化させるために、テキストコンテナ内におけるテキストのフォントサイズを変化させても良い。最小フォントサイズ及び最大フォントサイズは、フォントサイズの可能範囲を制約して、テキストコンテナごとに設定されても良い。全てのテキストをコンテナの中にはめ込むために使用すべき最適フォントサイズを判定するために、２進検索アルゴリズムを使用できるであろう。フォントサイズが最小サイズに達し、それでもテキストがコンテナの中に収まりきらない場合には、ユーザに対してエラーを示すことができる。
【０１９２】
８．５  コンテナ間におけるフォントサイズ同期
２つ或はそれ以上のテキストコンテナの間で、あるテキストコンテンツをコンテナのうちのいずれかの中に適正にはめ込むためにそのコンテナのフォントサイズが変更されるか否かに関わらず、全てのコンテナにおいてフォントサイズが等しくなければならないことを指定する制約が作成されても良い。
【０１９３】
この同期のために選択されたテキストコンテナが、制約の追加以前に異なるフォントサイズを有している場合、最初にフォントサイズが平均され、選択された各々のコンテナに適用されるのが好ましい。別の実施の形態は、第１の選択されたコンテナのフォントサイズを使用し、そのフォントサイズを他の全てのコンテナに適用する。更に別の実施形態は各コンテナに外部フォントサイズ設定を適用する。
【０１９４】
図８は、文字サイズ同期の動作を示すための画面、ツール及びアイコン例を示す図である。
【０１９５】
図８を参照すると、アプリケーションウィンドウ３０１は先に説明したようなツールバーエリア３０３を有する。ツールバーエリア３０３は少なくともフォントセレクタ８０３と、フォントサイズセレクタ８０４と、フォントサイズ同期制約を追加するためのボタン８０５とを含む。フォントセレクタ８０３とフォントサイズセレクタ８０４は、テキストコンテナ内におけるテキストの特性を変更するために使用されれば良い。いくつかのテキストコンテナが選択されたときに、フォントサイズ同期ボタン８０５をクリックすると、選択されている全てのコンテナのフォントサイズが同期される。
【０１９６】
文書テンプレート３０９の中には、複数のテキストコンテナ８０６，８０７が前もって配置されている。コンテナはマウス１３３を操作して、ポインタ１３によってコンテナをクリックするか、又は選択矩形をコンテナの周囲へドラッグするか、或は別の方法により選択されれば良い。コンテナ上にコントロールポイントを示すなど、テキストコンテナが現在選択されていることを指示するために視覚的手段を使用しても良い。
【０１９７】
２つ或はそれ以上のテキストコンテナ８０６，８０７を選択し、同期ボタン８０５を起動することにより、制約が追加される。他の実施の形態では、フォントサイズ同期制約は、プルダウンメニュー、キーボード指令又はその他の手段により適用される。
【０１９８】
オプションとして、制約はユーザインターフェースにおいてテキストコンテナ８０６，８０７の上、又はその付近にあるアイコン８０８又は他の図形表現を介して指示されても良い。更に、オプションとして、どのテキストコンテナが互いに制約によりにリンクされているかを指示するために、リンクされているテキストコンテナのそれぞれ対応するアイコンの間に接合線８０９が引かれても良い。
【０１９９】
他の実施の形態においては、選択されたオブジェクトの様々な特性を表示するために、ビデオディスプレイ画面１４４の別個のエリアが設けられても良く、このエリアは、選択されたテキストコンテナにフォントサイズ同期制約が適用されていることを指示し、且つ他のどのコンテナがその制約によりリンクされているかを識別するために使用されても良い。
【０２００】
フォントサイズ制約によりリンクされているテキストコンテナのうちの１つ以上を選択し、当初、その制約を適用するために使用された指令又はシーケンスを繰り返すことにより、制約を削除しても良い。これは、同期ボタン８０５を起動するか、制約によりリンクされているテキストコンテナのうちの１つ以上を選択して、その目的のために特別に規定された追加指令又はシーケンスを適用するか、或は代表的アイコン８０８又は接合線８０９をクリックして、キーボード１３２の「削除（delete）」キーなどの指令又はシーケンス、又はディスプレイ１４４に示されるメニュー指令の中からの指令又はシーケンスを適用することにより実現されれば良い。
【０２０１】
異なるフォントサイズを有するテキストを既に含む２つ以上のテキストコンテナに対してユーザがフォントサイズ制約を適用した場合、最大フォントサイズ、最小フォントサイズ又は平均フォントサイズのいずれかが全てのテキストコンテナに適用される。或は、ユーザはポップアップダイアログ、又はそれに類似する手段によってフォントサイズを選択することをプロンプトされることが可能である。
【０２０２】
例えば、フォントサイズセレクタ８０４から新たなフォントサイズを選択することにより、ユーザが既にフォントサイズ制約によりリンクされているコンテナのうちのいずれかに対して手動操作でフォントサイズを変更した場合、制約によりリンクされている全てのコンテナにその新たなフォントサイズが適用される。
【０２０３】
８．６  内側マージンの自動適用
テキストコンテナの内側マージンは、テキストコンテナが可視境界及び／又は可視背景を有しているか否かに基づいて自動的に設定される。
【０２０４】
図９は、内側マージンの自動適用の動作を示すための画面、ツール及びアイコン例を示す図である。
【０２０５】
図９を参照すると、アプリケーションウィンドウ３０１は、前述したようなツールバーエリア３０３を有する。このツールバーエリア３０３は、少なくとも境界セレクタ９０３と、背景色セレクタ９０４とを含む。
【０２０６】
テキストコンテナ９０５は可視境界又は背景色を持っておらず、コンテナの辺とコンテナの内側のテキストとの間にマージンも存在していない。
【０２０７】
テキストコンテナ９０６は可視境界を有し、コンテナの辺とコンテナの内側のテキストとの間に４つの辺全てでマージン９０７を有する。
【０２０８】
図９に示すようなシステムの状態に先立つ事象において、テキストコンテナ９０５に類似する状態にあったテキストコンテナ９０６は、可視境界又は背景も、内側マージンも持っておらず、マウス１３３によってコンテナ９０６をクリックするか、その周囲に選択矩形をドラッグするか、又は別の方法により、テキストコンテナ９０６が選択される。テキストコンテナ上にコントロールポイントを示すなど、テキストコンテナが現在選択されていることを指示するために視覚的手段が使用されても良い。
【０２０９】
次に、境界セレクタ９０３を使用することにより可視境界が適用されるか、或は背景色セレクタ９０４を使用して背景色が適用される。
【０２１０】
可視境界又は背景がテキストコンテナに適用される時点で、内側マージンが設定されていない場合、４つの辺の全てでテキストコンテナに所定の内側マージン９０７が自動的に適用される。内側マージンは、テキストコンテナの背景色とテンプレートの主要な周囲背景色との視覚的区別がつく場合には、必ず自動的に追加されても良い。
【０２１１】
コンテナに対して内側マージンが自動的に設定されるであろうと思われるもう１つの状況は、コンテナの背景色がページ色と異なる場合である。この場合、コンテンツをコンテナの辺まで流すためではなく、コンテンツとページ背景との視覚的分離を図るために、内側マージンが追加されるであろう。コンテナの背景色が完全に透明である場合には、定義上、そのコンテンツはページと同じ背景の上に描画され、内側マージンが追加される必要はない。
【０２１２】
８．７  コンテナ間におけるテキストの流れ
テキストのボリュームが先行するコンテナのサイズを超えるような場合、テキストをそのコンテナから次のコンテナへ流すために、２つ或はそれ以上のテキストコンテナを順次リンクさせても良い。
【０２１３】
テキストがそのようにリンクされた全てのコンテナの組み合わせエリアに収まりきらない場合には、異なるコンテナのフォントサイズの間の関係を維持しようと試みつつ、テキストをはめ込み可能にするような、コンテナごとのフォントサイズを見出すことが必要である。
【０２１４】
１組のリンクされるコンテナに対してこれを実現する望ましい１つの方法は、テキストがちょうど収まりきるまで、又はリンクされた全てのコンテナがそれぞれ対応する最小フォントサイズより小さいフォントサイズに到達するまで（到達した時点で、操作が完了できないであろうということを示すエラー又は他の標識がユーザに示される）、コンテナごとにフォントサイズをスケーリングするために２進検索アルゴリズムを使用する。尚、一方のコンテナが他方のコンテナより先に最小フォントサイズに到達した場合、その時点で必ずしもアルゴリズムの終了にはならないことに注意する。そのような状況においては、アルゴリズムはコンテナ間のフォントサイズ関係を維持しようと試みるが、そうなることを保証はしない。
【０２１５】
これを実現する別の方法は、先に説明した方法に類似した方法を使用するが、リンクされたコンテナの内のいずれかがその最小フォントサイズより小さいフォントサイズに到達した場合にエラー又は他の標識によって終了する。この代替方法はリンクされているコンテナの間の相対フォントサイズを維持するが、２進検索アルゴリズムの場合より多くのケースでエラーを生じ、解を生成できないと思われる。この代替方法は、リンクされている全てのコンテナの間のフォントサイズ同期も望まれている場合にテキストの流れを実現するために使用されるであろう。
【０２１６】
フォント収縮によってテキストの流れを実現する別の方法は、テキストがリンクされているコンテナの集合の中にはめ込まれるまで、又は集合の中の第１のコンテナがその最小フォントサイズに到達するまで、単純に第１のコンテナのフォントサイズを縮小してゆく。第１のコンテナがその最小フォントサイズに到達した場合、テキストが収まりきるか、又は全てのコンテナが最小フォントサイズになるまで、第２、第３のコンテナと順に収縮させることにより操作を続ける。それでもテキストが完全に収まらなければ、何らかの方法により、おそらくはエラー通知によってそれを指示する。この方法では、コンテナの順序付けが重要であり、それはテキストが流れる順序として定義される。従って、テキストがコンテナＡで始まり、コンテナＢへ続くならば、Ａは第１のコンテナであり、Ｂは第２のコンテナである。
【０２１７】
９．ガイド
ガイドは、コンテナ及び他のガイドの位置決めを補助するためにページの幅又は高さいっぱいにわたって示される縦線又は横方向の線である。固定及び非固定（浮動）の２種類のガイドがある。ガイドはストラット（struts: 後述する距離制約）を介して他のガイド又はコンテナに接続されても良い。ガイドは文書には現れず、デザインを補助する手段として文書テンプレート３０９にのみ現れる。ガイドは、ルーラエリアから作業エリアへ指示デバイスをドラッグすることにより作成されれば良い。
【０２１８】
９．１  固定ガイド
固定ガイドはページに固定されるか、印刷可能エリアなどのページのいくつかの部分に固定されている。固定ガイドは、全ての文書について同じ位置を有するという意味で固定されている。そのようなガイドはページの特定の縁部に対して、又はページの印刷可能部分に対して、例えば、左端に対して固定されていても良い。この例では、ページがリサイズされる場合（例えば、異なるサイズの用紙に印刷される場合）、ガイドは左端から同じ距離に留まるが、他の端からは必ずしも同じ距離をとらないであろう。
【０２１９】
９．２  非固定ガイド
非固定ガイド又は浮動ガイドは異なる文書において異なる位置を有し、文書内のデータが変化した場合、例えば、文書テンプレートがデータソースからのレコードとマージされる場合にも異なる位置を有する。この例では、データが文書テンプレートとマージされると、１つ以上のコンテナはデータソースからのデータを保持し、そのため、非固定ガイドの位置はストラットの作用によって判定されることが可能になるであろう。そのようなデータが文書テンプレートとマージされるまで、非固定ガイドの位置はわかっていないか、或は編集及びデザインを目的として初期（おそらくは任意の）位置が与えられるであろう。実施の形態によっては、浮動ガイドは、データソースからのデータが文書テンプレートとマージされるときに、ユーザにより編集されるか又はレイアウトエンジン１０５により変更されることが可能である位置を常に有する。
【０２２０】
９．３  ガイドの実施の形態
特定の実施の形態においては、固定ガイドと非固定ガイドは、共に、作業スペース、ページ境界又はページ印刷可能エリアの縁部にあるルーラまで拡張できる実線により表現される。固定ガイドと非固定ガイドを識別するために、色が使用される。或は、固定ガイドは実線により表現され、非固定ガイドは破線又は点線により表現されても良い。
【０２２１】
図１２を参照すると、非固定ガイド１２０４は、ルーラ３０８の水平方向セクションからマウス１３３によってドラッグすることにより、前もってＧＵＩ３０１に作成されている。第１のコンテナ１２０１は非固定の辺１２０２を有する。辺１２０２から非固定ガイド１２０４までストラット１２０３が作成されている。第２のコンテナ１２０５は、コンテナ１２０５の上辺をガイド１２０４に直接に整列させることにより、ガイド１２０４に直接に接続されている。第３のコンテナ１２０６はストラット１２０７によりガイド１２０４に結合されている。第４のコンテナ１２０８もストラット１２０９によりガイド１２０４に結合されている。
【０２２２】
コンテナ１２０１の高さの変化させる結果、非固定の辺１２０２が動くにつれて、ストラット制約１２０３を維持するために、ガイド１２０４はその縦方向の位置を変化させる。その結果、コンテナ１２０５，１２０６及び１２０８はガイド１２０４に対する制約を維持するために移動する。同様に、データを文書テンプレートとマージした結果、コンテナのサイズが決定又は変更されると、ストラットの作用によって非固定ガイドはそれらの制約の中のコンテンツに基づく位置をとるであろう。
【０２２３】
コンテナとガイドとの間にストラット制約を追加する方法は、本明細書の別の章で説明される、コンテナ間にストラットを追加する方法に類似している。
【０２２４】
例えば、図１２のコンテナ１２０５のように、コンテナの辺がガイドに直接に付着されるような制約を追加するのに好ましい１つの方法は、コンテナ又はコンテナの辺をガイドから事前に定義された距離の中の、視覚的にガイドに「スナップ」するような位置までドラッグするか、或は同様にガイドをコンテナの辺から事前に定義された距離の中の、コンテナの辺にスナップするような位置までドラッグするという方法である。コンテナ、辺又はガイドがスナップ状態にある間にドラッグ操作から解放されると、制約が作成される。
【０２２５】
１０．ストラット（Struts）
ストラットは、コンテナの特定の辺と、ガイド及びマージンなどの他のオブジェクトとの間の一定の距離を維持するために使用される種類の制約である。
【０２２６】
各ストラットは同じ文書テンプレートの中の２つの異なるコンテナに属する厳密に２つの平行な辺に適用されるか、１つのコンテナの１つの辺と平行なガイドに適用されるか、又は２つの平行なガイドの間に適用されるのが好ましい。他の実施の形態はストラットが結合できるものを制限しても良く、或は１つのコンテナの幅又は高さの制約を指定する方法として、ストラットにコンテナの辺同士を結合させるか、又はストラットにより、辺又はガイドを平行なページマージン又は辺と結合させても良い。
【０２２７】
ストラットは、ストラットにより付着される辺がいずれも、配置に関して他方の辺に対する優先順位を持たないという意味で対称である。
【０２２８】
ストラットの長さは視覚的に又は数値により表現されるか、或はその組み合わせにより表現されれば良い。実施の形態によっては、全てのストラットがその現在長さを視覚的に図形表現（ストラットアイコン）により表示するが、他の特性はダイアログボックス内の数又は視覚的設定として目に見える。
【０２２９】
図４を参照すると、第１のコンテナ４０７の辺４１０はストラット制約により第２のコンテナの辺４１１に結合されている。ストラット制約は、オプションとしてアプリケーションの様々なモード、例えば、プレビューモードにおいては隠蔽されても良いストラットアイコン（strut icon）４１２により指示されている。
【０２３０】
ストラットアイコンは、通常、正規の動作モードでは隠蔽されており、マウス１３３と関連するポインタ３１３がストラット、或はストラットに結合されたコンテナ又は辺又はガイドの付近にあるときに現れる。その付近の範囲には、ストラットに直接に結合されている、又は任意の数のストラットを介して間接的に結合されている他のストラット、コンテナ、辺又はガイドが含まれる。
【０２３１】
ストラットは１次元の長さを持つだけであるので、その次元のストラット位置をストラットが結合されている辺の現在位置から取り出すことができる。そこで、辺４１０と辺４１１との間にストラット４１２が描画される。縦方向のストラットの位置は様々な方法により計算できる。１つの方法は結合されている辺の中間点を平均し、その平均にストラットの中間点を配置する。従って、ストラット４１２の中間点は、辺４１０及び４１１の中間点の厳密に中間の位置にある。
【０２３２】
コンテナのコンテンツは文書間で異なる場合もあり、従って、文書が異なれば、コンテナの非固定の辺はページに対して様々な位置にあって良い。ストラット制約の作用は、辺又はガイドの間の距離を維持することであり、そのため、ストラットにより結合された辺又はガイドは文書の中で限られた可能位置範囲を有することになる。
図４を参照すると、例えば、ユーザがマウス１３３を使用してユーザインターフェースを介して１つの辺を操作した場合に、コンテナ４０７の第１の辺４１０が動けば、第１の辺４１０と、それに結合された第２の辺４１１との間のストラット制約（４１２）を維持するために、第２の辺４１１は「押し出される」か又は「引っ込められる」であろう。ユーザは結合されている辺又はガイドを押し出す又は引っ込めるなどのストラットの動作を認知するであろうが、ユーザインターフェースにおける実際の動作は文書を生成するときに使用される動作と同じである。
【０２３３】
別の実施の形態では、ストラットツールが起動されるが、ストラットを出現させるための、先に説明した方法は、ストラットツールが起動される度に全てのストラットが出現するように変形されても良い。或は、ストラットがポインタの上に直接重ねられたときにのみストラットは出現し、他のストラットはその時点では全く現れない。
【０２３４】
図４に示すように、ストラット４１２により結合された辺４１０及び４１１は互いに隣接し、対向しているが、辺が互いに隣接しているか、又は対向しているか、或はそのいずれでもないかに関わらず、別個のコンテナの任意の２つの平行な辺にストラットを適用することができる。
【０２３５】
図１１は、図６Ａ〜図６Ｃを参照して先に説明したコンテナの例の第３の規則を使用して図示された、コンテナ間のストラットを示す。第１のコンテナ１１０１は最小範囲フレーム１１０３と、最大範囲フレーム１１０５と、コンテンツフレーム１１０４とを有する。ストラット１１０６は、コンテンツフレーム１１０４の対応する辺に結合されている。最小範囲と最大範囲が等しくなるような第２のコンテナ１１０２が示されている。従って、コンテナ１１０２はこの構成では固定されたサイズを有する。ストラット１１０６はコンテナ１１０２全体に作用し、その結果、コンテナ１１０２は水平方向に押し出されるか又は引っ込められる。
【０２３６】
従って、第１のコンテナのコンテンツフレームのいずれかの辺と、第２のコンテナの最大範囲フレーム又はコンテンツフレームのうちのいずれかの平行な辺、又は平行なガイド、マージン又は他のオブジェクトとの間にストラットを作成できるであろう。
【０２３７】
１０．２  コンテナ間にストラットを作成する
図１０を参照すると、まずマウス１３３及びポインタ３１３を使用して、ツールバーエリア３０３のストラットツールボタン４０６をクリックすることによりストラットツールを起動することによって、新たなストラットを作成できる。次に、２つのコンテナをリンクするために２つの操作のうちの一方を実行できるであろう。第１に、第１のコンテナ１００１の内側にある任意のポイント１００３でマウス１３３を押して保持し、ポインタ３１３を第２のコンテナ１００２の内側にある任意のポイントで終わるようにドラッグし、そのポイントでマウス１３３から指を放すことにより、経路１００４をドラッグする。これは図１０ではポインタ３１３の位置により示されている。或は、図１０でポインタ３１３の位置により示されるように、まず、第１のコンテナ１００１の内側にある任意のポイント１００３でマウス１３３をクリックし（即ち，押して、放し）、次に第２のコンテナ１００２の内側の任意のポイントで２度目のクリックを実行することにより、コンテナ１００１及び１００２の間にストラットを形成しても良い。
【０２３８】
本実施の形態においては、上述のストラット作成プロセス、並びに結合すべき２つのコンテナを選択することによって、経路１００４の開始ポイント及び終了ポイントの、対応するコンテナの様々な辺に対する近接度に基づいてコンテナの結合される辺が選択される。例えば、開始ポイント１００３は第１のコンテナ１００１の左側の辺１００５より右側の辺１００６に近く、従って、右側の辺１００６が結合される。同様に、第２のコンテナ１００２の左側の辺１００７が結合される。
【０２３９】
別の実施の形態では、選択される辺は２つのコンテナについて平行な隣接する辺の中で最も近接している１対の辺、例えば、図１０に示すようなコンテナ１００１及び１００２の場合では、辺１００６及び１００７であっても良い。
【０２４０】
更に別の実施の形態においては、選択される辺は、ポインタ３１３が第１のコンテナの内側から外側へ移動するときにポインタの経路が最初に交わる辺と、ポインタ３１３が第２のコンテナの内側から外側へ移動するときにポインタの経路が最初に交わる辺であってもよい。
【０２４１】
ストラットの第１のポイント１００３が規定された後、ユーザが適切な第２の辺を選択するのを助けるために、ポインタが第２の辺になりうる辺に接近するように動くにつれて、その辺の線の種類を変えるか、又は辺の付近にアイコンを表示することにより、第２の辺になりうる辺を図式的に示しても良い。第１のポイントにより規定されたコンテナ以外のコンテナの平行な辺を含めて、有効なストラットを作成しうる辺のみが指示されるようにしても良い。
【０２４２】
更に、ストラットが非対称である場合、例えば、ストラットが何らかの理由により結合される辺の各々を異なる方法で処理すべき場合などには、上述のストラット作成プロセスはそのことを図式的に指示することができる。例えば、開始ポイント１００３は第１のコンテナ１００１の内側にあり、終了ポイントは第２のコンテナ１００２の内側にあるため、第１のコンテナの辺１００６はストラットの操作により辺１００７とは異なる方法で処理されることになり、ストラットはそのことを図式的に指示できるであろう。
【０２４３】
１０．３  ガイド間にストラットを作成する
ガイド間へのストラットの作成は、先に説明したコンテナの辺の間へのストラットの作成に類似している。ガイドはコンテナのような幅や高さを持たないため、可能なユーザインターフェースの数は少なくなる。別の方法によれば、ストラットツール４０６を選択し、次に、第１のガイドを選択し、指示デバイス（マウス）１３３によりドラッグして、そのようにして作成されたストラットを第２のガイドに付着させる。
【０２４４】
別の実施の形態では、２つのガイドを選択し、次に、それらのガイドの間に方向性を持たないストラットを作成するストラット作成ボタン（アイコン）を選択する。方向性を有するガイドは、別の実施の形態により、どちらが駆動する辺で、どちらが駆動される辺であるかを識別する方法としてガイドが選択された順序を考慮することによって、作成されても良い。
【０２４５】
１０．４  ガイドとコンテナとの間にストラットを作成する
１つの実施の形態では、コンテナの１つの辺の上へガイドをドラッグすることにより、通常はそのガイドと辺との間に「０」の距離を指定する距離制約が作成される。この距離制約はストラットにより表現されても良く、従って、（ガイド又はコンテナを構成している間に、或は編集中に）ガイドをドラッグするそのような方法で実際にストラットが作成されるであろう。
【０２４６】
コンテナの辺の間にストラットが作成されるときの方法に類似する方法（ツールを選択し、辺又はガイドをクリックし、ドラッグし、放す）により、ガイドとコンテナの辺との間にストラットを作成できることが望ましい。
【０２４７】
１０．５  マージンに至るストラットの作成
ページマージンとガイド又はコンテナの辺との間にも距離制約が存在することが望ましいであろう。この目的のためにストラットを使用することができる。実施の形態によっては、ガイドとコンテナの辺がページの縁部に対して位置を固定されており、それがストラットと同じ効果を有するために、ストラットが不必要である場合もある。所望のページマージンに対して固定されたガイドが作成された場合、他のガイド及びコンテナの辺をストラットを介してそれにリンクできるので、その場合にもページマージンとガイド又はコンテナの辺との間のストラットは不要である。従って、ストラットは、ページマージンをガイド又はコンテナの辺にリンク可能にする必要はない。
【０２４８】
別の実施の形態においては、ガイド及びコンテナの辺はページマージンに対して固定される能力を持たないであろう。この状況では、ページマージンに対する距離制約を表現するためにストラットを使用することが望ましいであろう。
【０２４９】
１０．６  ストラットとコンテナとのインタラクション（Interactions）
ストラットは、コンテナと数多くの方法でインタラクトする。ストラットの最も単純な動作は、文書の中でコンテンツがどこに配置されるかを判定する方法として、コンテナの辺及びガイドが位置決めされうる場所を制限することである。しかし、ストラットをコンテナに結合すると、そのコンテナを許可されている状態の集合の中に保持したままにするように、コンテナの状態、特にその辺状態も変更されるであろう。
【０２５０】
特定の実施の形態において、ストラットをコンテナへ取り付けるのを統制する規則は次の通りである。
【０２５１】
１．２つの固定辺の間にストラットが結合される場合、選択された辺同士は非固定になる。
【０２５２】
２．２つの固定辺の間にストラットが結合される場合、選択された第２の辺は非固定になり、ストラットの向きに対応する次元におけるコンテナの長さが固定されている場合、ストラットに対して垂直な２つの辺は非固定であり、その次元におけるコンテナの長さは固定されたままである。例えば、選択された第２の辺が、幅が固定のコンテナの縦方向の辺であれば、そのコンテナの２つの縦方向の辺は非固定であるので、そのコンテナは横方向には移動自在であるが、その幅は固定されたままである。
【０２５３】
３．ストラットに付着された２つのコンテナ辺及び／又はガイドが固定になると、そのストラットは除去される。
【０２５４】
４．固定されたコンテナ辺又はガイドがユーザにより移動されると、それに付随するストラットに結合された他方の辺又はガイドが不変のままとなるように、ストラットの長さ設定が変更される。
【０２５５】
１１．可変データ
ユーザインターフェース１０３により、ユーザはデータソースを可変文書テンプレートと関連付け、データソースをテンプレートとマージするときに有効文書を生成するためにテンプレートをデザインすることができる。マージングは、バックグラウンドにおいて対話形式で実行されるか、又はソフトウェアアプリケーション１２１のレイアウトエンジン１０５コンポーネントによりオンデマンドで実行される。
【０２５６】
データソースは可変文書テンプレートと対話形式で関連付けられ、レイアウトエンジン１０５は文書をマージし、ユーザがマージされた文書を対話形式でナビゲートする間にオンデマントで文書のページをレイアウトするのが好ましい。別の実施の形態は、マージングプロセスの間にインタラクティブユーザインターフェースを必要とせずにデータをテンプレートとマージし、そのマージされた文書を印刷しても良い。別の実施の形態は、バックグラウンドにおいてマージされた文書を生成しつつデータをテンプレートとマージし、マージされた文書のユーザによるナビゲーションに関して非同期的に現れるメッセージにより、マージングプロセス中の問題をユーザに警告しても良い。
【０２５７】
１１．１  データソースの選択
可変文書テンプレートをデータソースとマージするためには、適切なデータソースをテンプレートと関連付けることが必要である。そのような関連付けを実現するための１つの方法は、図１３に示すような、ユーザインターフェース１０３の一部を形成するデータソース選択ウィンドウを使用する方法である。
【０２５８】
図１３は、ＵＩアプリケーション１０３によりディスプレイ１４４に提示されるＧＵＩウィンドウ例を示す図である。これによりユーザは、データベース、ファイル、複数のデータベースの結合体、又は他の何らかの情報源であると考えられるデータソースを対話形式で選択できる。
【０２５９】
図１４は、図１３の画面でＸＭＬファイルが選択された例を示す図である。こうしてソースが選択されると、そのソースは、明示されて又は暗黙のうちに関連付けが解除されるまでテンプレートと関連付けられる。
【０２６０】
１１．２  データフィルタリング
特定のマージング動作に対して、データソースの中のデータの全てが有効であるとは限らないということも起こりうる。そのような事態が起こった場合、ユーザが使用されるべきデータの範囲を限定するために実行可能な方法は数多くある。１つの実施の形態では、アルゴリズミック（algorithmic）データフィルタリングにより、使用されるべきデータの種類と量を制限する。例えば、所望の地理的領域と関連するいくつかのレコードのみが文書の生成に使用されるように、ある範囲の郵便番号が選択されても良いであろう。そのようなアルゴリズミックフィルタリングは当該技術においては良く知られている。別の実施の形態では、データソースがテンプレートと関連付けられた後、ユーザインターフェースを介して、ユーザは使用されるべきデータを選択し、マーキングする。
【０２６１】
図１７は、メニューアイテムの選択を介して、データソースが可変文書テンプレートと関連付けられた後、ユーザインターフェース１０３のＧＵＩを介してユーザがデータフィルタリング動作にアクセスできる好ましい方法を示す。
【０２６２】
１１．３  データソーティング
フィルタリングに関連して、関連データを見出すためにデータ集積を１つのシーケンスに分類する能力がある。１つの実施の形態では、ユーザはデータソースのユーザが選択する「キー」変数に基づいて、ソースのレコードのソーティングを選択する。全てのレコードは、選択されたキー変数で、アルファベットの昇順に並べ替えられる。例えば、キーが変数「Name」であった場合、ソート動作が実行された後、名前が文字Ａで始まるレコードは名前が文字Ｂで始まるレコードより前に現れるであろう（英文テキストの場合）。適切なユーザインターフェースの一部が図１５に示されており、これはデータソースを選択するプロセスの一部としてソーティングが実行できることを示している。このソーティングは、データソースが関連付けられた後でも、図１７に示すようなメニュー選択により指定できる。
【０２６３】
別の実施の形態では、様々に異なる種類のデータに対して、数値又は言語特定方法などのユーザ選択可能なソーティング方法を実行できる。別の実施の形態は、選択されたキー変数に格納されている情報の種類に基づいてソーティング方法を自動的に選択するが、自動的に選択された方法の選択肢が不十分である場合、これはおそらくはオーバーライドメカニズムを伴うであろう。
【０２６４】
１１．４  レコードナビゲーション（Record Navigation）
データソースは、各々が関連情報の集積である複数のレコードを含む。例えば、データベースは顧客を記述したいくつかのレコードを含むか、又は製品のレコードを含むと考えられるであろう。データベース内のレコードを１つのシーケンスとして順序付け、ユーザによりそれをナビゲートできれば有用である。
【０２６５】
図１８は、データソースの変数及びデータソースをナビゲートするための方法を示すユーザインターフェースの一例を示す図である。好ましいナビゲーション方法は、図１８に符号１８０５で示すように、ポインタ３１３及びマウス１３３により起動できる１組のＧＵＩボタンを表示する。各々のボタンはレコードのシーケンスに沿って１つずつ前後に動くか、シーケンスの始まり又は終わりまで進むか、或は何らかのレコード数だけ進む。１つの方法は、ポインタ３１３／マウス１３３又はキーボード１３２により起動される、それらのオプション（図１７に示す）を示すメニューを更に含み、加えて、ユーザは特定の番号のレコードへナビゲートすることができる。
【０２６６】
特定のレコードへナビゲートしたならば、ソフトウェアアプリケーション１２１は、その現レコードを何らかの方法によりディスプレイ画面１４４に表示する。これは、そのレコードを可変文書テンプレートとマージし、シーケンス中の現レコードの索引を表示しても良いであろう。
【０２６７】
１１．５  変数
各データソースは、データソース内のレコードに適用される複数の名前付き変数から構成できる。例えば、顧客データソースは、顧客名及び顧客住所に関する変数を有しているであろう。レコードごとに値が異なるため、それらは変数であるが、変数の名前はあらゆるレコードに対して同じであっても良い。
【０２６８】
ユーザがデータソース内のレコードを検査し、可変文書テンプレートと関連付けられるべき変数を選択することができるように変数を表示する方法を有するのも有用である。
【０２６９】
変数を表示する好ましい方法は、図１８に示すように、自由浮動ウィンドウの中に名前及び現在値により縦に各変数を列挙する方法である。現在値は、現レコードを検査し、そのレコードに関するデータソース中の各変数値を求めることにより決定される。現レコードは、レコードナビゲーションを使用して先に概要を述べたように選択されても良い。尚、全ての値又は変数名が表示される必要はないことに注意されたい。ウィンドウの中に嵌め込むには情報が多すぎる場合に、ユーザが各々の変数又は値を見られるようにするためのナビゲーションメカニズムがあっても良い。別の実施の形態は、別のウィンドウの一部である（言い換えれば、サブウィンドウ）類似のディスプレイを使用しても良い。文書テンプレートと関連するデータソースが存在しなければ、図１６に示すように、ウィンドウは変数なしになるであろう。
【０２７０】
変数は数種類のデータを含んでいても良い。１つの変数はテキスト値を格納しているか、又は画像を格納している。以下の説明中、それらをそれぞれテキスト変数及びイメージ変数と呼ぶ。
【０２７１】
データソースの変数は１種類の値を有し、従って、１つの変数はテキスト又は画像のいずれかを表示し、双方を表示することはないであろう。別の実施の形態は、データソースの変数にレコードごとに異なる種類のデータを格納させる。例えば、１つのレコードでは、製品記述変数はテキスト記述を含み、同じデータソースの別のレコードでは、同じ変数がイメージ値を有することが起こりうるであろう。
【０２７２】
１１．６  テキスト変数（Text Variables）
テキスト変数は、データソースの各レコードの中でテキスト値を含む。アプリケーション１２１は、図１８のラベル１８０１により示すように、データソースの変数のリストの中の変数の名前の次に識別ラベルを配置することにより、変数がテキスト変数であることをユーザに報知する。別の実施の形態は、テキスト１８０２により示すように、変数の型を報知する方法として、変数の名前の付近に変数の値を表示しても良いであろうが、そのような方法単独では、状況によってイメージデータがテキストデータと同じように見えてしまうことも起こりうるため、あいまいさがないとは保証されない。アプリケーション１２１は、この技法を変数の型を識別する第１の方法としてではなく、単に変数のデータを示すための補助手段として使用する。
【０２７３】
１１．７  イメージ変数（Image Variables）
イメージ変数は、データソースの各レコードの中でイメージ値を含む。値は圧縮フォーマット又は伸張フォーマットのイメージデータであっても良く、或はファイル名又はイメージ資源の場所を規定するための他のアクセス方法であっても良い。アプリケーション１２１は、図１８のラベル１８０３で示すように、データソースの変数のリストの中の変数の名前の次に識別ラベルを配置することにより、変数がイメージ変数であることをユーザに報知する。別の方法は、テキスト１８０４で示すように、変数の名前の付近に変数の値を表示するが、（例えば）画像ファイル名がテキストデータと混同されることもありうるため、この方法が正確であるとは保証されない。
【０２７４】
１１．８  コンテナへのドラッグ・アンド・ドロップ
どのような変数が存在するかがユーザにわかるように、データソースの変数が見えている間にユーザに可変文書テンプレートを構成させるための方法を有するのは有用である。また、所定の変数から適切な型のコンテナを作成できると有用である。
【０２７５】
アプリケーション１２１は、ユーザインターフェース１０３を介して、ユーザにマウス１３３及びポインタ３１３を使用して変数リスト（図１９に示す）の変数を直接に操作させることにより、適切な型のコンテナを作成する。ユーザは１つの変数（例えば、１９０２と記されている矩形エリアのうちの１つ）を選択し、それをマウス１３３を使用してデザイン面までドラッグし、選択肢１９０６を解放する。これは、適切な型のコンテナがその変数によって作成され、初期設定されるべきであることを報知する手段として使用される。例えば、このようにしてデザイン面へドラッグされたテキスト変数（ラベル１９０１により示される）は、現レコードにおけるその変数の値（テキスト１９０３によっても示される）を表示するテキストコンテナを生成する。イメージ変数１９０４がデザイン面へドラッグされた場合には、ファイル名１９０５及び／又はユーザにより採用される設定に応じてスケーリング、クロッピング及び整列が行われた画像自体を表示するイメージコンテナが表示される。
【０２７６】
そのようにして生成されるテキストコンテナの初期状態は、ユーザが構成できるが、別の方法は、ユーザが選択肢を解放した場所をヒントとして使用して、コンテナをページに固着する。
【０２７７】
その場所はデザインウィンドウの外側又はページの外側（無効である場合）など、無効である場合もあると考えられるため、その場所をコンテナの厳密な場所として使用できず、その場所はヒントにはなり得るであろう。コンテナの中心がその場所に置かれても良く、又はコンテナの角の１つが場所に近接して位置決めされるか、或は完全にページの中に入るなどの他の制約に違反することなく、コンテナはその場所にできる限り近接して配置されても良く、又はコンテナは単純にデフォルト位置又は無作為の位置に配置され、場所が無視されても良い。マウスをドラッグした結果として新たに作成されたオブジェクトを位置決めする方法には、数多くの可能な実施の形態が存在する。
【０２７８】
更に、アプリケーション１２１は、そのようにしてデザイン面へドラッグされた変数に関して現レコードのコンテンツの全てを十分に格納できるサイズになるように、コンテナを作成する。従って、長文のテキストは大きなテキストコンテナを生成する。別の方法はドラッグされた変数のデータに対してメジアンサイズを事前に計算し、そのメジアンサイズを表示するのに十分なサイズのコンテナを生成しても良いであろう。他の方法はこの方法の変形を利用して、最大のレコードのデータ、又は最小のデータ、或は他の何らかのアルゴリズムを格納するのに十分なサイズのコンテナを作成する。
【０２７９】
別の方法によれば、変数をデザインスペースへドラッグし、次に、その変数の値を保持するコンテナについて矩形を描画する。更に別の方法は変数を選択し、次に、初めにドラッグ操作を実行することなく、そのコンテナに対して矩形を描画する。別の代替方法では、変数表現の上でマウスを２度クリックし、デザインの中で無作為に又はアルゴリズムに基づいて選択された場所に対応するコンテナを出現させる。
【０２８０】
別の実施の形態は、データソースがデザインと関連付けられたならば、直ちにデータソース中の全ての変数をデザインの中でコンテナとして出現させ、ユーザは、この後、それらのコンテナを必要に応じて位置決めするか又は削除する。このようにして作成されるコンテナの初期位置とサイズは、データソース中のデータの順序付けと、各変数におけるコンテンツの相対的サイズによって決まるであろう。そのような実施の形態においては、データソースを既存のデザインと関連付けても、特定の変数を表現するコンテナが既に存在する場合には、その変数に対するコンテナは作成されないであろう。この方法は同じ変数を表す複数のコンテナの作成を容易にしないため好ましくない。
【０２８１】
特定の実施の形態は、データソース変数と既に作成されていたコンテナとの連携をも支援する。これによりユーザは、まずデータソースを関連付ける必要なくデザインを作成することができる。そのような実施の形態は、融通性に富む作業の流れを支援するために、データソースの関連付け、コンテナの作成、及び変数とコンテナとの連携を更に実行しても良い。
【０２８２】
そのような方法により、既存のコンテナのコンテンツをマウス１３３とポインタ３１３の組み合わせを使用して実現されるドラッグ・アンド・ドロップメカニズムによって修正することもできる。その場合、コンテナへ変数をドラッグすることで、そのコンテナが表示する内容が再度割り当てられるか、又はコンテナが保持する内容が追加されることもある。例えば、静止テキスト「Dear」を含むコンテナが構成されており、そこで、「Last Name」と名づけられた変数がコンテナ内へドラッグされると、この結果、動作モード及びコンテナに対する設定に応じて、それらのデータの全てを表示するコンテナが得られるか、又は最後の変数の値のみを表示するコンテナが得られることになる。
【０２８３】
１１．９  複数の文書の表示及びナビゲーション
文書は、文書テンプレートをデータソースからのデータとマージしたことによる生成物であるので、１回のマージ操作の結果として多数の文書が生成されても良い。そのような文書をナビゲートし、表示できる方法は数多くある。
【０２８４】
１つの実施の形態は文書を表示し、ナビゲートするいくつかの方法を含み、データソースの各レコードがオンデマンドで文書テンプレートとマージされて、所定のマージされた文書に関して文書テンプレートの制約と、データの双方のビューを生成する「ライブプルーフィング（live proofing）」（以下に説明する）に依存している。そのような実施の形態の場合、ユーザ設定及び／又は生成される文書の性質に応じて、いくつかの可能なユーザインターフェースが存在する。それらのユーザインターフェースの概要は次の通りである。
【０２８５】
・各文書は、ワード処理文書又はスプレッドシートと同様に、縦方向及び／又は横方向に編成された１方向に流れる文書として表示され、スクローリングメカニズム、指示デバイス及び／又はキーボードによりナビゲートされる。図１８のボタン１８０５のように、データソースのレコードに沿ってナビゲートするために別個のメカニズムが使用されても良い。
【０２８６】
・各レコードはマージされると、多数のページを有する文書を生成できる。それらのページは縦方向及び／又は横方向に編成され、表示されれば良い。データソースのレコードに沿ってナビゲートするために、別個のメカニズムが使用されることが可能である。
【０２８７】
・文書テンプレートが各レコードとマージされたときに、ごくわずかのページしか生成しない場合、いくつかの文書が縦方向及び／又は横方向に表示されても良い。例えば、各文書が１ページ分の長さしかない場合には、全ての文書を１つの線形シーケンスとして配列し、ウィンドウイングシステムを使用してそれらを表示し、文書をナビゲートするためにスクローリングメカニズムを採用することが可能である。これは１つの文書内と、データソースのレコード間の双方で、ナビゲーションを空間ナビゲーションにマッピングする。
【０２８８】
・各文書が１つ或はそれ以上のページを有する場合、それらは横方向に編成され、その後、後続する各文書を先のレコードを表す文書の下方にレイアウトすることにより、データソースのレコードを網羅するために縦方向を使用し、それにより、１つの次元を使用して文書のスペースをナビゲートしても良い。横方向と縦方向の役割を入れ替えても、同様の効果が得られるであろう。
【０２８９】
上記の各々において、レコード間及びページ及び／又は文書の間をナビゲートするための、ボタン、メニューなどの他の方法も存在するであろう。
【０２９０】
別の実施の形態においては、文書テンプレートをマージされた文書とは別個に表示することができる。マージされた文書は「プリントプレビュー」でのみ生成され、そこから編集することは不可能であり、単純に１つのレコードをテンプレートとマージした結果を表示している。更に別の方法では、文書テンプレートと、非対話型プリントプレビューと、文書テンプレートの編集及びマージされた文書のプレビューの双方が可能であるライブプルーフィング（live proofing）のプレビューとを見ることができる。これらの作業モードの他の組み合わせも可能である。
【０２９１】
１１．１０  プルーフィング（Proofing）
可変データが使用される画面上ジョブ及び印刷ジョブにおいては、マージされている全範囲にわたるレコードを表すレコード、特に、可変データレコードの集合からの実際の極端なケースを効率良く見つけ出すことにより、著しい生産性の向上を得ることができる。こうしてユーザは、マージされた最終的な文書がどのように見えるかを理解できる。
【０２９２】
可変画像の様々に異なるサイズ及び可変テキストの様々に異なる長さにより、マージされた文書がどのように影響されるかを見るために、複数のレコードをプレビューし、プルーフ印刷することは有用である。印刷すべき最も有用なサンプルレコードは、
・レコードの大半がどのように印刷されるか；及び
・表示すべきコンテンツがほとんどないか又は大量にあるレコード
を含む。
【０２９３】
この原理のより複雑な拡張形態は、
・テキストが余りにも小さく縮小されたか又はその最小サイズに到達したとき；
・何らかの可変データテキストが表示されていないとき；
・画像が余りにも大きくスケールアップされた時（印刷品質が不十分になる）；及び
・画像の縦横比が余りにも大きくひずんだとき
を含む。
【０２９４】
可変データを取り扱う場合、文書のレコード又はバージョンの数は非常に多くなり、自動化プルーフィングメカニズムがなければ、ユーザは、マージされた文書の全ての見かけが受け入れられるものであることを検査するために、各レコードを手動操作で検討しなければならなくなるであろう。例えば、データベースのレコードの内のただ１つが好ましくない見かけをもたらすコンテンツを含むということは起こりうる事態であり、そのレコードを発見することは困難である。これは、レコードの数が非常に多い可変データジョブの場合に特に当てはまる。
【０２９５】
可変データ印刷ジョブをプレビューし、プルーフ印刷する効率の良い方法が開示される。これはどの文書の最終的な見かけも受け入れられるものであり、正しく印刷されることを保証する。画面上にプレビューされ且つ／又はプルーフ印刷されるために、最終的に印刷される他の全てのレコードを代表する限られた数のレコードが選択される。それらのレコードは、各レコードのマージ後の見かけを解析し、所定の１組の規則を使用して、文書の見かけに最も重大な影響を及ぼすレコードを判定することにより選択される。
【０２９６】
選択的プレビュー及びプルーフィングは、極端なケースを含めた出力結果のプロファイルを提供する。これによりユーザは、ジョブ全体を印刷したときに驚くことはない。最短の表示サイズ及び最長の表示サイズを有するレコードである極端なケースを示すことは有益であり、メジアン表示サイズ、最も極端なケース及びメジアンケースと最も極端なケースとの中間にあるいくつかのレコードを含む「代表的な」ケースの短いリストを含むように、経済的な方法を一般化することができる。
【０２９７】
１１．１１  ライブプルーフィング（Live Proofing）
ライブプルーフィングは、可変文書テンプレートとマージされた可変データを対話形式及びオンデマンドで表示するプロセスである。
【０２９８】
図２０は、可変文書テンプレートとマージされたデータソースコンテンツのライブプルーフィングのためのユーザインターフェースを示す図で、アイテム２０１０，２０１２，２０１４，２０１６，２０１８，２０２０を有するデータソースのレコードがテンプレートとマージされており、印刷した場合にそのレコードのどの部分を表示するためのバー（２００２）を含むグラフィカルユーザインターフェース２０００を示す。可変文書テンプレート内で定義されている制約を見えるようにするために余分の境界２００４及び色２００６が追加されているが、それらのアーティファクトは印刷されることを意図されてはいない。
【０２９９】
ライブプルーフィングでは、テンプレートのデザインにおける誤りがインタラクティブナビゲーションの場合より早く発見されると思われるため、ライブプルーフィングは別個のマージングプロセスより有利である。
【０３００】
アプリケーション１２１の特定の実施の形態は、ライブプルーフィングを使用している。別の実施の形態は、オプションとしてライブプルーフィングを使用しても良く、或はライブプルーフィングを全く使用しなくても良い。
【０３０１】
１１．１２  選択的プルーフィング（Selective Proofing）
選択的プルーフィングは、平均文書を典型的に表しているか、又は少なくとも平均文書に類似している可変データ印刷アプリケーション１２１の選択されたレコードのみを見る方法である。
【０３０２】
ユーザが選択的プルーフィングの間に、評価すべき多数の種類のアイテムを指定できると有用である。次に示す尺度は、個々のコンテナ、コンテナをリンクするストラット、ページ、データソースのレコード又はデータソースの変数に適用できるであろう。以下の選択的プルーフィングの説明の中では、これらのものをまとめて「デザインアイテム（design items）」と呼ぶ。「マージサイズ」は、データソースからのレコードが可変文書テンプレートとマージされた後のデザインアイテムのサイズ尺度を表す。様々なサイズ尺度については後に説明する。
【０３０３】
選択的プレビュー又は選択的プルーフィングが起動されると、ユーザによる対話形式でデザインアイテムが選択されるか、又は優先設定によりデザインアイテムが選択される。いずれのレコードも可変文書テンプレートと別個にマージされる。レコードごとに、選択されたデザインアイテムのマージサイズが記録（格納）される。それらのマージサイズを比較して、選択されたデザインアイテムのマージサイズが、
・最小であるようなレコード；
・集合のメジアン、平均又は他の何らかの中央尺度であるようなレコード；及び
・最大であるようなレコード
が見出される。
【０３０４】
最も関連性のあるレコードを発見するために、アプリケーション１２１は単に文字の数ではなく、各レコードの実際の表示サイズを検査する。例えば、「ｗ」は「ｉ」より多くのスペースをとり、コンテナのサイズ及び文書の全体的な見かけに、より大きな影響を及ぼすであろう。
【０３０５】
それらのレコードが識別されたならば、それらは画面上でのプレビュー及び／又は印刷のためにユーザに提示される。
【０３０６】
可変データ印刷ジョブにおける全てのレコードが正しく表示されるという信頼性を更に高めるために、ユーザはマージされた文書からの追加のレコードを更にプレビューするか又はプルーフ印刷することもできる。選択されたデザインアイテムに関して最も異なるマージサイズを有するレコードが、最初に又は最も目立ってユーザに対し提示されるようにデザインアイテムを１つのシーケンスとして順序付けるために、集合の中央からの偏移を使用するのが好ましい。
【０３０７】
１１．１２．１  最小コンテンツサイズ及び最大コンテンツサイズ
デザインアイテムのサイズの有用な尺度は、その最小又は最大の幅、高さ又はコンテンツ面積を考慮することである。個別のコンテナの場合、それらの尺度を計算するのは簡単である。コンテナをリンクするストラットの場合には、幅と高さの双方ではなく、いずれか一方が重要であり、従って、面積は重要な尺度ではない。個別のページの場合、コンテナの幅の和、又はコンテナの高さの和、又はコンテナの面積の和を使用しても良い。レコードの場合には、そのレコードを表示するために必要とされる全てのページにおけるそれらの尺度の和を使用しても良い。変数の場合、その変数の値を全体として、又は一部で表示する全てのコンテナを使用しても良い。それらの尺度を選択し、合計するための他の方法も使用できる。
【０３０８】
１１．１２．２  典型的サイズ（Typical Size）
コンテンツのサイズのもう１つの有用な尺度は、所定のデザインアイテムに対して典型的サイズを考慮することである。典型的サイズは、平均幅又は平均高さ、或は平均面積、又は面積の和の平均、又は幅及び高さの二乗の和の平均、或は他の可能性であれば良い。別の尺度は上記の各々について平均ではなく、メジアンを使用する。他の統計的方式を使用しても差し支えない。
【０３０９】
特定のデザインアイテムの典型的インスタンスを位置付けるために、これらの尺度のいずれか又は全てを使用しても良い。例えば、平均面積に最も近い面積を有する特定のコンテナに対して、レコードの場所が位置付けられても良い。
【０３１０】
１１．１２．３  ホワイトスペースサイズ（White-space Size）
ホワイトスペースサイズは、デザインアイテムがどれほど典型的にマージ文書の集合の中に入っているかを表すもう１つの有用な尺度である。ホワイトスペースは多くの方法により定義できる。例えば、コンテナが最小サイズを有し、コンテンツがそのサイズを満たさないような場合に、ホワイトスペースは、コンテナの制約により規定されるようなコンテナの面積と、特定のレコードとマージされたときのそのコンテナの中のコンテンツの面積との面積差として定義されても良い。或は、ホワイトスペースは、幅又は高さなどの一次元のみにおけるコンテナのサイズとそのコンテナのコンテンツのサイズとの差として定義されても良い。
【０３１１】
ホワイトスペースを最大にすることは、コンテンツサイズを最小にすることに類似しているが、それと同じではなく、逆に、ホワイトスペースを最小にすることは、コンテンツサイズを最大にすることに類似しているが、それと同じではない。最小寸法などのコンテナ制約が計算の上である役割を果たすために、それらは同じではないのである。例えば、最大のコンテンツを有するレコードを発見することは、最小のホワイトスペース面積を有するレコードを発見することと必ずしも同じではない。
【０３１２】
１１．１２．４  最も異なるサイズ（Most Different Size）
可変データ印刷において特に関心を持たれるのは、異常な文書の場所を規定することである。このために、異常度の尺度が要求される。そのような尺度は多くの方法により定義できるであろう。そのような尺度の一例は、あるデザインアイテムに関してメジアンサイズからの最大偏差を計算することである。サイズは幅、高さ、面積、幅と高さの和、幅と高さの二乗の和などの何らかの尺度に関して定義される。このメジアンサイズは、データソースのレコードごとに問題となる各デザインアイテムを検査し、そのアイテムのサイズを求め、そのようにして判定された全てのサイズのメジアンを求めることにより計算できる。次に、各デザインアイテムのサイズとメジアンサイズとの最大の差を計算し、それにより、最大偏差を有するデザインアイテムを求めることができる。
【０３１３】
図２１Ａ及び図２１Ｂは、各文書ごとのコンテナの幅及び高さを使用して、平均文書及び最も異なる文書を計算する方法２１００を説明するフローチャートである。この方法２１００は、アプリケーション１２１のサブモジュールとして実行されても良い。
【０３１４】
この処理はステップ２１０１で始まる。まず２１０２で、第１のレコードから始めて文書中の各コンテナの位置及び寸法を計算し、ステップ２１０３，２１０４及び２１０５により形成されるプロセスループを使用しながら、データソースの全てのレコードを通して繰り返される。ステップ２１０６では、全ての文書について幅と高さを加算し、次に、それを文書の数で除算することにより、文書テンプレートにおける各コンテナの平均幅及び平均高さを計算する。こうして文書テンプレートのコンテナごとの幅と高さの平均値が求められるとステップ２１０７で、第１のレコードから始めて、ステップ２１０８，２１１３及び２１１６により形成されるループを経て全てのレコードを通して繰り返される。ステップ２１０８，２１１１及び２１１５により規定される別のループにより定義されて、文書中のコンテナごとに、ステップ２１０９でコンテナの幅と平均幅との差を計算し、ステップ２１１０でコンテナの高さと平均高さとの差を計算する。ステップ２１１０はそれらの値の各々を二乗し、それらを合計して、文書に対応する数値を出す。結果を二乗することは、値が平均値より離れていればいるほど、それらの値がより大きく強調されるということを意味する。
【０３１５】
上記の数値が計算されたならば、所定のコンテナ又は所定の文書に関して、そのコンテナが平均サイズにどれほど近いかを知ることが可能になる。コンテナが最低の値を有していれば、そのコンテナは平均に最も近い。逆に、コンテナが最高の値を有していれば、そのコンテナは平均から最も離れている。
【０３１６】
ユーザが最も平均的な文書又は最も平均から外れた文書を知りたい場合には、各文書についてコンテナごとの値がステップ２１１２で合計される。このようにして形成されたリストはステップ２１１４で分類され、そこで方法２１００は終了する。
【０３１７】
最低の値を有する文書は、そのコンテナの各々を平均した文書に最も近い。最高の値を有する文書は、平均した文書に最も似ていない。そこでユーザの要求に応じて、それらの文書のうち幾つの文書が、５つの最悪文書、又は１０の最悪文書であるかのように、ユーザに示すことができるであろう。
【０３１８】
他の方法では、コンテナの幅及び高さとは異なる特性に対して上記の計算を実行する。有用であると思われる他の特性には、コンテンツのサイズ、フォントサイズ（フォントが拡張、収縮するコンテナの場合）、文書のホワイトスペースの面積、ストラットの長さ又はコンテナ辺の位置等がある。
【０３１９】
１１．１３  プレフライトチェック（Pre-Flight Check）
先に説明した種類のサイズ尺度は、典型的なデザインアイテム、非典型的デザインアイテム又は問題を含むデザインアイテムを発見するために使用されても良い。「プレフライトチェック」は、ハードコピー印刷のためのジョブを開始する前に、マージされた文書の問題点又は他の特徴を発見しようとする自動化印刷前プロセスを記述するために可変データ印刷の分野で使用される用語である。
【０３２０】
このチェックは、全てのレコードが許容しうる程度に印刷され、余分なことを何も実行しないことを判定するほど単純なものであり、問題がなかったことを報告するか、又は何らかの方法により問題のあるレコードに注意を向ける。
【０３２１】
プレフライトチェックはユーザの要求に応じて実行され、検査で問題が発見されなかったか、又は問題が発見されたかに関してユーザに警告するのが好ましい。問題が発見されたならば、現れた第１の問題を、その問題の性質の何らかの視覚的方法及びテキストに基づく方法による説明と共にユーザに対し表示することができる。
【０３２２】
別の実施の形態は、全ての問題点を発見し、調査のためにそれらをユーザに対し列挙することができる。この検査は、ユーザが可変文書テンプレートを編集している間にバックグラウンドで実行され、絶えず更新している問題のリストをウィンドウ又はサブウィンドウに提示するようにしても良い。リストが空であれば、問題が発見されなかったことを示すエントリがそれと置き換えられても良い。このバックグラウンド検査は、ソフトウェアがアイドル状態にあるときにのみ実行されても良く、絶えず実行されても良く、或は他のいくつかの時点又は状況の組み合わせに対して実行されても良い。
【０３２３】
１２．レイアウト方法の概要
この開示の１つの態様は、ページ上にアイテムをレイアウトする方法である。このレイアウトは、レイアウトされるべきアイテムの集積と、そのレイアウトの中でアイテムがどこに配置されるべきかを定義する規則又は制約の集合とを含む。いくつかのレイアウト方法が説明される。それらは次のものを含む。
【０３２４】
１．レイアウトを定義するためのモデル。レイアウトモデルはレイアウトの中に出現できるアイテムの型及び特性と、それらのアイテムがいかにしてレイアウトされるべきかを定義するための許可された規則又は制約とを定義する。コンピュータ１０１のワーキングメモリにレイアウトを格納するためにデータ構造が使用されても良い。以下に、いくつかのレイアウトモデルを詳細に説明する。
【０３２５】
２．レイアウトを作成し、編集する手段。これは、レイアウトを作成するために使用できる処理の集合を含む。それらの処理は、レイアウトモデルに従ってデータ構造を構築するために呼び出されることが可能であるソフトウェア機能として実現されても良い。これらについては以下に詳細に説明する。
【０３２６】
３．レイアウト中のアイテムの位置及び寸法を計算する手段。アイテム及び規則の集合により定義されるレイアウトが与えられると、このレイアウト計算方法は規則に従ってアイテムをいかにレイアウトすべきかを指定する。この方法はコンピュータ１０１で実行されるソフトウェア１０５により形成されても良い。レイアウトを計算する手段については以下に詳細に説明する。
【０３２７】
特定のレイアウトモデルに従ってレイアウトを作成し、編集する手段、及びそのレイアウトモデルに関してアイテムの位置を計算する方法は、先に述べたレイアウトエンジン１０５であるソフトウェアコンポーネントとして一体に実現される。尚、レイアウトエンジン１０５は、ユーザインターフェース１０３を含まないことに注意されたい。先に図１Ａを参照して説明したように、レイアウトエンジン１０５と共に、数多くの異なるユーザインターフェースを使用できるであろう。
【０３２８】
１３．レイアウトモデルの概要
レイアウトモデルは、基本レイアウトモデルと、基本モデルのいくつかの拡張とを含む。この基本レイアウトモデルは、レイアウトアイテムの基本特性と、レイアウトを定義するために使用できる規則とを定義する。基本レイアウトモデルを拡張するために使用されるいくつかの追加規則も定義される。レイアウト方法が単純になるため、規則の何らかの組み合わせを使用すると好都合である。レイアウト方法のユーザの理解が簡単である他の組み合わせも好都合である。
【０３２９】
基本レイアウトモデルと追加規則については以下に説明する。規則の特定の組み合わせを含むいくつかの実施の形態を説明する。
【０３３０】
１４．レイアウトの作成及び編集の概要
レイアウトは、通常、文書における１つのページの一部と関連している。作成及び編集の作業は、最初は空レイアウトとして作成されるレイアウトを操作すると想定され、ユーザインターフェースソフトウェア１０３により呼び出される機能である。作業は、データを文書テンプレートと組み合わせることにより文書を生成している間に、ユーザによる直接入力なしにサーバソフトウェアにより実行されても良い。
【０３３１】
レイアウトを作成又は編集するために使用される操作は、ソフトウェアのユーザにより実行される操作に直接対応していないのが好ましい。ユーザによる単一のアクションは、通常、ユーザインターフェースソフトウェア１０３により、又は好ましくはレイアウトエンジン１０５により直接支援される操作よりも高いレベルのインターフェースをレイアウトエンジン１０５に提供するソフトウェアの別のレイヤにより、複数のレイアウト作成動作に変換される。
【０３３２】
レイアウトを作成し、編集する手段は、少なくとも、
１．アイテムを追加するための動作；
２．アイテムを除去するための動作；
３．規則を追加するための動作；及び
４．規則を除去するための動作
を含む。
【０３３３】
アイテム又は規則を修正するための他の動作が追加されても良い。編集動作の厳密な形態は、使用される特定のレイアウトモデルによって決まる。数多くの異なる形態が実施可能である。それらの動作については以下に詳細に説明する。
【０３３４】
レイアウトにアイテム及び規則を追加するとき、全ての規則を満足できるアイテムの配置は取り得ないという意味で、矛盾している規則の組み合わせを追加することは容易である。そのようなレイアウトを過剰制約付き（over-constrained）という。逆に、所定の規則の組み合わせが数多くの可能解を許すこともあり得る。例えば、全ての規則を満足するアイテムの配置が数多く取り得る場合が考えられる。そのようなレイアウトを制約不足（under-constrained）という。どのレイアウトも、確実に、厳密に１つの解を有するのが望ましい。従って、レイアウトを作成するために使用される動作に加えて、アプリケーション１２１は厳密に１つの解が存在することを保証する手段を更に含む。これはレイアウト作成手段及びレイアウトを計算する手段に組み込まれている。
【０３３５】
ユーザが解を持たないレイアウト又は２つ以上の解を有するレイアウトを作成することを防止するのが望ましいため、編集動作と関連して、一貫性及び一意性の検査が実行されても良い。そのような検査は、編集動作が終了するたびに、その動作が有効であるか否かを試験するために実行される。有効でなければ、変更は許可されず、直ちにユーザに対して適切なフィードバックが与えられる。
【０３３６】
一貫性及び／又は一意性の検査は、編集動作の一部として組み込まれていても良い。或は、レイアウト計算により、レイアウト作成動作及び編集動作を使用して作成される各取り得るレイアウトごとに、単一の十分に定義された解が計算されることが保証される。
【０３３７】
レイアウト解の存在及び一意性を保証する手段については以下に詳細に説明する。
【０３３８】
１５．レイアウト計算の概要
レイアウトモデルごとに、レイアウトアイテムの位置及び寸法を計算する、対応する方法が存在する。それらの位置及び寸法は、問題に対して好都合である何らかの２次元座標系において定義されれば良い。
【０３３９】
レイアウトアイテムの位置及び寸法を計算するためにいくつかの方法を使用できるであろう。それらは、
１．ツリートラバーサル（tree traversal）方法；
２．シンプレックス（simplex）方法；
３．２次目標関数を伴う変形シンプレックス方法；及び
４．グラフ利用レイアウト（graph based layout）
を含む。
【０３４０】
ツリートラバーサル方法は、基本レイアウトモデルとほぼ同様の限定レイアウトモデルに適用される。基本モデルの様々な拡張には、その他の方法が適用される。方法２，３及び４は様々な最適化問題を解くことと同等である。
【０３４１】
最適化問題は制約の集合と、最小化又は最大化されなければならない目標関数とから構成されている。アプリケーション１２１においては、レイアウトを定義する規則のうちのいくつかが制約を表現し、規則のうちのいくつかは目標関数を定義するために使用される。
【０３４２】
シンプレックス方法は、特定のクラスの最適化問題を解くための周知の方法である。このシンプレックス方法は、この開示の一部として説明されるレイアウトモデルの一部と共に使用されるのに適している。
【０３４３】
シンプレックス方法は１次目標関数のみを支援するが、レイアウトが一意の解を有することを保証するためには、厳密に凸関数（convex function）を有することが望ましい。線形制約及び２次目標関数により最適化問題を解くための技法は良く知られているため、通常は２次目標関数が使用される。それらの中で最も単純なのがシンプレックスアルゴリズムの変形である。それらの方法は最適化問題を解く技術においてよく知られており、それらの内のどの方法を使用しても、この開示の範囲から逸脱することにはならないであろう。
【０３４４】
１６．レイアウトモデルの詳細な説明
１６．１  基本レイアウトモデル
アプリケーション１２１の一態様は、アイテムの集積をレイアウトする方法を含む。通常、アイテムは、規則又は制約の集合に従って矩形のスペースの中にレイアウトされる。  図２２は、アイテム及び制約の集合の一例を示す図である。
【０３４５】
基本レイアウトモデルは、そのようなレイアウトを定義するために記述される。基本レイアウトモデルは、レイアウトの基本構造と、レイアウトの可変性の限界とを定義するために使用される。例えば、基本レイアウトモデルはレイアウトアイテム間の基本的関係を定義し、アイテムの最小サイズ及び最大サイズを設定し、アイテムの位置に対する制限を設定するために使用される。基本レイアウトモデルの拡張は、レイアウトを更に精密に調整するために使用される。基本レイアウトモデルが有している利点は次の通りである。
【０３４６】
１．固定オブジェクト及び可動オブジェクトなどの物理的相似に関してレイアウトデザイナーが容易に理解できる；
２．グラフィカルユーザインターフェースを介して容易に表現、操作できる；
３．十分に定義された動作の集合を試用して操作されることが可能であるソフトウェアの単純表現を有する。
【０３４７】
基本レイアウトモデルにおいては、図２２に示すように、レイアウトはボックスと呼ばれる１つ或はそれ以上の矩形のレイアウトアイテム２２０１と、横方向の辺２２１５及び縦方向の辺２２１６により定義され、内側にボックスが配置されるべきレイアウト矩形と、０個或はそれ以上の規則（rules）２２０７，２２１１とを含む。
【０３４８】
基本レイアウトモデルのアプリケーションの中には、レイアウト矩形が無いものもあるが、典型的には、アイテムがレイアウトされる矩形スペースは、文書のページ、或はページの一部を表しており、各アイテムは、グラフィックイメージ或はテキストボックスを表している。
【０３４９】
レイアウトにおける各ボックスのサイズと場所は、その境界を規定する矩形の４つの辺の位置により定義される。サイズと場所は、通常はミリメートルのような絶対測定単位と関連しているレイアウト単位で指定されても良い。規則（rules）２２０７，２２０９，２２１１及び２２１３は、アイテム又はレイアウト矩形の辺の間の関係を定義する。規則は、規則２２１１，２２１３のように、同じアイテムの対向する辺の関係を定義しても良いし、規則２２０９のように１つのアイテムの辺と、別のアイテムの辺との関係を定義しても良いし、或は規則２２０７のようにアイテムの辺とレイアウト矩形の辺との関係を定義しても良いし、又は規則２２１７のように、レイアウト矩形の対向する辺同士の関係を定義しても良い。この説明において、辺はアイテム又はオブジェクトの左、右、上又は下を意味すると定義されている。
【０３５０】
基本レイアウトモデルでは、各ボックスの辺は「整列マーク」又は単に「マーク」と呼ばれる抽象レイアウトアイテムと関連付けられる。レイアウトエリアの辺もマークと関連付けられる。従って、基本レイアウトモデルは２種類のレイアウトアイテム、即ち、ボックスとマークとを支援する。
【０３５１】
「整列マーク」という用語は、互いに重ね合わせて印刷されるべき複数の画像を整列させるために、プリンタにより使用される位置合わせマークを抽象化、一般化したものである。この整列マークには、水平（横）と垂直（縦）の２種類がある。水平マークは、ページ又はレイアウトにおける縦方向の位置を表現し、不定又は無限の長さの水平線であると考えられても良い。垂直マークは、ページにおける水平方向の位置を表現し、概念上は不定又は無限の長さの垂直線である。
【０３５２】
整列マークは一般に、印刷されることを意図されておらず、単にボックス間の位置決め及び関係を定義するために存在している。この整列マークはユーザインターフェースにより様々な方法により表示されても良い（又は全く表示されなくても良い）。
【０３５３】
レイアウトは２次元座標系と関連付けられる。選択された座標系における各マークの位置又は座標を判定するのは、レイアウトエンジン１０５のジョブである。垂直マークは横方向の座標を有し、水平マークは縦方向の座標を有する。座標系は、１つの指定された垂直マークと、１つの指定された水平マークとに座標を割り当てることにより指定されるのが好ましい。他の全てのマークの座標は、指定マークに対するそれらのマークのオフセットにより決定される。レイアウトが一定のサイズである場合、座標系を指定するために使用されるマークは、通常、レイアウト矩形の２つの辺である。
【０３５４】
ボックスは、通常、何らかのテキスト又は図形と関連付けられる矩形エリアである。ボックスは、レイアウトを計算するときに、コンテナを表現するために使用されても良い。各ボックスは、そのボックスの辺を定義する４つのマークと関連付けられる。ボックスは本質的には４つのマークの関係である。基本レイアウトモデルの拡張においては、追加マークがボックスと関連付けられても良い。基本レイアウトモデルでは、ボックスの位置及び寸法を決定するために使用されるレイアウト規則は、それらのボックスの辺と関連付けられるマークに関して完全に記述されるが、モデルの拡張においては、追加規則がボックスと関連付けられる。
【０３５５】
ボックス及びマークは、文書に現れるオブジェクトの形状及び位置に直接には対応しない形状及び位置を表現するためにも使用される。例えば、ボックスは、レイアウトエンジン１０５により計算されたサイズとは異なることもあるアイテムの理想寸法を表現するためにも使用される。マークは他のアイテムの配置に対する制限を定義するために使用されても良い。例えば、マークはページマージンを表す位置に配置されても良く、レイアウトエンジン１０５がページマージンの外側にアイテムを配置しないことを保証するために規則が追加されても良い。
【０３５６】
基本モデルでは、各規則は縦オフセット２２０９又は横オフセット２２１３を表現し、指定サイズ２２０７又は未知の負ではないサイズ（破線により示す）２２１３のいずれかを有していれば良い。固定オフセット規則は、レイアウト中の２つのマークの間の縦又は横方向のオフセットのサイズ及び方向を指定する。未知オフセット制約は、２つのマークの間のオフセットの方向のみを指定する。例えば、オフセット２２１１は、ボックス２２１９の辺２２２１が常に同じボックスの辺２２２３の上方に位置していなければならないことを指示する。未知オフセット制約のサイズは、レイアウト方法により計算される必要がある値を表す。
【０３５７】
従って、基本モデルには、固定オフセット規則及び非負オフセット規則という２種類の規則がある。どの型のオフセット規則も、１対のマークの相対位置に対する制約を定義する。
【０３５８】
固定オフセット規則は、第１のマークの位置と第２のマークの位置との間のオフセットが指定値を有していなければならないことを指示する。例えば、マークｍ及びｎが与えられた場合、固定オフセット規則は式
pos(n)−pos(m)＝d
により定義されるfixed（m, n, d）により表される制約である。式中、ｄは非負数である。ストラット４１２は、レイアウトエンジン１０５において固定オフセット規則として表現される。また、コンテナが固定幅を有する場合、これは、コンテナの左右の辺を表現するマークに関連する固定オフセット制約を追加することにより、レイアウトエンジン１０５に対して指示される。同様に、コンテナが固定高さを有する場合、これは、レイアウトエンジン１０５において、コンテナの上下の辺を表現するマークの間の固定オフセット制約により表される。
【０３５９】
距離ｄは、一方のマークから他方のマークへのオフセットを表し、ｐｏｓ（ｕ）はマークｕの位置を表す。水平マークの位置はレイアウト座標系の原点から、そのマークまでの縦方向の距離である。垂直マークの位置は、レイアウト座標系の原点からマークまでの横方向の距離である。レイアウトを定義するのに好都合であるどのような座標系が使用されても良い。固定オフセット規則では、２つのマークは同じ向きでなければならない。この点に関して、マークは共に水平マークでなければならないか、又は共に垂直マークでなければならない。
【０３６０】
尚、この説明で使用される意味での用語「固定」は、レイアウト計算方法に対する入力であり、レイアウトエンジン１０５により変更されることができない値を表すことに注意されたい。
【０３６１】
非負オフセット規則は、２つのマークの間のオフセットが負ではないことを指定する制約である。マークｍとマークｎとの間の非負規則は、non-negative(m, n)により表される制約であり、不等式
pos(n)  ≧  pos(m)
により定義される。非負オフセット規則では、２つのマークは同じ向きでなければならない。例えば、マークは共に水平マークでなければならないか、又は共に垂直マークでなければならない。
【０３６２】
基本レイアウトモデルにおいては、水平規則は垂直制約からは独立しており、そのため、レイアウトを計算する問題は２つの別個の問題に分割できる。図２３は、図２２に示すレイアウトに対応する垂直オフセットのみを示している。この実施の形態では、距離は論理単位で指定されている。図２３において、固定オフセット規則は、論理単位によるオフセットのサイズによってラベル付けされている。この場合、単純にするため、各論理単位は１ｍｍに対応している。論理単位はアプリケーションに都合の良いどのようなサイズであっても良いが、通常、１論理単位は独立してアドレッシング可能な最小のプリンタドットより小さいであろう。図２３に示す垂直オフセット規則は、図２４に示すような有向グラフの形で表現されても良い。図２４において、各頂点２４０１は水平マークを表し、各矢印２４０３は規則を表す。固定オフセット規則（例えば、２４０２）は実線で示され、非負オフセット規則（例えば、２４０５）は破線で示されている。図２４では、例えば、ルートノード２４０４と末端ノード２４０６との間の矢印２４０２は、図２３からの固定オフセット規則２２１７を表し、図２２のレイアウト矩形の高さを定義している。更に、非負オフセット規則は、固定オフセット規則により確定される境界の中で可変である。例えば、ｈ１の値が増加すると、共にｈ１の末端ノード２４０８から下がって来るｈ２の値及びｈ３の値も対応して増加する。
【０３６３】
通常、レイアウトエリアのサイズは固定されている。これは、レイアウトエリアの対向する辺と関連するマークを固定オフセット規則によって結合することにより指定される。アプリケーションによっては、レイアウトエンジン１０５がレイアウトエリアの辺と、レイアウト中のアイテムとの関係に基づいて、レイアウト矩形のサイズを計算することにも意味がある。通常、印刷可能なアイテムを表現するボックスがレイアウトエリアの中に入るように制約されることを保証するためにレイアウトに規則が追加されるが、実施の形態によっては、これが適用されない場合もあり、レイアウトエリア矩形が要求されない場合もある。基本レイアウトモデルのいくつかのアプリケーションにおいては、レイアウト矩形は欠落していてもよい。
【０３６４】
１６．２  基本レイアウトモデルの代替表現
別の実施の形態では、基本レイアウトモデルは先に説明した方法とは異なるが、それと等価の方法で表現される。この場合、基本レイアウトモデルはただ１つの種類の規則、即ち、最小オフセット規則を使用して表現される。
【０３６５】
最小オフセット規則は、第１のマークと第２のマークとの間の最小許容オフセットを指定する。マークｍとマークｎとの間の最小オフセット規則は、min(m, n, d)により表され、不等式
pos(n)−pos(m)  ≧  d
により定義される。式中、ｄは最小許容オフセットを表す数である。この表現においては、数ｄは正、負又は０のいずれであっても良く、最小オフセット規則により関連付けられる２つのマークは同じ向きでなければならない（即ち、共に水平マークであるか、又は共に垂直マークである）。
【０３６６】
別の等価の実施の形態では、最小オフセット規則の代わりに最大オフセット規則が使用されても良い。max(m, n, d)により表される最大オフセット規則は不等式
pos(n)−pos(m)  ≦  d
により定義される。式中、ｄは最大許容オフセットを表す数である。
【０３６７】
これら２種類の規則のうちの一方のみが要求されることを理解するために、等式
max(m, n, d) ≡ min(m, n, -d)
があるために、どの最大オフセット規則も等価の最小オフセット規則と置き換えできることに注意する。
【０３６８】
基本レイアウトモデルの代替表現は初めに説明した表現と等価であることを理解するために、等式
nonnegative(m, n) ≡ min(m, n, 0)
からわかるように、どの非負オフセット規則も最小オフセット規則の特殊ケースであり、等式
fixed(m, n, d) ≡ min(m, n, d)及びmax(m, n, d)
≡ min(m, n, d)及びmin(m, n,-d)
からわかるように、どの固定オフセット規則も２つの最小オフセット規則と等価であることに注意されたい。
【０３６９】
逆に、どの最小オフセット規則も、特別なマークt、固定オフセット規則及び非負オフセットを使用して、等式
ｄ≧０であれば、min(m, n, d) ≡ fixed(m, n, d)及びnonnegative(t, n)
ｄ＜０であれば、             ≡ fixed(t, m, -d)及びnonnegative(n, t)
により示されるように表現されることが可能である。式中、ｔはｍに対してｎの許可位置の限界をマーキングするために使用される特別なマークである。ｄ＝０である特別なケースにおいては、ｔはｍと置き換えられても良く、固定オフセット規則は冗長である。
【０３７０】
従って、最小オフセット、最大オフセット、固定オフセット及び非負オフセットを指定することを可能にする数多くの同値の表現がある。最小オフセット規則は、レイアウトを表現するために使用されるデータ構造及びそのデータ構造を操作するためのソフトウェアを簡略化するので、これらの全ての種類の規則を表現するために使用できるであろう。
【０３７１】
基本レイアウトモデルに準拠したレイアウトを表現するために有向グラフを使用することも好ましく、その場合、各グラフの頂点は１つのマークに対応し、グラフの各辺は辺のソース頂点により表されるマークから辺の目的頂点により表されるマークまでの最小許容オフセットを表す数でラベル付けされている。従って、与えられるどのレイアウトに対しても、レイアウト中の各々のマークがグラフの対応する頂点により表され、各最小オフセット規則が対応する有向辺により表されるようなグラフ表現を生成できるであろう。基本レイアウトモデルでは、各ボックスはその辺に対応するマークにより完全に記述されるため、表現においてはボックスは無視されても良い。
【０３７２】
コンピュータのメモリにおいてグラフを表現する方法は数多く存在し、適切などの表現を使用しても差し支えない。一般に、表示及び編集を目的とする場合には、アイテム及び制約から構成されるレイアウトをグラフ表現以外の形態で格納するのが好都合であり、そのため、通常、インタラクティブアプリケーションにおいて、レイアウトは必ずしもグラフの形態で直接に表現されるとは限らない。グラフ表現は、グラフの辺及び頂点を必要に応じて数及び他の情報でラベル付けする手段を含んでいても良い。
【０３７３】
図３３Ａから図３３Ｃは、固定オフセット規則及び非負オフセット規則のみを使用した場合、及び最小オフセット規則のみを使用した場合に、コンテナの最小高さ及び最大高さをどのように表現できるかを示す図である。図３３Ａでは、４０単位の最小許容高さと、１００単位の最大高さを有するコンテナ３３００が示されている。コンテナ３３００はレイアウトエンジン１０５において、マーク３３０１と関連付けられた上辺及びマーク３３０３と関連付けられた下辺を有するボックスにより表現されている。図３３Ｂの有向グラフは、４つの頂点３３０５，３３０７，３３０９及び３３１１を有する。頂点３３０５はマーク３３０１を表し、頂点３３０７はマーク３３０３を表す。他の２つの頂点３３０９及び３３１１は、マーク３３０１に対してマーク３３０３に許可される移動の範囲を定義する特別のマークを表す。それらのマークの位置は、グラフ中の実線の辺３３１７により表される固定オフセット規則を使用して、マーク３３０１に対して固定されている。グラフ中の破線の辺３３１９により表される２つの非負オフセット規則は、マーク３３０３の位置を２つの特別のマーク３３１１及び３３０９の間にあるように制約するために使用される。図３３Ｃの第２の有向グラフは２つの頂点３３１３及び３３１５のみを使用して同じ制約を表すが、頂点３３１３はマーク３３０１を表し、頂点３３１５はマーク３３０３を表す。２つの辺３３１９は、最小オフセット規則を表すために使用される。頂点３３１３から頂点３３１５への辺は、最小値４０を有する最小オフセット規則を表す。頂点３３１５から頂点３３１３への辺は、（最小オフセット−１００）を有する最小オフセット規則を表す。これは１００の最大値を有する頂点３３１３から３３１５への最大オフセット規則と等価である。
【０３７４】
１６．３  形状規則
可変データ印刷アプリケーションにおいて、ボックスの幅と高さの関係を定義することが可能であるのが好都合である。基本レイアウトモデルでは、これを実行する方法はない。
【０３７５】
例えば、ボックスはレイアウトに挿入されるべき画像に対応し、画像のサイズは利用可能スペースにはめ込まれるように調整される必要があると考えて良いであろう。そのような場合、ボックスの縦横比を指定し、レイアウトエンジン１０５にレイアウト中の他のアイテムのサイズに基づいてボックスの最良のサイズを判定させることが可能であることが望ましい。別の例として、ボックスは高さと幅が指定されていないテキストのブロックの境界規定ボックスに対応していても良く、従って、高さと幅は共にレイアウトエンジン１０５により判定される必要がある。
【０３７６】
基本レイアウトモデルは、ボックスの幅と高さの関係を定義する形状規則と呼ばれる追加の規則を可能にし、且つ縦横比規則及びテキスト規則という２種類の形状規則を含めるように拡張されても良い。
【０３７７】
縦横比規則は、ボックスが特定の縦横比を有していなければならないことを指定する。テキスト規則は、ボックスがテキストの特定のブロックに対して境界規定ボックスとして整形されるべきであることを指定する。テキストのレイアウトは専用モジュールにより処理される。テキストレイアウトの例については後に説明する。
【０３７８】
形状規則の厳密な挙動は、レイアウトを計算するために使用される方法によって決まるため、その挙動については以下に更に詳細に説明する。それらの規則は、アイテムの位置及び寸法を計算するために選択される方法に応じて、様々に異なる実施の形態において様々に異なる挙動を有するであろう。
１６．４  等オフセット規則（Equal Offset Rules）
レイアウトを指定するときに設定されていると好都合である別の種類の制約は、２つの距離が等しいことを指定可能であることである。これは、同じ向きを有するマークｍ及びｎと、同じ向きを有するマークｓ及びｔに対してequal(m, n, s, t)により表される等オフセット規則を使用して指定されることが可能である。等オフセット規則equal(m, n, s, t)は式
offset(m, n) ＝ offset(s, t)
により定義される。式中、offset(a, b)は、
offset(a, b) ＝ pos(b) − pos(a)
となるような、第１のマークａから第２のマークｂまでのオフセットを表す。
【０３７９】
基本レイアウトモデルは、等オフセット規則の追加により拡張されることが可能である。レイアウトモデルにおいて等オフセット規則が許可されると、過剰に制約されたレイアウトを作成するのが非常に容易になる。
【０３８０】
等オフセット規則は、レイアウトエンジン１０５において好適な方法より効率の点で劣る、より一般的なレイアウト方法を要求するため、全ての実施の形態で支援されるわけではない。レイアウトエンジン１０５は、様々なオフセットを等しくするための代替手段として、等オフセット規則の代わりに以下に定義する距離最小化規則を含むのが好ましい。
【０３８１】
１６．５  ボックスの中心を含む規則
基本レイアウトモデルでは、ボックスの辺のみがレイアウト規則に関与している。ボックスの中心間の関係を定義できることも望ましい。基本レイアウトモデルの拡張においては、各ボックスは常に２つの追加マークと関連付けられる。それらは、共にボックスの中心を通る垂直マーク及び水平マークから構成されている。
【０３８２】
等オフセット規則を可能にするモデルにおいては、等オフセット規則を使用してマークを各ボックスの中心と関連付けることができ、従って、ボックスの中心を含む規則を支援するためにモデルへの追加は不要である。
【０３８３】
１６．６  固定中心規則（Fixed Center Rules）
ボックスの中心を含む規則の特別なケースとして、別の実施の形態では、各ボックスの中心の縦方向位置又は横方向位置をページに対して、或はページ又はレイアウトエリアの１つの辺に対して固定させるような基本レイアウトモデルの拡張がある。この特別なケースは、等オフセット規則の必要性を回避するので、より単純なレイアウト計算方法を使用できる。
【０３８４】
固定中心規則は、１つのボックスの対向する辺と関連付けられる１対のマークの関係であると考えることができ、従って、ボックスの中心を通る追加のマークをレイアウトに追加する必要はない。
【０３８５】
１６．７  オフセット最大化規則及びオフセット最小化規則
以上説明した基本モデルレイアウト規則及び追加規則は、アイテムの厳密なサイズ及びアイテムの間隔などの精密な制約を指定するため、並びにアイテムの位置及びサイズの可変性に対する制限を指定するために有用である。ここまで説明した規則によれば、過剰制約又は制約不足であるレイアウトの定義を容易に実現することができる。レイアウトを、より精密なレベルでコントロールするための良い戦略は、基本モデル規則、並びに等オフセット規則及び固定中心規則などの他の精密な規則を使用して、制約不足レイアウトを定義し、アイテムのサイズ及び位置の優先性を指定するための追加の、更に融通性に富む規則を追加することである。この目的のために、最小化規則及び最大化規則という２種類の規則を更に使用しても良い。
【０３８６】
ここまで定義された規則は、レイアウト方法が従わなければならない制約を定義している。先に定義された規則とは異なり、最小化規則及び最大化規則はレイアウト方法の目標関数を定義する。
【０３８７】
minimizeoffset(m, n)により表されるオフセット最小化規則は、マークｍからマークｎまでのオフセットをできる限り小さく（即ち、負に）すべきであることをレイアウトエンジン１０５に指示する。この規則の挙動はレイアウトを計算する方法によって異なるため、以下に詳細に定義される。
【０３８８】
maximizeoffset(m, n)により表されるオフセット最大化規則は、マークｍからマークｎまでのオフセットをできる限り大きく（即ち、正に）すべきであることをレイアウトエンジン１０５に指示する。この規則の挙動はレイアウトを計算する方法によって異なるため、以下に詳細に定義される。
【０３８９】
オフセット最小化規則及びオフセット最大化規則は、１次目標関数を算入するのに有用であり、従って、シンプレックス方法を使用する計算に適するレイアウトモデルに含まれても良い。１次目標関数が使用される場合、最小化規則又は最大化規則は、それぞれ、１つの１次項を目標関数に与える。この場合、規則minimizeoffset(m, n)は、maximizeoffset(m, n)と等価であるため、２種類の規則のうちの一方のみが必要である。従って、これらの種類の規則を含むレイアウトモデルのデータ表現は、それらの種類の規則の内の一方を支援するだけで良い。例えば、データ構造はオフセット最小化規則のみを支援しても良く、各オフセット最大化規則は等価のオフセット最小化規則を使用して表現される。
【０３９０】
１６．８  距離最小化規則（Minimize Distance Rules）
オフセット最大化規則及びオフセット最小化規則の使用により、２つのマークの間の理想の離間が無限であるようなレイアウトがもたらされる場合があり、従って、これらの規則が常に十分に定義されたレイアウトを提供するとは限らない。この問題を回避するために、オフセット最大化規則及びオフセット最小化規則は、別の種類の規則と置き換えられても良い。或は、minimizedist(m, n)により表される距離最小化規則と呼ばれる別の種類の規則を使用して、距離を指定する。例えば、２つのマークｍ及びｎの間のオフセットの絶対値はできる限り小さくなければならない。距離最小化規則は同じ向きを有するマークの間にのみ適用される。特定の実施の形態においては、距離最小化規則を使用する代わりに、以下に説明する、好適オフセット規則と呼ばれる別の種類の規則が使用される。
【０３９１】
尚、距離最小化規則は、固定オフセット規則、オフセット最小化規則及びオフセット最大化規則並びに非負オフセット規則を使用して、下記の等式を使用して近似されることが可能であることに注意する。
【０３９２】
minimizedist(m, n) ≡ minimizeoffset(m, t)及び  minimizeoffset(n, t)及びnonnegative(m, t)及びnonnegative(n, t)
この式中、ｔはレイアウトに追加され、他の規則のいずれにも含まれない特別のマークである。この近似は厳密ではないこともあり、使用される厳密なレイアウト計算方法によって左右される。特に、レイアウト方法により計算されるアイテムの厳密な配置は選択される目標関数によって決まる。
【０３９３】
尚、オフセット最小化規則も距離最小化規則を使用して、下記の等式を使用して近似されることが可能であることに注意する。
【０３９４】
minimizeoffset(m, n) ≡ minimizedist(t, m)及びfixed(t, n, d)
式中、ｔはレイアウトに追加された特別のマークであり、ｄはｍとｎの間の所望の最大距離よりはるかに大きい距離を表す大きな正の数である。この近似は厳密ではなく、アイテムの厳密な配置はレイアウト計算方法の厳密な実施の形態によって決まるが、固定オフセット規則及び非負オフセット規則を可能にするレイアウトモデルに距離最小化規則のみを追加することにより、オフセット最大化規則及びオフセット最小化規則に類似する機能性を提供できることが判明している。
【０３９５】
実施の形態によっては、距離最小化規則は規則の強さを示す特別の値を含んでいても良い。そのような規則はminimizeoffset(m, n, s)で表されるが、ｍ及びｎは規則により関連付けられるマークであり、ｓは規則の強さを表す正の数である。この場合、２つ以上の距離最小化規則がマークの位置に影響を及ぼしているとき、より強い規則が、弱い規則より大きな影響を位置に対して与える。
【０３９６】
１６．９  好適オフセット規則
特定の実施の形態においては、距離最小化規則を使用する代わりに、「好適オフセット規則」と呼ばれる別の種類の規則が使用される。preferred(m, n, d）により表される好適オフセット規則は、マークｍからマークｎまでの好ましいオフセットがｄであることを指定する。好適な規則は下記の等式によって距離最小化規則により表現されることができる。
【０３９７】
preferred(m, n, d) ≡ fixed(m, t, d)及びminimizedist(t, n)
式中、ｔはｍの位置に対するｎの好ましい位置を表すためにレイアウトに追加された特別のマークである。
【０３９８】
逆に、距離最小化規則は下記の等式によって好適オフセット規則を使用して表現されることができる。
【０３９９】
minimizedist(m, n) ≡ preferred(m, n, 0)
従って、基本レイアウトモデルの何らかの拡張に距離最小化規則又は好適オフセット規則のいずれかを追加すると、その結果、等価モデルが得られる。好適オフセット規則は、通常、一般に指定されるレイアウト関係に対して距離最小化規則より少ない数のマーク及び少ない数の規則を要求する表現であるため、距離最小化規則の代わりに使用される。
【０４００】
好適オフセット規則は、必要に応じて、規則の強さを示す特別の値を更に含んでいても良い。そのような規則は、preferred(m, n, d, s)と表され、ｍ及びｎは規則により関連付けられるマークであり、ｄはｍからｎまでの好ましいオフセットを表す数であり、ｓは規則の強さを表す正の数である。この場合、２つ以上の好適オフセット規則がマークの位置に影響を及ぼしているとき、より強い規則が弱い規則より大きな影響を位置に対して与える。ｍの位置に対するｎの好ましい位置を表すためにレイアウトに追加された特別のマークをｔとするとき、強さを有する好適オフセット規則は、下記の等式によって強さを有する距離最小化規則と等価である。
【０４０１】
preferred(m, n, d, s) ≡ fixed(m, t, d)及びminimizedist(t, n, s)
及びminimizedist(m, n, s) ≡ preferred(m, n, 0, s)
１６．１０  好適レイアウトモデル
望ましいレイアウトモデルの１つは、先に定義した下記の種類の規則を追加するために拡張された基本レイアウトモデルを含む。
【０４０２】
１．ボックスの中心を横方向又は縦方向に固定するための規則；
２．テキスト及び画像を含むボックスを支援するための形状規則；及び
３．好適オフセット規則
このレイアウトモデルは、ユーザが十分に理解できるほど単純である一方で、一般に必要とされる全てのレイアウト特徴を支援するのに十分な融通性を有し、単純なデータ表現を有するほど十分に単純であり、レイアウトアイテムの位置及び寸法を計算するための高速の方法を支援することが可能である。
【０４０３】
１６．１１  レイアウト例
図３７Ａは、図４に示すレイアウト例が、ボックス、マーク及び規則を使用してレイアウトエンジン１０５の一実施の形態においてどのように表現されるかを示す図である。レイアウトエリアの境界は、マーク３７０１，３７０３，３７０５及び３７０７により表されている。レイアウトエリアは、通常、テンプレート中の１つのページの一部を表す。レイアウトエリアの高さは、固定オフセット規則３７０９により表されている。レイアウトエリアの幅は、固定オフセット規則３７０１により表されている。図４に示す２つのコンテナは、レイアウトエンジン１０５において、図３７Ａに示される２つのボックス３７０２及び３７０４により表されている。マーク３７０１及び３７０５は、原点マークとして指定されている。
【０４０４】
第１のボックス３７０２の４つの辺は、マーク３７１３，３７１５，３７１７及び３７１９により表されている。ボックス３７０２の左上角は、ページ１５０上の、レイアウトエリアの左辺から右側へ１５０論理単位離れ、レイアウトエリアの上から２００単位下がった固定位置を有する。これは２つの規則３７３５及び３７３７により表されている。規則３７３５は、ボックス３７０２の左辺がレイアウトエリアの左辺から１５０単位右にあることを保証し、規則３７３７はボックス３７０２の上辺がレイアウトエリアの上から２００単位下がった位置にあることを保証する。ボックス３７０２の高さと幅は固定されておらず、従って、レイアウトエンジン１０５により計算される。最小オフセット規則３７４４は、ボックスの最小幅が１２０論理単位であることを指示する。規則３７４２は、ボックスの最小高さが１００論理単位であることを指示する。好適オフセット規則３７４１は、ボックス３７０２の好ましい高さが５５０論理単位であることをレイアウトエンジン１０５に指示する。別の好適オフセット規則３７４３は、ボックス３７０２の好ましい幅も５５０論理単位であることをレイアウトエンジン１０５に指示する。ボックスの好ましい幅及び高さは、ボックスが表現しているコンテナのコンテンツから決定される。最小オフセット規則３７３９は、ボックス３７０２の下辺が、マーク３７０３により表されるレイアウトエリアの底辺の下方にあってはならないことをレイアウトエンジン１０５に指示する。
【０４０５】
第２のボックス３７０４の４つの辺は、マーク３７２１，３７２３，３７２５及び３７２７により表されている。ボックス３７０４の上辺及び下辺の位置は、レイアウトエリアに対して固定されている。上辺の位置はマーク３７２５により表されている。上辺は、固定オフセット規則３７３１により、レイアウトエリアの上から２００論理単位下がった位置で固定されている。同様に、ボックスの下辺は規則３７３３により、レイアウトエリアの上から７５０論理単位下がった位置で固定されている。
【０４０６】
ボックス３７０４の幅は、固定オフセット規則３７２９により５５０論理単位に固定されているが、ボックスの左右の辺の位置は固定されておらず、レイアウトエンジン１０５により計算されなければならない。最小オフセット規則３７４７は、マーク３７２３により表されるボックスの右辺がマーク３７０７により表されるレイアウトエリアの右辺を過ぎるほど出てはならないことをレイアウトエンジン１０５に指示する。
【０４０７】
更に別の最小オフセット規則３７４８及び３７４９は、可変辺がレイアウトエリアの内側に留まることを保証する。この例では、それらの規則は冗長であり、実施の形態によっては、レイアウトを計算する前に冗長規則は取り除かれても良い。冗長規則の検出は、規則を一時的に取り除き、プッシュ動作を使用して、影響を受けるマークをプッシュすることにより規則違反が起こる可能性があるか否かを判定することにより実行されても良い。プッシュ動作を使用して規則違反になる可能性がなければ、その規則は冗長である。
【０４０８】
ストラット４１２は固定オフセット規則３７４５により表されている。この規則は、２つのボックス３７０２及び３７０４の距離が２００論理単位でなければならないことをレイアウトエンジン１０５に指示する。
【０４０９】
図３７Ｂは、図３７Ａに示す水平オフセット規則を表すグラフである。垂直オフセット規則を表すために同様のグラフ（図示せず）を使用できるであろう。頂点３７５１は、レイアウトエリアの左辺に対応するマーク３７０５を表す。頂点３７６１は、レイアウトエリアの右辺に対応するマーク３７０７を表す。頂点３７５３は、ボックス３７０２の左辺に対応するマーク３７１３を表す。頂点３７５５は、ボックス３７０２の右辺に対応するマーク３７１５を表す。頂点３７５７は、ボックス３７０４の左辺に対応するマーク３７２１を表す。頂点３７５９は、ボックス３７０４の右辺に対応するマーク３７２３を表す。
【０４１０】
固定オフセット規則３７３５は、グラフの辺３７６７及び３７６９により表される１対の最小オフセット規則により表されている。最小オフセット規則３７４４は、グラフの辺３７７１により表され、最大オフセット規則３７４６はグラフの辺３７７３により表されている。固定オフセット規則３７４５は、グラフの辺３７７５及び３７７７により表されている。固定オフセット規則３７２９はグラフの辺３７７９及び３７８１により表されている。最小オフセット規則３７４７はグラフの辺３７８３により表されている。
【０４１１】
図３７Ｃは、図３７Ｂに示すグラフを格納するために使用されるメモリ構造を示す。グラフの各頂点は、少なくともその頂点が表現するマークの位置に加えて、頂点から出ている辺を表す隣接度リストを含む、例えば、３７９１のようなデータ構造により表される。隣接度リストは、各々が１つの辺を表し、目的頂点までの、ポインタ３７９３のような少なくとも１つのポインタと、ソース頂点から目的頂点までの最小許容オフセット（例えば、３７９４）とを含む複数のレコードから構成されている。隣接度リストのサイズは変化するため、それらは連係リストとして格納される。隣接するレコードの間のリンクは、図３７Ｃには明示して示されていない。
【０４１２】
好適オフセットは、図３７Ｄに示すような別個のグラフに格納される。好適オフセットは、辺３７９５のようなグラフ中の１つの辺によりそれぞれ表される。好適オフセットグラフを格納するためのデータ構造は、最小オフセット規則を格納するために使用されるデータ構造に類似している。２つのグラフにおける対応する頂点はポインタ（明示せず）により連係されている。実施の形態によっては、各辺が逆方向の辺を有することを保障するために、各グラフに特別の辺が追加される。これは、グラフを順方向又は逆方向に効率良くトラバースすることを可能にするためである。
【０４１３】
１７．レイアウトの作成及び編集の詳細な説明
１７．１  レイアウトを作成及び編集するための基本動作
レイアウトを作成及び編集する最も単純なアプローチは、任意の種類のアイテムを追加又は除去させることと、支援されるレイアウトモデルによって許可された任意の種類の規則を追加又は除去させることである。このアプローチにおいて、除去されるアイテムを含む任意の規則を自動的に除去することによって１つのアイテムがレイアウトから除去されるとき、最小限の一貫性チェックしか行なわない場合は、レイアウトデータ構造が矛盾することを防止する必要がある。このアプローチにおいては、全ての規則を満たすアイテムの位置及び寸法を決定できるという保証はない。
【０４１４】
また冗長な情報を含むレイアウトを回避することは有用である。これは、レイアウトの複雑性を減少でき、これにより単純化されてユーザが理解しやすくなり、また冗長な情報の除去処理がユーザにフィードバックを提供することによってユーザにとってより明確なレイアウトを実現できるためである。また冗長な情報は、レイアウトを表すデータ構造のサイズを大きくし、レイアウト計算速度を低下させる。
【０４１５】
基本レイアウトモデルによる規則を含むレイアウトを表すために説明される有向グラフ構造（図２４）は、数種類の冗長な情報を許可しない手段を自動的に提供する。このグラフは、同一の発信元頂点及び目的頂点を有する１つ以上の有向辺を許可しない。これにより、１つ以上の最小オフセット規則が、同一のオフセットに適用されるのを防止する。（同一の順序で、即ち、同一の第１マーク及び同一の第２マークを有する）一対の同一マークの間に１つ以上の最小オフセット規則が存在する場合、最も負の最小オフセット値を有する規則のみが必要であるため、規則の内の１つは冗長となる。
【０４１６】
最小オフセット規則を追加する動作は、新しく追加された規則を有する同一の発信元頂点及び目的頂点で既に表された任意の既存の最小オフセット規則を自動的に置換する動作であることが好ましい。或は、最小オフセット規則を既存のレイアウトに追加する動作は、同一のオフセットに対してより小さい（即ち、より負の）最小オフセット値を有する最小オフセット規則が既に存在する場合、空命令となる。
【０４１７】
特定の実施の形態において、この動作は、基本レイアウトモデルによって支援される全種類の規則を追加及び除去するために支援される。これらの規則は、最小オフセット規則を使用して全て表された場合でも、固定オフセット規則、非負のオフセット規則、及び最大オフセット規則を備える。例えば、固定オフセット規則を追加する動作は、２つの対応する最小オフセット規則を追加することによって実現される。動作は、任意のマークの位置を固定又は非固定にするために提供される。マークの位置を固定することは、同一方位のマーク及び原点マークの間に、固定オフセット規則を追加することと同様である。また、動作は、任意のボックスの中心の横方向置又は縦方向位置を独立して固定するためにも提供される。また、多数のレイアウト作成及び編集動作を組み合わせても良い。
【０４１８】
ボックスの中心の横方向の位置は、様々な理由によって効果的に固定されても良い。例えば、ボックスの２つの縦辺の横方向の位置がレイアウトエリアに固定される場合、ボックスの横方向の位置及び幅は完全に決定される。そのため、ボックスの中心の横方向位置も固定される。この場合、規則が冗長であるため、横方向位置をレイアウトに対する固定ボックスの中心とする（即ち、固定中心規則を追加する）動作は、空命令となる。ボックスの中心の縦方向の位置を固定することについても同様である。
【０４１９】
１つの実施の形態において、好適オフセット規則及び最小距離規則を追加及び除去する動作も同様に支援される。本実施の形態において、最小距離規則は、同様の好適オフセット規則を使用して表される。好適オフセット規則は、有向グラフで表されてもよく、このグラフでは、各頂点がマーク及び各好適オフセット規則を、好適オフセット規則によって関連付けられるマークに対応する頂点を接続する辺によって表す。有向グラフが同一の発信元頂点及び目的頂点を有する単一の辺を許可するだけでは、同一の２つのマークに関する１つ以上の好適オフセット規則を有するレイアウトを表すことは不十分となる可能性があるが、好適オフセット規則が強度を有する特定の実施の形態においては、同一の２つのマークに関する任意の好適オフセット規則は、単一で等価の好適オフセット規則によって、以下の等式を介して置換されることができる。
【０４２０】
preferred(m, n, d, s)及びpreferred(m, n, d', s') ≡ preferred(m, n, D, S) 
式中、  Ｄ＝（sd＋s'd'）／（s＋s'）であり、
Ｓ＝s＋s'である。
【０４２１】
この等式は、好適レイアウト計算が行なわれる場合に有効となる。
【０４２２】
１７．２  レイアウト作成及び編集に基づく例
レイアウトを作成及び編集する場合、過剰に制約されたレイアウトを作成するのを回避するのが望ましい。このようなレイアウトは、文書を生成するのに有用でないためである。矛盾する規則を回避する処理は、ユーザに対してフィードバックを提供することによって、作成されるレイアウトに関するユーザの理解をより深くすることもできる。レイアウトの作成中、一貫性のない規則を回避することによって、誤りを自動的に防ぐことにより、ユーザの仕事量を減少させることもできる。
【０４２３】
例示に基づいた編集は、過剰に制約されたレイアウトを回避するために、所定の実施の形態において使用されても良い。例示に基づいた編集において、レイアウトを作成及び編集するための動作は、全ての制約に従ったレイアウトの例示上で常に実行されている。なお、最小オフセット規則、最大オフセット規則、最小距離規則、及び好適オフセット規則は、レイアウトに制約を課さず、また、過剰に制約されたレイアウトを回避するために無視されてもよい。可変データ印刷アプリケーションでは、ユーザが文書のプレビューを示す例示的なレイアウトを構築することを許可することによってこの処理が行なわれる。プレビューは、文書テンプレートと実データとを組み合わせた文書の１つの表示であっても良い。また、プレビューは、文書テンプレートに挿入されると予測されるデータに単に類似しているサンプルデータを含んでも良い。或は、アイテムのサイズ及び位置のみが、テンプレートから生成される実際の文書において予測されるデータとほぼ同一であっても良い。
【０４２４】
新たに作成されたアイテムの位置及び寸法は、アイテムが作成されるときに特定されるのが好ましく、そのため、アイテムの例示的な位置は常に知られている。これらの値を保存するために、レイアウトを表すために使用されるグラフの各頂点は、対応するマークの位置にラベル付けされる。更に、規則がアイテムの現在の位置及び寸法と矛盾しない場合は、規則が追加されるだけでも良い。例えば、含まれるマークの現在の位置が最小オフセット規則に従う場合、最小オフセット規則がレイアウトに追加されるだけでも良い。同様に、固定オフセット規則が追加される場合、オフセット値は、規則によって関連付けられたマークの間のオフセットと等しくなければならない。ボックスの中心の横方向位置又は縦方向位置が固定される場合、ボックスの位置及び寸法は既に知られており、横方向の中心又は縦方向の中心は、規則の追加動作が行なわれた時のボックスの中心の実際の位置に基づいて固定される。
【０４２５】
ユーザは、インターフェース１０３を介して、レイアウトに追加される規則を必要とするレイアウトへの変更を指示しても良い。ユーザによって示される例示的なレイアウトが追加される規則を満たさない場合、もし可能であれば、レイアウトは自動的に調整される。それによって新たに追加される規則は、レイアウトと一貫性を有する。例えば、ユーザが固定幅のコンテナの幅を変更させる場合、ダイアログボックスを介して、又はボックスの辺をドラッグすることによって、アイテムの位置を修正し、同様に規則を更新する。これは、いくつかの既存の規則の除去、含まれるマークの位置の変更、及び新たな規則の追加等のいくつかのレイアウト動作を必要とする。例えば、マークの位置を変更する場合、アプリケーション１２１は、まず、マークの位置が変更された場合に侵害されるであろう任意の規則を除去し、マークの位置を更新し、新たなマークの位置と一貫性のある新たな規則を追加する。
【０４２６】
レイアウトを編集及び作成する場合、任意の制約を侵害せずに他のマーク又はレイアウト原点に関連する１つ又は複数のマークを移動する必要があることがある。これは、移動されるマークが多くの制約によって影響される場合に、非常に複雑な動作となる可能性がある。レイアウトエンジン１０５は、マーク集合を、任意の制約を侵害することなく横又は縦方向に所定の距離だけ移動させ、必要に応じて、元の集合には存在しない他のマークを移動して要求された結果に到達する「プッシュ（push）」と呼ばれる動作を提供することが望ましい。
【０４２７】
１７．３  プッシュ動作
このプッシュ動作は、ユーザインターフェース１０３からの入力に応じてレイアウトエンジン１０５によって実現され、マーク集合を、任意の制約を侵害することなく、横又は縦方向に所定の距離だけ移動させ、必要に応じて、元の集合には存在しない他のマークを移動して要求された結果に到達する。
【０４２８】
このプッシュ動作は、全て同じ方位であるマーク集合上で動作し、プッシュグラフと呼ばれるグラフによって説明されても良い。レイアウト内の各マークに割り当てられた位置と共にマーク及び最小オフセット規則の集合によって定義された例示的なレイアウトが存在する場合、対応するプッシュグラフが定義されても良い。プッシュグラフは、有向グラフであり、このグラフにおいては各頂点がレイアウト内のマークと対応し、各辺が、実際のオフセットが最小オフセット規則によって許可される最小値と同等である最小オフセット規則と対応する。
【０４２９】
レイアウトに対するプッシュグラフは、その辺が、レイアウトを形成するマーク以外を直接プッシュできるマークを示す有効グラフである。第１のマークは、第１のマークの座標値が増加することによって第１マークと第２マークとの間の最小オフセット規則を侵害する場合、第２のマークを（正方向に）直接プッシュできる。この動作は、これらのマーク間のオフセットが既に許可されている最低値である場合に実現される。なお、全ての基本モデル規則は、レイアウトを作成又は編集する場合、同等の最小オフセット規則と置換されることとする。
【０４３０】
また、マークを正方向に（即ち、マークの座標値を増加させて）移動する場合、プッシュグラフ内の対応する頂点から到達可能な頂点に対応する任意のマークは、任意の最小オフセット規則を侵害することを回避するために、同一の距離だけ移動されなければならない。
【０４３１】
またマークを負方向に（即ち、マークの座標値を減少させて）移動する場合、逆プッシュグラフにおいて対応する頂点から到達可能な任意のマークは、任意の最小オフセット規則を侵害することを回避するために、同一の距離及び寸法だけ移動されなければならない。この逆プッシュグラフは、辺の方向が逆であることを除いてプッシュグラフと同一である。
【０４３２】
有向グラフ内の到達可能な頂点を決定する様々な方法は、上記を実現するために使用されても良い。
【０４３３】
プッシュ動作は、任意の最小オフセット規則を侵害することなくマークグループを移動することによって機能する。マークグループの許可された移動の範囲を計算するために、「緩和（slack）」と呼ばれる量が、各最小オフセット規則に対して定義される。任意の最小オフセット規則をmin(m, n, d)とすると、規則に関する緩和は、offset(m, n)−ｄによって得られる。この緩和は、規則が侵害される前にマークｍが（正方向に）移動可能な最大距離であり、また、規則が侵害される前にマークｎが負方向に移動可能な最大距離（即ち、座標が減少可能である最大量）である。最小オフセット規則に対する緩和は、規則が例示的なレイアウトを侵害しない場合、常に非負の数である。プッシュグラフの各辺は、緩和「０」を有する規則に対応する。
【０４３４】
マーク集合の最大許容正移動は、ｍが集合内に存在し、ｎが集合内に存在しない全ての最小オフセット規則min(m, n, d)の緩和値の最小値である。これは、任意の他のマークを集合内で移動することなく、また任意の最小オフセット規則を侵害することなく、マークが正方向に移動可能な最大距離である。マーク集合が負方向に移動可能な最大距離は、ｍが集合内に存在し、ｎが集合内に存在しない形式min(n, m, d)の全ての最小オフセット規則の緩和値の最小値と同様に定義できる。マーク集合の所定方向の移動を制限する最小オフセット規則が存在しない場合、最大距離は無限となる（即ち、マークが移動できる距離が無制限となる）。
【０４３５】
プッシュ動作は、移動される現マーク集合と、現集合内のマークをプッシュするべき残りの距離であるプッシュ距離との経過を追跡する。マーク集合及びプッシュ距離は、動作のステップが実行される度に更新される。プッシュ動作は、マークを１つ或はそれ以上の増分で移動させる。各増分での移動距離は、現マーク集合の最大許容移動から決定される。集合内のマークによってプッシュされることができる追加のマークは、各増加の前に集合に追加され、そのため、マークの差分集合は、各増分だけ移動される。
【０４３６】
図２５は、プッシュ動作の第１の実施の形態に含まれる方法２５００を示すフローチャートである。このプッシュ動作は、レイアウトに対する原点が保存されるステップ２５０１で開始される。プッシュ動作が座標系を定義するマークの位置を変更可能であるため、このマーク及びその位置が記憶される。そのため、座標系は、後でステップ２５１３において再格納されることができる。ステップ２５０１の後、プッシュ動作はステップ２５０２に進み、プッシュする残りの距離が０と比較される。プッシュする残りの距離が０である場合、何も実行されず、動作はステップ２５１３に進み、座標系の原点が再格納される。これは、レイアウト内の全てのマークを適切な値で移動することによって実行され、ステップ２５０１で保存された原点マークの元の位置を再格納する。ステップ２５０２でテストされるプッシュ距離が０でない場合、動作はステップ２５０３に進み、プッシュグラフがレイアウト内のマークの現位置に基づいて更新される。その後、動作はステップ２５０５に進む。ステップ２５０５において、移動するマーク集合は、現集合内に存在する任意のマークがプッシュ方向にプッシュ可能な任意の追加マークを追加することによって更新される。例えば、対応する頂点が、現集合内に存在する任意のマークに対応する頂点からプッシュグラフ（又は、移動距離が負の場合は逆プッシュグラフ）内で到達可能である任意のマークは、現マーク集合に追加される。動作はステップ２５０７に進み、現在の増分の距離が計算される。増分の距離は、残りのプッシュ距離より少ない距離であり、現マーク集合の所定方向における最大許容移動距離である。この距離は、プッシュ距離が正の場合、常に正である。移動距離が計算された後、動作は、ステップ２５０９に進み、現集合内の全てのマークがステップ２５０７で計算された距離だけ移動される。ステップ２５０９の後、動作はステップ２５１１に進み、残りのプッシュ距離がそこから移動する距離を減算することによって計算される。ステップ２５１１の後、動作は、ステップ２５０２に戻り、ステップ２５１１で計算された距離がテストされ、必要に応じて、他の反復を行うかどうかが判定される。
【０４３７】
図２５で説明されたプッシュ動作のバージョンは、決して失敗することはないが、原点マークが動作中に移動される場合、動作の挙動は非直観的となる。例えば、マークグループが右にプッシュされる場合、右に移動するマークの代わりに他のマークが左に移動する可能性がある。この挙動は、ステップ２５１３において原点を再格納することによって起こる。実際、この挙動は有用であることもある。例えば、ボックスの幅を１０単位だけ広くする場合、右辺が１０単位も移動できない場合であっても、可能であればボックスの右辺を１０単位右にプッシュすることにより、ボックスの幅を１０単位広くする。これに関連して、右辺が３単位しか右に移動できないが左辺が７単位だけ左に移動できる場合、プッシュ動作は、自動的に左辺を左に移動させる。その副作用により、他のアイテムも移動しても良い。
【０４３８】
また、原点マークを移動させないプッシュ動作の他のバージョンも有用である。これは図２６の方法２６００で説明される。このプッシュ動作の実施の形態は、冗長なステップ２５０１，２５１３が省略されることを除いて，図２５と同様の方法で実施されるが、追加のテスト、即ちステップ２５０５とステップ２５０７との間に挿入されたステップ２６０６を含む。ステップ２６０６のテストは、現マーク集合が原点マークを含むかどうかを判定する。マーク集合が原点マークを含む場合、マークが原点マークを移動しなければ必要なだけプッシュされないため、動作は終了し、失敗する。
【０４３９】
図２７Ａ，２７Ｂ，２７Ｃ，２７Ｄ，２７Ｅ及び２７Ｆは、ともにプッシュ動作の機能例を提供する。これらの図は、２つのコンテナ、即ち、最小幅１５単位を有する可変幅コンテナ２７０１と幅２０単位を有する固定幅コンテナ２７０４とで形成されたレイアウトを示す。コンテナ２７０１は、マークＡ，Ｂと関連付けられた左辺及び右辺を有するボックスによって表される。コンテナ２７０４は、マークＣ，Ｄによって表される左辺及び右辺を有するボックスによって表される。また、これらの図は、マークＥで表されたページ２７０７の辺を示す。
【０４４０】
図２７Ａは、プッシュ動作が開始する前のレイアウトの初期状態を示す図である。アイテム２７０１は、最小オフセット規則２７０２によって表された１５単位の最小幅を有する。アイテム２７０４は、固定オフセット規則２７０５によって表された２０単位の固定幅を有する。２つのアイテム２７０１，２７０４は、固定オフセット規則２７０３によって表される６レイアウト単位の長さのストラットによって接続される。アイテム２７０４と、最小長さ１５単位を有するマークＥで表されるページの辺２７０７との間には、追加の最小オフセット規則２７０６が存在する。この規則は、アイテム２７０４がページの辺２７０７に１５単位より近接することを防止する。プッシュ動作を呼び出す前の実際の距離は、２０単位である。プッシュ動作のステップは、マークＡを１５単位右にプッシュすることに関して図示される。また、レイアウトに関するプッシュグラフ２７０９は、図２７Ｂに示される。グラフ２７０９は、固定オフセット規則２７０３によって辺で両方向に接続されるマークＢ，Ｃを表す頂点を示す。また、マークＢ，Ｃを表す頂点は、固定オフセット規則２７０５によって両方向に接続される。
【０４４１】
図２７Ｃは、ループの第１の反復結果を示す図である。第１の反復において、ステップ２５０３において、プッシュグラフ２７０９が計算される。ステップ２５０５において、プッシュグラフから、マークＡが他のマークをプッシュせず、マークＡ自身が移動可能であることが判定される。ステップ２５０７において、マークＡが最小オフセット規則２７０２を侵害することなく移動可能である最大距離が３単位であることが決定される。これは必要な距離より少ないので、マークＡはステップ２５０９で３単位移動されて、図２７Ｂに示されるレイアウトとなる。ステップ２５１１で計算される残りの距離は、このとき１２単位である。ループの第２の反復において、ステップ２５０３では、図２７Ｄに示されるプッシュグラフ２７１１が計算される。このグラフにおいて、規則２７０２内の緩和がこのとき０であるため、マークＡはマークＢをプッシュし、その結果、マークＡはマークＣ，Ｄもプッシュする。
【０４４２】
図２７Ｅは、ループの第２の反復結果を示し、このときマークＢ，Ｃ及びＤの全てがマークＡによってプッシュされ、そのため４つのマーク全てが同時に移動しなくてはならないこと判定する。ステップ２５０７において、マークＡ，Ｂ，Ｃ及びＤが、マークＤとマークＥによって表されたページ２７０７の辺との間の第２の最小オフセット規則２７０６を侵害することなく、５単位の最大距離を移動可能であることが判定される。残りの距離は１２単位であるが、マークＤは５単位しか移動することができないため、マークＡ，Ｂ，Ｃ及びＤは、それぞれ５単位ずつ移動する。ステップ２５１１において、残りの距離は７単位と計算される。ループの第３の反復において、ステップ２５０３では、図２７Ｆに示されるプッシュグラフ２７１３が計算される。このグラフにおいて、全てのマークはマークＡによってプッシュされる。
【０４４３】
図２６に示されるプッシュ動作の第２のバージョンにおいて、テスト２６０６は、原点マークＥが移動するマーク集合に含まれると判定し、動作が停止する。図２５に示されるプッシュ動作の第１のバージョンにおいて、ループの第３の反復は、ステップ２５０９において残りの７単位だけ移動される全てのマークが対象となり、次のステップ２５１１において、このとき残りの距離は０と計算され、そのため、ステップ２５０２のテストによって処理がステップ２５１３に進み、全てのマークがこのケース、即ち７単位だけ左に移動することによって原点マークＥの位置が再格納される。この例では、プッシュ動作の両方のバージョンが同一の結果を作成する。またこの例では、マークＡは必要な１５単位の代わりに、全体で８単位だけプッシュされるだけである。
【０４４４】
１７．４  固定中心を有するプッシュ動作
固定中心規則を組み込むレイアウトモデルにおいて、プッシュ動作は、固定中心を認識されるように修正される必要がある。ボックスの中心の横方向の位置が固定される場合、ボックスの左辺及び右辺は、常に逆方向に同量だけ移動しなければならず、このようなマークは互いに「対向される（opposed）」と呼ばれ、「対向（opposing）」マークと呼ばれる。同様に、ボックスの中心の縦方向位置が固定の場合、ボックスの上辺及び下辺は、常に逆方向に同量だけ移動しなければならない。
【０４４５】
プッシュ動作を固定中心の組み込みに適合させるために、プッシュされるマーク集合は、２つのマーク集合によって置換される。１つのマーク集合、即ち前方集合は、正方向にプッシュされ、他のマーク集合、即ち対向集合は、負方向にプッシュされる。ステップ２５０５で、マークは次のように、２つのマーク集合それぞれに追加される。所定のマークが２つの集合のうちの１つに含まれるマークに対向する場合、対向マークは、対向マークにプッシュされる任意のマークと同様に他の集合に追加される。
【０４４６】
図３２は、ステップ２５０５等を使用して固定中心規則が許可された場合、２つのマーク集合を判定する方法３２００を詳細に示すフローチャートである。図３２において、プッシュする初期のマーク集合は垂直マークであり、これらは右にプッシュされることとする。また、座標系は右に増加することとする。同様に、マークは他の方向及び方位にプッシュされる。ステップ３２０１において、現マーク集合によってプッシュされる全てのマークは、（固定中心規則は無視して）前方集合に追加される。ステップ３２０１は、前方マーク集合を表す頂点集合から到達可能な全ての頂点を見出すことによって、プッシュグラフを使用して計算されても良い。更に、任意の２つの対向マークが前方集合に含まれる場合、原点マークもその集合に追加される。ステップ３２０１に続いてステップ３２０３では、現集合内の任意のマークに対向する全てのマークは、対向マークの集合に追加される。また更に、任意の２つの対向マークが対向集合に含まれる場合、原点マークもその対向集合に追加される。原点マークを両方の集合に追加することにより、ステップ２６０６のテスト後、プッシュ動作が効果的に終了される。ステップ３２０３に続いて、ステップ３２０５では、対向集合内のマークによって左にプッシュされる全てのマークが、対向集合に追加される。これは、マークが負方向でプッシュされる（即ち、これらの座標が低下する）ことによって逆プッシュグラフが使用されることを除いて、ステップ３２０１と同一の方法で行なわれる。ステップ３２０５に続いて、ステップ３２０７では、対向集合内のマークに対向する任意のマークは、前方集合に追加される。ステップ３２０７は、ステップ３２０３の逆である。ステップ３２０７に続き、ステップ３２０９では、テストが実行されて、ステップ３２０７で新たなマークが前方集合に追加されるかどうかをチェックする。新たなマークが追加される場合、計算はステップ３２０１に戻り、ステップ３２０１，３２０３，３２０５及び３２０７が、２つの集合の両方に追加される新たなマークがなくなるまで繰り返される。
【０４４７】
ステップ２５０７において、移動距離は、２つの集合に関して独立して計算され、２つの距離のうち短い方（即ち、大きさが小さい方）が移動距離となる。ステップ２５０９において、マークは同一の距離だけ、反対方向に移動される。１つの集合内のマークは、正方向に移動され、他の集合のマークは、負方向に移動される。
【０４４８】
１７．５  形状規則を有するプッシュ動作
形状規則が水平マーク及び垂直マークと関連しているため、プッシュ動作を、形状規則を有する組み合わせレイアウトモデルと適合させることは、潜在的に複雑である。問題は、マークをプッシュする場合、同一方位のマーク間の複雑なインタラクションが形状規則及び他の規則の組み合わせによって行なわれることである。特に、単一の解を有さない循環依存を作成する可能性もある。この問題を回避するために、拘束はレイアウトモデルに挿入され、形状規則が、縦辺に対応する最大１つのマーク及び横辺に対向する最大１つのマークが最小オフセット規則内に実現するボックスに適用されるだけとなる。つまり、形状規則ボックスの対向する辺の各対のうち少なくとも１つは、最小オフセット規則が存在しない状態でなくてはならない。この拘束は、形状規則によるマーク間のいかなる複雑な関係も防止する。この拘束によって、プッシュアルゴリズムは修正されても良く、それによって、形状規則を含むボックスの任意の辺がステップ２５０９において移動する場合は常に形状規則が適用される。形状規則は、ボックスの自由辺を移動することによって適用され、自由辺が、任意の最小オフセット規則には含まれない辺となる。
【０４４９】
１７．６  文書テンプレートを編集するためのプッシュ動作の使用
ユーザが文書テンプレートを編集する間、ＧＵＩ３０１は、プッシュ動作を使用して例示的なレイアウトを修正する。図３４は、ＧＵＩ３０１がユーザにコンテナの固定辺を移動させる例示的な方法３４００を示す。ステップ３４０１で、ユーザは、例えばマウス１３３やポインタ３１３で辺を選択してドラッグすることによって辺が移動されるべきであることを示す。ステップ３４０１に続きステップ３４０２において、アプリケーション１０３は、移動される辺に対応するマークの位置を非固定とする。辺の位置は、通常、辺を表すマークと辺の同一の方位を有する原点マークとの間のオフセットを固定する固定オフセット規則を追加することによって固定される。辺を非固定とするために、固定オフセット規則は除去され、辺の位置が変更される。ステップ３４０２に続きステップ３４０３において、余剰の制約はレイアウトエンジン１０５に追加され、許可された辺の位置を制限する。辺が固定される場合、辺は移動できないため、辺の移動上の任意の追加制約の必要がない。しかし、レイアウトエンジン１０５が辺の位置を変更するのに使用される場合、通常、辺の移動範囲は制約を受ける。例えば、レイアウトエンジン１０５は、辺はレイアウトエリアの辺を超えて移動できないと示されても良い。更なる例として、辺がコンテナの左辺の場合、レイアウト矩形の左辺を表すマークと、コンテナの辺を表すマークとの間に非負のオフセット制約が追加されても良い。また、コンテナの最小幅及び最大幅が適用されても良い。文書テンプレートは、レイアウトエンジン１０５の各コンテナの最小幅及び最大幅、最小高さ及び最大高さを、それぞれ独立して格納するのに使用されても良い。コンテナの左辺及び右辺を表すマーク間に、最小オフセット制約及び最大オフセット制約を追加することによって、ユーザがコンテナの辺をドラッグする間、コンテナの最小幅及び最大幅の設定は、レイアウトエンジン１０５によって適用可能となる。
【０４５０】
ステップ３４０３に続いて、アプリケーション１２１は、ステップ３４０５において辺を移動するためのプッシュ動作を含む。このプッシュ動作は、辺の移動によって任意の制約が侵害されていないかを確認し、レイアウト規則で許可される範囲に移動を制限する。プッシュ動作に続いて、ステップ３４０７では、ステップ３４０３に追加される制約は除去され、ステップ３４１１において、辺の位置が新たな位置に固定される。ステップ３４１１の後、アプリケーション１２１は、レイアウトエンジン１０５を使用して、以下に説明する図２８、２９、３０Ａ、及び３０Ｂに示す通り、ステップ３４１３でレイアウトを再計算する。ステップ３４１３は、全ての最小距離規則及び好適オフセット規則が適用されることを確認する。ステップ３４１１は、ステップ３４１３が行なわれる場合に、レイアウトエンジン１０５が辺を他の場所に移動するのを防止するのに必要である。最後に、ステップ３４１３でレイアウトが再計算された後、アプリケーション１２１は、ディスプレイ１４４を更新し、辺の位置の変更結果を示して、更新が完了する。図３４のステップは、ユーザがコンテナの辺をマウスでドラッグするとき、ドラッグ中に即時フィードバックを提供することを繰り返しても良い。
【０４５１】
図３５は、文書テンプレートを編集するためにプッシュ動作が使用される可能性のある他の方法３５００を示す。方法３５００はステップ３５０１で開始し、ユーザは固定幅コンテナの幅に変更することを要求する。コンテナの位置は可変であり、左辺及び右辺は固定されないこととする。これは、キーボード１３２を使用して、ＧＵＩ３０１によって表示されるプロパティダイアログに新たな幅を入力することによって実施される。１つの実施の形態において、マウス１３３の右ボタンを使用してコンテナ上をクリックすることによって、パレット３１１と同様のコンテキストメニューが表示される。「プロパティ・・・」アイコンがコンテキストメニューから選択されて、プロパティダイアログを表示させても良い。ステップ３５０１の後、ステップ３５０３において、コンテナの現在の幅と新たな幅との間の差分が計算される。ステップ３５０３の後ステップ３５０５において、コンテナの幅は固定から非固定に変更される。コンテナの幅は、コンテナの左辺及び右辺を表すマーク間に固定オフセット規則を追加することによって固定される。このように、ステップ３５０５は、固定オフセット規則を除去することを含む。ステップ３５０５の後ステップ３５０７において、コンテナはレイアウトに追加され、コンテナの辺の移動を制限する。各コンテナの最小幅及び最大幅は、文書テンプレート内に存在しても良い。これらの制約は、規則をレイアウトに追加することによって適用される。最小値は、コンテナの左辺及び右辺を表すマークに関する最小オフセット規則を追加することによって適用され、最大値は、コンテナの左辺及び右辺を表すマークに関する最大オフセット規則を追加することによって適用される。
【０４５２】
ステップ３５０７からステップ３５０９に進み、プッシュ動作は、幅の差分だけ、コンテナの右辺に対応するマークを右に移動するのに使用される。幅の変更が負である、即ちより狭い幅のユーザの変更要求を表す場合、マークは負の距離だけプッシュされるため、右ではなく左にプッシュされる。次のステップ３５１１では、残りの必要な幅の変更が計算される。右辺を計算された距離だけプッシュする場合にプッシュ動作がステップ３５０９において成功すると、コンテナの幅は、正規のサイズに変更完了され、残りの距離は０となるであろう。ステップ３５０９においてプッシュ動作が成功しない場合、現在の幅は必要な幅に等しくならず、残りの距離は０とならないであろう。ステップ３５１１に続きステップ３５１３において、左辺はプッシュ動作を利用してステップ３５１１で計算されたサイズの残りの変更によって、左にプッシュされる。幅の残りの変更が負である場合、左辺は負の距離分、左にプッシュされるであろう。つまり、辺は右にプッシュされる。
【０４５３】
ステップ３５１１で計算された距離だけ左辺をプッシュするのがステップ３５１３で成功した場合、幅は要求された幅と同じになる。成功しない場合は、幅は要求された幅に可能な限り近い値になる。ステップ３５１３の後、ステップ３５０７で追加された制約は、ステップ３５１５で除去される。また幅は、コンテナの左辺及び右辺を表すマークに関する固定オフセット制約を追加することによって、ステップ３５１７で新たな幅で固定される。ステップ３５１７に続いて、レイアウトはステップ３５１９において再計算される。またディスプレイは更新され、ステップ３５２１で新たに計算されたレイアウトを反映する。その結果、コンテナの幅の変更動作が完了する。レイアウトの計算処理は、以下により詳細に説明される。図３５に示される例において、図２６で概要を示されたプッシュ動作の第２のバージョンが使用されることとする。図２５で概要を示されたバージョンが使用される場合、ステップ３５１１、３５１３は不要となるであろう。
【０４５４】
１８．レイアウト計算の詳細な説明
１８．１  単純なアルゴリズムを使用したレイアウト計算
１つの実施の形態において、許可された規則は、等価オフセット規則、縦横比（アスペクト）規則、最小オフセット規則、及び最大オフセット規則と共に基本モデルの規則である。ここで、基本モデル規則は線形不等化制約と同等であり、等価オフセット規則は線形制約であり、最小オフセット規則及び最大オフセット規則は１次目的関数を定義するのに使用される。このモデルでは、規則は線形プログラムを定義するため、単純アルゴリズム又は線形問題を解決する任意の他の方法を使用してレイアウト計算が実行される。
【０４５５】
この実施の形態において、目的関数は、最小オフセット規則によって関連付けられる一対のマーク間の各オフセットを加算し、この合計から最大オフセット規則によって関連付けられる一対のマーク間の各オフセットを減算することによって計算される。規則が強度を有する場合、オフセットは、加算又は減算の前に、まず対応する規則の強度によって乗算される。
【０４５６】
残念ながら、レイアウトが単純な方法への重要な修正をすることなく、単純な方法を使用して計算可能なモデルにテキスト規則を含ませる方法は知られていない。
【０４５７】
１８．２  修正された単純な方法
他の実施の形態において、許可された規則は、等価オフセット規則、縦横比規則、最小オフセット規則、及び好適オフセット規則と共に基本モデルの規則である。この実施の形態において、最小オフセット規則及び等価オフセット規則は、線形制約に変換され、最小距離規則及び好適オフセット規則は、２次目的関数を定義するのに使用される。このモデルにおいて、制約は１次等式及び１次不等式であり、目的関数は２次関数である。これらの種類の問題は、２次最適化の当業者にとって知られている方法を使用して解決されても良い。単純な方法の修正バージョンは、本モデルでレイアウトを計算するのに使用されても良い。
【０４５８】
単純な方法による通り、２次プログラミングへの重要な修正を行なわず、２次プログラミングを使用して様々な幅及び高さを有するテキストボックスを許可するモデルを扱うための既知の方法は存在しない。
【０４５９】
１８．３  グラフに基づいたレイアウト計算
他の実施の形態において、使用されるレイアウトモデルは、全ての基本モデル規則、好適オフセット規則、及び形状規則を許可する。このモデルは、固定中心規則が許可されないことを除いて、好適レイアウトモデルと同一である。この実施の形態において、基本規則は、最小オフセット規則を使用して表され、有向グラフとして格納される。好適オフセット規則は、別個の有効グラフとして格納される。形状規則は別に格納される。この方法は、縦横比規則及びテキスト規則の両方を組み込ませるという、単純な方法及び２次プログラミング方法より優れた利点を有し、他の形状規則も同様に組み込むように修正されることが可能である。
【０４６０】
更に、本実施の形態では、各コンテナはボックスに関連付けられている。いくつかのコンテナに関しては、更なる別個のボックスがコンテナに関連付けられ、コンテナの理想的なサイズ及び／又は形状を表すのに使用されても良い。最小オフセット規則は、レイアウトエンジン１０５に対して、理想的な形状を表すボックスのサイズ及び形状に可能な限り近似して、印刷又は表示されたコンテナの形状を表すボックスを作成するように命令するのに使用されても良い。コンテナの理想的なサイズ及び形状は、関連付けられたボックスに形状規則を適用することによって定義される。レイアウト計算方法は、コンテナのサイズ及び形状を、理想的なサイズ及び形状に可能な限り近づけて作成するよう動作する。理想的なサイズ及び形状では、レイアウト内の利用可能なスペースに当てはまらないことがあるため、コンテナを正確に理想のサイズ及び形状に作成することは、常に可能であるとは限らない。例えば、制約が理想的なサイズ又は形状を妨げる場合もある。
【０４６１】
最小オフセット規則は、マークの取りえる位置を制限する制約を定義するのに使用され、好適オフセット規則は、レイアウト計算方法によって最小化される目的関数を定義するのに使用される。また形状規則は、計算方法を動的に導くのに使用される。目的関数を定義するために、好適オフセット規則はそれぞれエネルギー値に関連付けられる。好適オフセット規則のエネルギーは、好適オフセットと実際のオフセットとの差分の２乗の２分の１である。総エネルギーと呼ばれる目的関数は、全ての好適オフセット規則のエネルギーの合計である。強度が好適オフセットに関連する場合、エネルギーに強度を乗算する。好適オフセット規則は、自然長を備え且つ圧縮又は伸長時に張力を有するバネとみなされても良い。好適オフセット規則の張力は、実際のオフセットと好適オフセットとの差分を乗算された規則の強度である。規則の強度は、バネの強さに類似している。レイアウトエンジン１０５は、全ての好適オフセット規則の張力を平均化して総エネルギーを最小化することによってレイアウトを計算する。
【０４６２】
図２８は、レイアウト計算に含まれる主なステップを示す図である。レイアウト計算方法２８００は、総エネルギーが最小化されるまで、いかなる最小オフセット規則も侵害することなくマークを移動する（即ち、位置を変更する）。方法２８００は、ステップ２８０１で開始し、レイアウトエンジン１０５が、いかなる基本モデル規則も侵害することなく移動可能で、目的関数の値を減少させるマークのグループを探索する。ステップ２８０３では、テストが実行されて、探索が成功したかどうかを調べる。成功した場合はステップ２８０５に進み、さもなければレイアウト計算は完了し、方法２８００は停止する。ステップ２８０５において、マークは適当な方向に適当な距離を移動されて、総エネルギーを減少させる。ステップ２８０５の後ステップ２８０１に戻り、移動する他のマークのグループを探索する。移動するマークのグループを選択する方法及びマークの移動距離を計算する方法は、以下により詳細に説明される。図２８に説明される処理が終了することを確認するため、マーク位置の小さな変更、及び／又はマーク位置の小さな変更による総エネルギーの若干の変更は無視される。１つの実施の形態において、位置の変更は、論理単位の整数に拘束されても良い。
【０４６３】
図２９は、任意の水平マークのグループが移動する（ステップ２９０３）前に、垂直マークが最初に移動する（ステップ２９０１）ことを除いて、図２８に示されるのと同等の手順２９００を示す。ステップ２９０５のテストは、ステップ２８０３のテストと同一の目的で行なわれる。本開示の範囲を逸脱せずに総エネルギーを減少させる方法を構成するための多数の可能な方法が存在する。
【０４６４】
図３０Ａは、ステップ２９０１−Ａの１つの実施の形態においてステップ２９０１が実施されて良いかどうかをより詳細に示す図である。ステップ３００１において、垂直マークに関するプッシュグラフは、計算される。これはどのマークが所定のマークによってプッシュされることが可能であるかを判定するのに使用される。いくつかの実施の形態において、このグラフは規則を表すグラフとは別のデータ構造であっても良い。他の実施の形態において、２つのデータ構造は組み合わせても良い。ステップ３００３において、第１の垂直マークは、垂直マーク及び水平最小オフセット規則を表すグラフから第１の頂点を検索することによって検索される。マークが探索される可能性のある多数の可能な順序が存在する。１つの実施の形態において、マークは、水平最小オフセット規則を表すグラフに対応する頂点が格納される順序で探索されても良い。ステップ３００３の後、方法はステップ３００５に進み、ステップ３００３で選択されたマークによって右にプッシュされることができるマークが計算される。ステップ３００５は、いかなる最小オフセット規則も侵害することなく、０ではない任意の距離だけ右に全て移動できるマークグループを判定する。このグループは、ステップ３００３で選択されたマークと、マークを選択することによってプッシュ可能となる全てのマーク（即ち、選択されたマークに対応する頂点からプッシュグラフ内で到達可能な頂点に対応する全てのマーク）とを備える。ステップ３００７は、いかなる最小オフセット規則も侵害することなくステップ３００５で判定されたマークグループが右に移動可能な最大距離を判定する。ステップ３００７の計算は、プッシュ動作のステップ２５０７の一部で行なわれる計算と同一である。ステップ３００７の後、ステップ３００９は、グループ内のマークが移動して総エネルギーを減少する距離を計算する。これはステップ３００７で計算された距離より大きくはない。ステップ３００９は、以下により詳細に説明される。移動距離は、論理単位の整数に拘束される。ステップ３００９の後、方法はステップ３０１１に進み、マークがステップ３００９で計算された距離だけ移動される。マークが変更された位置を有する可能性があるため、プッシュグラフは更新されて新たな位置の影響を反映する必要がある可能性がある。ステップ３００９で計算された距離がステップ３００７で計算された最大許可距離と同等である場合、プッシュグラフは変更が必要となるであろう。これはステップ３０１１に続くステップ３０１３において実行される。また、右へのマーク移動が総エネルギーを減少させないことも可能である。この場合、ステップ３００９で計算された距離は０となり、マークは実際に、ステップ３０１１において位置が変更されることはないであろう。両ステップ３０１１，３０１３は、無効な空命令となり、いくつかの実施の形態においてスキップされるであろう。ステップ３０１５，３０１７，３０１９，３０２１及び３０２３は、移動方向が逆であることを除いて、ステップ３００５，３００７，３００９，３０１１及び３０１３とそれぞれ同等である。これらのステップでは、逆プッシュグラフは、プッシュグラフの代わりに使用される。ソフトウェア技術の当業者は、プッシュグラフとして使用される有向グラフデータ構造を設計することによって、同一のプッシュグラフを逆方向に横移動でき、それによって別個の逆プッシュグラフが必要なくなることを理解するであろう。ステップ３０２３の後、テストが行なわれ、全ての頂点がステップ３００３において検査されたかどうかが判定される。検査されていない場合はステップ３００３に戻り、次のマークが選択される。全ての頂点が検査された場合はステップ２９０１が完了し、計算処理がステップ２９０３に進む。
【０４６５】
ステップ２９０３は、水平マーク及び垂直最小オフセット規則が垂直マーク及び水平最小オフセット規則に代わると考えられることを除いてステップ２９０１と同一である。
【０４６６】
図３１は、ステップ３００９で実行される計算方法の詳細を示す。ステップ３１０１では、総エネルギーの偏導関数（partial derivative）は、現マーク集合の現在の位置からの位置変更に関して計算される。総エネルギーの偏導関数は、張力の合計と同等である。偏導関数は、現集合内のマークと、現集合にないマークとを関連付ける好適オフセット規則の張力の合計と同等である。つまり、総計は、ｍが現集合内に存在するマークであり、ｎが現集合には存在しないマークである好適(ｎ,ｍ,ｄ,ｓ)形態の規則を超えている。なお、好適(ｍ,ｎ,ｄ,ｓ)規則は、任意のマークｍ及びｎに関して、好適(ｎ,ｍ,−ｄ,ｓ)規則と同等である。エネルギーは、張力の合計を可能な限り０に近似することによって最小化される。これはステップ３１０３でマークを以下の式に示す距離δだけ移動することによって達成される。
【０４６７】
δ＝−Ｄ／Ｓ
式中、Ｄは張力の合計であり、Ｓは現集合に存在するマークを現集合には存在しないマークに関連付ける好適オフセット規則の強度の合計である。ステップ３１０５において、テストが行なわれて、現マーク集合に関して考察される移動方向で目的関数が減少するかどうかを判定する。これはδが正であるかどうかのテストと同等である。マークを現在の方向に移動することによってエネルギーを減少できない場合、移動距離はステップ３１０７で０に設定される。マークを現在の方向に移動することによってエネルギーを減少できる場合、移動距離はステップ３１０９で計算される。移動距離は、δよりも少なく、ステップ３００７で計算された値である。マークの移動は、論理単位の整数に拘束されても良く、そのため、ステップ３００７で計算される距離は、論理単位の整数に丸められる。これにより、レイアウト計算の終了を確認する。
【０４６８】
原点マークに関する同一の考察は、上記のプッシュ動作に適用するのと同様に、レイアウト計算に適用する。これに関して、ステップ３００５が、水平座標系の原点を定義する指定された垂直マークが移動されるマーク集合に含まれても良いことを除いて、常に移動可能であるマーク集合を見出す場合には、原点マークはレイアウト計算によって無視されても良い。この場合、ステップ３００７は０ではない正距離を常に生成し、ステップ３０１１は、原点マークの位置を変更する。この場合、原点マークの位置は、ステップ３００１の前に格納され、原点マークの位置は、レイアウト内の全ての垂直マークを、計算中に原点マークが移動された距離をマイナスした分移動することによって再格納されるであろう。他の実施の形態において、原点マークはステップ３００７において考察される。これに関して、原点マークが移動されるマーク集合に含まれる場合、ステップ３００７で計算される距離は０である。この場合、レイアウト計算を行なうときに、原点は保存又は再格納されなくても良い。
【０４６９】
形状規則は、非固定幅及び非固定高さの両方を有するコンテナにのみ使用されれば良い。このようなコンテナに関して、コンテンツを含むコンテナの一部は、２つのボックスによって、レイアウトエンジン１０５内に表されている。１つのボックスは、コンテナに含まれる表示又は印刷されたテキスト又は画像の境界を表す。このボックスの境界は、レイアウトエンジンによって計算される。他のボックスは、そのボックスの理想的な形状を表す。このボックスは、形状規則によって制御され、一般にユーザに対しては印刷又は表示されない。２つのボックスは、１つの水平マーク及び１つの垂直マークを共有する。例えば、２つのボックスの左辺及び上辺の位置は常に同等である。左辺又は右辺が共有されるかどうか、又は上辺又は下辺が共有されるかの差はない。残りの２つの縦方向の辺は、最小距離規則によって関連付けられており、同様に、残りの２つの横方向の辺は、最小距離規則によって関連付けられている。最小距離規則は、２つのボックスが可能な限り近似したサイズで形成されることをレイアウトエンジンに示す。
【０４７０】
形状規則は、このような関連する一対のボックスのそれぞれの辺に関連する任意のマークを移動する場合に考慮される。共有される形状規則を有するボックスに属するマークは、ステップ３００３において無視及びスキップされても良い。しかし、これらの非共有マークは、形状規則を有さない関連ボックスの辺を表す任意のマークが移動される場合、ステップ３００９の前に調整される。水平マークに適用される同等のステップが、同様に適用される。非共有マークは、形状規則に関連して調整され、エネルギー機能を最小化する。この処理は、垂直マークと水平マークとの間でエネルギーが平均化されることを確認する。
【０４７１】
形状規則が縦横比規則である場合、エネルギーを最小化することは容易である。ディスプレイボックスの幅及び高さがＷ及びＨであり、理想的なボックスの幅及び高さがｗ及びｈであるとき、最小エネルギーは、Ｗ＋Ｈ＝ｗ＋ｈの場合に到達される。縦横比規則によって定義される高さと幅の割合がｒであるとき、理想的な幅及び高さは以下の通りに計算できる。
【０４７２】
ｗ＝(1＋r)-1(Ｗ＋Ｈ)  及び  ｈ＝r(1＋r)-1(Ｗ＋Ｈ)
形状規則がテキスト規則である場合は、理想的なボックスの形状に関する単純な公式は存在しない。テキストレイアウトエンジンは、計算を行なってテキストを矩形スペース内にレイアウトする。テキストレイアウトエンジンは、理想的なボックスの寸法を計算するのに使用される。テキストレイアウトエンジンは計算を行なって、テキストのブロックを所定幅を有するスペースにレイアウトし、テキストのレイアウトされたブロックの高さを迅速に計算する。テキストレイアウトエンジンは、ワードラップ計算を組み込み、テキストの長い行を複数の行にラップする。テキストレイアウトエンジンは、テキストに関するフォーマット情報に従ってテキストをレイアウトする。フォーマット情報は、段落のスタイル、例えば、各文字に対して使用されるボールド又は下線等のフォントのサイズやスタイルを含んでも良い。
【０４７３】
１つの実施の形態において、理想的な幅はテキストの最も広い幅の行に設定され、理想的な高さはディスプレイボックスの幅と同等の幅を有する、テキストレイアウトエンジンによって計算されたレイアウトされたテキストブロックの理想的な高さに設定される。これは、幅が最も長い行の幅よりも狭い場合、又はディスプレイボックスがテキストを含むほど十分に高くない場合、エネルギーペナルティを追加するという効果を有している。
【０４７４】
他の実施の形態において、テキストレイアウトエンジンは、最も低いエネルギー値となる幅が見出されるまで、各幅に対する高さを計算して異なる幅にテキストをレイアウトするのに使用される。テキストの最も幅広い行がディスプレイボックスと同等に幅広くない場合には、理想的な高さはテキストの最も幅広い行の幅に設定されても良く、理想的な高さは、行がラップされない場合にレイアウトエンジンによって計算される高さに設定されても良い。ラップされてディスプレイボックスに当てはめられるべきテキストが長い行を含む場合、探索ストラテジー（search strategy）は、最も少ないエネルギーを有するレイアウトとなる幅を見出すために採用される。多数の可能なストラテジーは、本開示の範囲を逸脱せずに理想的な幅を探索するために工夫されても良い。特に２値化探索ストラテジーは採用されても良い。
【０４７５】
他の実施の形態において、テキストが、ラップされてディスプレイボックスに当てはめられるべきテキストの長い行を含む場合、理想的なボックスの寸法は、テキストがレイアウトされてディスプレイボックスに当てはめることができるかどうかに基づいて計算される。テキストがディスプレイボックス内に当てはまらない場合、理想的なボックスの幅及び高さは、ディスプレイボックスより大きく形成される。テキストがディスプレイボックス内に当てはまる場合は、理想的なボックスの幅及び高さはディスプレイボックスより小さく形成される。このストラテジーは、ディスプレイボックスがテキストを含むのに必要なサイズよりも大きい又は小さいレイアウトに対して、ペナルティを追加する効果を有する。本開示の範囲を逸脱することなく、理想的なボックスの正確な寸法を計算する多数の可能な方法が存在する。使用される可能性のある１つの特別な方法は、ディスプレイボックスの現在の幅と同等の幅を有してレイアウトされる場合、テキストの高さをまず計算し、次にレイアウトされたテキストの高さとディスプレイボックスの高さとの差分の２分の１を、ディスプレイボックスの幅及び高さに加算し、理想的なボックスの寸法を得る。
【０４７６】
１８．３．１  単純な１次元レイアウトの例
図３９は、１８．３章及び以下で説明されるレイアウトメカニズムの使用例を示す。３つのボックス３９０１は、Ａ，Ｂ及びＣに特定される。各ボックス３９０１は、マーク３９０５によって左辺、上辺、右辺、下辺で定義される。ページの左辺及び右辺は、これらマーク間の固定距離を有する２つの垂直マーク（３９０３，３９０４）として定義される。コンテナのいくつかの辺と、ページのエッジとの間の距離を特定する固定オフセット規則３９０２が存在する。規則の詳細は、以下の通りである。
【０４７７】
・ページの幅は５０単位に固定される。
【０４７８】
・ＰA、即ちコンテナＡの好ましい幅は２２単位である。
【０４７９】
・ＰB、即ちコンテナＢの好ましい幅は１６単位である。
【０４８０】
・ＰC、即ちコンテナＣの好ましい幅は１３単位である。
【０４８１】
・（図３９で「ａ」と名づけられる）ボックスＡの左辺は、ページの左から１単位の位置である。
【０４８２】
・（「ｍ」と名づけられる）ボックスＡの右辺は、自由に移動する。
【０４８３】
・（「ｂ」と名づけられる）ボックスＢの左辺は、左辺「ａ」の６単位だけ右に位置する。
【０４８４】
・ボックスＢの右辺は、右辺「ｍ」の１単位左に位置する。
【０４８５】
・ボックスＣの左辺は、右辺「ｍ」の２単位左に位置する。
【０４８６】
・（「ｃ」と名づけられる）ボックスＣの右辺は、ページの右辺の１単位左に位置する。
【０４８７】
ボックスＡ，Ｂ及びＣの現在の幅をＷA，ＷB，及びＷCによってそれぞれ表す。便宜上、ページの左辺において０で開始してページの右方向に増加する座標系が使用される。また、記号「ａ」，「ｂ」，「ｃ」及び「ｍ」は座標系内の対応するマークの場所を意味する。
【０４８８】
好適オフセット規則のエネルギーは、好適オフセットと実オフセットの差分の２乗の２分の１である。このレイアウトに関する総エネルギーの目的関数は、全ての好適オフセット規則のエネルギーの合計である。そのため、目的関数は、以下の通りである。
【０４８９】
Ｅ(Ａ,Ｂ,Ｃ)＝1/2(ＷA−ＰA)2＋1/2(ＷB−ＰB)2＋1/2(ＷC−ＰC)2
＝1/2(ＷA−22)2＋1/2(ＷB−16)2＋1/2(ＷC−13)2
＝1/2[(ＷA−22)2＋(ＷB−16)2＋(ＷC−13)2]
＝1/2[((ｍ−ａ)−22)2＋((ｍ−ｂ−1)−16)2＋((ｃ−ｍ−2)−13)2]
＝1/2[(ｍ−ａ−22)2＋(ｍ−ｂ−17)2＋(ｃ−ｍ−15)2]
なお、各ボックスの幅を見出すために、そのボックスの最も左のマーク位置は、最も右のマーク位置から減算され、非負の数を得る。これによって、ＷBは、「ｍ」とボックスＢの右辺との間に１単位の間隔が存在するため（ｍ−ｂ−１）となる。またＷCは、「ｃ」が「ｍ」の右にあり、ボックスＣの左辺とマーク「ｍ」との間に２単位の間隔が存在するため、（ｃ−ｍ−２）となる。
【０４９０】
目的関数を最小化するために、「ｍ」は移動可能な唯一のマークである（実際、「ｍ」及びそれに近い２つのマークは移動しても良く、そのうちの任意のマークは等式中の制御変数として扱われ、そのため「ｍ」と名づけられた１つのマークが単純化のために使用される）。この場合、変数ｍに関するエネルギー関数の偏導関数を単純に見出し、それによって０である偏導関数を解くことで十分である。
【０４９１】
Ｅ(Ａ,Ｂ,Ｃ)＝1/2[(ｍ−ａ−22)2＋(ｍ−ｂ−17)2＋(ｃ−ｍ−15)2]
δＥ/δｍ＝(ｍ−ａ−22)＋(ｍ−ｂ−17)＋(ｍ−ｃ−15)
第３項で負である偏導関数がｍに関連するため、この項（ｍ−ｃ＋１５）の正負逆の符号について言及する。
【０４９２】
δＥ/δｍ＝ｍ−ａ−22＋ｍ−ｂ−17＋ｍ−ｃ−15
＝3ｍ−ａ−ｂ−ｃ−22−17＋15
＝3ｍ−ａ−ｂ−ｃ−24
このとき、０であるこの値を解くことによって最小エネルギーを見出すことができる。ａ，ｂ及びｃが、１，７及び４９の値をそれぞれ有することは知られている。
【０４９３】
０    ＝3ｍ−1−7−49−24
3ｍ  ＝1＋7＋49＋24
＝81
ｍ  ＝27
１つの変数のみが存在することにより、これは手順を終了させる。そのため、所定の配列の最も低いエネルギーは、マーク「ｍ」がページの左辺から２７単位右に位置するときである。
【０４９４】
１８．３．２  単純な２次元レイアウト例
図４０Ａは、レイアウトメカニズムの他の使用例を示す図である。この場合、移動しても良い水平マーク及び垂直マークが存在するため、この例は２次元の張力を呼び出す。
【０４９５】
マーク４００２によって境界を設定された既知の固定サイズの矩形ページに示されたＡ，Ｂ及びＣとラベル付けされた３つのボックス４００１が存在する。固定オフセット規則４００３，４００４，４００５及び４００６は、Ａ及びＣのそれぞれ３つの辺の場所を判定する。Ａの最も下の横方向の辺は移動しても良いが、固定オフセット規則によって（「ｍ」と名づけられた）Ｂの上辺と接続される。そのため、これら２つのマークは、同一の距離だけ共に移動されるのみである。同様に、（「ｎ」と名づけられた）Ｂの右辺及びＣの左辺は、移動しても良いが、両辺の間に固定オフセット規則が存在するため、同一の距離だけ共に移動されるのみである。
【０４９６】
ボックスＢの幅及び高さが変化しても良いため、形状規則はボックスＢに適用される。選択される規則は、ボックスＢの幅に対する高さの割合が０．５に可能な限り近づけること（これはＲB＝０．５とラベル付けされた矢印によって示される）を特定する縦横比規則である。ボックスＡは２２単位の好ましい高さを有し、ボックスＣは３６単位の好ましい幅を有する。ボックスＡ及びＣは（規則４００５，４００６によって）２次元的に自由に変化することはないため、両ボックスとも形状規則を有さない。
【０４９７】
規則の詳細は、以下の通りである。
【０４９８】
・ページの幅は５０単位に固定される。
【０４９９】
・ページの高さは３６単位に固定される。
【０５００】
・ＰA、即ちコンテナＡの好ましい高さは２２単位である。
【０５０１】
・ＲB、即ちコンテナＢの好ましい高さと幅の割合は０．５である。
【０５０２】
・ＰC、即ちコンテナＣの好ましい高さは３６単位である。
【０５０３】
・（「ａ」と名づけられる）ボックスＡの上辺は、ページの上から２単位の位置である。
【０５０４】
・ボックスＡの左辺は、ページの左辺から１単位右の位置である。
【０５０５】
・ボックスＡの右辺は、ページの左辺から１８単位右の位置である。
【０５０６】
・（「ｍ」と名づけられる）ボックスＢの上辺は、移動しても良い。
【０５０７】
・ボックスＡの下辺は、上辺「ｍ」の２単位上の位置である。
【０５０８】
・（「ｂ」と名づけられる）ボックスＢの左辺は、ページの左辺から１単位右の位置である。
【０５０９】
・（「ｄ」と名づけられる）ボックスＢの下辺は、ページの下辺から３単位上の位置である。
【０５１０】
・（「ｎ」と名づけられる）ボックスＢの右辺は、移動しても良い。
【０５１１】
・ボックスＣの左辺は、「ｎ」の２単位右に位置する。
【０５１２】
・ボックスＣの下辺は、ページの下辺から上に３単位である。
【０５１３】
・（「ｃ」と名づけられる）ボックスＣの右辺は、ページの右辺から２単位左である。
【０５１４】
・ボックスＣの上辺は、ボックスＣの下辺から上に１６単位である。
【０５１５】
ＨA，ＷA，ＨB，ＷB，ＨC及びＷCを、それぞれボックスＡの高さ及び幅、ボックスＢの高さ及び幅、ボックスＣの高さ及び幅とする。
【０５１６】
ＰHB及びＰWBを、それぞれボックスＢの好ましい高さ及び幅とする。ボックスＢの好ましい高さ及び幅は、レイアウトアルゴリズムへの固定された入力ではなく、これらは、ボックスＢに関して幅及び高さに関連する縦横比規則である形状規則を使用することによって、所定の段階において計算される。これらの値は、ボックスＢの高さ及び幅の重み付けされた平均として計算される。
【０５１７】
ＰWB＝(ＷB＋ＨB)/(1＋ＲB)＝2/3(ＷB＋ＨB)
ＰHB＝ＲB(ＷB＋ＨB)/(1＋ＲB)＝1/3(ＷB＋ＨB)
この構成のエネルギーを表す目的関数は、水平方向及び垂直方向の張力の２乗の合計の２分の１として得られても良い。
【０５１８】
Ｅ(Ａ,Ｂ,Ｃ)＝1/2(ＨA−ＰA)2＋1/2(ＨB−ＰHB)2＋1/2(ＷB−ＰWB)2＋1/2(ＷC−ＰC)2
＝1/2[(ＨA−ＰA)2＋(ＨB−ＰHB)2＋(ＷB−ＰWB)2＋(ＷC−ＰC)2]
＝1/2[(ｍ−2−ａ−ＰA)2＋(ｄ−ｍ−ＰHB)2＋(ｎ−ｂ−ＰWB)2＋(ｃ−ｎ−2−ＰC)2]
（実際にエネルギーの計算を必要とすることなく）このエネルギーを減少させるためには、水平次元及び垂直次元の張力の絶対値の合計がもはや減少されなくなるまで、両次元の目的関数の偏導関数を減少させることで十分である。これは最も低い張力を有する構成を作成する。張力の絶対値は使用され、負及び正の張力が停止状態において、同様に扱われる。偏導関数は、以下の通りである。
【０５１９】
δＥ/δｎ＝ｍ−2−ａ−ＰA＋ｍ−ｄ＋ＰHB＝2ｍ−59＋ＰHB
δＥ/δｎ＝ｎ−ｃ＋2＋Ｐc＋ｎ−ｂ−ＰWB＝2ｎ−11＋ＰWB
偏導関数をそれぞれ０に設定することによって最小化するため、以下の関係が得られる。
【０５２０】
ｍ＝1/2(2＋ａ＋ＰA＋ｄ−ＰHB)＝1/2(59−ＰHB)
ｎ＝1/2(ｃ−2−ＰC＋ｂ＋ＰWB)＝1/2(11＋ＰWB)
この例示的な目的のため、ボックスＢの初期の幅及び高さをそれぞれ１５単位及び１０単位とし、それによってｍ＝ｄ−１０＝３３−１０＝２３及びｎ＝ｂ＋１５＝１６となる。
【０５２１】
ＷB＝15
ＨB＝10
ｍ＝23
ｎ＝16
ボックスＢの好ましい幅及び高さは、以下の通り計算されても良い。
【０５２２】
ＰWB＝2/3(ＷB＋ＨB)
＝2/3(15＋10)
＝50/3
＝16 2/3
＝16  （但し、整数単位に丸めた場合）
ＰHB＝1/3(ＷB＋ＨB)
＝1/3(15＋10)
＝25/3
＝8 1/3
＝8  （但し、整数単位に丸めた場合）
水平張力及び垂直張力の絶対値の合計は計算され、それによって、レイアウトメカニズムが終了するべき時を判定することができる。この場合、水平張力ＴXは、ボックスＢ及びＣの現在の幅とこれらの好ましい幅との差分の合計である。同様に、垂直張力ＴYは、ボックスＡ及びＢの現在の高さとこれらの好ましい高さとの差分の合計である。
【０５２３】
ＴX＝(ＷC−ＰC)＋(ＷB−ＰWB)
＝(ｃ−ｎ−2−36)＋(ｎ−ｂ−ＰWB)
＝ｃ−38−ｂ−ＰWB  （ｎを消去した場合）
＝48−38−1−ＰWB
＝9−ＰWB
＝9−16
＝−7
ＴY＝(ＨB−ＰHB)＋(ＨA−ＰA)
＝(ｄ−ｍ−ＰHB)＋(ｍ−2−ａ−22)
＝ｄ−ＰHB−2−ａ−22  （ｍを消去した場合）
＝33−ＰHB−2−2−22
＝7−ＰHB
＝7−8
＝−1
張力が負であるということは、マークが左又は上に移動してこれらの張力を減少することが必要である可能性があることを示す。
【０５２４】
全ての張力は、垂直張力及び水平張力の絶対値の合計である。
【０５２５】
ＴTOTAL＝|ＴX|＋|ＴY|
＝|−7|＋|−1|
＝7＋1
＝8
レイアウトメカニズムは、この全ての張力がもはや減少されなくなるまで、水平次元及び垂直次元において、張力を減少させるために進む。
【０５２６】
まず、垂直マークは水平方向に移動される。Ｂの好ましい幅は、初期段階で以下のように計算される。
【０５２７】
ＰWB＝2/3(ＷB＋ＨB)
=16
移動されても良い垂直マークのみが「ｎ」であり、固定オフセット規則によって（２単位右に）接続されているマークである。両マークは、水平張力の最小化を試行するような方法で移動される。これにより、他のマーク位置が（ｎ＋２）として演繹されるため、「ｎ」が移動されるべき場所は判定されるだけで十分である。関係によって初期段階に説明した通り、「ｎ」の場所は計算され、ｎに関する目的関数の偏導関数を減少させる。
【０５２８】
ｎ＝1/2(11＋ＰWB)
＝1/2(11＋16)
＝13 1/2
＝13  （但し、整数単位に丸めた場合）
マーク「ｎ」は場所１３に移動されて水平張力を減少させ、ボックスＢの幅も１２に変更する。
【０５２９】
ＷB＝12
ＨB＝10
ｍ＝23
ｎ＝13
ボックスＢの好ましい幅及び高さは、形状規則によって変更される。
【０５３０】
ＰWB＝2/3(ＷB＋ＨB)
＝2/3(12＋10)
＝44/3
＝14 2/3
＝14  （但し、整数単位に丸めた場合）
ＰHB＝1/3(ＷB＋ＨB)
＝1/3(12＋10)
＝7  （但し、整数単位に丸めた場合）
このとき、全ての張力は、再計算されて減少されたかどうかを調べる必要がある。減少されていない場合、レイアウト手順は停止する。新たな張力は、以下の通りである。
【０５３１】
ＴX＝9−ＰWB
＝9−14
＝−5
ＴY＝7−ＰHB
＝7−7
＝0
ＴTOTAL＝|ＴX|＋|ＴY|
＝|−5|＋|0|
＝5
全ての張力が８から５に減少したため、手順は継続する。
【０５３２】
このとき、水平マークは垂直方向に移動される。この場合、「ｍ」及びそれに接続するマークのみが移動する。接続されるマークが（ｍ−２）に移動するため、「ｍ」が移動されるべき場所を計算することで十分である。前記関係によって決定された通り、目的関数の偏導関数はｍに関連して最小化される。
【０５３３】
ｍ＝1/2(59−ＰHB)
＝1/2(59−7)
＝26
マーク「ｍ」は場所２６に移動されて垂直張力を減少させる。固定オフセット規則によって接続されるマークは、場所２４に移動する。
【０５３４】
ＷB＝12
ＨB＝7
ｍ＝26
ｎ＝13
このとき、ボックスＢの好ましい幅及び高さ及び全ての張力は、再計算される。
【０５３５】
ＰWB＝2/3(ＷB＋ＨB)
＝2/3(12＋7)
＝38/3
＝12 2/3
＝12  （但し、整数単位に丸めた場合）
ＰHB＝1/3(ＷB＋ＨB)
＝1/3(12＋7)
＝6 1/3
＝6  （但し、整数単位に丸めた場合）
ＴX＝9−ＰWB
＝9−12
＝−3
ＴY＝7−ＰHB
＝7−6
＝1
ＴTOTAL＝|ＴX|＋|ＴY|
＝|−3|＋|1|
＝4
全ての張力が５から４に減少されたため、手順は継続する。垂直マークは、水平方向に再度移動され、張力を減少させるよう試行する。
【０５３６】
ｎ＝1/2(11＋ＰWB)
＝1/2(11＋12)
＝11 1/2
＝11  （但し、整数単位に丸めた場合）
マーク「ｎ」は場所１１に移動する。ボックスＢの幅は、１０単位となる。
【０５３７】
ＷB＝10
ＨB＝7
ｍ＝26
ｎ＝11
ボックスＢの好ましい幅及び高さ及び全ての張力は、再計算される。
【０５３８】
ＰWB＝2/3(ＷB＋ＨB)
＝2/3(10＋7)
＝34/3
＝11 1/3
＝11  （但し、整数単位に丸めた場合）
ＰHB＝1/3(ＷB＋ＨB)
＝1/3(10＋7)
＝5 2/3
＝5  （但し、整数単位に丸めた場合）
ＴX＝9−ＰWB
＝9−11
＝−2
ＴY＝7−ＰHB
＝7−5
＝2
ＴTOTAL＝|ＴX|＋|ＴY|
＝|−2|＋|2|
＝4
全ての張力が４未満には減少されないため、手順はここで停止する。或は、水平マークも、手順が停止する前に移動されても良い。
この例示的な最終結果は、図４０Ｂに示す通りである。尚、この場合、ボックスＡ及びＣは重畳しても良い。これは望ましい効果である。重畳しない場合、それを回避するため、他の制約を追加することを必要としても良い。例えば、最小オフセット規則を追加して、ボックスＣの左辺をボックスＡの右辺の右側に保持することが可能であろう。
【０５３９】
この例は、１つの形状規則及び２つの好適オフセット規則を示すのみであるが、実際のアプリケーションは、各ボックスに対して形状規則を採用しても良い。また、形状規則は、ボックスに表示されるコンテンツによって異なる。例えば、縦横比規則及びテキスト形状規則は、両方とも使用されても良い。各規則は、その形式において理想的なボックス形状を計算する。
【０５４０】
１８．４  固定中心を有するグラフに基づくアルゴリズム
レイアウトエンジン１０５において、固定中心規則の使用が許可され、そのため、レイアウト計算が修正されて、固定中心規則を正確に操作することが必要となる。ステップ２９０１（図２９）のレイアウト計算に対する修正は、図３０Ｂでステップ２９０１−Ｂとして示され、プッシュ動作で固定中心規則を支援するための修正と同様となる。図３０Ｂは図３０Ａとほぼ同一であるが、レイアウトが計算される場合に固定中心が考察される方法を示す。ステップ３００１，３００３，３００５，３００９，３０１３，３０１５，３０１９，３０２３，３０２５は、図３０Ａ，図３０Ｂと共通である。
【０５４１】
図３０Ｂにおいて、プッシュされるマークを計算する場合、ステップ３００５，３０１５は、対向マークを含まなくてはならない。１つの方向に移動する単一のマーク集合を計算するのではなく、２つのマーク集合が計算される。即ち、右に移動する１つの集合及び左に移動する他の集合である。これはプッシュ動作に関して同一である。図３０Ｂにおいて、ステップ３００８は、ステップ３００７を置換して、最大移動距離が２つのマークセットに関して独立して（固定中央規則は無視して）計算される。次に、２つの値の最小（の大きさ）は、マークが移動しうる最大距離である。ステップ３０１１はステップ３０１２によって置換され、ステップ３０２１はステップ３０２２によって置換され、その差は両マーク集合が移動されることである。ステップ３０１２において、ステップ３００３で選択されるマークを含む集合は右に移動し、第１の集合内のマークに対向するマークを含む集合は左へ移動する。ステップ３０２２において、ステップ３００３で選択されたマークを含む集合は左へ移動され、第１の集合内のマークに対向するマークを含む集合は、右に移動する。同一の考察が、プッシュ動作の修正に関して適用して固定中心を含む。これに関連して、任意の２つの対向マークが同一の集合内にある場合、原点マークは両方の集合に追加されるべきである。原点マークを移動することは、全ての固定マークが移動され、それによって固定中心を有する全てのボックスも移動されることを要求するため、原点マークが含まれる場合には、論理的には、同一の方位の対向マークの全ての対は両方の集合に含まれるべきである。もちろん、原点マークと対向マークの全ての対とを含む集合は移動されるべきではないため、これらを実際に作成する必要はない。ステップ３００８は、原点マークが両方の集合に含まれる場合、最大距離を０に設定する。そのためステップ３００９，３０１２及び３０１３は、空命令となり、スキップされる。ステップ３０１８はステップ３０１７を置換し、ステップ３００８のように、最大距離は、ステップ３００３で選択されたマークを含む両方の集合、また、選択されたマークを含む集合内のマークに対向する全てのマークに関して計算される。ステップ３０１８は、同様に、原点マークが２つの集合のいずれかに含まれる場合、最大距離を０に設定する。
【０５４２】
１９．文書の印刷
図３６は、文書テンプレートから文書を作成及び印刷するステップに含まれる方法３６００ステップを示す。方法３６００はステップ３６０１で開始され、アプリケーション１２１がデータベースに接続し、且つデータベースカーソルを必要なソースデータを備えるテーブルの始めに設定する。ユーザは図１４と同様に、ダイアログを介して接続するデータベースを特定しても良い。ステップ３６０１に続いてステップ３６０３で、次のレコードがデータベーステーブルからフェッチされ、カーソルが次のレコードを指すように更新される。文書集合内の各文書が１つのレコードに対応するため、新たな文書が開始され、ページカウンタが文書テンプレートの開始状態にリセットされる。ステップ３６０５では、アプリケーション１２１が生成されている文書に関する新たなページを成立させ、ページに関するレイアウトが供給され、ページに適用される。ステップ３６０７では、現レコードのデータが現ページ上のレイアウト内の各コンテナに関する理想的なサイズを計算するのに使用される。ステップ３６０７で計算された理想的なサイズは、その後、ステップ３６０９でレイアウト規則を調整するのに使用される。このような動作は、好適オフセット規則の値の変更とステップ３６０７で計算された理想的なサイズに基づいた縦横比規則の更新とを含む。更に、テキストの幅も高さも固定されない可変テキストコンテナに関して、高さ及び幅が、ステップ３６０３でフェッチされたデータベースレコード内のフィールドからのテキストに基づいたテキスト規則と関連して決定される。このようなテキスト規則もステップ３６０９で更新される。ステップ３６０９の後、現ページに関するレイアウトがステップ３６１１で計算される。レイアウトが計算された後、ページは、ステップ３６１３で描画及び印刷される。ページが印刷された後、テストがステップ３６１５で実行され、現文書の全てのページの印刷が完了したかどうか判定する。印刷が完了していない場合、方法３６００はステップ３６０５に戻り、次のページの計算を開始する。現文書に関する文書テンプレートからの全てのページの印刷が完了している場合はステップ３６１７に進み、他のテストが実行されて、現レコードがデータベーステーブルの最後のレコードであるかどうかを判定する。テーブルの全てのレコードが処理された場合、方法３６００は完了し、さもなければ、処理はステップ３６０３に戻り、テーブルの次のレコードがフェッチされることによって次の文書が印刷可能となる。
【０５４３】
２０．可能なテキスト形状の予備計算
１つの方法は、レイアウトメカニズムの速度を増加させる。例えば、１８章で説明されたグラフに基づいたレイアウト方法は、レイアウトに含まれるであろう任意のテキストの全ての形状を予備計算することになっている。レイアウト計算を実施する前に形状を計算することによって、テキスト形状の計算が既に完了して後続の高速な検索のために結果が格納されているため、レイアウトメカニズムは早く進む。いくつかのテキストの可能な形状を計算する方法は、図４１（Ａ）〜（Ｋ）の例によって図示される。
【０５４４】
この方法は、以下の方法で機能する。
【０５４５】
１．図４１（Ａ）のように（各語４１０２が境界ボックス４１０３内に示される）、必要な語の間に適切なスペースを設けて、端から端までテキストの語を水平に配置する。この全体の語の設定の幅及び高さは、これら語を囲む最も小さいボックス４１０１として決定される。境界ボックス４１０３のサイズは、メモリデータ構造に格納される。これら語は、必要に応じて別のフォントを使用して測定されても良い。尚、小さい間隙は、明確化するため、境界ボックス４１０３と語ボックス４１０２との間に図示されるが、この間隙は実際の実施の形態では存在しないであろう。
【０５４６】
２．境界ボックスの幅は得られ、使用される座標系の１単位だけ減少される。その後、テキストは、幅制約としての新たな幅を用いて再度レイアウトされる。テキストは、この幅制約とテキスト言語のテキスト流れの規則とに要求されるように後続の行に流れる。高さ制約は存在しないため、必要なだけ多数の行が使用されても良い。図４１（Ｂ）に示す通り、新たな境界ボックスはその結果から決定される。この新たな境界ボックスも、メモリデータ構造に保持される。語間のスペース４１０５は、テキスト言語の自然スペーシング規則に従う。例えば英語では、行の端のスペースは、境界ボックスの計算を実行することなくカウントされない。いくつかの言語に関して、継続する語又は語間のスペースの定義は、この例から変化しても良い。
【０５４７】
３．ステップ２は、より狭い幅の境界ボックスにおいてテキストがレイアウトされなくなるまで繰り返される。図４１（Ｃ）〜図４１（Ｋ）はこの処理を例示する。なお、例えば語「Brevity」等の各語は、その中にオプションとしてハイフネーション区切り４１０４を有し、図４１（Ｈ）〜（Ｋ）に示す通り、語を区切るのを許可する。英語でこの処理を行なう場合、規則はハイフン４１０６を追加する。このような動的に挿入される句読点のサイズ及び配置は、通常、テキスト言語の規則に基づいている場合でも、任意の境界ボックスの計算に含まれる。
【０５４８】
４．計算されたテキスト形状は、格納された境界ボックスである。これらの形状は、幅又は高さ或はその両方に関する制約が与えられるテキスト部分のサイズを知る必要がある場合、レイアウトメカニズムで使用されても良い。また、これらの形状は、テキストのいくつかの取り得るレイアウト間で迅速に決定するように、所定の次元において、何が次に大きい又は次に小さい形状であるかを知るのに使用されても良い。
【０５４９】
この説明された実施の形態は、既知の最小サイズの語間のスペースを使って左から右に書かれた言語によって明確に使用されることになっている。別の構成は、これらの規則に従わない言語に関して形成されても良い。例えば、いくつかのアジアの言語では、記号を上から下に縦に書き、これらの列は右から左に書かれる。このような言語に関しては、レイアウト処理は、垂直方位及び水平方位の役割を修正して入れ替える。また、スペース文字のサイズは、より小さい値又は０に減少されても良い。そのため、文字はステップ１で垂直に積み重ねられる。その後、ステップ２で、徐々に幅が広くなる境界ボックスを形成するために繰り返される処理によって、１単位分の高さ（文字の高さであっても良い）が減少されるであろう。同様に、各言語のハイフネーション規則は、テキストの言語に従うであろう。
【０５５０】
２１．  表の作成例
図４２Ａ〜図４２Ｃは、１８章で説明されたグラフに基づくレイアウトメカニズムを使用して表を構成するいくつかの方法を示す。表は、セルに分割され、オプションとして各セルがテキスト又は画像等のいくつかのコンテンツを保持する矩形エリアとして定義される。
【０５５１】
図４２Ａは、表を定義する１つの方法を示す。ガイド４２０３は、行位置及び列位置を定義するのに使用される。コンテナ４２０１はガイド間に挿入され、コンテンツが挿入される表内でセルとして機能する。ストラット４２０２は、ガイド４２０３とコンテナ４２０１の対応する隣接辺との間に設けられ、隣接セルのコンテンツ間のマージンを定義している。このようなストラットは、セルが互いに同じ高さにされることを意図する場合、長さ０を含む任意の必要な長さを有しても良い。
【０５５２】
ガイドは、非固定（浮動するガイド）であっても良く、そのため、各セルのコンテンツはガイドをプッシュしてもよく、それによって列サイズ及び行サイズは、異なるサイズのコンテンツを収容するように調整される。或は、ガイドはページに固定されて、行又は列を所定のサイズ又は場所に拘束しても良い。また浮動ガイドは、ストラットをガイド間に挿入することによって、行サイズ及び列サイズを制御するために使用される。これによって（ガイドがページに固定されないため）、表全体がページ上で移動可能となるが、それにも係わらず、行サイズ及び列サイズはこの技術によって制御される。
【０５５３】
なお、表内のコンテナの外側辺は、ページに固定されるが、これは必須ではない。他のより良い方法は、ガイドを使用して表の最も外側の境界を定義しても良く、これらのガイドとコンテナの外側辺との間にストラットを挿入して、これらの辺を同時に移動しても良い。
【０５５４】
図４２Ｂは、表を定義する他の方法を示す。この例ではガイドは使用されない。むしろ、ストラット４２０５は、隣接するコンテナ４２０４の辺間に直接接合され、行及び列のマージンサイズを特定する。このようなマージンを特定するストラット４２０５は、最上位のコンテナと左端のコンテナとの間でのみ必要とされる。表内の他のコンテナは、長さ０のストラット４２０６を使ってこれらの制約にリンクされる。
【０５５５】
図４２Ｂに示される例において、上列のコンテナの下辺は、これら下辺が互いに正確に配列されるように、高さ０のストラット４２０６によってリンクされる。同様に、下列のコンテナの上辺は、これらが配置されるように、高さ０のストラットによってリンクされる。同時に、これは、１つの垂直ストラット４２０５のみが、２つの列のコンテナ間のマージンサイズを定義し且つ制御するために必要とされることを意味する。特に、表のマージンを変更することが、多数のストラットを図４２Ａの例のように変更することが要求されるよりも、１つのストラットを好ましい又は実際の距離に変更することだけ含むことを意味しているので、図４２Ｂの例は、非常に有用である。同様の論理は、左端の行の右辺をリンクし、更に右端の行の左辺をリンクする、幅０のストラット４２０６に関して保持される。
【０５５６】
図４２Ａに示すように図４２Ｂの例も、ページに固定された表の外側辺を有する。表の場所及びサイズをこのように固定する代わりに、内側辺が配列されるように、長さ０のストラットを使用してコンテナの全ての外側辺を配列することができる。これによって表は、多数の固定外側辺の場所を１つ１つ変更する必要なく、ページ上の必要な全ての場所へ移動できる。このアプローチは、１８．３章に記載のレイアウト方法を使用して生成されても良い。
【０５５７】
第３の選択肢は、ガイドを使用して、表の外側辺と、表の内側辺を配列する長さ０のストラットとを定義しても良い。同様な結果に到達するガイド及びストラットの他の存続可能な組み合わせが多数存在する。
【０５５８】
なお、表の内側辺を配列するいくつかの方法は、従来の表の概念を形成するのに必要である。図４２Ｃは、ガイドもストラットも内部辺を配列するのに使用されない場合、何が起こ得るかを示す。コンテナ４２０７は、表セルとして再度使用され、ストラット４２０８は、隣接コンテナ間の距離を定義するのに使用される。しかし、この例は、行及び列の内側辺が離間していないため、斜め方向に対向するコンテナを重畳させない状態にする方法が欠如している。
【０５５９】
これにより、コンテナ及びコンテンツの興味深い存続可能な構成が実現され、１８．３章及びそれ以降で説明したレイアウト方法が（レイアウト方法の全ての従来例が可能であるとは限らない）このような構成を生成可能となる。しかし、従来の表の概念に関して、図４２Ａ及び図４２Ｂに示される例は、行及び列を正しく配列するのに、より適している。
【０５６０】
上記の構成は、コンピュータ及びデータ処理産業に適用され、特に、同一のフォーマット及びレイアウトを本質的に有する多数の文書が可変データで再生成される状況に適用される。この例は、全員が異なる名前、住所、その他の個人的詳細情報を有する多数の人物に関する対応表の作成を含む。他の例は、テキスト及び画像を含む固有のコンテンツによって特徴付けられる異なる休日の行先に関する広告パンフレットの作成のためであるが、これによって、全てのパンフレットは、広告を出す組織の商標又は外観を示す共通レイアウトに従って作成される。多数の他の例も、適用される。
【０５６１】
前述の事項は、本発明のいくつかの実施の形態を説明するものであり、本発明の範囲から逸脱することなく変形及び／又は変更が可能であり、この実施の形態は実証するものであって制限するものではない。
【図面の簡単な説明】
【０５６２】
【図１Ａ】本実施の形態に係る可変データ印刷のためのコンピュータシステム構成を説明する図である。
【図１Ｂ】図１Ａのコンピュータモジュールの概略ブロック図である。
【図２】本実施の形態に係る可変データ印刷のための別のコンピュータシステム構成を説明する図である。
【図３】メニューバー、ツールバー、作業エリア及び浮動パレットを含むアプリケーションメインウィンドウの一例を示す図である。
【図４】本実施の形態に係るコンテナ作成、コンテナ間の第１の種類のストラット、アンカー及びスライダを例示する態様を説明するための画面、ツール及びアイコンを例示する図である。
【図５】本実施の形態に係る第１のコンテナ規則の例を示す図である。
【図６Ａ】、
【図６Ｂ】、
【図６Ｃ】本実施の形態に係る第３のコンテナ規則を示す図である。
【図６Ｄ】、
【図６Ｅ】コンテナ範囲の生成を説明するフローチャートである。
【図７Ａ】、
【図７Ｂ】３つの列を有するテキストコンテナと、指示デバイスを使用する直接操作により列幅及びガター幅の双方のサイズを再設定する方法とを説明する図である。
【図８】文字サイズ同期の動作を示すための画面、ツール及びアイコン例を示す図である。
【図９】内側マージンの自動適用の動作を示すための画面、ツール及びアイコン例を示す図である。
【図１０】距離制約を説明するために、２つのコンテナの辺の間にストラットを追加する方法を示す図である。
【図１１】第２の例のコンテナの間のストラットを含むユーザインターフェースのいくつかの特徴動作を示すための画面、ツール及びアイコンを示す図である。
【図１２】非固定のガイドの動作を説明する画面例を示す図である。
【図１３】、
【図１４】データソースの選択方法を示す図である。
【図１５】データソースのフィルタリングのためのユーザインターフェースを示す図である。
【図１６】、
【図１７】データソースを通してナビゲートするための方法を示すユーザインターフェース例を示す図である。
【図１８】データソースの変数及びデータソースを通してナビゲートするための方法を示すユーザインターフェースの一例を示す図である。
【図１９】データソースの変数と、可変文書テンプレートとを関連付けるためのユーザインターフェース例を示す図である。
【図２０】可変文書テンプレートにマージされたデータソースコンテンツのライブプルーフィングのためのユーザインターフェース例を示す図である。
【図２１Ａ】、
【図２１Ｂ】選択的プルーフィングで使用するための、文書ごとにコンテナの幅及び高さを用いた、平均文書と最も異なる文書とを計算する方法を説明するフローチャートである。
【図２２】レイアウトアイテムと、レイアウト方法で入力として使用される制約とを示すレイアウト例を示す図である。
【図２３】図２２の例に対応する縦方向の制約を説明する図である。
【図２４】図２３の縦方向の制約を表す有向グラフを示す図である。
【図２５】プッシュ動作を実行する処理を説明するフローチャートである。
【図２６】プッシュ動作の別の実施形態に関連する処理を説明するフローチャートである。
【図２７Ａ】、
【図２７Ｂ】プッシュ動作の一例の開始位置を示す図である。
【図２７Ｃ】、
【図２７Ｄ】プッシュ動作の一例の中間段階を示す図である。
【図２７Ｅ】、
【図２７Ｆ】プッシュ動作の一例の結果を示す図である。
【図２８】グラフ利用レイアウト計算におけるハイレベルステップを示すフローチャートである。
【図２９】グラフ利用レイアウト計算の１つの実施の形態におけるハイレベルステップを示すフローチャートである。
【図３０Ａ】グラフ利用レイアウト計算が、垂直マークを移動させることによりエネルギー関数の値をいかにして減少させるかを説明するフローチャートである。
【図３０Ｂ】固定中心規則の処理を含むグラフ利用レイアウト方法の別の実施形態を示すフローチャートである。
【図３１】グラフ利用レイアウト計算において、マークのグループを移動させるべき距離がいかにして計算されるかを示すフローチャートである。
【図３２】マークの集合が右側に押されるときに、押される順方向マークの集合及び逆方向マークの集合を計算する処理を示すフローチャートである。
【図３３Ａ】、
【図３３Ｂ】、
【図３３Ｃ】基本モデルの様々に異なる表現を使用して、コンテナの最小高さ及び最大高さがどのようにして指定されるかを説明する図である。
【図３４】レイアウト及び及び他の辺との相互作用によるコンテナの辺位置の修正を示すフローチャートである。
【図３５】文書テンプレートを編集するためのプッシュ動作の別の例を示すフローチャートである。
【図３６】可変データ文書を生成、印刷する方法を示すフローチャートである。
【図３７Ａ】、
【図３７Ｂ】、
【図３７Ｃ】、
【図３７Ｄ】図４に対応するレイアウト例及びレイアウトの様々な制約を格納する方式を示す図である。
【図３８】第２のコンテナ規則でコンテナ制約を表現するための高さバー及び幅バーの使用を示す図である。
【図３９】１つの次元で動作するレイアウトエンジンの使用例を示す図である。
【図４０Ａ】、
【図４０Ｂ】２つの次元で動作するレイアウトエンジンの使用例を示す図である。
【図４１】コンテナ内におけるテキストのレイアウト、及びそれがコンテナの形状からどのような影響を受けるかを示す図である。
【図４２Ａ】、
【図４２Ｂ】、
【図４２Ｃ】表を構築する方法を説明する図である。
【図１Ａ】
2005122728.tif 000003
【図１Ｂ】
2005122728.tif 000004
【図２】
2005122728.tif 000005
【図３】
2005122728.tif 000006
【図４】
2005122728.tif 000007
【図５】
2005122728.tif 000008
【図６Ａ】
2005122728.tif 000009
【図６Ｂ】
2005122728.tif 000010
【図６Ｃ】
2005122728.tif 000011
【図６Ｄ】
2005122728.tif 000012
【図６Ｅ】
2005122728.tif 000013
【図７Ａ】
2005122728.tif 000014
【図７Ｂ】
2005122728.tif 000015
【図８】
2005122728.tif 000016
【図９】
2005122728.tif 000017
【図１０】
2005122728.tif 000018
【図１１】
2005122728.tif 000019
【図１２】
2005122728.tif 000020
【図１３】
2005122728.tif 000021
【図１４】
2005122728.tif 000022
【図１５】
2005122728.tif 000023
【図１６】
2005122728.tif 000024
【図１７】
2005122728.tif 000025
【図１８】
2005122728.tif 000026
【図１９】
2005122728.tif 000027
【図２０】
2005122728.tif 000028
【図２１Ａ】
2005122728.tif 000029
【図２１Ｂ】
2005122728.tif 000030
【図２２】
2005122728.tif 000031
【図２３】
2005122728.tif 000032
【図２４】
2005122728.tif 000033
【図２５】
2005122728.tif 000034
【図２６】
2005122728.tif 000035
【図２７Ａ】
2005122728.tif 000036
【図２７Ｂ】
2005122728.tif 000037
【図２７Ｃ】
2005122728.tif 000038
【図２７Ｄ】
2005122728.tif 000039
【図２７Ｅ】
2005122728.tif 000040
【図２７Ｆ】
2005122728.tif 000041
【図２８】
2005122728.tif 000042
【図２９】
2005122728.tif 000043
【図３０Ａ】
2005122728.tif 000044
【図３０Ｂ】
2005122728.tif 000045
【図３１】
2005122728.tif 000046
【図３２】
2005122728.tif 000047
【図３３Ａ】
2005122728.tif 000048
【図３３Ｂ】
2005122728.tif 000049
【図３３Ｃ】
2005122728.tif 000050
【図３４】
2005122728.tif 000051
【図３５】
2005122728.tif 000052
【図３６】
2005122728.tif 000053
【図３７Ａ】
2005122728.tif 000054
【図３７Ｂ】
2005122728.tif 000055
【図３７Ｃ】
2005122728.tif 000056
【図３７Ｄ】
2005122728.tif 000057
【図３８】
2005122728.tif 000058
【図３９】
2005122728.tif 000059
【図４０Ａ】
2005122728.tif 000060
【図４０Ｂ】
2005122728.tif 000061
【図４１】
2005122728.tif 000062
【図４２Ａ】
2005122728.tif 000063
【図４２Ｂ】
2005122728.tif 000064
【図４２Ｃ】
2005122728.tif 000065