aboutsummaryrefslogtreecommitdiffstats
path: root/docs/examples/keeps_and_breaks/pagelevel4.fo
blob: 22fd1c0eb44496e56f59d6d658bc8cfdbfb58592 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
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-reference="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>