This section describes extensions used to set the tab value needed while working with a document.
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"> (1) <xf:defaultTabStop val="2in"/> (2)
<fo:layout-master-set>
<fo:simple-page-master master-name="all-pages" page-width="8.5in" page-height="3in">
<fo:region-body region-name="xsl-region-body" margin="0.7in" column-gap="0.25in" padding="6pt"/>
<fo:region-before region-name="xsl-region-before" extent="0.7in" display-align="after" padding="6pt 0.7in" />
<fo:region-after region-name="xsl-region-after" extent="0.7in" display-align="before" padding="6pt 0.7in" />
</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:static-content flow-name="xsl-region-before" font-family="Times New Roman" font-size="12pt">
<fo:block> </fo:block>
</fo:static-content>
<fo:static-content flow-name="xsl-region-after" font-family="Times New Roman" font-size="12pt">
<fo:block> </fo:block>
</fo:static-content>
<fo:flow flow-name="xsl-region-body" font-family="Times New Roman" font-size="12pt">
<fo:block font-size="14" color="red">
<xf:tabstops> (3)
<xf:tabstop pos="1in"></xf:tabstop> (4)
<xf:tabstop pos="3in"></xf:tabstop>
<xf:tabstop pos="4in"></xf:tabstop>
</xf:tabstops>
<fo:inline font-size="100pt">t<xf:tab/>o<xf:tab/>t<xf:tab/>o</fo:inline></fo:block> (5)
<fo:block text-decoration="underline" font-size="14" color="blue">
<xf:tabstops>
<xf:tabstop pos="96px"></xf:tabstop>
<xf:tabstop pos="2in"></xf:tabstop>
<xf:tabstop pos="5in"></xf:tabstop>
</xf:tabstops>
<fo:inline font-size="100pt">t<xf:tab/>o<xf:tab/>t<xf:tab/>o</fo:inline></fo:block>
<fo:block font-size="14" color="green">
<fo:inline font-size="100pt">t<xf:tab/>o<xf:tab/>t<xf:tab/>o</fo:inline></fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Key observations:
(1) In order to work with these extensions, the corresponding xml namespace must be defined.
(2) xf:defaultTabStop defines working with tabs; val="2in" sets the default tab value.
(3) xf:tabstops overrides the default tab values for the fo:block where it is defined.
(4) xf:tabstop is used to set the new tab values using the pos attribute and its value can be introduced in pixels or inches. Every time a tab is used, the cursor jumps to the values defined for pos.
(5) xf:tab is the extension used to insert the tab in the fo:block.
Output:
Also, xf:tabstop supports the xf:pattern attribute, that can have the following values:
• | none |
• | dot |
• | hyphen |
• | underscore |
This attribute determines the text/character used for tab stops.
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-width="8.5in" page-height="3in">
<fo:region-body padding="6pt" margin="0.7in" region-name="xsl-region-body"/>
</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" font-size="14pt">
<fo:block>Custom tab stop at "6.5in"</fo:block>
<fo:block background-color="yellow"><xf:tabstops>
<xf:tabstop pattern="dot" pos="5in" val="center"/>
</xf:tabstops>
Text<xf:tab/>here</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Output: