Prerequisites
Requires the Pagination Module.
Sample Data
A sample workspace and document is available from link below. Import the data source using File->New->EasyCatalog Panel->Import Data Source. This contains images and should open with the correct grouping for pagination (Category 1 > Category 2 > Category 3).
What are Containers?
Containers can be used to solve complex layout issues. Below is one example. The page is filled with tables and images, and an indicator shows how they relate. When content overflows, it continues to the next threaded container, with numbering starting over.
Overview of Containers
A Container is custom frame type, with properties describing how it populates . The principal property is Populate With, which nominates a Formatting Rule to use. Once populated, it’s repeated until the data is exhausted. Containers can be threaded, so content flows much like text threading. If the Auto Recomposition option is enabled, content will automatically reflow as the container is resized. Containers are shown with a non printing dotted stroke.
Here two threaded Containers populate with the image Formatting Rule. Dragging data to the first container and thread overset content. An overset Container displays has red plus indicator (similar to text frames). With a Container selected, this can be clicked and used to thread to another Container or empty space on a page.
Container Panel
The Window->EasyCatalog Containers menu shows a panel used to view and apply properties to Containers. 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, 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.
Spacing
Defines the vertical and horizontal spacing (gutter) between items.
Fitting
Specifies the maximum and minimum width and height of the container. This is used when embedded in other containers or when using Pagination.
Threadable
The default option is on, which allows overset content to thread into another container. Turning this off will disable threading and never show it as overset. When using Container based pagination, this attribute is used to identify the primary threadable frame on a master page.
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.
Creating A Container
Create a Container by selecting the Container Tool in the Tools panel. Then press and drag to create an area where the Container will go. To Assign a Formatting Rule, either choose one from the list or drag from the Formatting Rules panel to the Container. Once created, drag records or groups to the container to populate it.
Combining Containers
Inspecting the image+table Formatting Rule shows it contains two Containers, one for image and one for table. 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. Both Containers have settings applied to limit their depth.
When this is populated, each Container acts independently, so one may contain more or less data than the other.
Nesting Containers
When a Container contains a Formatting Rule which contains multiple Containers, a rule is applied to ensure they have the same content. Here is a Container that contains the above image+table Formatting Rule:
When populated, both Containers contain the same content.
- It’s important that that image+table Formatting Rule is set to paginate the level above image and table so it has content to repeat.
- When a Container is resized, it’s limited by the extent of its parent container.
Once populated, the parent container becomes the ‘thread’, allowing it to continue. Here are two threaded Containers. Notice the last container is overset, indicating more data remains.
Paginating Containers
A specific type of pagination can be used to populate containers. It inspects the document, and any containers originating from parent pages are populated. When a container is overset, a new parent page is inserted and threaded. Normally this is a duplication of the existing parent page or spread. Containers on parent pages present two additional properties which can be used to identify the next and last parent spread. Anything outside a container is populated with the entire data. In this way it’s possible to paginate a document with a start-middle-end, or paginate multiple sets of containers at once.
Repeat Page Range
This allows a page range to be repeated for every record or group. The specified range is duplicated for every record or group specified and then populated with only that data.
Formatting Rule Properties
The Formatting Rules dialog has a Containers section, which contains additional properties associated with populating the Formatting Rule when inside a Container.
Can Split
In the example you can see that “Steaming Pot And Frying Pan” splits between both containers, which may or may not be desired. To stop this uncheck the “Can Split” option.
Type
The normal method of placement is Fill and Repeate. When the Formatting can’t accommodate all its data, it is repeated and populated with what remains. This allows specification of a minimum first and last record count property to control widows and orphans. A Text Threading method is also available. In this case a text frame is resized and threaded to the next. Only containers that are a single text box or have a single text box nominated as a Primary Text Frame via the Container Panel pop-out menu can be used this way.
First, Regular, Last
In the following example, you can see the table container has split, but the split part appears as table-continued, which doesn’t include a header. First is used the first time a rule splits. which might typically contain a footer with ‘continued’. Regular split is used when a container splits both ends, and Last is used for the split element. This might be used for footnotes, etc. When any of these settings are blank, the original rule is used.
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
Tabular Fields
Containers also have special behaviour when used with tabular fields, specifically for splitting across multiple containers. More on that can be found here
Fields With Multiple Values
For fields that contain multiple values separated by a return, containers can be used to repeat items for each value. More details are here