#xsl-fo #page-break
#xsl-fo #разрыв страницы
Вопрос:
У меня ситуация, когда у меня есть 2 блочных контейнера — если они достаточно короткие, они должны быть на одной странице, разделенные строкой. Но если нет, то контейнер 2. block должен начинаться со следующей страницы, и между ними не должно быть строки.
Как я могу это сделать (потому что я не знаю, как я могу проверить, есть ли внутри потока разрыв страницы)? Есть ли какой-либо параметр, который я могу использовать, чтобы проверить, запускается ли блок после разрыва страницы или что-то еще?
Спасибо за любую помощь!!
Frangoo
Ответ №1:
Вы могли бы установить следующий атрибут во втором контейнере блоков
keep-together.within-page="always"
При этом процессор XSL-FO позаботится о том, чтобы весь блок остался на одной странице. Итак, это будет выглядеть примерно так:
<fo:block keep-together.within-page="always"> <!-- any other attribute as necessary -->
...
</fo:block>
Комментарии:
1. Спасибо, да, это уже работает. Но проблема в том, чтобы провести линию (или любой другой элемент) между этими блоками, в зависимости от того, есть разрыв страницы или нет.
2. Я не думаю, что это возможно с определением XSL-FO. Если вас действительно интересует строка, вы могли бы попытаться получить количество отображаемых страниц и использовать его для определения рисунка линии.
3. Hmpf. Я ожидал, что это невозможно сделать. Но как я могу проверить количество страниц? Я могу использовать IF только в XSLT, но там я не знаю количество страниц, верно? В любом случае спасибо за ваш ответ!
4. Вы всегда можете напечатать пробел между двумя блоками, если разделение пока является вашей единственной заботой.