[Accessibility conventions are described at the bottom of the page]

7. Floats, footnotes and containers
[> 8.][< 6.2.12][^^^]
7.0 Out-of-line publishing constructs
[> 7.1][> 8.][< 7.][^^][^^^]
Floats, footnotes and absolutely positioned containers render information supplemental to the information found in the flow:
[[1] - information is easily found by a reader because of a predetermined location on the page
[[2] - defined "in line" of the flow of information being paginated
 [2] - rendered "out-of-line" of the flow of information being paginated
 [2] - considered auxiliary enough not to disturb the flow itself for the reader
[[3] - reader can choose to examine a float or footnote at leisure without interrupting the reading of the flow
]][1] - dynamically rendered on the page where detected by the formatter in the flow
[[2] - can only be defined in the flow filling the body region of a page
[[3] - also cannot be defined in an absolutely positioned area
][2] - it is stacked in a different reference area than the main reference area
][1] - floats are rendered to either the before, start, or end edges within the body region
[[2] - not in the perimeter regions
][1] - footnotes are two-part constructs:
[[2] - footnote citation rendered inline in the flow
 [2] - footnote body rendered at the after edge of the body region
 [2] - an after float is accomplished using a footnote without a footnote citation
[[3] - only when footnotes are not already being used
]][1] - block containers can be absolutely positioned on the page
[[2] - relative to the parent or relative to the medium
 [2] - inline containers are positioned inline but have the same block-oriented content as a block container
 [2] - the construct is named by where it is allowed to be specified, not by its contents
][1] - out-of-line objects may not have out-of-line descendent objects
]
Footnote labeling is the responsibility of transformation
[[1] - the label of a footnote reference is supplied in the instance and not generated by the formatter
 [1] - restarting the footnote referencing on a per-page basis is not available in XSL-FO 1.0
]
No endnote constructs in XSL-FO
[[1] - responsibility of transformation to implement endnote functionality
 [1] - cite endnotes inline in the flow of the scope
 [1] - collect and render endnotes at the end of scope
[[2] - can use empty citations at end to take advantage of XSL-FO footnote construct
]]
Using out-of-line constructs allows the normal flow to stack in the body without interruption
[[1] - floats stack at the perimeter edges of the page
 [1] - can prevent large gaps in the normal flow when large constructs would otherwise jump to a new page
]
Many candidate uses of out-of-line constructs
[[1] - using <[float]> either within a block or between blocks:
[[2] - floating images to the top of a page
 [2] - side-bar presentations
 [2] - lists with item bodies indented relative to the corresponding item label's formatted length
 [2] - a multi-line drop initial cap in a paragraph
][1] - using <[footnote]> allowed only within a block:
[[2] - traditional footnotes
 [2] - acronym expansions
 [2] - glossary definitions
 [2] - sinking images to the bottom of a page (using an empty inline construct)
 [2] - trailing disclaimer at the bottom of the last page of a rendered document
][1] - using absolutely-positioned <[block-container]> allowed either within a block or between blocks
[[2] - positioning a logo in static content
 [2] - positioning crop marks in an oversized page
]]
The name of the construct shouldn't prejudice how the construct is used
[[1] - consider the need mentioned above to format a disclaimer at the bottom of the last page of a document
 [1] - one can flow the disclaimer in the body of a footnote with an empty citation in an empty block at the end of the document
]
Every page's body region has two sub-regions rendered only if necessary
[[1] - before-floats and footnotes are stacked in the body region with other block-level constructs
[[2] - the reader needs some separation rendered to distinguish content belonging in a float or footnote from the content belonging in the body
 [2] - the body region is separated into the before-float-reference-area, main-reference-area, and footnote-reference-area
][1] - the act of defining the separators does not effect their rendering
[[2] - defined using static content
 [2] - only rendered on a page if the floated information is being rendered on the page
 [2] - xsl-before-float-separator
[[3] - inside and at the end of the before-float-reference-area
][2] - xsl-footnote-separator
[[3] - inside and at the start of the footnote-reference-area
][2] - should always be defined as a contingency if floats and footnotes are being used
]]
[Figure 7.1: Conditional areas and sub-regions
A box representing a region-body is divided into three stacked reference areas labeled before-float-reference-area, main-reference-area, and footnote-reference-area. The xsl-before-float-separator sub-region is within the before-float-reference-area and the xsl-footnote-separator sub-region is within the footnote-reference-area, each adjacent to the main-reference-area.
]
Remember from [Figure 4.2] the incursion of perimeter regions into the body if the body margins are not set accordingly
[[1] - all reference areas shown above are within the body-region's margins
]
The XSL-FO objects covered in this chapter are:
[[1] - <[float]> ([6.12.2])
[[2] - content that is to be rendered towards either the before, start, or end edges of the body region regardless of where in the region the content is defined
][1] - <[footnote]> ([6.12.3])
[[2] - content that is to be rendered both in the flow and towards the after-edge of the body region regardless of where in the region the content is defined
][1] - <[footnote-body]> ([6.12.4])
[[2] - the portion of footnote content rendered towards the after-edge of the body region
][1] - <[block-container]> ([6.5.3])
[[2] - the specification of a block-level reference area for contained descendant blocks
][1] - <[inline-container]> ([6.6.8])
[[2] - the specification of an inline-level reference area for contained descendant blocks
]]
7.1 Conditional reference areas and sub-regions
[> 7.2][< 7.0][^^][^^^]
7.1.1 Conditional reference areas and sub-regions
[> 7.2][> 8.][< 7.0][^^][^^^]
Conditional reference areas exist on a given page only if the formatter needs them on that page
[[1] - takes room away from the main-reference-area (see [Figure 7.1])
 [1] - a conditional reference area grows in the block-progression-direction for as long as is necessary to fit the content flowed into it
 [1] - the formatter is responsible for deciding when a conditional reference area is "too big" and must break to the next page
[[2] - no control by the stylesheet writer over where a large conditional reference area breaks to the next page
]]
Sub-region visually delimits the conditional reference-area from the main reference-area
[[1] - sub-region content is flowed only once on the page
 [1] - prevents need to know the last content of the before-float sub-region or the first content of the footnote sub-region
]
A sub-region always exists and only appears whenever the conditional reference area exists
[[1] - if the conditional reference area is not needed on the page, the sub-region is not seen
 [1] - there is no obligation to define sub-region content
[[2] - the region exists but it has no dimension of it has no content
]]
Sub-region content is defined on a per page-sequence basis using static content
[[1] - content for the sub-region need only be defined and must be defined if there is chance the formatter might trigger the corresponding conditional reference area
[[2] - if the stylesheet writer knows a particular page-sequence will never have before-floats or footnotes, no sub-region content need be declared
 [2] - sub-region content must be repeated in every page-sequence in which it might be needed
 [2] - it is not an error to define sub-region content for a page-sequence that doesn't need it
][1] - <[static-content]> is a child of <[page-sequence]> and is described in detail in [Flowed content vs. static content - Section 8.2.1]
 [1] - the flow in the static-content declaration is directed to the corresponding sub-region on the page
 [1] - sub-region names are reserved and cannot be changed
[[2] -
<static-content flow-name="xsl-before-float-separator">
   ...block-level-constructs...
</static-content>
[[3] - inside and at the end of the before-float-reference-area
][2] -
<static-content flow-name="xsl-footnote-separator">
   ...block-level-constructs...
</static-content>
[[3] - inside and at the start of the footnote-reference-area
]]]
Sub-regions are reference areas
[[1] - necessary to set space .conditionality to "retain" to make room on the page between the conditional reference-area and the main reference-area
]
7.2 Floats
[> 7.3][< 7.1.1][^^][^^^]
7.2.1 Float definition
[> 7.2.2][> 7.3][> 8.][< 7.1.1][^^][^^^]
Positioning out-of-line information at the before, start or end sides of a page using the <[float]> object
[[1] - before floats are flowed in the before-float-reference-area (see [Figure 7.1])
 [1] - creates a dimensionless anchor area the area tree
 [1] - anchor is tied to the information that precedes the float in the flow
 [1] - out-if-line information is placed relative to the anchor
[[2] - typically the top or sides of the page in which the anchor is flowed
][1] - content of the float is always a set of block-level constructs
]
Information can be defined at the block level or inline level of the flow
[[1] - the anchor is treated as a block if defined at the block level
 [1] - the anchor is typically treated as an inline construct if defined at the inline level
[[2] - treated as a block object if the line area created by the inline constructs consists only of anchors
][1] - must be defined in the body-region of the page
 [1] - must be defined as a descendant of a relatively positioned block
[[2] - absolutely positioned objects cannot have out-of-line descendants
][1] - cannot have any <[float]>, <[footnote]> or <[marker]> descendants
]
The blocks of the float definition are positioned in the area tree accordingly
[[1] - before-floats are stacked in the before-float-reference-area
 [1] - side-floats are stacked in a side-float-reference-area
[[2] - child of the specifying block's ancestral span-reference-area
][1] - float content that does not float is flowed as normal content
[[2] - perhaps by a faulty definition or placement
 [2] - a float is an area that is not normally flowed and cannot be defined within any other area that is not normally flowed (e.g. another float, a footnote, a perimeter region, an absolutely positioned block container, etc.)
][1] - float lengths cannot be preset and are always derived from the content of the float
]
Out-of-line areas have no border or padding, though descendant areas may
[[1] - padding-, border-, and content-rectangles are coincident
]
Side-floats do not overlap and are typically placed beside each other
[[1] - makes a further incursion into the inline-progression-dimension of the block
 [1] - can be forced to not be placed beside each other by using the [clear]= property
[[2] - different values control which floats are clear of other floats
]]
7.2.2 <float> Object
[> 7.2.3][> 7.3][> 8.][< 7.2.1][^][^^][^^^]
Purpose:
[[1] - content that is to be rendered towards either the before, start, or end edges of the body region regardless of where in the region the content is defined
]
Content:
[[1] - ([6.12.2]) ([​%block;])+
 [1] - Child object:
[[2] - [%block;]([6.2];[Section 3.4.2 Block-level objects])
]]
Optional properties:
[clear=]([7.19.1];[Section D.3.3 Property summary])
[float=]([7.19.2];[Section D.3.3 Property summary])
[id=]([7.30.8];[Section D.3.3 Property summary])
[F1.1][index-class=]([7.24.1];[Section D.3.3 Property summary])
[F1.1][index-key=]([7.24.2];[Section D.3.3 Property summary])
7.2.3 The interaction of blocks and floats
[> 7.3][> 8.][< 7.2.2][^][^^][^^^]
The [clear]= property is used to prevent two side floats from being beside each other or a block-level object not to be beside a float
[[1] - not documented as a property with the individual block-level object descriptions
[[2] - applies to all such constructs as documented in the property definition
][1] - the default is for side floats to continue intruding into the main reference area
[[2] - use [clear]= to start a side float back at the edge, clear of any previous float
][1] - the default is that lines of a block will contour around the accumulation of side floats
[[2] - use [clear]= to start a block back at the edge, clear of any previous float
][1] - those constructs with the [clear]= value clear the float they would otherwise be beside
]
Consider three situations that illustrate the use of [clear]= on each of floats and blocks
[[1] - the numbers reflect the order in which the constructs are flowed
 [1] - the thick-lined blocks with "F-" prefixes are floats
 [1] - the thin-lined blocks with "B-" prefixes are blocks
]
[Figure 7.2: The clearing of slide floats by new constructs
Three page fragments are shown with thick-lined boxes indicating side-floats and thin-lined boxes indicating blocks. The constructs are numbered in the order in which they are flowed.
]
Of note in the diagram:
[[1] - the left-most page fragment shows the default situation where side floats intrude and blocks flow around floats
[[2] - the second float ("F-3") is to the right of the first float ("F1")
 [2] - the second block ("B-4") wraps around both floats
][1] - the center page fragment shows the second float being clear of the first float
[[2] - the second block ("B-4") starts abutted to the first block ("B2")
][1] - the right-most page fragment shows the second block being clear of all floats
[[2] - the second float ("F-3") is to the right of the first float ("F1")
 [2] - the second block ("B-4") is clear of both floats
]]
The [intrusion-displace]= property indicates the strategy of locating the start (or end) edges and indents of the lines of the block being intruded upon
[[1] - note that displacing the edge of a block necessarily displaces all lines in that block
]
Consider three situations that illustrate the use of [intrusion-displace]= on a block with both [text-indent]= and [start-indent]=
[[1] - a block is defined with both [start-indent]= and [text-indent]= properties, and it follows a float that is rendered immediately before, thus impacting on these values
 [1] - "indent" respects [text-indent]= and [start-indent]=
 [1] - "block" respects [text-indent]= but limits all lines by the width of the float
 [1] - "line" ignores [text-indent]= if occupied by the float, and respects [start-indent]=
]
[Figure 7.3: The behavior of lines in a block next to a float
Three page fragments are shown with thick-lined boxes indicating side-floats and thin-lined boxes indicating blocks. The constructs are numbered in the order in which they are flowed. The effects are described in the text.
]
7.3 Footnotes
[> 7.4][< 7.2.3][^^][^^^]
7.3.1 Footnote definition
[> 7.3.2][> 7.4][> 8.][< 7.2.3][^^][^^^]
Positioning out-of-line information at the bottom of a page using the <[footnote]> object
[[1] - the anchor area is the last area defined by the <[inline]> child
 [1] - out-of-line information is placed relative to the anchor
[[2] - typically the bottom of the page in which the anchor is flowed
][1] - out-of-line content is the content of the <[footnote-body]> child
[[2] - always a set of block-level constructs
]]
Information must be defined at the inline level of the flow
[[1] - the object supplies the content of the inline anchor
]
The blocks of the footnote body are positioned in the area tree accordingly
[[1] - flowed in the footnote-reference-area (see [Figure 7.1])
 [1] - footnote body lengths cannot be preset and are always derived from the content of the float
]
Same restrictions as <[float]>
[[1] - a footnote's body is an area that is not normally flowed and cannot be defined within any other area that is not normally flowed (e.g. another footnote, a float, a perimeter region, an absolutely positioned block container, etc.)
 [1] - must be defined in the body-region of the page as a descendant of a relatively positioned block
 [1] - cannot have any <[float]>, <[footnote]> or <[marker]> descendants
]
No built-in semantics of footnote numbering or citations
[[1] - numbering and presentation is the responsibility of the stylesheet or application generating the flow objects
[[2] - what is displayed inline and how it is displayed
[[3] - e.g. superscripting, italics, font-size, etc.
][2] - how the inline reference is reflected in the out-of-line information for correlation by the reader
][1] - numbering cannot be restarted on a per-page basis
[[2] - the page boundaries are determined by the formatter and are not known to the transformation process
][1] - the XSLT process producing the XSL-FO instance can probably use the same criteria for determining the page sequence boundaries to do footnote numbering either across the page sequence or across the entire publication
]
No automatic copying of the inline content to the start of the footnote body
[[1] - it is the stylesheet writer's responsibility to define both the footnote citation and the footnote body separately
 [1] - one may wish to use different formatting properties for each use of the footnote citation
]
7.3.2 <footnote> Object
[> 7.3.3][> 7.4][> 8.][< 7.3.1][^][^^][^^^]
Purpose:
[[1] - content that is to be rendered both in the flow and towards the after-edge of the body region regardless of where in the region the content is defined
[[2] - includes the inline content to render in the flow where the footnote body content is defined
]]
Content:
[[1] - ([6.12.3]) ([​inline],[​footnote-body])
 [1] - Child objects (alphabetical):
[[2] - <[footnote-body]>([6.12.4];[Section 7.3.3 <footnote-body> Object])
 [2] - <[inline]>([6.6.7];[Section 4.2.6 <inline> Object])
]]
Property sets:
[[1] - [Common Accessibility Properties]([7.5];[Section D.1.2 Common Accessibility Properties])
]
Other optional properties:
[id=]([7.30.8];[Section D.3.3 Property summary])
[F1.1][index-class=]([7.24.1];[Section D.3.3 Property summary])
[F1.1][index-key=]([7.24.2];[Section D.3.3 Property summary])
The samp/foot.fo example:
[Figure 7.4: Example for footnotes
Two formatted pages are shown, the left of which has two footnotes at the bottom with an italicized heading reading "Footnotes" between the text of the page and the footnote area.
]
[Example 7-1: Footnote constructs in example An excerpt from the samp/foot.fo sample:
01  <page-sequence master-reference="frame">
02   <static-content flow-name="xsl-footnote-separator">
03   <block font-style="italic">Footnotes</block>
04   </static-content>
05  
06  <flow flow-name="frame-body" font-size="40pt">
07  <block>This is a test</block>
08  <block>This is a<footnote>
09  <inline baseline-shift="15pt" font-size="20pt">1</inline>
10  <footnote-body>
11   <block font-size="20pt">
12   <inline baseline-shift="5pt" font-size="15pt"
13   >1 </inline>This is a footnote with a very
14  long paragraph so that it will (hopefully) wrap on to
15  multiple lines in the footnote area.
16   </block>
17  </footnote-body>
18  </footnote> test</block>
19  <block>This is a test</block>
20  <block>This is a<footnote>
21  <inline baseline-shift="15pt" font-size="20pt">2</inline>
22  <footnote-body>
23   <block font-size="20pt">
24   <inline baseline-shift="5pt" font-size="15pt"
25   >2 </inline>This is another footnote, once
26  again with a very long paragraph so that it will
27  (hopefully) wrap on to multiple lines in the footnote area.
28   </block>
29  </footnote-body>
30  </footnote> test</block>
31  <block>This is a test</block>
32  <block>This is a test</block>
33  ...
]
Of note:
[[1] - the footnote definitions are embedded in the blocks at the point where the footnote citation is rendered
 [1] - the footnote citation in the block is formatted differently than the footnote citation echoed in the footnote-reference-area
]
7.3.3 <footnote-body> Object
[> 7.4][> 8.][< 7.3.2][^][^^][^^^]
Purpose:
[[1] - the portion of footnote content rendered towards the after-edge of the body region
]
Content:
[[1] - ([6.12.4]) ([​%block;])+
 [1] - Child object:
[[2] - [%block;]([6.2];[Section 3.4.2 Block-level objects])
][1] - Referring object:
[[2] - <[footnote]>([6.12.3];[Section 7.3.2 <footnote> Object])
]]
Property sets:
[[1] - [Common Accessibility Properties]([7.5];[Section D.1.2 Common Accessibility Properties])
]
Other optional properties:
[id=]([7.30.8];[Section D.3.3 Property summary])
[F1.1][index-class=]([7.24.1];[Section D.3.3 Property summary])
[F1.1][index-key=]([7.24.2];[Section D.3.3 Property summary])
[Example 7-2: Footnote constructs in example An excerpt from the samp/foot.fo sample [Figure 7.4]:
01  <page-sequence master-reference="frame">
02   <static-content flow-name="xsl-footnote-separator">
03   <block font-style="italic">Footnotes</block>
04   </static-content>
05  
06  <flow flow-name="frame-body" font-size="40pt">
07  <block>This is a test</block>
08  <block>This is a<footnote>
09  <inline baseline-shift="15pt" font-size="20pt">1</inline>
10  <footnote-body>
11   <block font-size="20pt">
12   <inline baseline-shift="5pt" font-size="15pt"
13   >1 </inline>This is a footnote with a very
14  long paragraph so that it will (hopefully) wrap on to
15  multiple lines in the footnote area.
16   </block>
17  </footnote-body>
18  </footnote> test</block>
19  <block>This is a test</block>
20  <block>This is a<footnote>
21  <inline baseline-shift="15pt" font-size="20pt">2 </inline>
22  <footnote-body>
23   <block font-size="20pt">
24   <inline baseline-shift="5pt" font-size="15pt"
25   >2 </inline>This is another footnote, once
26  again with a very long paragraph so that it will
27  (hopefully) wrap on to multiple lines in the footnote area.
28   </block>
29  </footnote-body>
30  </footnote> test</block>
31  <block>This is a test</block>
32  <block>This is a test</block>
33  ...
]
7.4 Container basics
[> 8.][< 7.3.3][^^][^^^]
7.4.1 Containers
[> 7.4.2][> 8.][< 7.3.3][^^][^^^]
Containers can be used to introduce new reference areas in their context
[[1] - reference properties can only be changed for reference areas
[[2] - e.g. [reference-orientation]= and [writing-mode]=
][1] - useful for temporarily changing the direction of text on the rendered result
 [1] - areas created by container objects can alter their behavior to meet specific requirements that differ from the parent area
[[2] - can specify an absolute position outside of the parent for a block container
 [2] - can specify an overflow behavior
 [2] - can specify a different writing direction or reference orientation
 [2] - can specify minimum and maximum sizes to accept flow
][1] - both block-level and inline-level container objects are available to be used within their respective types of parent objects
]
Container objects are named by where they are used
[[1] - <[block-container]> either inside or between blocks
[[2] - an absolutely-positioned block-container is displayed out-of-line
[[3] - does not break the block progression direction
][2] - other block-containers stay in the flow
[[3] - breaks the block progression direction
]][1] - <[inline-container]> can only be used on a line inside of a block
[[2] - note that by default an inline container sits on top of the dominant baseline
 [2] - use [alignment-baseline]="after-edge" for the container to sit on the same after edge as the text
]]
Dimensions may be specified for both the inline-progression-direction and block-progression-direction
[[1] - not specifying a block-progression-dimension maximum allows the block to grow
[[2] - [block-progression-dimension]= sets minimum and maximum
 [2] - [block-progression-dimension].minimum= sets minimum only
][1] - specifying a block-progression-dimension allocates the specified amount of area on the page between sibling
]
Positioned in the flow to allocate a specified amount of real-estate on the page between sibling block-level constructs
[[1] - can specify different behaviors for overflow situations
[[2] - automatic handling (default) is processor dependent based on the medium
 [2] - can be visible beyond the pre-allocated area (but still within the medium)
 [2] - can be hidden (clipped) without error
 [2] - can be hidden (clipped) with an error reported to the operator
 [2] - can be captured within a scrolling mechanism for interactive media
]]
7.4.2 Block containers
[> 7.4.3][> 8.][< 7.4.1][^][^^][^^^]
May be positioned in the flow of neighboring blocks or positioned out of line of neighboring blocks
[[1] - must contain block-level constructs
 [1] - can be relatively positioned between sibling block-level constructs (default)
 [1] - can be positioned at a given location
[[2] - [absolute-position]="absolute"
[[3] - offset from the containing area
][2] - [absolute-position]="fixed"
[[3] - offset from the medium
][2] - out-of-line position is indicated by specifying the space offsets
[[3] - [top]=, [bottom]=, [left]= and [right]=
 [3] - distance from the edge of the area from which it is offset
]]]
May underlie or overlay other areas on the page by using [z-index]=
[[1] - all content by default at index level 0
 [1] - items with a higher index value are "on top" of items with a lower index value
 [1] - can achieve "exclusive rendering" effects when using opaque backgrounds
]
7.4.3 <block-container> Object
[> 7.4.4][> 8.][< 7.4.2][^][^^][^^^]
Purpose:
[[1] - the specification of a block-level reference area for contained descendant blocks
]
Content:
[[1] - ([6.5.3]) ([​%block;])+
 [1] - Child object:
[[2] - [%block;]([6.2];[Section 3.4.2 Block-level objects])
]]
[[1] - if not absolutely positioned, then may begin with any number of <[marker]> children
]
Property sets:
[[1] - [Common Absolute Position Properties]([7.6];[Section D.1.1 Common Absolute Position Properties])
 [1] - [Common Border, Padding, and Background Properties]([7.8];[Section D.1.4 Common Border, Padding, and Background Properties])
 [1] - [Common Margin Properties-Block]([7.11];[Section D.1.7 Common Margin Properties-Block])
]
Other optional properties:
[block-progression-dimension=]([7.15.3];[Section D.3.3 Property summary])
[break-after=]([7.20.1];[Section D.3.3 Property summary])
[break-before=]([7.20.2];[Section D.3.3 Property summary])
[clear=]([7.19.1];[Section D.3.3 Property summary])
[clip=]([7.21.1];[Section D.3.3 Property summary])
[display-align=]([7.14.4];[Section D.3.3 Property summary])
[height=]([7.15.6];[Section D.3.3 Property summary])
[id=]([7.30.8];[Section D.3.3 Property summary])
[F1.1][index-class=]([7.24.1];[Section D.3.3 Property summary])
[F1.1][index-key=]([7.24.2];[Section D.3.3 Property summary])
[inline-progression-dimension=]([7.15.7];[Section D.3.3 Property summary])
[intrusion-displace=]([7.19.3];[Section D.3.3 Property summary])
[keep-together=]([7.20.3];[Section D.3.3 Property summary])
[keep-with-next=]([7.20.4];[Section D.3.3 Property summary])
[keep-with-previous=]([7.20.5];[Section D.3.3 Property summary])
[overflow=]([7.21.2];[Section D.3.3 Property summary])
[reference-orientation=]([7.21.3];[Section D.3.3 Property summary])
[span=]([7.21.4];[Section D.3.3 Property summary])
[width=]([7.15.14];[Section D.3.3 Property summary])
[writing-mode=]([7.29.7];[Section D.3.3 Property summary])
[z-index=]([7.30.18];[Section D.3.3 Property summary])
Shorthands influencing the above properties:
[page-break-after=]([7.31.16];[Section D.3.3 Property summary])
[page-break-before=]([7.31.17];[Section D.3.3 Property summary])
[page-break-inside=]([7.31.18];[Section D.3.3 Property summary])
7.4.4 <inline-container> Object
[> 8.][< 7.4.3][^][^^][^^^]
Purpose:
[[1] - the specification of an inline-level reference area for contained descendant blocks
[[2] - used to place block-oriented constructs inline
]]
Content:
[[1] - ([6.6.8]) ([​%block;])+
 [1] - Child object:
[[2] - [%block;]([6.2];[Section 3.4.2 Block-level objects])
]]
[[1] - may begin with any number of <[marker]> children
]
Property sets:
[[1] - [Common Border, Padding, and Background Properties]([7.8];[Section D.1.4 Common Border, Padding, and Background Properties])
 [1] - [Common Margin Properties-Inline]([7.12];[Section D.1.8 Common Margin Properties-Inline])
 [1] - [Common Relative Position Properties]([7.13];[Section D.1.9 Common Relative Position Properties])
]
Other optional properties:
[alignment-adjust=]([7.14.1];[Section D.3.3 Property summary])
[alignment-baseline=]([7.14.2];[Section D.3.3 Property summary])
[baseline-shift=]([7.14.3];[Section D.3.3 Property summary])
[block-progression-dimension=]([7.15.3];[Section D.3.3 Property summary])
[clip=]([7.21.1];[Section D.3.3 Property summary])
[display-align=]([7.14.4];[Section D.3.3 Property summary])
[dominant-baseline=]([7.14.5];[Section D.3.3 Property summary])
[height=]([7.15.6];[Section D.3.3 Property summary])
[id=]([7.30.8];[Section D.3.3 Property summary])
[F1.1][index-class=]([7.24.1];[Section D.3.3 Property summary])
[F1.1][index-key=]([7.24.2];[Section D.3.3 Property summary])
[inline-progression-dimension=]([7.15.7];[Section D.3.3 Property summary])
[keep-together=]([7.20.3];[Section D.3.3 Property summary])
[keep-with-next=]([7.20.4];[Section D.3.3 Property summary])
[keep-with-previous=]([7.20.5];[Section D.3.3 Property summary])
[line-height=]([7.16.4];[Section D.3.3 Property summary])
[overflow=]([7.21.2];[Section D.3.3 Property summary])
[reference-orientation=]([7.21.3];[Section D.3.3 Property summary])
[width=]([7.15.14];[Section D.3.3 Property summary])
[writing-mode=]([7.29.7];[Section D.3.3 Property summary])
Shorthands influencing the above properties:
[font=]([7.31.13];[Section D.3.3 Property summary])
[page-break-after=]([7.31.16];[Section D.3.3 Property summary])
[page-break-before=]([7.31.17];[Section D.3.3 Property summary])
[page-break-inside=]([7.31.18];[Section D.3.3 Property summary])
[vertical-align=]([7.31.22];[Section D.3.3 Property summary])
Must be positioned in the flow of inline constructs
[[1] - must contain block-level constructs
]
Consider the samp/refornt.fo example:
[Figure 7.5: Changing the reference orientation inline
The image shows a string of text where one of the words "test" is surrounded by two pieces of text in different orientations: the word "BEGIN" rotated 90 degrees and the word "END" rotated 270 degrees.
]
The nesting of the constructs used to create the example is as follows:
[Figure 7.6: The nesting of an <[inline-container]>
The image shows the nesting of constructs with an <[inline-container]> using [reference-orientation]= of 90 degrees in a <[block]>. This has a <[block]> child that contains the text being rotated.
]
[Example 7-3: Containers in the example
01    <block font-size="40pt">This is a 
02   <inline-container reference-orientation="90">
03   <block font-size="12pt">BEGIN</block>
04   </inline-container>test<inline-container
05   reference-orientation="270">
06   <block font-size="12pt">END</block>
07   </inline-container>
08   of &lt;inline-container>
09   </block>
]
Of note:
[[1] - to prevent a break in the line, an <[inline-container]> is used in the text
 [1] - the container's reference orientation is changed by 90 degrees counterclockwise
 [1] - the container only contains block-level constructs, so a block is used to contain the text
 [1] - the text is in an inline construct (though in this particular example this is redundant)
]


