Несколько inline-контейнеров в одном блоке - они не могут быть разбиты на следующую страницу

Я использую inline-контейнеры для рендеринга серии изображений. Мой исходный файл имеет 5 абзацев, каждый из которых содержит 1 изображение.

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

У меня есть страница формата А4, где есть место для двух из этих изображений рядом и 2 друг над другом.

Мой ФО:

<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, содержащего пробельные символы после каждого inline-контейнера
  • указание widows="1" orphans="1" на содержащем fo: блок

Моя цель - перенести изображение 5 на вторую страницу. Могу ли я установить атрибут, разрешающий разрыв между 2 встроенными контейнерами?

(Мне нужен inline-контейнер, потому что я помещаю текстовый элемент поверх каждого изображения). Использование Antennahouse Formatter.

Изменить: Это может быть проблемой в Antennahouse Formatter. Когда мой источник содержит 7 изображений, изображения размещаются правильно (4 изображения на странице 1, 3 изображения на странице 2).

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>
Другие вопросы по тегам