1

我正在使用内联容器来渲染一系列图像。我的源文件有 5 个段落,每个段落包含 1 个图像。

<para stylename="Numbered Figure">
    <image file="P_1568.pdf" width="7.90cm" height="12cm"/>
</para>

我有一个 A4 页面,其中 2 张图像并排放置,2 张相互重叠。

我的 FO:

<xsl:when test="@stylename = 'Numbered Figure'">
    <fo:block widows="1" orphans="1">
      <fo:inline-container width="descendant::image/@width">
        <fo:external-graphic src="descendant::image/@file">
        <fo:block-container>
             code for placing a number in the top left corner of the image
        </fo:block-container> 
    </fo:inline-container>
  <fo:block>

这是结果:内联容器不会换行到下一页,而是溢出页面。
在此处输入图像描述

这看起来像 5 个内联容器被视为一个单词,所以我尝试在每个内联容器之间添加一个空格:

</fo:inline-container><fo:inline><xsl:text> </xsl:text></fo:inline>

这导致图像 4 和 5 包装到第二页,而不是我打算在第一页上显示图像 1-4。空间太宽,图像 3+4+空间不适合一行。
我尝试使用零宽度空间 (U+200B),但随后图像又回到第 1 页溢出。

到目前为止我尝试过的都没有成功:

  • 在每个内联容器之后添加一个包含空格字符的 fo:inline
  • 在包含 fo:block 上指定 widows="1" orphans="1"

我的目标是将图像 5 换到第二页。是否可以设置一个属性以允许在 2 个内联容器之间中断?

(我需要内联容器,因为我在每个图像的顶部放置了一个文本元素)。使用天线室格式化程序。

编辑:这可能是 Antennahouse Formatter 中的一个问题。当我的源包含 7 个图像时,图像放置正确(第 1 页上的 4 个图像,第 2 页上的 3 个图像)。

4

1 回答 1

1

widows和都设置orphans为 1,以便块可以中断并在下一页上仅放置一行。

<fo:block widows="1" orphans="1">
    <fo:inline-container width="7.90cm" height="12cm">
        <fo:block><fo:external-graphic src="ah-logo.svg" /></fo:block>
    </fo:inline-container>
    <fo:inline-container width="7.90cm" height="12cm">
        <fo:block><fo:external-graphic src="ah-logo.svg" /></fo:block>
    </fo:inline-container>
    <fo:inline-container width="7.90cm" height="12cm">
        <fo:block><fo:external-graphic src="ah-logo.svg" /></fo:block>
    </fo:inline-container>
    <fo:inline-container width="7.90cm" height="12cm">
        <fo:block><fo:external-graphic src="ah-logo.svg" /></fo:block>
    </fo:inline-container>
    <fo:inline-container width="7.90cm" height="12cm">
        <fo:block><fo:external-graphic src="ah-logo.svg" /></fo:block>
    </fo:inline-container>
</fo:block>
于 2018-05-22T19:51:26.690 回答