Footnote Extensions

Top Previous Topic Next Topic  Print this topic

XF Rendering Server 2013 includes two extensions which allow applying automatic numbering to footnotes.

 

Footnote Number:

The xf:footnote-number element can be used inside any fo:footnote element to retrieve the index which has been assigned to that specific footnote. It can be placed either inside the fo:inline or fo:footnote-body elements, whenever it is necessary to display the footnote's number. The formatting can be specified using the xf:format attribute, which has the same available formats as fo:page-number: 1, 01, 001, 0001, A, i, I.

 

Usage:

 

 

<fo:footnote>

       <fo:inline><xf:footnote-number xf:format="A"/></fo:inline>

       <fo:footnote-body>

               <fo:block>

                       <xf:footnote-number xf:format="A"/>

                       <fo:inline>Text here</fo:inline>

               </fo:block>

       </fo:footnote-body>

</fo:footnote>

 

 

 

Unique Footnote

 

This element can be used when a footnote must be referenced on the same page multiple times (only one entry added at the bottom of the page).

 

Example of usage:

 

 

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

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xf="http://www.ecrion.com/xf/1.0" xmlns:xc="http://www.ecrion.com/2008/xc" xmlns:svg="http://www.w3.org/2000/svg">

       <fo:layout-master-set>

               <fo:simple-page-master master-name="Letter Page" page-width="8.500in" page-height="5.000in">

                       <fo:region-body region-name="xsl-region-body" margin="0.700in"/>

               </fo:simple-page-master>

       </fo:layout-master-set>

       <fo:page-sequence master-reference="Letter Page">

               <fo:flow flow-name="xsl-region-body" font-family="Times" font-size="12pt">

                       <fo:block>

                       Some text here. Some text here. Some text here. Some text here. Some text here.

                       Some text here. Some text here. Some text here. Some text here. Some text here.

                       Some text here. Some text here. Some text here. Some text here. Some text here.

                       Some text here. Some text here. Some text here. Some text here. Some text here.

                       Some text here. Some text here. Some text here. Some text here. Some text here.

                               <fo:footnote xf:unique-footnote-id="1">

                                       <fo:inline>

                                               *

                                       </fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                               * This is a footnote that should appear

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                               </fo:block>

                               <fo:block>&#x00A0;</fo:block>

                               <fo:block>

                               Some text between footnotes.Some text between footnotes.Some text between footnotes.

                               Some text between footnotes.Some text between footnotes.Some text between footnotes.

                               Some text between footnotes.Some text between footnotes.Some text between footnotes.

                               Some text between footnotes.Some text between footnotes.Some text between footnotes.

                               Some text between footnotes.Some text between footnotes.Some text between footnotes.

                               Some text between footnotes.Some text between footnotes.Some text between footnotes.

                               <fo:footnote xf:unique-footnote-id="1">

                                       <fo:inline>*</fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                               * This is a footnote that shouldn't appear

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

               </fo:flow>

       </fo:page-sequence>

</fo:root>

 

 

Output:

 

footnote-unique

 

 

Footnote Properties:

The xf:footnote-properties element is used to customize the way footnote numbers are assigned and formatted. This element may appear at any point in the document, overriding the previous settings from that point onwards in the document flow.

The following attributes can be applied to the element:

 

·The start-index attribute sets the first index to be used when starting or restarting footnote numbering. The default value is "1".
·The restart-rule attribute defines when to restart the footnote numbering. Possible values are "auto" (meaning that numbering does not restart implicitly) and page (which will cause the numbering to restart on every page from the number specified by start-index). The default value is "auto".
·The restart-now attribute will force the numbering to restart exactly when the xf:footnote-properties element is processed. When set to "true", the footnote numbering resets to 0.
·The format attribute specifies the format to use when displaying footnote numbers. Valid values are the same as those supported by fo:page-number and fo:page-number-citation.

 

 

Note:

·For each occurrence of the xf:footnote-properties element, unspecified attributes will revert to their default values.

 

Example of usage:

 

 

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

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

       <fo:layout-master-set>

               <fo:simple-page-master master-name="all-pages" page-height="5in" page-width="6in">

                       <fo:region-body region-name="xsl-region-body" column-gap="0.25in" padding="6pt" margin="0.7in" />

                       <fo:region-before region-name="xsl-region-before" display-align="after" extent="0.7in" padding="6pt"/>

                       <fo:region-after region-name="xsl-region-after" display-align="before" extent="0.7in" padding="6pt"/>

               </fo:simple-page-master>

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

                       <fo:repeatable-page-master-reference master-reference="all-pages"/>

               </fo:page-sequence-master>

       </fo:layout-master-set>

       <fo:page-sequence master-reference="default-sequence">

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

                       <fo:block>

                               Hello World

                               <fo:footnote>

                                       <!-- will display A because it is placed in the first footnote -->

                                       <fo:inline color="red"><xf:footnote-number xf:format="A"/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!-- will display A because it is placed in the first footnote -->

                                                       <fo:inline color="red"><xf:footnote-number xf:format="A"/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

                       <fo:block break-before="page">

                               Hello World

                               <fo:footnote>

                                       <!-- will display 2 because it is placed in the second footnote and restart-rule is 'auto' -->

                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!-- will display 2 because it is placed in the second footnote and restart-rule is 'auto' -->

                                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

                       <!-- will cause numbering to restart for each page from here on -->

                       <xf:footnote-properties restart-rule="page" />

                       <fo:block break-before="page">

                               Hello World

                               <fo:footnote>

                                       <!-- will display 1 because restart-rule is now 'page' -->

                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!-- will display 1 because restart-rule is now 'page' -->

                                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

                       <fo:block>

                               Hello World

                               <fo:footnote>

                                       <!-- will display 2 because it is on the same page -->

                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!-- will display 2 because it is on the same page -->

                                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

                       <!-- will cause the numbering to restart right now, but will also reset restart-rule to 'auto' -->

                       <!-- format="i" will also format the numbers as lowercase Roman letters -->

                       <xf:footnote-properties restart-now="true" format="i" />

                       <!-- to keep the numbering restarting on each page, set restart-rule explicitly -->

                       <xf:footnote-properties restart-rule="page" restart-now="true" format="i" />

                       <fo:block>

                               Hello World

                               <fo:footnote>

                                       <!-- will display i -->

                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!--  will display i -->

                                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

                       <fo:block>

                               Hello World

                               <fo:footnote>

                                       <!--  will display ii -->

                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!--  will display ii -->

                                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

                       <fo:block>

                               Hello World

                               <fo:footnote>

                                       <!--  will display iii -->

                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!--  will display iii -->

                                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

                       <fo:block>

                               Hello World

                               <fo:footnote>

                                       <!--  will display iv -->

                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                       <fo:footnote-body>

                                               <fo:block>

                                                       <!--  will display iv -->

                                                       <fo:inline color="red"><xf:footnote-number/></fo:inline>

                                                       A "Hello World" program is a computer program

                                                       which prints out "Hello, world!" on a display device.

                                               </fo:block>

                                       </fo:footnote-body>

                               </fo:footnote>

                       </fo:block>

               </fo:flow>

       </fo:page-sequence>

</fo:root>