This is an accessible version of Crane's commercial training material. The content has been specifically designed to assist screen reader software in viewing the entire textual content. Figures are replaced with text narratives.

Navigation hints are in square brackets:
[Tx.x] and [Fx.x] are textual representations of the applicability icons;
[digit] indicates list depth for nested lists;
[link [URL]] indicates the URL of a hyperlink if different than link;
[EXAMPLE] indicates an example listing of code;
[FIGURE] indicates the presence of a figure replaced by its description;
[>] jumps forward;
[<] jumps backward;
[^] jumps to start of the section;
[^^] jumps to the start of the chapter;
[^^^] jumps to the table of contents.
Suggestions for improvement are welcome: [info@CraneSoftwrights.com]
Book sales: [http://www.CraneSoftwrights.com/links/trn-acc.htm]
Information: [http://www.CraneSoftwrights.com/links/info-acc.htm]
This content is protected by copyright and, as there are no means to protect this accessible version from plagiarism, please do not make any commercial edition available to others.

+//ISBN 978-1-894049::CSL::Courses::PFUX//DOCUMENT Practical Formatting Using XSL-FO 2008-01-27 17:30UTC//EN
Practical Formatting Using XSL-FO
Seventh Edition - 2008-01-27
ISBN 978-1-894049-19-1
Copyright © Crane Softwrights Ltd.