New Composition Engine
The Composition Engine has been updated for 2025. It now treats nested Containers independently. Support for Field Values and regular Tabular Fields has been deprecated. To work with Tabular fields, the Enhanced Tabular field type should now be used. The previous Composition engine can still be used by selecting “Legacy Composition” on the Containers Panel pop-out menu.
Prerequisites
Requires the Pagination Module.
Sample Data
A sample workspace and document is available from link below. Note this an InDesign 2025 document:
Import the Data Source using File->New->EasyCatalog Panel->Import Data Source. ย This contains images and will open with the correct grouping for pagination (Category 1 > Category 2 > Category 3). The sample defines a number of Parent Pages and Formatting Rules which can be paginated using the Containersย method of Pagination. To generate the output shown below, select the top level group, then paginate using the default settings. This will paginate all the samples detailed below.
What are Containers?
Containers can be used to solve complex layout issues. ย Below is an example, which is setup on the A-image+table data threadingย Parent Page. The Container is filled with tables and images, and an indicator shows related elements. If the Container ย overflows, it continues to another threaded Container, with numbering starting over.ย ย Data Threading is used to ensure both image and table elements contain the same amount of data.
Overview of Containers
A Container is custom frame type, with properties describing how it behaves.ย Containers are shown with a non printing dotted stroke and display the name of the Formatting Rule they populate with along with what data it populates with. ย At the bottom right, a threading adornment can be used to thread Containers, similar to the text threading. If a Container is overset this is shown with a red plus icon. During pagination Containers are populated like any other page item according to the settings applied.
How Containers Work
Containers are configured to populate with a named Formatting Rule. Data is assigned to the Container, which then breaks this down by records or groups of records, and repeats the formatting rule for each. ย Enhanced tabular fields are supported when the Group Name in the formatting rule is the name of an enhanced tabular field. In this case Once Per Record this gives each row in the tabular field. Once Per Group gives all rows. Containers allow formatting rules to split, so if a formatting rule is assigned to populate once per group and that group contains more records than will physically fit in, it is allowed to split according to certain rules.
It’s important to understand the mechanics of how formatting rules are used in Containers, and a key element of this is if the rule contains elements that are flagged as ‘Threadable’.
No Threadable Items
When a formatting rule is populated and the result doesn’t fit, the data is systematically shortened (truncated) until it fits. The rule repeats until all its data has been consumed. The splitting variations defined in the rule determine which variant to use based on the type of the split, whether it’s at the beginning, end, or in the middle of the data.
Has Threadable Items
These items are populated independently. When Threadable items are defined, they can be connected using the Edge Relationship tool to define the sequence of the ‘thread’ within the Formatting Rule. The order of the edge relationships determines the sequence in which items are populated. Threadable items can include text frames, Containers, or any other grouped set of frames. However, only text frames and Containers can be threaded between different Formatting Rules. The formatting rule completes when all the threadable items are complete.
The way the threadable items are populated depends on the Threading Type ย used:
Content Threading
In this scenario, threadable items can be divided across multiple formatting rules and are populated sequentially. If one item becomes overset, the subsequent items are removed. If an item doesn’t fit, it and all following items are removed. When the next rule is added, it checks the previous for completed threadable items and removes them. If any are overset, the threadable item is linked to the previous one, and the process continues.
Here’s a formatting rule with both items marked a ‘Threadable’. Notice the edge relationship from the first to the second:
Using these settings they can split across multiple Containers. Notice the image doesn’t appear in the second Container as it has been successfully populated in the first:
If Keep With Nextย was set on the image item, it would only appear if part of the next threadable item was in present.
When determining where a threadable item can link in a split vacation, the item’s type and order are used within the thread. For variations that differ significantly from the original formatting rule, a Script Label can be assigned to name the frame. This label should be consistent across all split variations of the rule.
Data Threading
This only applies when multiple threadable containers are assigned the same data and are linked using the edge relationship tool. In such cases, they are treated as a single thread that should contain identical content. In the example shown at the top, this approach ensures both image and table Containers hold the same data. Notice how the last image is split between the first and second pages. This occurs because the image formatting rule is set to split. Turning off this setting would ensure images only appear on pages with complete tables.
Containers Panel
The ย Window->EasyCatalog Containers menu shows a panel used to view and apply the principal properties to the selected Containers(s) or frames that form a part of a Container. Any changes are applied dynamically if the Auto Recompositionย menu option is enabled.
Populate With
The name of the Formatting Rule to populate the Container with. Either select from the list or drag a Formatting Rule from the top part of the Formatting Rules panel to the Container.
Arrange and Align
In the example above, the Arrangeย property is set to populate ย across – down,ย meaning the second item will be placed to the right of the first, and continue to the next row if it doesn’t fit. ย The Alignย option defines the final alignment of the items. ย These vary depending ifย across – down or down – acrossย is chosen.
Reference Point
The reference point in the Container to place the arranged and aligned items.
Spacing
Defines the vertical and horizontal spacingย (gutter) between items.
Auto-Fit
Used to indicate the Container should resize horizontally or vertically fit to its content, with optional minimum and maximum limits. If a Container is inside another Container it will automatically be restricted to the parent Containers dimensions.
Threadable
This Enables overset content to thread to another Container. For a Container, turning this off will disable threading and never show overset. See above for a full description.
Keep With Next
In this example, if Keep With Next is set for the image frame, it would always need to appear with part of the table below. In this case the minimum height on the Formatting Rules Container properties ย prevents the split from occurring.
Trash Icon
Pressing this will empty the Container and release data associated with it.
Refresh Icon
Refreshes the Container content.
Release Icon
Removes the Container frame but leaves its content.
The Formatting Rule ‘Containers’ Panel
Another key set of options can be seen on the ‘Containers’ panel when editing a Formatting Rule. These properties define how the Formatting Rule behaves when populated inside a Container.
Space
These settings determine the minimum size needed inside a Container. ย When empty, it will attempt to place it in any available space. Providing minimum values improves performance.
– Note these values are automatically updated when the page items of the rule are updated.
Populate As Container
When checked, the Formatting Rule will be populated inside its own Container when “Populate On Drag and Drop” is used, or the Formatting Rule is populated via pagination.
Can Split
Indicates the Formatting Rule can be overset and split into a new instance of itself.
Type
This option is only used when there is one or many items inside the Formatting rule that are flagged as ‘Threadable’. It is used to control how to handle the population of these items. See above
First, Regular, Last
If the item can split, these are alternative Formatting Rules to be used in various split scenarios:
First.ย The rule used in the first instance of overset
Regular. ย The rule used when the item is linked from an overset item and is overset.
Last.ย The rule used when the item is linked from an overset item and is not overset.
If the item canโt split, they nominate the first, repeating and last rules to use in the Container.
Next
A Container always starts with the primary formatting rule define, the rule to use next can be defined here.
Breakdown of the Sample Document
In order to further draw contrast between the two type of Formatting Rule threading, we’ll take a look at the sample in more detail:
image+table data threading
The example at the top uses this Formatting Rule. Drag it a document inspect it. A frame edge relationship has been configured using the Edge Relationship Tool, so when the image Container resizes, the table Container is moved vertically to maintain the space between. ย The contents of both image andย tableย Containers are repeated once for every Category 3 Group. Because the Type of threading is set to Data Threading,ย the Containers are filled with sameย amount data until they are overset.
When the content splits we see the following results. With each of the Containers holding the same amount of data:
image+table content threading
Exactly the same as above, but set to use Content Threading. ย Each item is populated independently, with the images acting independently to the tables. Notice all the images are placed first and the tables are then threaded below:
Category 2 heading with tables of sidebars
This example shows an example of nesting Containers.
Left / Right
This example uses 2 formatting rules with variants for left and right pages. Notice the Containers on the master page are threaded together. This tells EasyCatalog that they are part of the same thread.
Other Features
Function Rules
If a Container is assigned a formatting rule, then the result of the function should name the rule to use in its place. It’s important that the Once Per Record/Group settings match the rule specified.
Labels
To facilitate the creation of the image labels in the above example, a “Computed Field” command is used which is aware of the position of the record in the container. The sample uses this command to create the numbering for both the image and table.
CONTAINERRECORDINDEX(field name) – Gives the record index inside the container, an optional field name will group the data by that field and give the index of the group the record is in.
CONTAINERINDEX() – Gives the index of the Container in a thread, so 1 for first, 2 for the second etc.
This can be combined with other commands to create sequences such as A-Z or Roman numerals for the content. For performance reasons, these command should be not tagged with field markers as they are not needed once the container is populated.
Using Containers To Build Data Sheets
Containers are also a useful tool in paginating Data Sheet type layouts. More on that can be found here which uses a tabular field, which are common requirement for data sheets.