Несколько встроенных контейнеров в одном блоке — невозможно заставить их перейти на следующую страницу

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

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

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

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

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

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

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


person Hobbes    schedule 21.05.2018    source источник
comment
Пожалуйста, посмотрите на этот ответ - stackoverflow.com/a/225691/4824495   -  person Nadezhda Serafimova    schedule 21.05.2018
comment
Я просмотрел эти атрибуты, но нет возможности указать, например. page-break-inside=разрешить или сохранить вместе=нет. IOW вы можете указать, что контент не может иметь разрыва страницы, но вы не можете сказать, что разрывы страниц разрешены в этом контенте.   -  person Hobbes    schedule 21.05.2018
comment
fo:external-graphic — FO встроенного уровня. Это не должно быть дочерним элементом fo:inline-container. См. w3.org/TR/xsl11/#d0e6532.   -  person Tony Graham    schedule 23.05.2018


Ответы (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>
person Tony Graham    schedule 22.05.2018
comment
Меня устраивает. У меня все еще работает, когда я удаляю пробел между каждым </fo:inline-container> и последующим <fo:inline-container>. - person Tony Graham; 23.05.2018
comment
Результат! Это не сработало, потому что я применил настройку вдов/сирот не в том месте. Когда я добавляю блок fo:block, содержащий все встроенные контейнеры, он работает. - person Hobbes; 24.05.2018