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

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

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

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

Мой 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>

Это результат: встроенные контейнеры не переносятся на следующую страницу, а переполняют страницу.
enter image description here

Похоже, что 5 встроенных контейнеров обрабатываются как одно слово, поэтому я попытался добавить пробел между каждым встроенным контейнером:

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

Это приводит к изображению 4 и5 перенос на вторую страницу вместо моего намерения иметь изображение 1-4 на первой странице.Пробел слишком большой, изображение 3 + 4 + пробел не умещается на одной строке.
Я попытался использовать пробел нулевой ширины (U + 200B), но затем изображения снова переполняются на странице 1.

То, что я пробовал до сих пор, все безуспешно:

  • добавление fo: inline, содержащего символ пробела после каждого встроенного контейнера
  • с указанием вдов =«1» orphans = «1» на содержащем fo: block

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

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

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

1 Ответ

0 голосов
/ 22 мая 2018

Установите для 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>
...