]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
New examples for breaks
authorarved <arved@unknown>
Wed, 27 Dec 2000 03:57:47 +0000 (03:57 +0000)
committerarved <arved@unknown>
Wed, 27 Dec 2000 03:57:47 +0000 (03:57 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@193928 13f79535-47bb-0310-9956-ffa450edef68

docs/examples/keeps_and_breaks/columnlevel1.fo [new file with mode: 0644]
docs/examples/keeps_and_breaks/pagelevel1.fo [new file with mode: 0644]
docs/examples/keeps_and_breaks/pagelevel2.fo [new file with mode: 0644]
docs/examples/keeps_and_breaks/pagelevel3.fo [new file with mode: 0644]
docs/examples/keeps_and_breaks/pagelevel4.fo [new file with mode: 0644]

diff --git a/docs/examples/keeps_and_breaks/columnlevel1.fo b/docs/examples/keeps_and_breaks/columnlevel1.fo
new file mode 100644 (file)
index 0000000..a761630
--- /dev/null
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+This file addresses breaks in column context.
+-->
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+  <fo:layout-master-set>
+    <!-- layout for all pages -->
+    <fo:simple-page-master master-name="all"
+                  page-height="29.7cm" 
+                  page-width="21cm"
+                  margin-top="1cm" 
+                  margin-bottom="2cm" 
+                  margin-left="2.5cm" 
+                  margin-right="2.5cm">
+      <fo:region-body
+               margin-top="3cm" margin-bottom="2cm"
+               column-count="2" column-gap="0.25in"/>
+      <fo:region-before extent="3cm"/>
+      <fo:region-after extent="2cm"/>
+    </fo:simple-page-master>
+  </fo:layout-master-set>
+
+  <fo:page-sequence master-name="all">
+    <fo:static-content flow-name="xsl-region-after">
+         <fo:block font-size="10pt" text-align="start"
+           border-style="solid" border-color="blue" border-width="0.5pt"
+               space-before.optimum="6pt">
+         Text excerpt from XSL Candidate Recommendation, 21 Nov 2000.
+         </fo:block>
+       </fo:static-content>
+       
+    <fo:flow flow-name="xsl-region-body">
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-before conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-before condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="column">
+This is a block with a <fo:inline font-style="italic">break-before="column"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in a column context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-before
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-before trait imposes no break condition.   
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="column">
+This is a block with a <fo:inline font-style="italic">break-before="column"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in a column context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+         
+      <fo:block span="all">
+           <fo:leader leader-pattern="rule" 
+                   rule-thickness="2.0pt"
+                   leader-length="14cm"
+                   space-before.optimum="0pt"
+                   space-after.optimum="12pt"
+                   start-indent="1cm"
+                   end-indent="1cm"
+                   background-color="blue"
+                   color="yellow"/>
+         </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-after="column">
+This is a block with a <fo:inline font-style="italic">break-after="column"
+</fo:inline> break condition. This condition is satisfied if there is
+no next formatting object, <fo:inline font-weight="bold">or</fo:inline> the
+first normal area generated by the next FO is leading in a column
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-before conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-before condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-before
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-before trait imposes no break condition.   
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-after="column">
+This is a block with a <fo:inline font-style="italic">break-after="column"
+</fo:inline> break condition. This condition is satisfied if there is
+no next formatting object, <fo:inline font-weight="bold">or</fo:inline> the
+first normal area generated by the next FO is leading in a column context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+
+         </fo:flow>
+  </fo:page-sequence>
+</fo:root>
+
diff --git a/docs/examples/keeps_and_breaks/pagelevel1.fo b/docs/examples/keeps_and_breaks/pagelevel1.fo
new file mode 100644 (file)
index 0000000..78ea1c2
--- /dev/null
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+This file addresses breaks in page context.
+-->
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+  <fo:layout-master-set>
+    <!-- layout for all pages -->
+    <fo:simple-page-master master-name="all"
+                  page-height="29.7cm" 
+                  page-width="21cm"
+                  margin-top="1cm" 
+                  margin-bottom="2cm" 
+                  margin-left="2.5cm" 
+                  margin-right="2.5cm">
+      <fo:region-body
+               margin-top="3cm" margin-bottom="2cm"/>
+      <fo:region-before extent="3cm"/>
+      <fo:region-after extent="2cm"/>
+    </fo:simple-page-master>
+  </fo:layout-master-set>
+
+  <fo:page-sequence master-name="all">
+    <fo:static-content flow-name="xsl-region-after">
+         <fo:block font-size="10pt" text-align="start"
+           border-style="solid" border-color="blue" border-width="0.5pt">
+         Text excerpt from XSL Candidate Recommendation, 21 Nov 2000.
+         </fo:block>
+       </fo:static-content>
+       
+    <fo:flow flow-name="xsl-region-body">
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               break-after="page">
+<fo:inline color="red">break-after="page"</fo:inline>
+Break conditions are either break-before or break-after conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-after condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-after
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-after trait imposes no break condition.    
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               break-before="page">
+<fo:inline color="red">break-before="page"</fo:inline>
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+         
+    </fo:flow>
+  </fo:page-sequence>
+</fo:root>
+
diff --git a/docs/examples/keeps_and_breaks/pagelevel2.fo b/docs/examples/keeps_and_breaks/pagelevel2.fo
new file mode 100644 (file)
index 0000000..fc3369a
--- /dev/null
@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+This file addresses break-after's in page context.
+-->
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+  <fo:layout-master-set>
+    <!-- layout for all pages -->
+    <fo:simple-page-master master-name="all"
+                  page-height="29.7cm" 
+                  page-width="21cm"
+                  margin-top="1cm" 
+                  margin-bottom="2cm" 
+                  margin-left="2.5cm" 
+                  margin-right="2.5cm">
+      <fo:region-body
+               margin-top="3cm" margin-bottom="2cm"/>
+      <fo:region-before extent="3cm"/>
+      <fo:region-after extent="2cm"/>
+    </fo:simple-page-master>
+  </fo:layout-master-set>
+
+  <fo:page-sequence master-name="all">
+    <fo:static-content flow-name="xsl-region-after">
+         <fo:block font-size="10pt" text-align="start"
+           border-style="solid" border-color="blue" border-width="0.5pt"
+               space-before.optimum="6pt">
+         Text excerpt from XSL Candidate Recommendation, 21 Nov 2000.
+         </fo:block>
+       </fo:static-content>
+       
+    <fo:flow flow-name="xsl-region-body">
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-after conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-after condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-after="even-page">
+This is a block with a <fo:inline font-style="italic">break-after="even-page"
+</fo:inline> break condition. This condition is satisfied if there is
+no next formatting object, <fo:inline font-weight="bold">or</fo:inline> the
+first normal area generated by the next FO is leading in an even-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-after
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-after trait imposes no break condition.    
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-after="even-page">
+This is a block with a <fo:inline font-style="italic">break-after="even-page"
+</fo:inline> break condition. This condition is satisfied if there is
+no next formatting object, <fo:inline font-weight="bold">or</fo:inline> the
+first normal area generated by the next FO is leading in an even-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+         
+      <fo:block>
+           <fo:leader leader-pattern="rule" 
+                   rule-thickness="2.0pt"
+                   leader-length="14cm"
+                   space-before.optimum="0pt"
+                   space-after.optimum="12pt"
+                   start-indent="1cm"
+                   end-indent="1cm"
+                   background-color="blue"
+                   color="yellow"/>
+         </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-after="odd-page">
+This is a block with a <fo:inline font-style="italic">break-after="odd-page"
+</fo:inline> break condition. This condition is satisfied if there is
+no next formatting object, <fo:inline font-weight="bold">or</fo:inline> the
+first normal area generated by the next FO is leading in an odd-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-after conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-after condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-after
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-after trait imposes no break condition.    
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-after="odd-page">
+This is a block with a <fo:inline font-style="italic">break-after="odd-page"
+</fo:inline> break condition. This condition is satisfied if there is
+no next formatting object, <fo:inline font-weight="bold">or</fo:inline> the
+first normal area generated by the next FO is leading in an odd-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+
+         </fo:flow>
+  </fo:page-sequence>
+</fo:root>
+
diff --git a/docs/examples/keeps_and_breaks/pagelevel3.fo b/docs/examples/keeps_and_breaks/pagelevel3.fo
new file mode 100644 (file)
index 0000000..29ca253
--- /dev/null
@@ -0,0 +1,289 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+This file addresses break-before's in page context.
+-->
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+  <fo:layout-master-set>
+    <!-- layout for all pages -->
+    <fo:simple-page-master master-name="all"
+                  page-height="29.7cm" 
+                  page-width="21cm"
+                  margin-top="1cm" 
+                  margin-bottom="2cm" 
+                  margin-left="2.5cm" 
+                  margin-right="2.5cm">
+      <fo:region-body
+               margin-top="3cm" margin-bottom="2cm"/>
+      <fo:region-before extent="3cm"/>
+      <fo:region-after extent="2cm"/>
+    </fo:simple-page-master>
+  </fo:layout-master-set>
+
+  <fo:page-sequence master-name="all">
+    <fo:static-content flow-name="xsl-region-after">
+         <fo:block font-size="10pt" text-align="start"
+           border-style="solid" border-color="blue" border-width="0.5pt"
+               space-before.optimum="6pt">
+         Text excerpt from XSL Candidate Recommendation, 21 Nov 2000.
+         </fo:block>
+       </fo:static-content>
+       
+    <fo:flow flow-name="xsl-region-body">
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-before conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-before condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="even-page">
+This is a block with a <fo:inline font-style="italic">break-before="even-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an even-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-before
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-before trait imposes no break condition.   
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="even-page">
+This is a block with a <fo:inline font-style="italic">break-before="even-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an even-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+         
+      <fo:block>
+           <fo:leader leader-pattern="rule" 
+                   rule-thickness="2.0pt"
+                   leader-length="14cm"
+                   space-before.optimum="0pt"
+                   space-after.optimum="12pt"
+                   start-indent="1cm"
+                   end-indent="1cm"
+                   background-color="blue"
+                   color="yellow"/>
+         </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="odd-page">
+This is a block with a <fo:inline font-style="italic">break-before="odd-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an odd-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-before conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-before condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-before
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-before trait imposes no break condition.   
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="odd-page">
+This is a block with a <fo:inline font-style="italic">break-before="odd-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an odd-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+
+         </fo:flow>
+  </fo:page-sequence>
+</fo:root>
+
diff --git a/docs/examples/keeps_and_breaks/pagelevel4.fo b/docs/examples/keeps_and_breaks/pagelevel4.fo
new file mode 100644 (file)
index 0000000..d7be732
--- /dev/null
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+This file addresses breaks in page context, with a
+2-column layout.
+-->
+
+<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
+  <fo:layout-master-set>
+    <!-- layout for all pages -->
+    <fo:simple-page-master master-name="all"
+                  page-height="29.7cm" 
+                  page-width="21cm"
+                  margin-top="1cm" 
+                  margin-bottom="2cm" 
+                  margin-left="2.5cm" 
+                  margin-right="2.5cm">
+      <fo:region-body
+               margin-top="3cm" margin-bottom="2cm"
+               column-count="2" column-gap="0.25in"/>
+      <fo:region-before extent="3cm"/>
+      <fo:region-after extent="2cm"/>
+    </fo:simple-page-master>
+  </fo:layout-master-set>
+
+  <fo:page-sequence master-name="all">
+    <fo:static-content flow-name="xsl-region-after">
+         <fo:block font-size="10pt" text-align="start"
+           border-style="solid" border-color="blue" border-width="0.5pt"
+               space-before.optimum="6pt">
+         Text excerpt from XSL Candidate Recommendation, 21 Nov 2000.
+         </fo:block>
+       </fo:static-content>
+       
+    <fo:flow flow-name="xsl-region-body">
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-before conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-before condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="even-page">
+This is a block with a <fo:inline font-style="italic">break-before="even-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an even-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-before
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-before trait imposes no break condition.   
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="even-page">
+This is a block with a <fo:inline font-style="italic">break-before="even-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an even-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+         
+      <fo:block span="all">
+           <fo:leader leader-pattern="rule" 
+                   rule-thickness="2.0pt"
+                   leader-length="14cm"
+                   space-before.optimum="0pt"
+                   space-after.optimum="12pt"
+                   start-indent="1cm"
+                   end-indent="1cm"
+                   background-color="blue"
+                   color="yellow"/>
+         </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep and break conditions apply to a class of areas, which are typically
+page-reference-areas, column-areas, and line-areas. The appropriate class
+for a given condition is referred to as a context and an area in this
+class is a context-area. As defined in Section 6.4.1, page-reference-areas
+are areas generated by an fo:page-sequence using the specifications in a
+fo:page-master, and column-areas are normal-flow-reference-areas generated
+from a region-body, or region-reference-areas generated from other types
+of region-master.
+      </fo:block>
+
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+A keep or break condition is an open statement about a formatting object
+and the tree relationships of the areas it generates with the relevant
+context-areas. These tree relationships are defined mainly in terms of
+leading or trailing areas. If A is a descendant of P, then A is defined
+to be leading in P if A has no preceding sibling which is a normal area,
+nor does any of its ancestor areas up to but not including P. Similarly,
+A is defined to be trailing in P if A has no following sibling which is
+a normal area, nor does any of its ancestor areas up to but not including P.
+For any given formatting object, the next formatting object in the flow is
+the first formatting object following (in the pre-order traversal order)
+which generates and returns normal areas.
+               </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="odd-page">
+This is a block with a <fo:inline font-style="italic">break-before="odd-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an odd-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are either break-before or break-before conditions.
+A break-before condition is satisfied if the first area generated and
+returned by the formatting object is leading within a context-area. A
+break-before condition depends on the next formatting object in the flow;
+it is satisfied if either there is no such next formatting object, or
+if the first normal area generated and returned by that formatting
+object is leading in a context-area.     
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Break conditions are imposed by the break-before and break-before
+properties. A refined value of page for these traits imposes a break
+condition with a context consisting of the page-reference-areas; a
+value of even-page or odd-page imposes a break condition with a
+context of even-numbered page-reference-areas or odd-numbered page
+reference-areas, respectively; a value of column imposes a break
+condition with a context of column-areas. A value of auto in a
+break-before or break-before trait imposes no break condition.   
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are either keep-with-previous, keep-with-next, or
+keep-together conditions. A keep-with-previous condition on an
+object is satisfied if the first area generated and returned by
+the formatting object is not leading within a context-area, or
+if there are no preceding areas in a post-order traversal of the
+area tree. A keep-with-next condition is satisfied if the last
+area generated and returned by the formatting object is not
+trailing within a context-area, or if there are no following
+areas in a pre-order traversal of the area tree. A keep-together
+condition is satisfied if all areas generated and returned by
+the formatting object are descendants of a single context-area.          
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+Keep conditions are imposed by the "within-page", "within-column",
+and "within-line" components of the "keep-with-previous",
+"keep-with-next", and "keep-together" properties. The refined value
+of each component specifies the strength of the keep condition
+imposed, with higher numbers being stronger than lower numbers and
+the value always being stronger than all numeric values. A component
+with value auto does not impose a keep condition. A "within-page"
+component imposes a keep-condition with context consisting of the
+page-reference-areas; "within-column", with context consisting of
+the column-areas; and "within-line" with context consisting of the
+line-areas.      
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt"
+               color="blue"
+               break-before="odd-page">
+This is a block with a <fo:inline font-style="italic">break-before="odd-page"
+</fo:inline> break condition. This condition is satisfied if the
+first normal area generated by this FO is leading in an odd-page
+context.
+      </fo:block>
+         
+      <fo:block
+           font-size="14pt" font-family="sans-serif"
+               line-height="18pt" space-after.optimum="15pt">
+The area tree is constrained to satisfy all break conditions imposed.
+Each keep condition must also be satisfied, except when this would
+cause a break condition or a stronger keep condition to fail to be
+satisfied. If not all of a set of keep conditions of equal strength
+can be satisfied, then some maximal satisfiable subset of conditions
+of that strength must be satisfied (together with all break conditions
+and maximal subsets of stronger keep conditions, if any).        
+      </fo:block>
+
+         </fo:flow>
+  </fo:page-sequence>
+</fo:root>
+