メインコンテンツへスキップ
テスト画像から判断すると、材料の一覧はテキストフラグメントで、常に Ingredients field の名前の下にあり、Cooking field の名前の上にある区切り線より上に位置しています。 上記の要素を記述しやすくし、考えられる仮説の数を絞るため、これらを 1 つの Group element にまとめます。
  1. Group element を作成し、RecipeContents という名前を付けます。
  2. RecipeContents element 内に、型が Static Text の element を作成し、IngredientsHeader という名前を付けます。この element は Ingredients という名前に対応します。element のプロパティは、Recipe element の Step 10 と同様に指定します。
  3. RecipeContents element 内に、型が Separator の element を作成します。これは Cooking の名前の上にある区切り線に対応します。Separator tab で、区切り線の orientation として Horizontal を指定します。element の Properties ダイアログで Relations tab をクリックし、search constraints を指定します。Ingredients: の名前の下 (つまり IngredientsHeader element の Below) です。 FlexiLayout のマッチングを試すと、画像の下端境界を区切り線としてプログラムが扱ってしまう場合があることが分かります。 この問題は、search constraint をもう 1 つ追加することで解決できます。Advanced pre-search relations field (Properties ダイアログの Advanced tab) に、次の search constraint を追加します:名前 Ingredients: に最も近い区切り線を探しますFlexiLayout language では、これは次のように記述します。 Nearest: SearchElements.RecipeContents.IngredientsHeader; 注。 この constraint は、プログラムの graphical user interface から指定することもできます。Relations をクリックし、Nearest を選択して、To ドロップダウンリストで Element を選択し、Reference element として IngredientsHeader を指定します。
  4. 調整した FlexiLayout をもう一度マッチングします。
  1. IngredientsHeader element に、search constraint をもう 1 つ追加することもできます。Advanced pre-search relations field (Properties ダイアログの Advanced tab) に、次の search constraint を追加します:画像の上半分で field 名を探しますFlexiLayout language では、これは次のように記述します。 Above: PageRect.top + PageRect.Height/2;
  2. RecipeContents element 内に、型が Paragraph の element を作成し、Ingredients という名前を付けます。この element は Ingredients field に対応します。 search constraints を設定します (element の Properties ダイアログの Relations tab) 。Ingredients: 見出しの下 (IngredientsHeader の Below) で、かつ区切り線の上 (Separator element の Above) です。 テスト画像で FlexiLayout のマッチングを試し、すべての画像でプログラムが Ingredients field を正しく見つけることを確認します。
最後に、Ingredients block を作成します。Ingredients block は RecipeNumber block と同様に作成します。唯一異なるのは、Ingredients block の source element として Ingredients element を指定する必要がある点です。