Чтение онлайн

ЖАНРЫ

Холзнер Стивен

Шрифт:

Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

</fo:block>

</fo:flow>

 </fo:page-sequence>

</fo:root>

Теперь все готово. Первая страница, созданная

pages.fo
, показана на рис. 12.8;
как можно заметить, текст смещен вниз.

Рис. 12.8. Первая страница, отформатированная при помощи XSL-FO 

Текст на второй странице начинается сверху, как видно на рис. 12.9.

Рис 12.9. Вторая страница, отформатированная при помощи XSL-FO

Как можно заметить из листинга 12.8, я включил в

pages.fo
большое число строк, не содержащих ничего, кроме слов «Sample Text.», для того чтобы гарантированно получить многостраничный документ. Но для перехода на новую страницу не обязательно располагать большим количеством текста: можно также установить свойство
break-after
элемента
<fo:block>
в «page», и процессор XSL-FO перейдет на новую страницу после текущего блока:

<fo:flow flow-name="xsl-region-body">

 <fo:block font-size="36pt" font-family="Times"

text-align="center" space-after="24pt">

Sample Document

 </fo:block>

 <fo:block font-size="24pt" font-family="sans-serif"

color="gray" break-after="page">

Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

Sample Text. Sample Text.

 </fo:block>

 <fo:block font-size="24pt" font-family="sans-serif"

color="gray">

Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

Sample Text. Sample Text.

 </fo:block>

</fo:flow>

Вот и все. Теперь процессор XSL-FO перейдет на следующую страницу после блока. Для создания разрывов можно использовать следующие свойства и настройки:

• 

break-after
. Указывает, что последняя область, созданная при обработке данного форматирующего объекта, будет последней помещенной в определенный контекст. Устанавливается в
auto | column | page | even-page | odd-page | inherit
;

• 

break-before
. Указывает, что первая созданная область должна быть первой, помещенной в определенный контекст. Устанавливается в
auto | column | page | even-page | odd-page | inherit
.

Рассмотрим

еще один пример применения последовательностей страниц. Если вы посмотрите на книги, напечатанные на таких западных языках, как английский, немецкий или французский, вы заметите, что страницы с четными номерами, как правило, расположены слева, а страницы с нечетными номерами — справа. Четные и нечетные страницы можно отформатировать по-разному: например, можно задать дополнительное пространство поля у переплета, что даст дополнительное пространство левого поля для нечетных страниц и дополнительное пространство правого поля для четных.

Чтобы реализовать такое форматирование, можно применить атрибут

odd-or-even
элемента
<fo:conditional-page-master-reference>
, устанавливая его в значение «even» или «odd», выбирая соответственно четные или нечетные страницы:

<?xml version="1.0" encoding="UTF-8"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

 <fo:layout-master-set>

<fo:simple-page-master margin-right="50mm" margin-left="20mm"

margin-bottom="10mm" margin-top="10mm" page-width="300mm"

page-height="400mm" master-name="leftpage">

<fo:region-body margin-right="0mm" margin-left="0mm"

margin-bottom="10mm" margin-top="50mm"/>

<fo:region-after extent="10mm"/>

<fo:region-before extent="10mm"/>

</fo:simple-page-master>

<fo:simple-page-master margin-right="20mm" margin-left="50mm"

margin-bottom="10mm" margin-top="10mm" page-width="300mm"

page-height="400mm" master-name="rightpage">

<fo:region-body margin-right="0mm" margin-left="0mm"

margin-bottom="10mm" margin-top="20mm"/>

<fo:region-after extent="10mm"/>

<fo:region-before extent="10mm"/>

</fo:simple-page-master>

<fo:page-sequence-master master-name="alternatingpages">

<fо:repeatable-page-master-alternatives>

<fo:conditional-page-master-reference

master-name="rightpage" odd-or-even="odd"/>

<fo:conditional-page-master-reference

master-name="leftpage" odd-or-even="even"/>

</fo:repeatable-page-master-alternatives>

</fo:page-sequence-master>

 </fo:layout-master-set>

 <fo:page-sequence master-name="alternatingpages">

Поделиться с друзьями: