12.6.23 Aligned-column Flow Object Class
Use of this flow object requires the aligned-column feature.
An aligned-column flow object is used for grouping together externally aligned paragraphs.  An aligned-column is displayed.  It has a single principal port that may contain any displayed flow objects. Displayed flow objects in the port that are not externally aligned paragraphs shall be formatted normally. The externally aligned paragraphs in the content or in side-by-side flow objects in the content are aligned in the direction of the writing-mode so that their alignment points lie on a line in the placement direction. The resulting group of aligned lines is then positioned according to the display-alignment:, start-indent:, and end-indent: characteristics.
The following characteristics are applicable:

•  display-alignment: is one of the symbols start, center, end, inside, or outside specifying the alignment of the areas resulting from the flow object in the direction of the writing-mode. The initial value is start. This determines how the flow object expands its areas so their size is equal to the display size in the direction perpendicular to the area container's filling-direction.  First space is added to the area so that its size is equal to the display size less the sum of the start and end indents:

•  if the alignment is start, the space is all added at the end in the direction of the writing-mode;

•  if the alignment is end, the space is all added at the start in the direction of the writing-mode;

•  if the alignment is center, the space is added equally at the start and the end in the direction of the writing-mode;

•  if the alignment is inside, then the flow object shall have an ancestor of class page-sequence, the direction of the writing-mode shall be perpendicular to the binding-edge: of the page-sequence, and the space shall be added on the edge that is outside with respect to the spread;

•  if the alignment is outside, then the flow object shall have an ancestor of class page-sequence, the direction determined by the writing-mode shall be perpendicular to the binding-edge: of the page-sequence, and the space shall be added on the edge that is inside with respect to the spread.

Then an amount of space equal to the start-indent is added at the start in the direction of the writing-mode, and an amount of space equal to the end-indent is added at the end in the direction of the writing-mode. This is used for aligning the first line of each externally aligned paragraph.

•  start-indent: is a length-spec specifying the indent for the edge of the area at the start in the direction of the writing-mode. The initial value is 0pt. This is used for aligning the first line of each externally aligned paragraph.

•  end-indent: is a length-spec specifying the indent for the edge of the area at the end in the direction of the writing-mode. The initial value is 0pt. This is used for aligning the first line of each externally aligned paragraph.

•  writing-mode: is one of the symbols left-to-right, right-to-left, or top-to-bottom.  The direction determined by the writing-mode shall be perpendicular to the placement direction.  The initial value is left-to-right.

•  position-preference: is either #f or one of the symbols top or bottom.  This applies if the flow object is directed into a port on a column-set-sequence flow object that is flowed into both the top-float and bottom-float zones of a column-subset and indicates whether the areas from this flow object may be flowed into only one of the zones. This characteristic is not inherited. The default value is #f.

•  space-before: is an object of type display-space specifying space to be inserted before, in the placement direction, the areas produced by the flow object. This characteristic is not inherited. The default is for no space before to be inserted.

•  space-after: is an object of type display-space specifying space to be inserted after, in the placement direction, the areas produced by the flow object. This characteristic is not inherited. The default is for no space after to be inserted.

•  keep-with-previous?: is a boolean specifying whether the flow object shall be kept in the same area as the previous flow object. This characteristic is not inherited. The default value is #f.

•  keep-with-next?: is a boolean specifying whether the flow object shall be kept in the same area as the next flow object.  This characteristic is not inherited. The default value is #f.

•  break-before: is #f or one of the symbols page, page-region, column, or column-set specifying that the flow object shall start an area of that type. This characteristic is not inherited. The default is #f.

•  break-after: is #f or one of the symbols page, page-region, column, or column-set specifying that the flow object shall end an area of that type. This characteristic is not inherited. The default is #f.

•  keep: is one of the following:

•  #t meaning that the areas produced by this flow object shall be kept together within the smallest possible area.

•  the symbol page indicating that the areas produced by the flow object shall lie within the same page; in this case, the flow object shall have an ancestor flow object of class page-sequence.

•  the symbol column-set indicating that the areas produced by the flow object shall lie within the same column set; in this case, the flow object shall have an ancestor of class column-set-sequence.

•  the symbol column indicating that the areas produced by the flow object shall lie within the same column set, and that the first column that each area spans in the column set shall be the same.

•  #f indicating that this characteristic is to be ignored.

This characteristic is not inherited. The default value is #f.

•  may-violate-keep-before?: is a boolean which, if true, specifies that constraints imposed by the keep: characteristics of ancestor flow objects on the relative positioning of this flow object and its previous flow object may not be respected. This characteristic is not inherited. The default value is #f.

•  may-violate-keep-after?: is a boolean which, if true, specifies that constraints imposed by keep: characteristics of ancestor flow objects on the relative positioning of this flow object and its next flow object may not be respected. This characteristic is not inherited. The default value is #f.