Книга: XSLT

Создание сносок: и

Создание сносок: <fo:footnote> и <fo:footnote-body>

Сноски называют «подстрочными» (out-of-line) форматирующими объектами, потому что они добавляют текст в нижнюю часть страницы. Сноска создается при помощи элемента <fo:footnote>, а текст тела сноски — при помощи элемента <fo:footnote-body>. В текущей спецификации XSL-FO эти элементы не поддерживают никаких свойств.

В следующем примере, footnotes.fo (листинг 12.5), я использую две сноски в теле документа и добавляю в них текст.

Листинг 12.5. footnotes.fo

<?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="20mm" margin-left="20mm"
   margin-bottom="10mm" margin-top="10mm" page-width="300mm"
   page-height="400mm" master-name="page">
   <fo:region-body margin-right="0mm" margin-left="0mm"
    margin-bottom="10mm" margin-top="0mm"/>
   <fo:region-after extent="10mm"/>
  </fo:simple-page-master>
 </fo:layout-master-set>
 <fo:page-sequence master-name="page">
  <fo:flow flow-name="xsl-region-body">
   <fo:block space-after="12pt" font-weight="bold"
    font-size="36pt" text-align="center">
    Using Footnotes
   </fo:block>
   <fo:block font-size="24pt">
    This:
    <fo:footnote>
     <fo:inline>footnote
      <fo:inline font-size="16pt" vertical-align="super">
       1
      </fo:inline>
     </fo:inline>
     <fo:footnote-body>
      <fo:block>
       1. Here's the first footnote's text.
      </fo:block>
     </fo:footnote-body>
    </fo:footnote>
    refers to text at the bottom of this page.
   </fo:block>
   <fo:block font-size="24pt">
    This second;
    <fo:footnote>
     <fo:inline>footnote
      <fo:inline font-size="16pt" vertical-align="super">
       2
      </fo:inline>
     </fo:inline>
     <fo:footnote-body>
      <fo:block>
       2. And here's the second footnote's text.
      </fo:block>
     </fo:footnote-body>
    </fo:footnote>
    also refers to text at the bottom of this page.
   </fo:block>
  </fo:flow>
 </fo:page-sequence>
</fo:root>

Текст, дополненный верхними индексами для сносок 1 и 2, показан на рис. 12.4. Текст двух сносок внизу той же самой страницы показан на рис. 12.5.


Рис. 12.4. Текст со сносками 


Рис. 12.5. Текст сносок внизу страницы

Для создания текста сносок применяется элемент <fo:footnote>. При работе с процессором fop вы должны самостоятельно добавлять фактический номер сноски в верхнем индексе — такой, как 1 или 2. Вот как это выглядит в footnotes.fo, где для создания верхнего индекса я установил свойство vertical-align встроенного элемента в «super»:

<fo:block font-size="24pt">
 This:
 <fo:footnote>
  <fo:inline>footnote
   <fo:inline font-size="16pt" vertical-align="super">
    1
   </fo:inline>
  </fo:inline>
  .
  .
  .
</fo:block>

Чтобы создать текст сноски, появляющийся внизу страницы, нужно применить элемент <fo:footnote-body> внутри элемента <fo:footnote>. Сам процессор fop не нумерует сноски, поэтому за добавление номеров сносок отвечаете вы:

<fo:block font-size="24pt">
 This
 <fo:footnote>
  <fo:inline>footnote
   <fo:inline font-size="16pt" vertical-align="super">
    1
   </fo:inline>
  </fo:inline>
  <fo:footnote-body>
   <fo:block>
    1. Here's the first footnote's text.
   </fo:block>
  </fo:footnote-body>
 </fo:footnote>
 refers to text at the bottom of this page.
</fo:block>
 

Этот код на XSL-FO создает и первый текст со сносками на рис. 12.4, и сам текст первых сносок, показанный на рис. 12.5.

Оглавление книги


Генерация: 1.137. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз