现在的位置: 首页 > 综合 > 正文

XSL-FO 基础知识 (四)

2013年10月12日 ⁄ 综合 ⁄ 共 2450字 ⁄ 字号 评论关闭
文本对齐 第 1 页(共5 页)

有两个属性用来定义块中文本的对齐。text-align 属性定义文本行如何对齐,text-align-last 属性让您定义对块中最后一行文本的特殊处理。两个属性都有相同的值集:startcenterendjustify。对于从左向右书写的语言,text-align="start" 产生向左对齐的文本,text-align="end" 产生向右对齐的文本。对于以其它方向书写的语言,startend 有别的含义。

下面演示居中的段落在 XSL-FO 中是什么样子:


<fo:block text-align="center">
  Now is the time for all good men and women to come to the 
  aid of the party.  Every good boy deserves fudge.  The 
  quick brown fox jumped over the lazy dog.  Jackdaws love
  my big sphinx of quartz.  
</fo:block>
块间距第 2 页(共5 页)


有两组特性用来定义块之间应该有多大的间距(如果有间距的话):space-beforespace-after。您可以添加后缀 .minimum.maximum.optimum.precedence 来修改这些特性。下表概括了使用这些特性的一些样本格式化,并描述了后缀的效果:

XSL-FO 样本含义
<fo:block space-before="14pt"> 在块开始之前留 14 点的垂直空间
<fo:block space-before.optimum="14pt"> 在块开始之前留 14 点的垂直空间
<fo:block space-before.minimum="6pt"> 在块开始之前至少留 6 点的垂直空间

XSL-FO 规范定义了当不同间距特性相互冲突时,用于决定优先权的所有的属性和规则。在本教程中,示例通常指定非修改值并维持其原状。

根据特性及其组成部分的不同组合,总共有 10 项选择:


space-before
space-before.minimum
space-before.maximum
space-before.optimum
space-before.precedence
space-after
space-after.minimum
space-after.maximum
space-after.optimum
space-after.precedence
在块内和块之间避免分隔第 3 页(共5 页)


XSL-FO 规范定义了几个特性,它们能提示显示引擎如何使内容块保持在一起。有三组这样的特性:keep-with-nextkeep-with-previouskeep-together。您可以将这些基本特性与 .within-line.within-column.within-page 这些组成部分结合使用。

下表演示了使用这些特性的一些样本格式化,并描述了它们的使用效果:

XSL-FO 样本含义
<fo:block font-size="24pt" keep-with-next.within-page="always"> 始终将这一块与它之后的一块放在同一页面上
<fo:block keep-with-previous="always"> 始终将这一块与它前面的一块放在一起
<fo:block keep-together.within-column="always"> 决不允许这一块中有分栏符

space-beforespace-after 特性及其组件一样,这里也有许多组合:


keep-with-next
keep-with-next.within-line
keep-with-next.within-column
keep-with-next.within-page
keep-with-previous
keep-with-previous.within-line
keep-with-previous.within-column
keep-with-previous.within-page
keep-together
keep-together.within-line
keep-together.within-column
keep-together.within-page

这些特性的有效值有 auto(它让显示程序来决定何时将行放在一起)和 always(它指明两个块应始终放在一起)。您还可以使用整数值;数字越大,特性的优先级就越高(always 高于任何整数)。虽然介绍了这些内容,但要知道 FOP 并不总是能正确处理这些特性,所以不要期望它们每次都能发挥作用。

在块的前后放置分隔符 第 4 页(共5 页)

XSL-FO 也有告诉显示程序如何分隔块的特性。break-before 属性有五个值:

下表概括了使用 <fo:leader> 元素的三种方法,并描述了每个示例的效果:

属性值 值的作用
auto 让显示引擎自行处理
column 在这个块的前面放置分栏符
page 在这个块的前面放置分页符
odd-page 显示引擎插入一个分页符(或两个,如有必要的话),以便这一块在奇数页上开始。换句话说,如果一个分页符会使这个块在偶数页上开始的话,FOP 会插入第二个分页符。
even-page 显示引擎插入一个分页符(或两个,如有必要的话),以便这一块在偶数页上开始。

还有一个 break-after 属性,它有五个相同的值,用来指定当前块之后的分隔符。


widows 和 orphans 第 5 页(共5 页)

使行保持在一起的最后两个控制特性是 orphanswidows 特性。widows 和 orphans 是被独立显示的段落开始或结尾处的单行或部分行,产生它们的原因是因为分页符或分栏符不恰当的位置中断了文本块。在 FO 中,您可以指定某个块在分隔符前后有多少行应放在一起。widows 特性定义了必须在页面底部一起出现的最小行数;缺省值是 2。orphans 特性定义必须在页面顶部一起出现的最小行数。其缺省值也是 2。



抱歉!评论已关闭.