summaryrefslogtreecommitdiff
path: root/docs/docbook/xslt
diff options
context:
space:
mode:
Diffstat (limited to 'docs/docbook/xslt')
-rw-r--r--docs/docbook/xslt/expand-sambadoc.xsl311
-rw-r--r--docs/docbook/xslt/figures/caution.eps1
-rw-r--r--docs/docbook/xslt/figures/caution.pdfbin0 -> 1126 bytes
-rw-r--r--docs/docbook/xslt/figures/important.eps1
-rw-r--r--docs/docbook/xslt/figures/important.pdfbin0 -> 1126 bytes
-rw-r--r--docs/docbook/xslt/figures/note.eps1387
-rw-r--r--docs/docbook/xslt/figures/note.pdfbin0 -> 1814 bytes
-rw-r--r--docs/docbook/xslt/figures/tip.eps1503
-rw-r--r--docs/docbook/xslt/figures/tip.pdfbin0 -> 3699 bytes
-rw-r--r--docs/docbook/xslt/figures/warning.eps1
-rw-r--r--docs/docbook/xslt/figures/warning.pdfbin0 -> 1126 bytes
-rw-r--r--docs/docbook/xslt/generate-attributions.xsl70
-rw-r--r--docs/docbook/xslt/html-chunk.xsl14
-rw-r--r--docs/docbook/xslt/html-common.xsl59
-rw-r--r--docs/docbook/xslt/html.xsl10
-rw-r--r--docs/docbook/xslt/html/samba.css80
-rw-r--r--docs/docbook/xslt/latex.xsl42
-rw-r--r--docs/docbook/xslt/latex/sambadoc.cls129
-rw-r--r--docs/docbook/xslt/lists.mod.xsl29
-rw-r--r--docs/docbook/xslt/man.xsl159
-rw-r--r--docs/docbook/xslt/table.mod.xsl743
21 files changed, 4539 insertions, 0 deletions
diff --git a/docs/docbook/xslt/expand-sambadoc.xsl b/docs/docbook/xslt/expand-sambadoc.xsl
new file mode 100644
index 0000000000..098512ce1d
--- /dev/null
+++ b/docs/docbook/xslt/expand-sambadoc.xsl
@@ -0,0 +1,311 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:samba="http://samba.org/common"
+ version="1.1"
+ extension-element-prefixes="exsl">
+
+<xsl:output method="xml"/>
+
+<xsl:param name="xmlSambaNsUri" select="'http://samba.org/common'"/>
+
+<xsl:template match="reference/refentry/refsect1">
+ <xsl:if test="title!='VERSION' and title!='AUTHOR'">
+ <xsl:element name="refsect1">
+ <xsl:if test="@id!=''">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="reference/refentry">
+ <xsl:element name="section">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ <xsl:element name="title">
+ <xsl:value-of select="refmeta/refentrytitle"/>
+<!-- <xsl:text> (</xsl:text>
+ <xsl:value-of select="refnamediv/refpurpose"/>
+ <xsl:text>)</xsl:text>-->
+ </xsl:element>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="reference/refentry/refmeta"/>
+
+<xsl:template match="reference/refentry/refnamediv"/>
+
+<xsl:template match="reference">
+ <xsl:element name="appendix">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="/node()">
+ <xsl:text disable-output-escaping="yes">
+&lt;!DOCTYPE </xsl:text><xsl:value-of select="name(.)"/><xsl:text disable-output-escaping="yes"> PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+ &lt;!ENTITY % globalentities SYSTEM 'global.ent'> %globalentities;
+ ]>
+</xsl:text>
+<xsl:copy>
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
+ <xsl:apply-templates/>
+</xsl:copy>
+</xsl:template>
+
+
+<!-- This is needed to copy content unchanged -->
+<xsl:template match="@*|node()">
+
+ <xsl:copy>
+ <xsl:apply-templates select="@*|node()"/>
+ </xsl:copy>
+</xsl:template>
+
+<xsl:template match="smbconfexample/smbconfoption|smbconfblock/smbconfoption">
+ <xsl:element name="member">
+ <xsl:element name="parameter">
+ <xsl:value-of select="name"/>
+ <xsl:choose>
+ <xsl:when test="value != ''">
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="value"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="smbconfexample/smbconfcomment|smbconfblock/smbconfcomment">
+ <xsl:element name="member">
+ <xsl:text># </xsl:text>
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="smbconfexample/smbconfsection|smbconfblock/smbconfsection">
+ <xsl:element name="member">
+ <xsl:text> </xsl:text>
+ </xsl:element>
+ <xsl:element name="member">
+ <xsl:element name="parameter">
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="smbconfoption">
+ <!-- Include an index term -->
+ <xsl:element name="indexterm">
+ <xsl:element name="primary">
+ <xsl:value-of select="name"/>
+ </xsl:element>
+ </xsl:element>
+
+<!-- FIXME: Do this only when smb.conf is included
+ <xsl:element name="link">
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="translate(translate(string(name),' ',''),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ </xsl:attribute>-->
+
+ <xsl:element name="parameter">
+ <xsl:attribute name="moreinfo">
+ <xsl:text>none</xsl:text>
+ </xsl:attribute>
+ <xsl:value-of select="name"/>
+ </xsl:element>
+
+ <xsl:choose>
+ <xsl:when test="value != ''">
+ <xsl:text> = </xsl:text>
+ <xsl:value-of select="value"/>
+ </xsl:when>
+ </xsl:choose>
+ <!--
+ </xsl:element>-->
+</xsl:template>
+
+<!-- FIXME: Needs extension sometime -->
+<xsl:template match="ntgroup|ntuser">
+ <xsl:element name="emphasis">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="smbconfexample">
+ <xsl:choose>
+ <xsl:when test="title = ''">
+ <xsl:message>
+ <xsl:text>Warning: smbconfexample does not have title!</xsl:text>
+ </xsl:message>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:element name="example">
+ <xsl:choose>
+ <xsl:when test="@id != ''">
+ <xsl:attribute name="id">
+ <xsl:value-of select="@id"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ <xsl:element name="title">
+ <xsl:value-of select="title"/>
+ </xsl:element>
+ <xsl:element name="simplelist">
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="smbconfexample/title">
+</xsl:template>
+
+<xsl:template match="smbconfblock">
+ <xsl:element name="simplelist">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="smbconfsection">
+ <xsl:element name="parameter">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="smbconfcomment">
+ <xsl:text># </xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+<xsl:template match="image">
+ <xsl:element name="figure">
+ <xsl:attribute name="id">
+ <xsl:choose>
+ <xsl:when test="@id != ''">
+ <xsl:value-of select="@id"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="imagefile"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+
+ <xsl:element name="title">
+ <xsl:value-of select="imagedescription"/>
+ </xsl:element>
+ <xsl:element name="mediaobject">
+ <xsl:element name="imageobject">
+ <xsl:attribute name="role"><xsl:text>latex</xsl:text></xsl:attribute>
+ <xsl:element name="imagedata">
+ <xsl:attribute name="fileref">
+ <xsl:text>projdoc/imagefiles/</xsl:text><xsl:value-of select="imagefile"/></xsl:attribute>
+ <xsl:attribute name="scale">
+ <xsl:choose>
+ <xsl:when test="@scale != ''">
+ <xsl:value-of select="@scale"/>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <xsl:text>50</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="imageobject">
+ <xsl:element name="imagedata">
+ <xsl:attribute name="fileref">
+ <xsl:text>projdoc/imagefiles/</xsl:text><xsl:value-of select="imagefile"/><xsl:text>.png</xsl:text></xsl:attribute>
+ <xsl:attribute name="scale"><xsl:text>50</xsl:text></xsl:attribute>
+ <xsl:attribute name="scalefit"><xsl:text>1</xsl:text></xsl:attribute>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+</xsl:template>
+
+<xsl:template match="//samba:parameter">
+ <!-- reconstruct varlistentry - not all of them will go into separate files
+ and also we must repair the main varlistentry itself.
+ -->
+ <xsl:variable name="name"><xsl:value-of select="translate(translate(string(@name),' ',''),
+ 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ </xsl:variable>
+
+ <xsl:variable name="anchor">
+ <xsl:element name="anchor">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$name"/>
+ </xsl:attribute>
+ </xsl:element>
+ </xsl:variable>
+
+ <xsl:variable name="context">
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="@context"/>
+ <xsl:text>)</xsl:text>
+ </xsl:variable>
+
+ <xsl:variable name="term">
+ <xsl:element name="term">
+ <xsl:copy-of select="$anchor"/>
+ <xsl:value-of select="@name"/>
+ <xsl:value-of select="$context"/>
+ </xsl:element>
+ </xsl:variable>
+
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+
+ <xsl:element name="varlistentry">
+ <xsl:text>&#10;</xsl:text>
+ <xsl:element name="indexterm">
+ <xsl:attribute name="significance">
+ <xsl:text>preferred</xsl:text>
+ </xsl:attribute>
+ <xsl:element name="primary">
+ <xsl:value-of select="@name"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:copy-of select="$term"/>
+ <xsl:copy-of select="$content"/>
+ <xsl:text>
+</xsl:text>
+ </xsl:element>
+
+</xsl:template>
+
+<xsl:template match="ulink">
+ <xsl:element name="ulink">
+ <xsl:attribute name="url">
+ <xsl:value-of select="@url"/>
+ </xsl:attribute>
+
+ <xsl:apply-templates/>
+
+ </xsl:element>
+</xsl:template>
+
+
+<xsl:template match="filterline">
+ <xsl:element name="programlisting">
+ <xsl:apply-templates/>
+ </xsl:element>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/docs/docbook/xslt/figures/caution.eps b/docs/docbook/xslt/figures/caution.eps
new file mode 100644
index 0000000000..0c10b371b1
--- /dev/null
+++ b/docs/docbook/xslt/figures/caution.eps
@@ -0,0 +1 @@
+%!PS-Adobe-2.0 EPSF-1.2 %%Title: Untitled-3 %%Creator: FreeHand 9.0 %%CreationDate: 2002/12/05 8:20 PM %%BoundingBox: 0 0 29 29 %%FHPathName:Untitled:FreeHand 9:English:Untitled-3 %ALDOriginalFile:Untitled:FreeHand 9:English:Untitled-3 %ALDBoundingBox: -2 -2 29 29 %%FHPageNum:1 %%DocumentSuppliedResources: procset Altsys_header 4 0 %%ColorUsage: Color %%DocumentProcessColors: Black %%EndComments %%BeginResource: procset Altsys_header 4 0 userdict begin /AltsysDict 300 dict def end AltsysDict begin /bdf{bind def}bind def /xdf{exch def}bdf /defed{where{pop true}{false}ifelse}bdf /ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}bdf /d{setdash}bdf /h{closepath}bdf /H{}bdf /J{setlinecap}bdf /j{setlinejoin}bdf /M{setmiterlimit}bdf /n{newpath}bdf /N{newpath}bdf /q{gsave}bdf /Q{grestore}bdf /w{setlinewidth}bdf /Xic{matrix invertmatrix concat}bdf /Xq{matrix currentmatrix mark}bdf /XQ{cleartomark setmatrix}bdf /sepdef{ dup where not { AltsysSepDict } if 3 1 roll exch put }bdf /st{settransfer}bdf /colorimage defed /_rci xdf /cntr 0 def /readbinarystring{ /cntr 0 def 2 copy readstring { { dup (\034) search { length exch pop exch dup length 0 ne { dup dup 0 get 32 sub 0 exch put /cntr cntr 1 add def } { pop 1 string dup 0 6 index read pop 32 sub put }ifelse 3 copy putinterval pop 1 add 1 index length 1 sub 1 index sub dup 0 le {pop pop exit}if getinterval } { pop exit } ifelse } loop }if cntr 0 gt { pop 2 copy dup length cntr sub cntr getinterval readbinarystring } if pop exch pop } bdf /_NXLevel2 defed { _NXLevel2 not { /colorimage where { userdict eq { /_rci false def } if } if } if } if /md defed{ md type /dicttype eq { /colorimage where { md eq { /_rci false def }if }if /settransfer where { md eq { /st systemdict /settransfer get def }if }if }if }if /setstrokeadjust defed { true setstrokeadjust /C{curveto}bdf /L{lineto}bdf /m{moveto}bdf } { /dr{transform .25 sub round .25 add exch .25 sub round .25 add exch itransform}bdf /C{dr curveto}bdf /L{dr lineto}bdf /m{dr moveto}bdf /setstrokeadjust{pop}bdf }ifelse /privrectpath { 4 -2 roll m dtransform round exch round exch idtransform 2 copy 0 lt exch 0 lt xor {dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto} {exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto} ifelse closepath }bdf /rectclip{newpath privrectpath clip newpath}def /rectfill{gsave newpath privrectpath fill grestore}def /rectstroke{gsave newpath privrectpath stroke grestore}def /_fonthacksave false def /currentpacking defed { /_bfh {/_fonthacksave currentpacking def false setpacking} bdf /_efh {_fonthacksave setpacking} bdf } { /_bfh {} bdf /_efh {} bdf }ifelse /packedarray{array astore readonly}ndf /` { false setoverprint /-save0- save def 5 index concat pop storerect left bottom width height rectclip pop /MMdict_count countdictstack def /MMop_count count 1 sub def userdict begin /showpage {} def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash newpath } bdf /currentpacking defed{true setpacking}if /min{2 copy gt{exch}if pop}bdf /max{2 copy lt{exch}if pop}bdf /xformfont { currentfont exch makefont setfont } bdf /fhnumcolors 1 statusdict begin /processcolors defed { pop processcolors } { /deviceinfo defed { deviceinfo /Colors known { pop deviceinfo /Colors get } if } if } ifelse end def /printerRes gsave matrix defaultmatrix setmatrix 72 72 dtransform abs exch abs max grestore def /graycalcs [ {Angle Frequency} {GrayAngle GrayFrequency} {0 Width Height matrix defaultmatrix idtransform dup mul exch dup mul add sqrt 72 exch div} {0 GrayWidth GrayHeight matrix defaultmatrix idtransform dup mul exch dup mul add sqrt 72 exch div} ] def /calcgraysteps { forcemaxsteps { maxsteps } { /currenthalftone defed {currenthalftone /dicttype eq}{false}ifelse { currenthalftone begin HalftoneType 4 le {graycalcs HalftoneType 1 sub get exec} { HalftoneType 5 eq { Default begin {graycalcs HalftoneType 1 sub get exec} end } {0 60} ifelse } ifelse end } { currentscreen pop exch } ifelse printerRes 300 max exch div exch 2 copy sin mul round dup mul 3 1 roll cos mul round dup mul add 1 add dup maxsteps gt {pop maxsteps} if dup minsteps lt {pop minsteps} if } ifelse } bdf /nextrelease defed { /languagelevel defed not { /framebuffer defed { 0 40 string framebuffer 9 1 roll 8 {pop} repeat dup 516 eq exch 520 eq or { /fhnumcolors 3 def /currentscreen {60 0 {pop pop 1}}bdf /calcgraysteps {maxsteps} bdf }if }if }if }if fhnumcolors 1 ne { /calcgraysteps {maxsteps} bdf } if /currentpagedevice defed { currentpagedevice /PreRenderingEnhance known { currentpagedevice /PreRenderingEnhance get { /calcgraysteps { forcemaxsteps {maxsteps} {256 maxsteps min} ifelse } def } if } if } if /gradfrequency 144 def printerRes 1000 lt { /gradfrequency 72 def } if /adjnumsteps { dup dtransform abs exch abs max printerRes div gradfrequency mul round 5 max min }bdf /goodsep { spots exch get 4 get dup sepname eq exch (_vc_Registration) eq or }bdf /BeginGradation defed {/bb{BeginGradation}bdf} {/bb{}bdf} ifelse /EndGradation defed {/eb{EndGradation}bdf} {/eb{}bdf} ifelse /bottom -0 def /delta -0 def /frac -0 def /height -0 def /left -0 def /numsteps1 -0 def /radius -0 def /right -0 def /top -0 def /width -0 def /xt -0 def /yt -0 def /df currentflat def /tempstr 1 string def /clipflatness currentflat def /inverted? 0 currenttransfer exec .5 ge def /tc1 [0 0 0 1] def /tc2 [0 0 0 1] def /storerect{/top xdf /right xdf /bottom xdf /left xdf /width right left sub def /height top bottom sub def}bdf /concatprocs{ systemdict /packedarray known {dup type /packedarraytype eq 2 index type /packedarraytype eq or}{false}ifelse { /proc2 exch cvlit def /proc1 exch cvlit def proc1 aload pop proc2 aload pop proc1 length proc2 length add packedarray cvx } { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx }ifelse }bdf /i{dup 0 eq {pop df dup} {dup} ifelse /clipflatness xdf setflat }bdf version cvr 38.0 le {/setrgbcolor{ currenttransfer exec 3 1 roll currenttransfer exec 3 1 roll currenttransfer exec 3 1 roll setrgbcolor}bdf}if /vms {/vmsv save def} bdf /vmr {vmsv restore} bdf /vmrs{vmsv restore /vmsv save def}bdf /eomode{ {/filler /eofill load def /clipper /eoclip load def} {/filler /fill load def /clipper /clip load def} ifelse }bdf /normtaper{}bdf /logtaper{9 mul 1 add log}bdf /CD{ /NF exch def { exch dup /FID ne 1 index/UniqueID ne and {exch NF 3 1 roll put} {pop pop} ifelse }forall NF }bdf /MN{ 1 index length /Len exch def dup length Len add string dup Len 4 -1 roll putinterval dup 0 4 -1 roll putinterval }bdf /RC{4 -1 roll /ourvec xdf 256 string cvs(|______)anchorsearch {1 index MN cvn/NewN exch def cvn findfont dup maxlength dict CD dup/FontName NewN put dup /Encoding ourvec put NewN exch definefont pop}{pop}ifelse}bdf /RF{ dup FontDirectory exch known {pop 3 -1 roll pop} {RC} ifelse }bdf /FF{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known {exch pop findfont 3 -1 roll pop} {pop dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll {3 -1 roll dup 4 -2 roll put}forall put definefont} ifelse}bdf /RCJ{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFJ exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFJ{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCJ} ifelse }bdf /hasfont { /resourcestatus where { pop /Font resourcestatus { pop pop true } { false } ifelse } { dup FontDirectory exch known {pop true} { 256 string cvs (fonts/) exch MN status {pop pop pop pop true} {false} ifelse } ifelse } ifelse }bdf /FDFJ { dup hasfont not { pop /Ryumin-Light-83pv-RKSJ-H hasfont { /Ryumin-Light-83pv-RKSJ-H } { /Courier } ifelse } if }bdf /FFJ{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFJ dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /GS { dup hasfont { findfont exch makesetfont exch pop ts } { pop pop pop ts } ifelse } bdf /RCK{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFK exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFK{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCK} ifelse }bdf /hasfont { /resourcestatus where { pop /Font resourcestatus { pop pop true } { false } ifelse } { dup FontDirectory exch known {pop true} { 256 string cvs (fonts/) exch MN status {pop pop pop pop true} {false} ifelse } ifelse } ifelse }bdf /FDFK { dup hasfont not { pop /JCsm hasfont { /JCsm } { /Courier } ifelse } if }bdf /FFK{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFK dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /RCTC{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFTC exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFTC{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCTC} ifelse }bdf /FDFTC { dup hasfont not { pop /DFMing-Lt-HK-BF hasfont { /DFMing-Lt-HK-BF } { /Courier } ifelse } if }bdf /FFTC{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFTC dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /fps{ currentflat exch dup 0 le{pop 1}if { dup setflat 3 index stopped {1.3 mul dup 3 index gt{pop setflat pop pop stop}if} {exit} ifelse }loop pop setflat pop pop }bdf /fp{100 currentflat fps}bdf /clipper{clip}bdf /W{/clipper load 100 clipflatness dup setflat fps}bdf userdict begin /BDFontDict 29 dict def end BDFontDict begin /bu{}def /bn{}def /setTxMode{av 70 ge{pop}if pop}def /gm{m}def /show{pop}def /gr{pop}def /fnt{pop pop pop}def /fs{pop}def /fz{pop}def /lin{pop pop}def /:M {pop pop} def /sf {pop} def /S {pop} def /@b {pop pop pop pop pop pop pop pop} def /_bdsave /save load def /_bdrestore /restore load def /save { dup /fontsave eq {null} {_bdsave} ifelse } def /restore { dup null eq { pop } { _bdrestore } ifelse } def /fontsave null def end /MacVec 256 array def MacVec 0 /Helvetica findfont /Encoding get 0 128 getinterval putinterval MacVec 127 /DEL put MacVec 16#27 /quotesingle put MacVec 16#60 /grave put /NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI /DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US MacVec 0 32 getinterval astore pop /Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute /agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave /ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute /ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis /dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash /infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation /product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash /questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft /guillemotright/ellipsis/nbspace/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge /ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl /daggerdbl/periodcentered/quotesinglbase/quotedblbase /perthousand/Acircumflex/Ecircumflex/Aacute /Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex /apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde /macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron MacVec 128 128 getinterval astore pop /findheaderfont { /Helvetica findfont } def end %. AltsysDict %%EndResource %%EndProlog %%BeginSetup AltsysDict begin _bfh _efh end %. AltsysDict %%EndSetup AltsysDict begin /onlyk4{false}ndf /ccmyk{dup 5 -1 roll sub 0 max exch}ndf /cmyk2gray{ 4 -1 roll 0.3 mul 4 -1 roll 0.59 mul 4 -1 roll 0.11 mul add add add 1 min neg 1 add }bdf /setcmykcolor{1 exch sub ccmyk ccmyk ccmyk pop setrgbcolor}ndf /maxcolor { max max max } ndf /maxspot { pop } ndf /setcmykcoloroverprint{4{dup -1 eq{pop 0}if 4 1 roll}repeat setcmykcolor}ndf /findcmykcustomcolor{5 packedarray}ndf /setcustomcolor{exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop}ndf /setseparationgray{setgray}ndf /setoverprint{pop}ndf /currentoverprint false ndf /cmykbufs2gray{ 0 1 2 index length 1 sub { 4 index 1 index get 0.3 mul 4 index 2 index get 0.59 mul 4 index 3 index get 0.11 mul 4 index 4 index get add add add cvi 255 min 255 exch sub 2 index 3 1 roll put }for 4 1 roll pop pop pop }bdf /colorimage{ pop pop [ 5 -1 roll/exec cvx 6 -1 roll/exec cvx 7 -1 roll/exec cvx 8 -1 roll/exec cvx /cmykbufs2gray cvx ]cvx image } %. version 47.1 on Linotronic of Postscript defines colorimage incorrectly (rgb model only) version cvr 47.1 le statusdict /product get (Lino) anchorsearch{pop pop true}{pop false}ifelse and{userdict begin bdf end}{ndf}ifelse fhnumcolors 1 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf ic im iy ik cmyk2gray /xt xdf currenttransfer {dup 1.0 exch sub xt mul add}concatprocs st image } ifelse }ndf fhnumcolors 1 ne {yt restore} if fhnumcolors 3 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf 1.0 dup ic ik add min sub 1.0 dup im ik add min sub 1.0 dup iy ik add min sub /ic xdf /iy xdf /im xdf currentcolortransfer 4 1 roll {dup 1.0 exch sub ic mul add}concatprocs 4 1 roll {dup 1.0 exch sub iy mul add}concatprocs 4 1 roll {dup 1.0 exch sub im mul add}concatprocs 4 1 roll setcolortransfer {/dummy xdf dummy}concatprocs{dummy}{dummy}true 3 colorimage } ifelse }ndf fhnumcolors 3 ne {yt restore} if fhnumcolors 4 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf currentcolortransfer {1.0 exch sub ik mul ik sub 1 add}concatprocs 4 1 roll {1.0 exch sub iy mul iy sub 1 add}concatprocs 4 1 roll {1.0 exch sub im mul im sub 1 add}concatprocs 4 1 roll {1.0 exch sub ic mul ic sub 1 add}concatprocs 4 1 roll setcolortransfer {/dummy xdf dummy}concatprocs{dummy}{dummy}{dummy} true 4 colorimage } ifelse }ndf fhnumcolors 4 ne {yt restore} if /separationimage{image}ndf /spotascmyk false ndf /newcmykcustomcolor{6 packedarray}ndf /inkoverprint false ndf /setinkoverprint{pop}ndf /setspotcolor { spots exch get dup 4 get (_vc_Registration) eq {pop 1 exch sub setseparationgray} {0 5 getinterval exch setcustomcolor} ifelse }ndf /currentcolortransfer{currenttransfer dup dup dup}ndf /setcolortransfer{st pop pop pop}ndf /fas{}ndf /sas{}ndf /fhsetspreadsize{pop}ndf /filler{fill}bdf /F{gsave {filler}fp grestore}bdf /f{closepath F}bdf /S{gsave {stroke}fp grestore}bdf /s{closepath S}bdf userdict /islevel2 systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put islevel2 not { /currentcmykcolor { 0 0 0 1 currentgray sub } ndf } if /tc { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { tc add add add 0 ne } bind def /fhiscomposite where not { userdict /fhiscomposite islevel2 { gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore add add add 4 eq } { 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and } ifelse put } { pop } ifelse /bc4 [0 0 0 0] def /_lfp4 { 1 pop /yt xdf /xt xdf /ang xdf storerect /taperfcn xdf /k2 xdf /y2 xdf /m2 xdf /c2 xdf /k1 xdf /y1 xdf /m1 xdf /c1 xdf c1 c2 sub abs m1 m2 sub abs y1 y2 sub abs k1 k2 sub abs maxcolor calcgraysteps mul abs round height abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf currentflat mark currentflat clipflatness /delta top bottom sub numsteps1 1 add div def /right right left sub def /botsv top delta sub def { { W xt yt translate ang rotate xt neg yt neg translate dup setflat /bottom botsv def 0 1 numsteps1 { numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse taperfcn /frac xdf bc4 0 c2 c1 sub frac mul c1 add put bc4 1 m2 m1 sub frac mul m1 add put bc4 2 y2 y1 sub frac mul y1 add put bc4 3 k2 k1 sub frac mul k1 add put bc4 vc 1 index setflat { mark {newpath left bottom right delta rectfill}stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop /bottom bottom delta sub def }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /bcs [0 0] def /_lfs4 { /yt xdf /xt xdf /ang xdf storerect /taperfcn xdf /tint2 xdf /tint1 xdf bcs exch 1 exch put tint1 tint2 sub abs bcs 1 get maxspot calcgraysteps mul abs round height abs adjnumsteps dup 2 lt {pop 2} if 1 sub /numsteps1 xdf currentflat mark currentflat clipflatness /delta top bottom sub numsteps1 1 add div def /right right left sub def /botsv top delta sub def { { W xt yt translate ang rotate xt neg yt neg translate dup setflat /bottom botsv def 0 1 numsteps1 { numsteps1 div taperfcn /frac xdf bcs 0 1.0 tint2 tint1 sub frac mul tint1 add sub put bcs vc 1 index setflat { mark {newpath left bottom right delta rectfill}stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop /bottom bottom delta sub def }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /_rfs6 { /tint2 xdf /tint1 xdf bcs exch 1 exch put /inrad xdf /radius xdf /yt xdf /xt xdf tint1 tint2 sub abs bcs 1 get maxspot calcgraysteps mul abs round radius inrad sub abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse 2 div /halfstep xdf currentflat mark currentflat clipflatness { { dup setflat W 0 1 numsteps1 { dup /radindex xdf numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse /frac xdf bcs 0 tint2 tint1 sub frac mul tint1 add put bcs vc 1 index setflat { newpath mark xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 { arc radindex numsteps1 ne inrad 0 gt or { xt yt numsteps1 0 eq { inrad } { radindex 1 add numsteps1 div 1 exch sub radius inrad sub mul halfstep add inrad add }ifelse dup xt add yt moveto 360 0 arcn } if fill }stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /_rfp6 { 1 pop /k2 xdf /y2 xdf /m2 xdf /c2 xdf /k1 xdf /y1 xdf /m1 xdf /c1 xdf /inrad xdf /radius xdf /yt xdf /xt xdf c1 c2 sub abs m1 m2 sub abs y1 y2 sub abs k1 k2 sub abs maxcolor calcgraysteps mul abs round radius inrad sub abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse 2 div /halfstep xdf currentflat mark currentflat clipflatness { { dup setflat W 0 1 numsteps1 { dup /radindex xdf numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse /frac xdf bc4 0 c2 c1 sub frac mul c1 add put bc4 1 m2 m1 sub frac mul m1 add put bc4 2 y2 y1 sub frac mul y1 add put bc4 3 k2 k1 sub frac mul k1 add put bc4 vc 1 index setflat { newpath mark xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 { arc radindex numsteps1 ne inrad 0 gt or { xt yt numsteps1 0 eq { inrad } { radindex 1 add numsteps1 div 1 exch sub radius inrad sub mul halfstep add inrad add }ifelse dup xt add yt moveto 360 0 arcn } if fill }stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /lfp4{_lfp4}ndf /lfs4{_lfs4}ndf /rfs6{_rfs6}ndf /rfp6{_rfp6}ndf /cvc [0 0 0 1] def /vc{ AltsysDict /cvc 2 index put aload length dup 4 eq {pop dup -1 eq{pop setrgbcolor}{setcmykcolor}ifelse} {6 eq {sethexcolor} {setspotcolor} ifelse } ifelse }bdf 0 setseparationgray /imgr {1692.47 1570.59 1723.65 1601.77 } def /bleed 0 def /clpr {1692.47 1570.59 1723.65 1601.77 } def /xs 1 def /ys 1 def /botx 0 def /overlap 0 def /wdist 18 def 0 2 mul fhsetspreadsize 0 0 ne {/df 0 def /clipflatness 0 def} if /maxsteps 256 def /forcemaxsteps false def /minsteps 0 def userdict begin /AGDOrigMtx matrix currentmatrix def end vms -1694 -1572 translate /currentpacking defed{false setpacking}if /spots[ 1 0 0 0 (Process Cyan) false newcmykcustomcolor 0 1 0 0 (Process Magenta) false newcmykcustomcolor 0 0 1 0 (Process Yellow) false newcmykcustomcolor 0 0 0 1 (Process Black) false newcmykcustomcolor ]def n [] 0 d 3.863708 M 1 w 0 j 0 J false setoverprint 0 i false eomode [0 0 0 1]vc vms q [1 0 0 1 -249.981674 -586.867554] concat vms 1946.9506 2177.5114 m 1954.4907 2185.0516 L 1956.7047 2187.2656 1960.2943 2187.2656 1962.5083 2185.0516 C 1970.0485 2177.5114 L 1972.2625 2175.2974 1972.2625 2171.7078 1970.0485 2169.4938 C 1962.5083 2161.9537 L 1960.2943 2159.7396 1956.7047 2159.7396 1954.4907 2161.9537 C 1946.9506 2169.4938 L 1944.7365 2171.7078 1944.7365 2175.2974 1946.9506 2177.5114 C s n true eomode 1958.5469 2181.0039 m 1959.2148 2181.0039 1959.7012 2180.9296 1960.0059 2180.7813 C 1960.3142 2180.6326 1960.4684 2180.363 1960.4688 2179.9727 C 1960.4688 2179.7383 1960.3398 2178.8026 1960.082 2177.166 C 1959.0742 2170.4219 L 1958.9373 2170.3241 1958.7615 2170.2754 1958.5469 2170.2754 C 1958.3319 2170.2754 1958.1561 2170.3241 1958.0195 2170.4219 C 1957.0117 2177.166 L 1956.7539 2178.8026 1956.625 2179.7379 1956.625 2179.9727 C 1956.625 2180.363 1956.7792 2180.6326 1957.0879 2180.7813 C 1957.4003 2180.9296 1957.8866 2181.0035 1958.5469 2181.0039 C h 1958.5469 2165.166 m 1958.0389 2165.166 1957.5878 2165.3499 1957.1934 2165.7168 C 1956.7986 2166.0837 1956.6016 2166.5485 1956.6016 2167.1113 C 1956.6016 2167.6698 1956.7891 2168.1404 1957.1641 2168.5234 C 1957.5427 2168.9102 1958.0038 2169.1035 1958.5469 2169.1035 C 1959.1094 2169.1035 1959.5741 2168.9043 1959.9414 2168.5059 C 1960.3083 2168.1074 1960.4918 2167.6423 1960.4922 2167.1113 C 1960.4922 2166.748 1960.4102 2166.4177 1960.2461 2166.1211 C 1960.082 2165.8241 1959.8513 2165.5916 1959.5547 2165.4238 C 1959.2577 2165.2521 1958.9219 2165.1664 1958.5469 2165.166 C true setoverprint f false setoverprint n vmr Q false eomode vmr vmr end %%Trailer \ No newline at end of file
diff --git a/docs/docbook/xslt/figures/caution.pdf b/docs/docbook/xslt/figures/caution.pdf
new file mode 100644
index 0000000000..a0afabfa23
--- /dev/null
+++ b/docs/docbook/xslt/figures/caution.pdf
Binary files differ
diff --git a/docs/docbook/xslt/figures/important.eps b/docs/docbook/xslt/figures/important.eps
new file mode 100644
index 0000000000..0c10b371b1
--- /dev/null
+++ b/docs/docbook/xslt/figures/important.eps
@@ -0,0 +1 @@
+%!PS-Adobe-2.0 EPSF-1.2 %%Title: Untitled-3 %%Creator: FreeHand 9.0 %%CreationDate: 2002/12/05 8:20 PM %%BoundingBox: 0 0 29 29 %%FHPathName:Untitled:FreeHand 9:English:Untitled-3 %ALDOriginalFile:Untitled:FreeHand 9:English:Untitled-3 %ALDBoundingBox: -2 -2 29 29 %%FHPageNum:1 %%DocumentSuppliedResources: procset Altsys_header 4 0 %%ColorUsage: Color %%DocumentProcessColors: Black %%EndComments %%BeginResource: procset Altsys_header 4 0 userdict begin /AltsysDict 300 dict def end AltsysDict begin /bdf{bind def}bind def /xdf{exch def}bdf /defed{where{pop true}{false}ifelse}bdf /ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}bdf /d{setdash}bdf /h{closepath}bdf /H{}bdf /J{setlinecap}bdf /j{setlinejoin}bdf /M{setmiterlimit}bdf /n{newpath}bdf /N{newpath}bdf /q{gsave}bdf /Q{grestore}bdf /w{setlinewidth}bdf /Xic{matrix invertmatrix concat}bdf /Xq{matrix currentmatrix mark}bdf /XQ{cleartomark setmatrix}bdf /sepdef{ dup where not { AltsysSepDict } if 3 1 roll exch put }bdf /st{settransfer}bdf /colorimage defed /_rci xdf /cntr 0 def /readbinarystring{ /cntr 0 def 2 copy readstring { { dup (\034) search { length exch pop exch dup length 0 ne { dup dup 0 get 32 sub 0 exch put /cntr cntr 1 add def } { pop 1 string dup 0 6 index read pop 32 sub put }ifelse 3 copy putinterval pop 1 add 1 index length 1 sub 1 index sub dup 0 le {pop pop exit}if getinterval } { pop exit } ifelse } loop }if cntr 0 gt { pop 2 copy dup length cntr sub cntr getinterval readbinarystring } if pop exch pop } bdf /_NXLevel2 defed { _NXLevel2 not { /colorimage where { userdict eq { /_rci false def } if } if } if } if /md defed{ md type /dicttype eq { /colorimage where { md eq { /_rci false def }if }if /settransfer where { md eq { /st systemdict /settransfer get def }if }if }if }if /setstrokeadjust defed { true setstrokeadjust /C{curveto}bdf /L{lineto}bdf /m{moveto}bdf } { /dr{transform .25 sub round .25 add exch .25 sub round .25 add exch itransform}bdf /C{dr curveto}bdf /L{dr lineto}bdf /m{dr moveto}bdf /setstrokeadjust{pop}bdf }ifelse /privrectpath { 4 -2 roll m dtransform round exch round exch idtransform 2 copy 0 lt exch 0 lt xor {dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto} {exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto} ifelse closepath }bdf /rectclip{newpath privrectpath clip newpath}def /rectfill{gsave newpath privrectpath fill grestore}def /rectstroke{gsave newpath privrectpath stroke grestore}def /_fonthacksave false def /currentpacking defed { /_bfh {/_fonthacksave currentpacking def false setpacking} bdf /_efh {_fonthacksave setpacking} bdf } { /_bfh {} bdf /_efh {} bdf }ifelse /packedarray{array astore readonly}ndf /` { false setoverprint /-save0- save def 5 index concat pop storerect left bottom width height rectclip pop /MMdict_count countdictstack def /MMop_count count 1 sub def userdict begin /showpage {} def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash newpath } bdf /currentpacking defed{true setpacking}if /min{2 copy gt{exch}if pop}bdf /max{2 copy lt{exch}if pop}bdf /xformfont { currentfont exch makefont setfont } bdf /fhnumcolors 1 statusdict begin /processcolors defed { pop processcolors } { /deviceinfo defed { deviceinfo /Colors known { pop deviceinfo /Colors get } if } if } ifelse end def /printerRes gsave matrix defaultmatrix setmatrix 72 72 dtransform abs exch abs max grestore def /graycalcs [ {Angle Frequency} {GrayAngle GrayFrequency} {0 Width Height matrix defaultmatrix idtransform dup mul exch dup mul add sqrt 72 exch div} {0 GrayWidth GrayHeight matrix defaultmatrix idtransform dup mul exch dup mul add sqrt 72 exch div} ] def /calcgraysteps { forcemaxsteps { maxsteps } { /currenthalftone defed {currenthalftone /dicttype eq}{false}ifelse { currenthalftone begin HalftoneType 4 le {graycalcs HalftoneType 1 sub get exec} { HalftoneType 5 eq { Default begin {graycalcs HalftoneType 1 sub get exec} end } {0 60} ifelse } ifelse end } { currentscreen pop exch } ifelse printerRes 300 max exch div exch 2 copy sin mul round dup mul 3 1 roll cos mul round dup mul add 1 add dup maxsteps gt {pop maxsteps} if dup minsteps lt {pop minsteps} if } ifelse } bdf /nextrelease defed { /languagelevel defed not { /framebuffer defed { 0 40 string framebuffer 9 1 roll 8 {pop} repeat dup 516 eq exch 520 eq or { /fhnumcolors 3 def /currentscreen {60 0 {pop pop 1}}bdf /calcgraysteps {maxsteps} bdf }if }if }if }if fhnumcolors 1 ne { /calcgraysteps {maxsteps} bdf } if /currentpagedevice defed { currentpagedevice /PreRenderingEnhance known { currentpagedevice /PreRenderingEnhance get { /calcgraysteps { forcemaxsteps {maxsteps} {256 maxsteps min} ifelse } def } if } if } if /gradfrequency 144 def printerRes 1000 lt { /gradfrequency 72 def } if /adjnumsteps { dup dtransform abs exch abs max printerRes div gradfrequency mul round 5 max min }bdf /goodsep { spots exch get 4 get dup sepname eq exch (_vc_Registration) eq or }bdf /BeginGradation defed {/bb{BeginGradation}bdf} {/bb{}bdf} ifelse /EndGradation defed {/eb{EndGradation}bdf} {/eb{}bdf} ifelse /bottom -0 def /delta -0 def /frac -0 def /height -0 def /left -0 def /numsteps1 -0 def /radius -0 def /right -0 def /top -0 def /width -0 def /xt -0 def /yt -0 def /df currentflat def /tempstr 1 string def /clipflatness currentflat def /inverted? 0 currenttransfer exec .5 ge def /tc1 [0 0 0 1] def /tc2 [0 0 0 1] def /storerect{/top xdf /right xdf /bottom xdf /left xdf /width right left sub def /height top bottom sub def}bdf /concatprocs{ systemdict /packedarray known {dup type /packedarraytype eq 2 index type /packedarraytype eq or}{false}ifelse { /proc2 exch cvlit def /proc1 exch cvlit def proc1 aload pop proc2 aload pop proc1 length proc2 length add packedarray cvx } { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx }ifelse }bdf /i{dup 0 eq {pop df dup} {dup} ifelse /clipflatness xdf setflat }bdf version cvr 38.0 le {/setrgbcolor{ currenttransfer exec 3 1 roll currenttransfer exec 3 1 roll currenttransfer exec 3 1 roll setrgbcolor}bdf}if /vms {/vmsv save def} bdf /vmr {vmsv restore} bdf /vmrs{vmsv restore /vmsv save def}bdf /eomode{ {/filler /eofill load def /clipper /eoclip load def} {/filler /fill load def /clipper /clip load def} ifelse }bdf /normtaper{}bdf /logtaper{9 mul 1 add log}bdf /CD{ /NF exch def { exch dup /FID ne 1 index/UniqueID ne and {exch NF 3 1 roll put} {pop pop} ifelse }forall NF }bdf /MN{ 1 index length /Len exch def dup length Len add string dup Len 4 -1 roll putinterval dup 0 4 -1 roll putinterval }bdf /RC{4 -1 roll /ourvec xdf 256 string cvs(|______)anchorsearch {1 index MN cvn/NewN exch def cvn findfont dup maxlength dict CD dup/FontName NewN put dup /Encoding ourvec put NewN exch definefont pop}{pop}ifelse}bdf /RF{ dup FontDirectory exch known {pop 3 -1 roll pop} {RC} ifelse }bdf /FF{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known {exch pop findfont 3 -1 roll pop} {pop dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll {3 -1 roll dup 4 -2 roll put}forall put definefont} ifelse}bdf /RCJ{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFJ exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFJ{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCJ} ifelse }bdf /hasfont { /resourcestatus where { pop /Font resourcestatus { pop pop true } { false } ifelse } { dup FontDirectory exch known {pop true} { 256 string cvs (fonts/) exch MN status {pop pop pop pop true} {false} ifelse } ifelse } ifelse }bdf /FDFJ { dup hasfont not { pop /Ryumin-Light-83pv-RKSJ-H hasfont { /Ryumin-Light-83pv-RKSJ-H } { /Courier } ifelse } if }bdf /FFJ{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFJ dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /GS { dup hasfont { findfont exch makesetfont exch pop ts } { pop pop pop ts } ifelse } bdf /RCK{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFK exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFK{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCK} ifelse }bdf /hasfont { /resourcestatus where { pop /Font resourcestatus { pop pop true } { false } ifelse } { dup FontDirectory exch known {pop true} { 256 string cvs (fonts/) exch MN status {pop pop pop pop true} {false} ifelse } ifelse } ifelse }bdf /FDFK { dup hasfont not { pop /JCsm hasfont { /JCsm } { /Courier } ifelse } if }bdf /FFK{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFK dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /RCTC{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFTC exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFTC{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCTC} ifelse }bdf /FDFTC { dup hasfont not { pop /DFMing-Lt-HK-BF hasfont { /DFMing-Lt-HK-BF } { /Courier } ifelse } if }bdf /FFTC{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFTC dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /fps{ currentflat exch dup 0 le{pop 1}if { dup setflat 3 index stopped {1.3 mul dup 3 index gt{pop setflat pop pop stop}if} {exit} ifelse }loop pop setflat pop pop }bdf /fp{100 currentflat fps}bdf /clipper{clip}bdf /W{/clipper load 100 clipflatness dup setflat fps}bdf userdict begin /BDFontDict 29 dict def end BDFontDict begin /bu{}def /bn{}def /setTxMode{av 70 ge{pop}if pop}def /gm{m}def /show{pop}def /gr{pop}def /fnt{pop pop pop}def /fs{pop}def /fz{pop}def /lin{pop pop}def /:M {pop pop} def /sf {pop} def /S {pop} def /@b {pop pop pop pop pop pop pop pop} def /_bdsave /save load def /_bdrestore /restore load def /save { dup /fontsave eq {null} {_bdsave} ifelse } def /restore { dup null eq { pop } { _bdrestore } ifelse } def /fontsave null def end /MacVec 256 array def MacVec 0 /Helvetica findfont /Encoding get 0 128 getinterval putinterval MacVec 127 /DEL put MacVec 16#27 /quotesingle put MacVec 16#60 /grave put /NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI /DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US MacVec 0 32 getinterval astore pop /Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute /agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave /ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute /ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis /dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash /infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation /product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash /questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft /guillemotright/ellipsis/nbspace/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge /ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl /daggerdbl/periodcentered/quotesinglbase/quotedblbase /perthousand/Acircumflex/Ecircumflex/Aacute /Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex /apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde /macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron MacVec 128 128 getinterval astore pop /findheaderfont { /Helvetica findfont } def end %. AltsysDict %%EndResource %%EndProlog %%BeginSetup AltsysDict begin _bfh _efh end %. AltsysDict %%EndSetup AltsysDict begin /onlyk4{false}ndf /ccmyk{dup 5 -1 roll sub 0 max exch}ndf /cmyk2gray{ 4 -1 roll 0.3 mul 4 -1 roll 0.59 mul 4 -1 roll 0.11 mul add add add 1 min neg 1 add }bdf /setcmykcolor{1 exch sub ccmyk ccmyk ccmyk pop setrgbcolor}ndf /maxcolor { max max max } ndf /maxspot { pop } ndf /setcmykcoloroverprint{4{dup -1 eq{pop 0}if 4 1 roll}repeat setcmykcolor}ndf /findcmykcustomcolor{5 packedarray}ndf /setcustomcolor{exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop}ndf /setseparationgray{setgray}ndf /setoverprint{pop}ndf /currentoverprint false ndf /cmykbufs2gray{ 0 1 2 index length 1 sub { 4 index 1 index get 0.3 mul 4 index 2 index get 0.59 mul 4 index 3 index get 0.11 mul 4 index 4 index get add add add cvi 255 min 255 exch sub 2 index 3 1 roll put }for 4 1 roll pop pop pop }bdf /colorimage{ pop pop [ 5 -1 roll/exec cvx 6 -1 roll/exec cvx 7 -1 roll/exec cvx 8 -1 roll/exec cvx /cmykbufs2gray cvx ]cvx image } %. version 47.1 on Linotronic of Postscript defines colorimage incorrectly (rgb model only) version cvr 47.1 le statusdict /product get (Lino) anchorsearch{pop pop true}{pop false}ifelse and{userdict begin bdf end}{ndf}ifelse fhnumcolors 1 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf ic im iy ik cmyk2gray /xt xdf currenttransfer {dup 1.0 exch sub xt mul add}concatprocs st image } ifelse }ndf fhnumcolors 1 ne {yt restore} if fhnumcolors 3 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf 1.0 dup ic ik add min sub 1.0 dup im ik add min sub 1.0 dup iy ik add min sub /ic xdf /iy xdf /im xdf currentcolortransfer 4 1 roll {dup 1.0 exch sub ic mul add}concatprocs 4 1 roll {dup 1.0 exch sub iy mul add}concatprocs 4 1 roll {dup 1.0 exch sub im mul add}concatprocs 4 1 roll setcolortransfer {/dummy xdf dummy}concatprocs{dummy}{dummy}true 3 colorimage } ifelse }ndf fhnumcolors 3 ne {yt restore} if fhnumcolors 4 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf currentcolortransfer {1.0 exch sub ik mul ik sub 1 add}concatprocs 4 1 roll {1.0 exch sub iy mul iy sub 1 add}concatprocs 4 1 roll {1.0 exch sub im mul im sub 1 add}concatprocs 4 1 roll {1.0 exch sub ic mul ic sub 1 add}concatprocs 4 1 roll setcolortransfer {/dummy xdf dummy}concatprocs{dummy}{dummy}{dummy} true 4 colorimage } ifelse }ndf fhnumcolors 4 ne {yt restore} if /separationimage{image}ndf /spotascmyk false ndf /newcmykcustomcolor{6 packedarray}ndf /inkoverprint false ndf /setinkoverprint{pop}ndf /setspotcolor { spots exch get dup 4 get (_vc_Registration) eq {pop 1 exch sub setseparationgray} {0 5 getinterval exch setcustomcolor} ifelse }ndf /currentcolortransfer{currenttransfer dup dup dup}ndf /setcolortransfer{st pop pop pop}ndf /fas{}ndf /sas{}ndf /fhsetspreadsize{pop}ndf /filler{fill}bdf /F{gsave {filler}fp grestore}bdf /f{closepath F}bdf /S{gsave {stroke}fp grestore}bdf /s{closepath S}bdf userdict /islevel2 systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put islevel2 not { /currentcmykcolor { 0 0 0 1 currentgray sub } ndf } if /tc { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { tc add add add 0 ne } bind def /fhiscomposite where not { userdict /fhiscomposite islevel2 { gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore add add add 4 eq } { 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and } ifelse put } { pop } ifelse /bc4 [0 0 0 0] def /_lfp4 { 1 pop /yt xdf /xt xdf /ang xdf storerect /taperfcn xdf /k2 xdf /y2 xdf /m2 xdf /c2 xdf /k1 xdf /y1 xdf /m1 xdf /c1 xdf c1 c2 sub abs m1 m2 sub abs y1 y2 sub abs k1 k2 sub abs maxcolor calcgraysteps mul abs round height abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf currentflat mark currentflat clipflatness /delta top bottom sub numsteps1 1 add div def /right right left sub def /botsv top delta sub def { { W xt yt translate ang rotate xt neg yt neg translate dup setflat /bottom botsv def 0 1 numsteps1 { numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse taperfcn /frac xdf bc4 0 c2 c1 sub frac mul c1 add put bc4 1 m2 m1 sub frac mul m1 add put bc4 2 y2 y1 sub frac mul y1 add put bc4 3 k2 k1 sub frac mul k1 add put bc4 vc 1 index setflat { mark {newpath left bottom right delta rectfill}stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop /bottom bottom delta sub def }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /bcs [0 0] def /_lfs4 { /yt xdf /xt xdf /ang xdf storerect /taperfcn xdf /tint2 xdf /tint1 xdf bcs exch 1 exch put tint1 tint2 sub abs bcs 1 get maxspot calcgraysteps mul abs round height abs adjnumsteps dup 2 lt {pop 2} if 1 sub /numsteps1 xdf currentflat mark currentflat clipflatness /delta top bottom sub numsteps1 1 add div def /right right left sub def /botsv top delta sub def { { W xt yt translate ang rotate xt neg yt neg translate dup setflat /bottom botsv def 0 1 numsteps1 { numsteps1 div taperfcn /frac xdf bcs 0 1.0 tint2 tint1 sub frac mul tint1 add sub put bcs vc 1 index setflat { mark {newpath left bottom right delta rectfill}stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop /bottom bottom delta sub def }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /_rfs6 { /tint2 xdf /tint1 xdf bcs exch 1 exch put /inrad xdf /radius xdf /yt xdf /xt xdf tint1 tint2 sub abs bcs 1 get maxspot calcgraysteps mul abs round radius inrad sub abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse 2 div /halfstep xdf currentflat mark currentflat clipflatness { { dup setflat W 0 1 numsteps1 { dup /radindex xdf numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse /frac xdf bcs 0 tint2 tint1 sub frac mul tint1 add put bcs vc 1 index setflat { newpath mark xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 { arc radindex numsteps1 ne inrad 0 gt or { xt yt numsteps1 0 eq { inrad } { radindex 1 add numsteps1 div 1 exch sub radius inrad sub mul halfstep add inrad add }ifelse dup xt add yt moveto 360 0 arcn } if fill }stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /_rfp6 { 1 pop /k2 xdf /y2 xdf /m2 xdf /c2 xdf /k1 xdf /y1 xdf /m1 xdf /c1 xdf /inrad xdf /radius xdf /yt xdf /xt xdf c1 c2 sub abs m1 m2 sub abs y1 y2 sub abs k1 k2 sub abs maxcolor calcgraysteps mul abs round radius inrad sub abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse 2 div /halfstep xdf currentflat mark currentflat clipflatness { { dup setflat W 0 1 numsteps1 { dup /radindex xdf numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse /frac xdf bc4 0 c2 c1 sub frac mul c1 add put bc4 1 m2 m1 sub frac mul m1 add put bc4 2 y2 y1 sub frac mul y1 add put bc4 3 k2 k1 sub frac mul k1 add put bc4 vc 1 index setflat { newpath mark xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 { arc radindex numsteps1 ne inrad 0 gt or { xt yt numsteps1 0 eq { inrad } { radindex 1 add numsteps1 div 1 exch sub radius inrad sub mul halfstep add inrad add }ifelse dup xt add yt moveto 360 0 arcn } if fill }stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /lfp4{_lfp4}ndf /lfs4{_lfs4}ndf /rfs6{_rfs6}ndf /rfp6{_rfp6}ndf /cvc [0 0 0 1] def /vc{ AltsysDict /cvc 2 index put aload length dup 4 eq {pop dup -1 eq{pop setrgbcolor}{setcmykcolor}ifelse} {6 eq {sethexcolor} {setspotcolor} ifelse } ifelse }bdf 0 setseparationgray /imgr {1692.47 1570.59 1723.65 1601.77 } def /bleed 0 def /clpr {1692.47 1570.59 1723.65 1601.77 } def /xs 1 def /ys 1 def /botx 0 def /overlap 0 def /wdist 18 def 0 2 mul fhsetspreadsize 0 0 ne {/df 0 def /clipflatness 0 def} if /maxsteps 256 def /forcemaxsteps false def /minsteps 0 def userdict begin /AGDOrigMtx matrix currentmatrix def end vms -1694 -1572 translate /currentpacking defed{false setpacking}if /spots[ 1 0 0 0 (Process Cyan) false newcmykcustomcolor 0 1 0 0 (Process Magenta) false newcmykcustomcolor 0 0 1 0 (Process Yellow) false newcmykcustomcolor 0 0 0 1 (Process Black) false newcmykcustomcolor ]def n [] 0 d 3.863708 M 1 w 0 j 0 J false setoverprint 0 i false eomode [0 0 0 1]vc vms q [1 0 0 1 -249.981674 -586.867554] concat vms 1946.9506 2177.5114 m 1954.4907 2185.0516 L 1956.7047 2187.2656 1960.2943 2187.2656 1962.5083 2185.0516 C 1970.0485 2177.5114 L 1972.2625 2175.2974 1972.2625 2171.7078 1970.0485 2169.4938 C 1962.5083 2161.9537 L 1960.2943 2159.7396 1956.7047 2159.7396 1954.4907 2161.9537 C 1946.9506 2169.4938 L 1944.7365 2171.7078 1944.7365 2175.2974 1946.9506 2177.5114 C s n true eomode 1958.5469 2181.0039 m 1959.2148 2181.0039 1959.7012 2180.9296 1960.0059 2180.7813 C 1960.3142 2180.6326 1960.4684 2180.363 1960.4688 2179.9727 C 1960.4688 2179.7383 1960.3398 2178.8026 1960.082 2177.166 C 1959.0742 2170.4219 L 1958.9373 2170.3241 1958.7615 2170.2754 1958.5469 2170.2754 C 1958.3319 2170.2754 1958.1561 2170.3241 1958.0195 2170.4219 C 1957.0117 2177.166 L 1956.7539 2178.8026 1956.625 2179.7379 1956.625 2179.9727 C 1956.625 2180.363 1956.7792 2180.6326 1957.0879 2180.7813 C 1957.4003 2180.9296 1957.8866 2181.0035 1958.5469 2181.0039 C h 1958.5469 2165.166 m 1958.0389 2165.166 1957.5878 2165.3499 1957.1934 2165.7168 C 1956.7986 2166.0837 1956.6016 2166.5485 1956.6016 2167.1113 C 1956.6016 2167.6698 1956.7891 2168.1404 1957.1641 2168.5234 C 1957.5427 2168.9102 1958.0038 2169.1035 1958.5469 2169.1035 C 1959.1094 2169.1035 1959.5741 2168.9043 1959.9414 2168.5059 C 1960.3083 2168.1074 1960.4918 2167.6423 1960.4922 2167.1113 C 1960.4922 2166.748 1960.4102 2166.4177 1960.2461 2166.1211 C 1960.082 2165.8241 1959.8513 2165.5916 1959.5547 2165.4238 C 1959.2577 2165.2521 1958.9219 2165.1664 1958.5469 2165.166 C true setoverprint f false setoverprint n vmr Q false eomode vmr vmr end %%Trailer \ No newline at end of file
diff --git a/docs/docbook/xslt/figures/important.pdf b/docs/docbook/xslt/figures/important.pdf
new file mode 100644
index 0000000000..a0afabfa23
--- /dev/null
+++ b/docs/docbook/xslt/figures/important.pdf
Binary files differ
diff --git a/docs/docbook/xslt/figures/note.eps b/docs/docbook/xslt/figures/note.eps
new file mode 100644
index 0000000000..39be23fa77
--- /dev/null
+++ b/docs/docbook/xslt/figures/note.eps
@@ -0,0 +1,1387 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Title: Untitled-1
+%%Creator: FreeHand 9.0
+%%CreationDate: 2002/07/16 10:41 PM
+%%BoundingBox: 0 0 27 27
+%%FHPathName:Untitled:FreeHand 9:English:Untitled-1
+%ALDOriginalFile:Untitled:FreeHand 9:English:Untitled-1
+%ALDBoundingBox: -153 -436 442 406
+%%FHPageNum:1
+%%DocumentSuppliedResources: procset Altsys_header 4 0
+%%ColorUsage: Color
+%%DocumentProcessColors: Black
+%%EndComments
+%%BeginResource: procset Altsys_header 4 0
+userdict begin /AltsysDict 300 dict def end
+AltsysDict begin
+/bdf{bind def}bind def
+/xdf{exch def}bdf
+/defed{where{pop true}{false}ifelse}bdf
+/ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}bdf
+/d{setdash}bdf
+/h{closepath}bdf
+/H{}bdf
+/J{setlinecap}bdf
+/j{setlinejoin}bdf
+/M{setmiterlimit}bdf
+/n{newpath}bdf
+/N{newpath}bdf
+/q{gsave}bdf
+/Q{grestore}bdf
+/w{setlinewidth}bdf
+/Xic{matrix invertmatrix concat}bdf
+/Xq{matrix currentmatrix mark}bdf
+/XQ{cleartomark setmatrix}bdf
+/sepdef{
+dup where not
+{
+AltsysSepDict
+}
+if
+3 1 roll exch put
+}bdf
+/st{settransfer}bdf
+/colorimage defed /_rci xdf
+/cntr 0 def
+/readbinarystring{
+/cntr 0 def
+2 copy readstring
+{
+{
+dup
+(\034) search
+{
+length exch pop exch
+dup length 0 ne
+{
+dup dup 0 get 32 sub 0 exch put
+/cntr cntr 1 add def
+}
+{
+pop 1 string dup
+0 6 index read pop 32 sub put
+}ifelse
+3 copy
+putinterval pop
+1 add
+1 index length 1 sub
+1 index sub
+dup 0 le {pop pop exit}if
+getinterval
+}
+{
+pop exit
+} ifelse
+} loop
+}if
+cntr 0 gt
+{
+pop 2 copy
+dup length cntr sub cntr getinterval
+readbinarystring
+} if
+pop exch pop
+} bdf
+/_NXLevel2 defed {
+_NXLevel2 not {
+/colorimage where {
+userdict eq {
+/_rci false def
+} if
+} if
+} if
+} if
+/md defed{
+md type /dicttype eq {
+/colorimage where {
+md eq {
+/_rci false def
+}if
+}if
+/settransfer where {
+md eq {
+/st systemdict /settransfer get def
+}if
+}if
+}if
+}if
+/setstrokeadjust defed
+{
+true setstrokeadjust
+/C{curveto}bdf
+/L{lineto}bdf
+/m{moveto}bdf
+}
+{
+/dr{transform .25 sub round .25 add
+exch .25 sub round .25 add exch itransform}bdf
+/C{dr curveto}bdf
+/L{dr lineto}bdf
+/m{dr moveto}bdf
+/setstrokeadjust{pop}bdf
+}ifelse
+/privrectpath {
+4 -2 roll m
+dtransform round exch round exch idtransform
+2 copy 0 lt exch 0 lt xor
+{dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto}
+{exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto}
+ifelse
+closepath
+}bdf
+/rectclip{newpath privrectpath clip newpath}def
+/rectfill{gsave newpath privrectpath fill grestore}def
+/rectstroke{gsave newpath privrectpath stroke grestore}def
+/_fonthacksave false def
+/currentpacking defed
+{
+/_bfh {/_fonthacksave currentpacking def false setpacking} bdf
+/_efh {_fonthacksave setpacking} bdf
+}
+{
+/_bfh {} bdf
+/_efh {} bdf
+}ifelse
+/packedarray{array astore readonly}ndf
+/`
+{
+false setoverprint
+/-save0- save def
+5 index concat
+pop
+storerect left bottom width height rectclip
+pop
+/MMdict_count countdictstack def
+/MMop_count count 1 sub def
+userdict begin
+/showpage {} def
+0 setgray 0 setlinecap 1 setlinewidth
+0 setlinejoin 10 setmiterlimit [] 0 setdash newpath
+} bdf
+/currentpacking defed{true setpacking}if
+/min{2 copy gt{exch}if pop}bdf
+/max{2 copy lt{exch}if pop}bdf
+/xformfont { currentfont exch makefont setfont } bdf
+/fhnumcolors 1
+statusdict begin
+/processcolors defed
+{
+pop processcolors
+}
+{
+/deviceinfo defed {
+deviceinfo /Colors known {
+pop deviceinfo /Colors get
+} if
+} if
+} ifelse
+end
+def
+/printerRes
+gsave
+matrix defaultmatrix setmatrix
+72 72 dtransform
+abs exch abs
+max
+grestore
+def
+/graycalcs
+[
+{Angle Frequency}
+{GrayAngle GrayFrequency}
+{0 Width Height matrix defaultmatrix idtransform
+dup mul exch dup mul add sqrt 72 exch div}
+{0 GrayWidth GrayHeight matrix defaultmatrix idtransform
+dup mul exch dup mul add sqrt 72 exch div}
+] def
+/calcgraysteps {
+forcemaxsteps
+{
+maxsteps
+}
+{
+/currenthalftone defed
+{currenthalftone /dicttype eq}{false}ifelse
+{
+currenthalftone begin
+HalftoneType 4 le
+{graycalcs HalftoneType 1 sub get exec}
+{
+HalftoneType 5 eq
+{
+Default begin
+{graycalcs HalftoneType 1 sub get exec}
+end
+}
+{0 60}
+ifelse
+}
+ifelse
+end
+}
+{
+currentscreen pop exch
+}
+ifelse
+printerRes 300 max exch div exch
+2 copy
+sin mul round dup mul
+3 1 roll
+cos mul round dup mul
+add 1 add
+dup maxsteps gt {pop maxsteps} if
+dup minsteps lt {pop minsteps} if
+}
+ifelse
+} bdf
+/nextrelease defed {
+/languagelevel defed not {
+/framebuffer defed {
+0 40 string framebuffer 9 1 roll 8 {pop} repeat
+dup 516 eq exch 520 eq or
+{
+/fhnumcolors 3 def
+/currentscreen {60 0 {pop pop 1}}bdf
+/calcgraysteps {maxsteps} bdf
+}if
+}if
+}if
+}if
+fhnumcolors 1 ne {
+/calcgraysteps {maxsteps} bdf
+} if
+/currentpagedevice defed {
+currentpagedevice /PreRenderingEnhance known
+{
+currentpagedevice /PreRenderingEnhance get
+{
+/calcgraysteps
+{
+forcemaxsteps
+{maxsteps}
+{256 maxsteps min}
+ifelse
+} def
+} if
+} if
+} if
+/gradfrequency 144 def
+printerRes 1000 lt {
+/gradfrequency 72 def
+} if
+/adjnumsteps {
+dup dtransform abs exch abs max
+printerRes div
+gradfrequency mul
+round
+5 max
+min
+}bdf
+/goodsep {
+spots exch get 4 get dup sepname eq exch (_vc_Registration) eq or
+}bdf
+/BeginGradation defed
+{/bb{BeginGradation}bdf}
+{/bb{}bdf}
+ifelse
+/EndGradation defed
+{/eb{EndGradation}bdf}
+{/eb{}bdf}
+ifelse
+/bottom -0 def
+/delta -0 def
+/frac -0 def
+/height -0 def
+/left -0 def
+/numsteps1 -0 def
+/radius -0 def
+/right -0 def
+/top -0 def
+/width -0 def
+/xt -0 def
+/yt -0 def
+/df currentflat def
+/tempstr 1 string def
+/clipflatness currentflat def
+/inverted?
+0 currenttransfer exec .5 ge def
+/tc1 [0 0 0 1] def
+/tc2 [0 0 0 1] def
+/storerect{/top xdf /right xdf /bottom xdf /left xdf
+/width right left sub def /height top bottom sub def}bdf
+/concatprocs{
+systemdict /packedarray known
+{dup type /packedarraytype eq 2 index type /packedarraytype eq or}{false}ifelse
+{
+/proc2 exch cvlit def /proc1 exch cvlit def
+proc1 aload pop proc2 aload pop
+proc1 length proc2 length add packedarray cvx
+}
+{
+/proc2 exch cvlit def /proc1 exch cvlit def
+/newproc proc1 length proc2 length add array def
+newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval
+newproc cvx
+}ifelse
+}bdf
+/i{dup 0 eq
+{pop df dup}
+{dup} ifelse
+/clipflatness xdf setflat
+}bdf
+version cvr 38.0 le
+{/setrgbcolor{
+currenttransfer exec 3 1 roll
+currenttransfer exec 3 1 roll
+currenttransfer exec 3 1 roll
+setrgbcolor}bdf}if
+/vms {/vmsv save def} bdf
+/vmr {vmsv restore} bdf
+/vmrs{vmsv restore /vmsv save def}bdf
+/eomode{
+{/filler /eofill load def /clipper /eoclip load def}
+{/filler /fill load def /clipper /clip load def}
+ifelse
+}bdf
+/normtaper{}bdf
+/logtaper{9 mul 1 add log}bdf
+/CD{
+/NF exch def
+{
+exch dup
+/FID ne 1 index/UniqueID ne and
+{exch NF 3 1 roll put}
+{pop pop}
+ifelse
+}forall
+NF
+}bdf
+/MN{
+1 index length
+/Len exch def
+dup length Len add
+string dup
+Len
+4 -1 roll
+putinterval
+dup
+0
+4 -1 roll
+putinterval
+}bdf
+/RC{4 -1 roll /ourvec xdf 256 string cvs(|______)anchorsearch
+{1 index MN cvn/NewN exch def cvn
+findfont dup maxlength dict CD dup/FontName NewN put dup
+/Encoding ourvec put NewN exch definefont pop}{pop}ifelse}bdf
+/RF{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RC}
+ifelse
+}bdf
+/FF{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known
+{exch pop findfont 3 -1 roll pop}
+{pop dup findfont dup maxlength dict CD dup dup
+/Encoding exch /Encoding get 256 array copy 7 -1 roll
+{3 -1 roll dup 4 -2 roll put}forall put definefont}
+ifelse}bdf
+/RCJ{4 -1 roll
+/ourvec xdf
+256 string cvs
+(|______) anchorsearch
+{pop
+cvn
+dup FDFJ
+exch
+1 index
+eq
+{
+_bfh findfont _efh
+dup
+maxlength dict
+CD
+dup
+/FontName
+3 index
+put
+dup
+/Encoding ourvec put
+1 index
+exch
+definefont
+pop
+}
+{exch pop}
+ifelse
+}
+{pop}
+ifelse
+}bdf
+/RFJ{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RCJ}
+ifelse
+}bdf
+/hasfont
+{
+/resourcestatus where
+{
+pop
+/Font resourcestatus
+{
+pop pop true
+}
+{
+false
+}
+ifelse
+}
+{
+dup FontDirectory exch known
+{pop true}
+{
+256 string
+cvs
+(fonts/) exch MN
+status
+{pop pop pop pop true}
+{false}
+ifelse
+}
+ifelse
+}
+ifelse
+}bdf
+/FDFJ
+{
+dup
+hasfont
+not
+{
+pop
+/Ryumin-Light-83pv-RKSJ-H
+hasfont
+{
+/Ryumin-Light-83pv-RKSJ-H
+}
+{
+/Courier
+}
+ifelse
+}
+if
+}bdf
+/FFJ{
+_bfh
+dup
+256 string cvs
+(|______)exch MN
+cvn
+dup
+FontDirectory
+exch known
+{
+exch
+pop
+findfont
+3 -1 roll
+pop
+}
+{
+pop
+FDFJ
+dup findfont
+dup maxlength dict
+CD
+dup dup
+/Encoding exch
+/Encoding get
+256 array copy
+7 -1 roll
+{
+3 -1 roll
+dup
+4 -2 roll
+put
+}forall
+put
+definefont
+}
+ifelse
+_efh
+}bdf
+/GS {
+dup
+hasfont
+{
+findfont
+exch makesetfont
+exch
+pop
+ts
+}
+{
+pop pop pop
+ts
+} ifelse
+} bdf
+/RCK{4 -1 roll
+/ourvec xdf
+256 string cvs
+(|______) anchorsearch
+{pop
+cvn
+dup FDFK
+exch
+1 index
+eq
+{
+_bfh findfont _efh
+dup
+maxlength dict
+CD
+dup
+/FontName
+3 index
+put
+dup
+/Encoding ourvec put
+1 index
+exch
+definefont
+pop
+}
+{exch pop}
+ifelse
+}
+{pop}
+ifelse
+}bdf
+/RFK{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RCK}
+ifelse
+}bdf
+/hasfont
+{
+/resourcestatus where
+{
+pop
+/Font resourcestatus
+{
+pop pop true
+}
+{
+false
+}
+ifelse
+}
+{
+dup FontDirectory exch known
+{pop true}
+{
+256 string
+cvs
+(fonts/) exch MN
+status
+{pop pop pop pop true}
+{false}
+ifelse
+}
+ifelse
+}
+ifelse
+}bdf
+/FDFK
+{
+dup
+hasfont
+not
+{
+pop
+/JCsm
+hasfont
+{
+/JCsm
+}
+{
+/Courier
+}
+ifelse
+}
+if
+}bdf
+/FFK{
+_bfh
+dup
+256 string cvs
+(|______)exch MN
+cvn
+dup
+FontDirectory
+exch known
+{
+exch
+pop
+findfont
+3 -1 roll
+pop
+}
+{
+pop
+FDFK
+dup findfont
+dup maxlength dict
+CD
+dup dup
+/Encoding exch
+/Encoding get
+256 array copy
+7 -1 roll
+{
+3 -1 roll
+dup
+4 -2 roll
+put
+}forall
+put
+definefont
+}
+ifelse
+_efh
+}bdf
+/RCTC{4 -1 roll
+/ourvec xdf
+256 string cvs
+(|______) anchorsearch
+{pop
+cvn
+dup FDFTC
+exch
+1 index
+eq
+{
+_bfh findfont _efh
+dup
+maxlength dict
+CD
+dup
+/FontName
+3 index
+put
+dup
+/Encoding ourvec put
+1 index
+exch
+definefont
+pop
+}
+{exch pop}
+ifelse
+}
+{pop}
+ifelse
+}bdf
+/RFTC{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RCTC}
+ifelse
+}bdf
+/FDFTC
+{
+dup
+hasfont
+not
+{
+pop
+/DFMing-Lt-HK-BF
+hasfont
+{
+/DFMing-Lt-HK-BF
+}
+{
+/Courier
+}
+ifelse
+}
+if
+}bdf
+/FFTC{
+_bfh
+dup
+256 string cvs
+(|______)exch MN
+cvn
+dup
+FontDirectory
+exch known
+{
+exch
+pop
+findfont
+3 -1 roll
+pop
+}
+{
+pop
+FDFTC
+dup findfont
+dup maxlength dict
+CD
+dup dup
+/Encoding exch
+/Encoding get
+256 array copy
+7 -1 roll
+{
+3 -1 roll
+dup
+4 -2 roll
+put
+}forall
+put
+definefont
+}
+ifelse
+_efh
+}bdf
+/fps{
+currentflat
+exch
+dup 0 le{pop 1}if
+{
+dup setflat 3 index stopped
+{1.3 mul dup 3 index gt{pop setflat pop pop stop}if}
+{exit}
+ifelse
+}loop
+pop setflat pop pop
+}bdf
+/fp{100 currentflat fps}bdf
+/clipper{clip}bdf
+/W{/clipper load 100 clipflatness dup setflat fps}bdf
+
+userdict begin /BDFontDict 29 dict def end
+BDFontDict begin
+/bu{}def
+/bn{}def
+/setTxMode{av 70 ge{pop}if pop}def
+/gm{m}def
+/show{pop}def
+/gr{pop}def
+/fnt{pop pop pop}def
+/fs{pop}def
+/fz{pop}def
+/lin{pop pop}def
+/:M {pop pop} def
+/sf {pop} def
+/S {pop} def
+/@b {pop pop pop pop pop pop pop pop} def
+/_bdsave /save load def
+/_bdrestore /restore load def
+/save { dup /fontsave eq {null} {_bdsave} ifelse } def
+/restore { dup null eq { pop } { _bdrestore } ifelse } def
+/fontsave null def
+end
+/MacVec 256 array def
+MacVec 0 /Helvetica findfont
+/Encoding get 0 128 getinterval putinterval
+MacVec 127 /DEL put MacVec 16#27 /quotesingle put MacVec 16#60 /grave put
+/NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI
+/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
+MacVec 0 32 getinterval astore pop
+/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
+/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
+/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute
+/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis
+/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
+/registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
+/infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
+/product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash
+/questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft
+/guillemotright/ellipsis/nbspace/Agrave/Atilde/Otilde/OE/oe
+/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
+/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
+/daggerdbl/periodcentered/quotesinglbase/quotedblbase
+/perthousand/Acircumflex/Ecircumflex/Aacute
+/Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex
+/apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde
+/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
+MacVec 128 128 getinterval astore pop
+/findheaderfont {
+/Helvetica findfont
+} def
+end %. AltsysDict
+%%EndResource
+%%EndProlog
+
+%%BeginSetup
+
+AltsysDict begin
+_bfh
+
+_efh
+end %. AltsysDict
+
+%%EndSetup
+AltsysDict begin
+
+/onlyk4{false}ndf
+/ccmyk{dup 5 -1 roll sub 0 max exch}ndf
+/cmyk2gray{
+4 -1 roll 0.3 mul 4 -1 roll 0.59 mul 4 -1 roll 0.11 mul
+add add add 1 min neg 1 add
+}bdf
+/setcmykcolor{1 exch sub ccmyk ccmyk ccmyk pop setrgbcolor}ndf
+/maxcolor {
+max max max
+} ndf
+/maxspot {
+pop
+} ndf
+/setcmykcoloroverprint{4{dup -1 eq{pop 0}if 4 1 roll}repeat setcmykcolor}ndf
+/findcmykcustomcolor{5 packedarray}ndf
+/setcustomcolor{exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop}ndf
+/setseparationgray{setgray}ndf
+/setoverprint{pop}ndf
+/currentoverprint false ndf
+/cmykbufs2gray{
+0 1 2 index length 1 sub
+{
+4 index 1 index get 0.3 mul
+4 index 2 index get 0.59 mul
+4 index 3 index get 0.11 mul
+4 index 4 index get
+add add add cvi 255 min
+255 exch sub
+2 index 3 1 roll put
+}for
+4 1 roll pop pop pop
+}bdf
+/colorimage{
+pop pop
+[
+5 -1 roll/exec cvx
+6 -1 roll/exec cvx
+7 -1 roll/exec cvx
+8 -1 roll/exec cvx
+/cmykbufs2gray cvx
+]cvx
+image
+}
+%. version 47.1 on Linotronic of Postscript defines colorimage incorrectly (rgb model only)
+version cvr 47.1 le
+statusdict /product get (Lino) anchorsearch{pop pop true}{pop false}ifelse
+and{userdict begin bdf end}{ndf}ifelse
+fhnumcolors 1 ne {/yt save def} if
+/customcolorimage{
+aload pop
+(_vc_Registration) eq
+{
+pop pop pop pop separationimage
+}
+{
+/ik xdf /iy xdf /im xdf /ic xdf
+ic im iy ik cmyk2gray /xt xdf
+currenttransfer
+{dup 1.0 exch sub xt mul add}concatprocs
+st
+image
+}
+ifelse
+}ndf
+fhnumcolors 1 ne {yt restore} if
+fhnumcolors 3 ne {/yt save def} if
+/customcolorimage{
+aload pop
+(_vc_Registration) eq
+{
+pop pop pop pop separationimage
+}
+{
+/ik xdf /iy xdf /im xdf /ic xdf
+1.0 dup ic ik add min sub
+1.0 dup im ik add min sub
+1.0 dup iy ik add min sub
+/ic xdf /iy xdf /im xdf
+currentcolortransfer
+4 1 roll
+{dup 1.0 exch sub ic mul add}concatprocs 4 1 roll
+{dup 1.0 exch sub iy mul add}concatprocs 4 1 roll
+{dup 1.0 exch sub im mul add}concatprocs 4 1 roll
+setcolortransfer
+{/dummy xdf dummy}concatprocs{dummy}{dummy}true 3 colorimage
+}
+ifelse
+}ndf
+fhnumcolors 3 ne {yt restore} if
+fhnumcolors 4 ne {/yt save def} if
+/customcolorimage{
+aload pop
+(_vc_Registration) eq
+{
+pop pop pop pop separationimage
+}
+{
+/ik xdf /iy xdf /im xdf /ic xdf
+currentcolortransfer
+{1.0 exch sub ik mul ik sub 1 add}concatprocs 4 1 roll
+{1.0 exch sub iy mul iy sub 1 add}concatprocs 4 1 roll
+{1.0 exch sub im mul im sub 1 add}concatprocs 4 1 roll
+{1.0 exch sub ic mul ic sub 1 add}concatprocs 4 1 roll
+setcolortransfer
+{/dummy xdf dummy}concatprocs{dummy}{dummy}{dummy}
+true 4 colorimage
+}
+ifelse
+}ndf
+fhnumcolors 4 ne {yt restore} if
+/separationimage{image}ndf
+/spotascmyk false ndf
+/newcmykcustomcolor{6 packedarray}ndf
+/inkoverprint false ndf
+/setinkoverprint{pop}ndf
+/setspotcolor {
+spots exch get
+dup 4 get (_vc_Registration) eq
+{pop 1 exch sub setseparationgray}
+{0 5 getinterval exch setcustomcolor}
+ifelse
+}ndf
+/currentcolortransfer{currenttransfer dup dup dup}ndf
+/setcolortransfer{st pop pop pop}ndf
+/fas{}ndf
+/sas{}ndf
+/fhsetspreadsize{pop}ndf
+/filler{fill}bdf
+/F{gsave {filler}fp grestore}bdf
+/f{closepath F}bdf
+/S{gsave {stroke}fp grestore}bdf
+/s{closepath S}bdf
+userdict /islevel2
+systemdict /languagelevel known dup
+{
+pop systemdict /languagelevel get 2 ge
+} if
+put
+islevel2 not
+{
+/currentcmykcolor
+{
+0 0 0 1 currentgray sub
+} ndf
+} if
+/tc
+{
+gsave
+setcmykcolor currentcmykcolor
+grestore
+} bind def
+/testCMYKColorThrough
+{
+tc add add add 0 ne
+} bind def
+/fhiscomposite where not {
+userdict /fhiscomposite
+islevel2
+{
+gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore
+add add add 4 eq
+}
+{
+1 0 0 0 testCMYKColorThrough
+0 1 0 0 testCMYKColorThrough
+0 0 1 0 testCMYKColorThrough
+0 0 0 1 testCMYKColorThrough
+and and and
+} ifelse
+put
+}
+{ pop }
+ifelse
+/bc4 [0 0 0 0] def
+/_lfp4 {
+1 pop
+/yt xdf
+/xt xdf
+/ang xdf
+storerect
+/taperfcn xdf
+/k2 xdf /y2 xdf /m2 xdf /c2 xdf
+/k1 xdf /y1 xdf /m1 xdf /c1 xdf
+c1 c2 sub abs
+m1 m2 sub abs
+y1 y2 sub abs
+k1 k2 sub abs
+maxcolor
+calcgraysteps mul abs round
+height abs adjnumsteps
+dup 1 lt {pop 1} if
+1 sub /numsteps1 xdf
+currentflat mark
+currentflat clipflatness
+/delta top bottom sub numsteps1 1 add div def
+/right right left sub def
+/botsv top delta sub def
+{
+{
+W
+xt yt translate
+ang rotate
+xt neg yt neg translate
+dup setflat
+/bottom botsv def
+0 1 numsteps1
+{
+numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse
+taperfcn /frac xdf
+bc4 0 c2 c1 sub frac mul c1 add put
+bc4 1 m2 m1 sub frac mul m1 add put
+bc4 2 y2 y1 sub frac mul y1 add put
+bc4 3 k2 k1 sub frac mul k1 add put
+bc4 vc
+1 index setflat
+{
+mark {newpath left bottom right delta rectfill}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+/bottom bottom delta sub def
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/bcs [0 0] def
+/_lfs4 {
+/yt xdf
+/xt xdf
+/ang xdf
+storerect
+/taperfcn xdf
+/tint2 xdf
+/tint1 xdf
+bcs exch 1 exch put
+tint1 tint2 sub abs
+bcs 1 get maxspot
+calcgraysteps mul abs round
+height abs adjnumsteps
+dup 2 lt {pop 2} if
+1 sub /numsteps1 xdf
+currentflat mark
+currentflat clipflatness
+/delta top bottom sub numsteps1 1 add div def
+/right right left sub def
+/botsv top delta sub def
+{
+{
+W
+xt yt translate
+ang rotate
+xt neg yt neg translate
+dup setflat
+/bottom botsv def
+0 1 numsteps1
+{
+numsteps1 div taperfcn /frac xdf
+bcs 0
+1.0 tint2 tint1 sub frac mul tint1 add sub
+put bcs vc
+1 index setflat
+{
+mark {newpath left bottom right delta rectfill}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+/bottom bottom delta sub def
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/_rfs6 {
+/tint2 xdf
+/tint1 xdf
+bcs exch 1 exch put
+/inrad xdf
+/radius xdf
+/yt xdf
+/xt xdf
+tint1 tint2 sub abs
+bcs 1 get maxspot
+calcgraysteps mul abs round
+radius inrad sub abs
+adjnumsteps
+dup 1 lt {pop 1} if
+1 sub /numsteps1 xdf
+radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse
+2 div /halfstep xdf
+currentflat mark
+currentflat clipflatness
+{
+{
+dup setflat
+W
+0 1 numsteps1
+{
+dup /radindex xdf
+numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse
+/frac xdf
+bcs 0
+tint2 tint1 sub frac mul tint1 add
+put bcs vc
+1 index setflat
+{
+newpath mark
+xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360
+{ arc
+radindex numsteps1 ne
+inrad 0 gt or
+{
+xt yt
+numsteps1 0 eq
+{ inrad }
+{
+radindex 1 add numsteps1 div 1 exch sub
+radius inrad sub mul halfstep add inrad add
+}ifelse
+dup xt add yt moveto
+360 0 arcn
+} if
+fill
+}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/_rfp6 {
+1 pop
+/k2 xdf /y2 xdf /m2 xdf /c2 xdf
+/k1 xdf /y1 xdf /m1 xdf /c1 xdf
+/inrad xdf
+/radius xdf
+/yt xdf
+/xt xdf
+c1 c2 sub abs
+m1 m2 sub abs
+y1 y2 sub abs
+k1 k2 sub abs
+maxcolor
+calcgraysteps mul abs round
+radius inrad sub abs
+adjnumsteps
+dup 1 lt {pop 1} if
+1 sub /numsteps1 xdf
+radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse
+2 div /halfstep xdf
+currentflat mark
+currentflat clipflatness
+{
+{
+dup setflat
+W
+0 1 numsteps1
+{
+dup /radindex xdf
+numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse
+/frac xdf
+bc4 0 c2 c1 sub frac mul c1 add put
+bc4 1 m2 m1 sub frac mul m1 add put
+bc4 2 y2 y1 sub frac mul y1 add put
+bc4 3 k2 k1 sub frac mul k1 add put
+bc4 vc
+1 index setflat
+{
+newpath mark
+xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360
+{ arc
+radindex numsteps1 ne
+inrad 0 gt or
+{
+xt yt
+numsteps1 0 eq
+{ inrad }
+{
+radindex 1 add numsteps1 div 1 exch sub
+radius inrad sub mul halfstep add inrad add
+}ifelse
+dup xt add yt moveto
+360 0 arcn
+} if
+fill
+}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/lfp4{_lfp4}ndf
+/lfs4{_lfs4}ndf
+/rfs6{_rfs6}ndf
+/rfp6{_rfp6}ndf
+/cvc [0 0 0 1] def
+/vc{
+AltsysDict /cvc 2 index put
+aload length dup 4 eq
+{pop dup -1 eq{pop setrgbcolor}{setcmykcolor}ifelse}
+{6 eq {sethexcolor} {setspotcolor} ifelse }
+ifelse
+}bdf
+0 setseparationgray
+/imgr {1692.47 1570.59 2287.75 2412.48 } def
+/bleed 0 def
+/clpr {1692.47 1570.59 2287.75 2412.48 } def
+/xs 1 def
+/ys 1 def
+/botx 0 def
+/overlap 0 def
+/wdist 18 def
+0 2 mul fhsetspreadsize
+0 0 ne {/df 0 def /clipflatness 0 def} if
+/maxsteps 256 def
+/forcemaxsteps false def
+/minsteps 0 def
+
+userdict begin /AGDOrigMtx matrix currentmatrix def end
+vms
+0.15 0.15 scale %JND
+-1845 -2006 translate
+
+/currentpacking defed{false setpacking}if
+/spots[
+
+1 0 0 0 (Process Cyan) false newcmykcustomcolor
+
+0 1 0 0 (Process Magenta) false newcmykcustomcolor
+
+0 0 1 0 (Process Yellow) false newcmykcustomcolor
+
+0 0 0 1 (Process Black) false newcmykcustomcolor
+]def
+n
+[] 0 d
+3.863708 M
+1 w
+0 j
+0 J
+false setoverprint
+0 i
+false eomode
+[0 0 0 1]vc
+vms
+1848.4365 2094.0422 m
+1848.4365 2140.987 1886.4917 2179.0422 1933.4365 2179.0422 C
+1980.3813 2179.0422 2018.4365 2140.987 2018.4365 2094.0422 C
+2018.4365 2047.0974 1980.3813 2009.0422 1933.4365 2009.0422 C
+1886.4917 2009.0422 1848.4365 2047.0974 1848.4365 2094.0422 C
+5.3858 w
+3.863693 M
+s
+n
+true eomode
+1880.5612 2118.7403 m
+1880.5612 2121.7396 1881.6862 2124.8795 1883.9362 2128.1622 C
+1886.1862 2131.4889 1888.4581 2133.1522 1890.7565 2133.1544 C
+1892.2089 2133.1544 1893.4042 2132.5677 1894.3424 2131.3966 C
+1895.3268 2130.2233 1895.819 2128.7467 1895.819 2126.9669 C
+1895.819 2124.0599 1894.6237 2121.0826 1892.233 2118.0372 C
+1889.8885 2114.9896 1887.6144 2113.4669 1885.4127 2113.4669 C
+1884.0526 2113.4669 1882.9034 2113.9591 1881.9674 2114.9435 C
+1881.0292 2115.974 1880.5612 2117.2396 1880.5612 2118.7403 C
+h
+1948.2018 2061.1544 m
+1978.4362 2061.0138 L
+1980.451 2062.6068 1981.9034 2064.3163 1982.7955 2066.1466 C
+1983.7316 2068.0209 1984.1996 2070.2005 1984.2018 2072.6857 C
+1984.2018 2073.2482 L
+1969.2252 2099.6153 L
+1969.2252 2099.3341 1969.2472 2098.8639 1969.2955 2098.2091 C
+1969.3417 2097.5983 1969.3636 2097.1544 1969.3658 2096.8732 C
+1969.3658 2089.888 1967.5597 2083.3732 1963.9518 2077.3263 C
+1960.3878 2071.2794 1955.1385 2065.8873 1948.2018 2061.1544 C
+h
+1905.8737 2139.4825 m
+1910.0924 2124.2247 L
+1964.233 2092.5841 L
+1964.6066 2094.3177 1964.8636 2095.724 1965.0065 2096.8028 C
+1965.1471 2097.9278 1965.2174 2098.9122 1965.2174 2099.756 C
+1965.2174 2100.4108 1965.1691 2101.5599 1965.0768 2103.2013 C
+1964.9823 2103.5748 1964.9362 2103.8561 1964.9362 2104.045 C
+1905.8737 2139.4825 L
+h
+1908.4752 2120.3575 m
+1898.983 2105.5216 L
+1954.3893 2072.8263 L
+1956.4987 2074.7005 1958.2565 2076.8561 1959.6627 2079.295 C
+1961.1151 2081.7779 1962.2863 2084.6608 1963.1783 2087.9435 C
+1908.4752 2120.3575 L
+h
+1896.2408 2102.3575 m
+1880.5612 2099.0528 L
+1942.9283 2062.631 L
+1944.5675 2063.5209 1946.0682 2064.5272 1947.4283 2065.6544 C
+1948.7863 2066.7794 1950.0057 2068.0209 1951.0846 2069.381 C
+1896.2408 2102.3575 L
+h
+1871.2096 2120.7794 m
+1876.3424 2102.3575 L
+1894.2018 2105.9435 L
+1906.1549 2125.2794 L
+1900.8815 2142.506 L
+1882.7408 2139.2013 L
+1871.2096 2120.7794 L
+h
+1866.7096 2121.4825 m
+1880.1393 2142.3653 L
+1901.3033 2146.5841 L
+1963.6705 2109.3888 L
+1968.0299 2106.8092 1971.005 2103.9747 1972.6002 2100.881 C
+1972.8815 2100.2701 1973.1144 2099.8021 1973.3033 2099.4747 C
+1991.444 2068.256 L
+1991.6769 2067.8341 1992.0043 2067.2474 1992.4283 2066.4982 C
+1994.0675 2064.013 1994.8871 2062.0904 1994.8893 2060.7325 C
+1994.8893 2059.4186 1994.3971 2058.4825 1993.4127 2057.92 C
+1992.4745 2057.4037 1990.6705 2057.1466 1987.9987 2057.1466 C
+1948.0612 2057.1466 L
+1946.4198 2057.1466 1944.7784 2057.4037 1943.1393 2057.92 C
+1941.4979 2058.4825 1939.4127 2059.513 1936.8815 2061.0138 C
+1873.6705 2098.631 L
+1866.7096 2121.4825 L
+true setoverprint
+f
+false setoverprint
+n
+vmr
+vmr
+end
+%%Trailer
diff --git a/docs/docbook/xslt/figures/note.pdf b/docs/docbook/xslt/figures/note.pdf
new file mode 100644
index 0000000000..ec6c248a2a
--- /dev/null
+++ b/docs/docbook/xslt/figures/note.pdf
Binary files differ
diff --git a/docs/docbook/xslt/figures/tip.eps b/docs/docbook/xslt/figures/tip.eps
new file mode 100644
index 0000000000..a28ad883eb
--- /dev/null
+++ b/docs/docbook/xslt/figures/tip.eps
@@ -0,0 +1,1503 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Title: Untitled-1
+%%Creator: FreeHand 9.0
+%%CreationDate: 2002/07/16 10:41 PM
+%%BoundingBox: 0 0 27 27
+%%FHPathName:Untitled:FreeHand 9:English:Untitled-1
+%ALDOriginalFile:Untitled:FreeHand 9:English:Untitled-1
+%ALDBoundingBox: -153 -436 442 406
+%%FHPageNum:1
+%%DocumentSuppliedResources: procset Altsys_header 4 0
+%%ColorUsage: Color
+%%DocumentProcessColors: Black
+%%EndComments
+%%BeginResource: procset Altsys_header 4 0
+userdict begin /AltsysDict 300 dict def end
+AltsysDict begin
+/bdf{bind def}bind def
+/xdf{exch def}bdf
+/defed{where{pop true}{false}ifelse}bdf
+/ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}bdf
+/d{setdash}bdf
+/h{closepath}bdf
+/H{}bdf
+/J{setlinecap}bdf
+/j{setlinejoin}bdf
+/M{setmiterlimit}bdf
+/n{newpath}bdf
+/N{newpath}bdf
+/q{gsave}bdf
+/Q{grestore}bdf
+/w{setlinewidth}bdf
+/Xic{matrix invertmatrix concat}bdf
+/Xq{matrix currentmatrix mark}bdf
+/XQ{cleartomark setmatrix}bdf
+/sepdef{
+dup where not
+{
+AltsysSepDict
+}
+if
+3 1 roll exch put
+}bdf
+/st{settransfer}bdf
+/colorimage defed /_rci xdf
+/cntr 0 def
+/readbinarystring{
+/cntr 0 def
+2 copy readstring
+{
+{
+dup
+(\034) search
+{
+length exch pop exch
+dup length 0 ne
+{
+dup dup 0 get 32 sub 0 exch put
+/cntr cntr 1 add def
+}
+{
+pop 1 string dup
+0 6 index read pop 32 sub put
+}ifelse
+3 copy
+putinterval pop
+1 add
+1 index length 1 sub
+1 index sub
+dup 0 le {pop pop exit}if
+getinterval
+}
+{
+pop exit
+} ifelse
+} loop
+}if
+cntr 0 gt
+{
+pop 2 copy
+dup length cntr sub cntr getinterval
+readbinarystring
+} if
+pop exch pop
+} bdf
+/_NXLevel2 defed {
+_NXLevel2 not {
+/colorimage where {
+userdict eq {
+/_rci false def
+} if
+} if
+} if
+} if
+/md defed{
+md type /dicttype eq {
+/colorimage where {
+md eq {
+/_rci false def
+}if
+}if
+/settransfer where {
+md eq {
+/st systemdict /settransfer get def
+}if
+}if
+}if
+}if
+/setstrokeadjust defed
+{
+true setstrokeadjust
+/C{curveto}bdf
+/L{lineto}bdf
+/m{moveto}bdf
+}
+{
+/dr{transform .25 sub round .25 add
+exch .25 sub round .25 add exch itransform}bdf
+/C{dr curveto}bdf
+/L{dr lineto}bdf
+/m{dr moveto}bdf
+/setstrokeadjust{pop}bdf
+}ifelse
+/privrectpath {
+4 -2 roll m
+dtransform round exch round exch idtransform
+2 copy 0 lt exch 0 lt xor
+{dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto}
+{exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto}
+ifelse
+closepath
+}bdf
+/rectclip{newpath privrectpath clip newpath}def
+/rectfill{gsave newpath privrectpath fill grestore}def
+/rectstroke{gsave newpath privrectpath stroke grestore}def
+/_fonthacksave false def
+/currentpacking defed
+{
+/_bfh {/_fonthacksave currentpacking def false setpacking} bdf
+/_efh {_fonthacksave setpacking} bdf
+}
+{
+/_bfh {} bdf
+/_efh {} bdf
+}ifelse
+/packedarray{array astore readonly}ndf
+/`
+{
+false setoverprint
+/-save0- save def
+5 index concat
+pop
+storerect left bottom width height rectclip
+pop
+/MMdict_count countdictstack def
+/MMop_count count 1 sub def
+userdict begin
+/showpage {} def
+0 setgray 0 setlinecap 1 setlinewidth
+0 setlinejoin 10 setmiterlimit [] 0 setdash newpath
+} bdf
+/currentpacking defed{true setpacking}if
+/min{2 copy gt{exch}if pop}bdf
+/max{2 copy lt{exch}if pop}bdf
+/xformfont { currentfont exch makefont setfont } bdf
+/fhnumcolors 1
+statusdict begin
+/processcolors defed
+{
+pop processcolors
+}
+{
+/deviceinfo defed {
+deviceinfo /Colors known {
+pop deviceinfo /Colors get
+} if
+} if
+} ifelse
+end
+def
+/printerRes
+gsave
+matrix defaultmatrix setmatrix
+72 72 dtransform
+abs exch abs
+max
+grestore
+def
+/graycalcs
+[
+{Angle Frequency}
+{GrayAngle GrayFrequency}
+{0 Width Height matrix defaultmatrix idtransform
+dup mul exch dup mul add sqrt 72 exch div}
+{0 GrayWidth GrayHeight matrix defaultmatrix idtransform
+dup mul exch dup mul add sqrt 72 exch div}
+] def
+/calcgraysteps {
+forcemaxsteps
+{
+maxsteps
+}
+{
+/currenthalftone defed
+{currenthalftone /dicttype eq}{false}ifelse
+{
+currenthalftone begin
+HalftoneType 4 le
+{graycalcs HalftoneType 1 sub get exec}
+{
+HalftoneType 5 eq
+{
+Default begin
+{graycalcs HalftoneType 1 sub get exec}
+end
+}
+{0 60}
+ifelse
+}
+ifelse
+end
+}
+{
+currentscreen pop exch
+}
+ifelse
+printerRes 300 max exch div exch
+2 copy
+sin mul round dup mul
+3 1 roll
+cos mul round dup mul
+add 1 add
+dup maxsteps gt {pop maxsteps} if
+dup minsteps lt {pop minsteps} if
+}
+ifelse
+} bdf
+/nextrelease defed {
+/languagelevel defed not {
+/framebuffer defed {
+0 40 string framebuffer 9 1 roll 8 {pop} repeat
+dup 516 eq exch 520 eq or
+{
+/fhnumcolors 3 def
+/currentscreen {60 0 {pop pop 1}}bdf
+/calcgraysteps {maxsteps} bdf
+}if
+}if
+}if
+}if
+fhnumcolors 1 ne {
+/calcgraysteps {maxsteps} bdf
+} if
+/currentpagedevice defed {
+currentpagedevice /PreRenderingEnhance known
+{
+currentpagedevice /PreRenderingEnhance get
+{
+/calcgraysteps
+{
+forcemaxsteps
+{maxsteps}
+{256 maxsteps min}
+ifelse
+} def
+} if
+} if
+} if
+/gradfrequency 144 def
+printerRes 1000 lt {
+/gradfrequency 72 def
+} if
+/adjnumsteps {
+dup dtransform abs exch abs max
+printerRes div
+gradfrequency mul
+round
+5 max
+min
+}bdf
+/goodsep {
+spots exch get 4 get dup sepname eq exch (_vc_Registration) eq or
+}bdf
+/BeginGradation defed
+{/bb{BeginGradation}bdf}
+{/bb{}bdf}
+ifelse
+/EndGradation defed
+{/eb{EndGradation}bdf}
+{/eb{}bdf}
+ifelse
+/bottom -0 def
+/delta -0 def
+/frac -0 def
+/height -0 def
+/left -0 def
+/numsteps1 -0 def
+/radius -0 def
+/right -0 def
+/top -0 def
+/width -0 def
+/xt -0 def
+/yt -0 def
+/df currentflat def
+/tempstr 1 string def
+/clipflatness currentflat def
+/inverted?
+0 currenttransfer exec .5 ge def
+/tc1 [0 0 0 1] def
+/tc2 [0 0 0 1] def
+/storerect{/top xdf /right xdf /bottom xdf /left xdf
+/width right left sub def /height top bottom sub def}bdf
+/concatprocs{
+systemdict /packedarray known
+{dup type /packedarraytype eq 2 index type /packedarraytype eq or}{false}ifelse
+{
+/proc2 exch cvlit def /proc1 exch cvlit def
+proc1 aload pop proc2 aload pop
+proc1 length proc2 length add packedarray cvx
+}
+{
+/proc2 exch cvlit def /proc1 exch cvlit def
+/newproc proc1 length proc2 length add array def
+newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval
+newproc cvx
+}ifelse
+}bdf
+/i{dup 0 eq
+{pop df dup}
+{dup} ifelse
+/clipflatness xdf setflat
+}bdf
+version cvr 38.0 le
+{/setrgbcolor{
+currenttransfer exec 3 1 roll
+currenttransfer exec 3 1 roll
+currenttransfer exec 3 1 roll
+setrgbcolor}bdf}if
+/vms {/vmsv save def} bdf
+/vmr {vmsv restore} bdf
+/vmrs{vmsv restore /vmsv save def}bdf
+/eomode{
+{/filler /eofill load def /clipper /eoclip load def}
+{/filler /fill load def /clipper /clip load def}
+ifelse
+}bdf
+/normtaper{}bdf
+/logtaper{9 mul 1 add log}bdf
+/CD{
+/NF exch def
+{
+exch dup
+/FID ne 1 index/UniqueID ne and
+{exch NF 3 1 roll put}
+{pop pop}
+ifelse
+}forall
+NF
+}bdf
+/MN{
+1 index length
+/Len exch def
+dup length Len add
+string dup
+Len
+4 -1 roll
+putinterval
+dup
+0
+4 -1 roll
+putinterval
+}bdf
+/RC{4 -1 roll /ourvec xdf 256 string cvs(|______)anchorsearch
+{1 index MN cvn/NewN exch def cvn
+findfont dup maxlength dict CD dup/FontName NewN put dup
+/Encoding ourvec put NewN exch definefont pop}{pop}ifelse}bdf
+/RF{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RC}
+ifelse
+}bdf
+/FF{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known
+{exch pop findfont 3 -1 roll pop}
+{pop dup findfont dup maxlength dict CD dup dup
+/Encoding exch /Encoding get 256 array copy 7 -1 roll
+{3 -1 roll dup 4 -2 roll put}forall put definefont}
+ifelse}bdf
+/RCJ{4 -1 roll
+/ourvec xdf
+256 string cvs
+(|______) anchorsearch
+{pop
+cvn
+dup FDFJ
+exch
+1 index
+eq
+{
+_bfh findfont _efh
+dup
+maxlength dict
+CD
+dup
+/FontName
+3 index
+put
+dup
+/Encoding ourvec put
+1 index
+exch
+definefont
+pop
+}
+{exch pop}
+ifelse
+}
+{pop}
+ifelse
+}bdf
+/RFJ{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RCJ}
+ifelse
+}bdf
+/hasfont
+{
+/resourcestatus where
+{
+pop
+/Font resourcestatus
+{
+pop pop true
+}
+{
+false
+}
+ifelse
+}
+{
+dup FontDirectory exch known
+{pop true}
+{
+256 string
+cvs
+(fonts/) exch MN
+status
+{pop pop pop pop true}
+{false}
+ifelse
+}
+ifelse
+}
+ifelse
+}bdf
+/FDFJ
+{
+dup
+hasfont
+not
+{
+pop
+/Ryumin-Light-83pv-RKSJ-H
+hasfont
+{
+/Ryumin-Light-83pv-RKSJ-H
+}
+{
+/Courier
+}
+ifelse
+}
+if
+}bdf
+/FFJ{
+_bfh
+dup
+256 string cvs
+(|______)exch MN
+cvn
+dup
+FontDirectory
+exch known
+{
+exch
+pop
+findfont
+3 -1 roll
+pop
+}
+{
+pop
+FDFJ
+dup findfont
+dup maxlength dict
+CD
+dup dup
+/Encoding exch
+/Encoding get
+256 array copy
+7 -1 roll
+{
+3 -1 roll
+dup
+4 -2 roll
+put
+}forall
+put
+definefont
+}
+ifelse
+_efh
+}bdf
+/GS {
+dup
+hasfont
+{
+findfont
+exch makesetfont
+exch
+pop
+ts
+}
+{
+pop pop pop
+ts
+} ifelse
+} bdf
+/RCK{4 -1 roll
+/ourvec xdf
+256 string cvs
+(|______) anchorsearch
+{pop
+cvn
+dup FDFK
+exch
+1 index
+eq
+{
+_bfh findfont _efh
+dup
+maxlength dict
+CD
+dup
+/FontName
+3 index
+put
+dup
+/Encoding ourvec put
+1 index
+exch
+definefont
+pop
+}
+{exch pop}
+ifelse
+}
+{pop}
+ifelse
+}bdf
+/RFK{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RCK}
+ifelse
+}bdf
+/hasfont
+{
+/resourcestatus where
+{
+pop
+/Font resourcestatus
+{
+pop pop true
+}
+{
+false
+}
+ifelse
+}
+{
+dup FontDirectory exch known
+{pop true}
+{
+256 string
+cvs
+(fonts/) exch MN
+status
+{pop pop pop pop true}
+{false}
+ifelse
+}
+ifelse
+}
+ifelse
+}bdf
+/FDFK
+{
+dup
+hasfont
+not
+{
+pop
+/JCsm
+hasfont
+{
+/JCsm
+}
+{
+/Courier
+}
+ifelse
+}
+if
+}bdf
+/FFK{
+_bfh
+dup
+256 string cvs
+(|______)exch MN
+cvn
+dup
+FontDirectory
+exch known
+{
+exch
+pop
+findfont
+3 -1 roll
+pop
+}
+{
+pop
+FDFK
+dup findfont
+dup maxlength dict
+CD
+dup dup
+/Encoding exch
+/Encoding get
+256 array copy
+7 -1 roll
+{
+3 -1 roll
+dup
+4 -2 roll
+put
+}forall
+put
+definefont
+}
+ifelse
+_efh
+}bdf
+/RCTC{4 -1 roll
+/ourvec xdf
+256 string cvs
+(|______) anchorsearch
+{pop
+cvn
+dup FDFTC
+exch
+1 index
+eq
+{
+_bfh findfont _efh
+dup
+maxlength dict
+CD
+dup
+/FontName
+3 index
+put
+dup
+/Encoding ourvec put
+1 index
+exch
+definefont
+pop
+}
+{exch pop}
+ifelse
+}
+{pop}
+ifelse
+}bdf
+/RFTC{
+dup
+FontDirectory exch
+known
+{pop 3 -1 roll pop}
+{RCTC}
+ifelse
+}bdf
+/FDFTC
+{
+dup
+hasfont
+not
+{
+pop
+/DFMing-Lt-HK-BF
+hasfont
+{
+/DFMing-Lt-HK-BF
+}
+{
+/Courier
+}
+ifelse
+}
+if
+}bdf
+/FFTC{
+_bfh
+dup
+256 string cvs
+(|______)exch MN
+cvn
+dup
+FontDirectory
+exch known
+{
+exch
+pop
+findfont
+3 -1 roll
+pop
+}
+{
+pop
+FDFTC
+dup findfont
+dup maxlength dict
+CD
+dup dup
+/Encoding exch
+/Encoding get
+256 array copy
+7 -1 roll
+{
+3 -1 roll
+dup
+4 -2 roll
+put
+}forall
+put
+definefont
+}
+ifelse
+_efh
+}bdf
+/fps{
+currentflat
+exch
+dup 0 le{pop 1}if
+{
+dup setflat 3 index stopped
+{1.3 mul dup 3 index gt{pop setflat pop pop stop}if}
+{exit}
+ifelse
+}loop
+pop setflat pop pop
+}bdf
+/fp{100 currentflat fps}bdf
+/clipper{clip}bdf
+/W{/clipper load 100 clipflatness dup setflat fps}bdf
+
+userdict begin /BDFontDict 29 dict def end
+BDFontDict begin
+/bu{}def
+/bn{}def
+/setTxMode{av 70 ge{pop}if pop}def
+/gm{m}def
+/show{pop}def
+/gr{pop}def
+/fnt{pop pop pop}def
+/fs{pop}def
+/fz{pop}def
+/lin{pop pop}def
+/:M {pop pop} def
+/sf {pop} def
+/S {pop} def
+/@b {pop pop pop pop pop pop pop pop} def
+/_bdsave /save load def
+/_bdrestore /restore load def
+/save { dup /fontsave eq {null} {_bdsave} ifelse } def
+/restore { dup null eq { pop } { _bdrestore } ifelse } def
+/fontsave null def
+end
+/MacVec 256 array def
+MacVec 0 /Helvetica findfont
+/Encoding get 0 128 getinterval putinterval
+MacVec 127 /DEL put MacVec 16#27 /quotesingle put MacVec 16#60 /grave put
+/NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI
+/DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US
+MacVec 0 32 getinterval astore pop
+/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute
+/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave
+/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute
+/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis
+/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
+/registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash
+/infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation
+/product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash
+/questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft
+/guillemotright/ellipsis/nbspace/Agrave/Atilde/Otilde/OE/oe
+/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge
+/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl
+/daggerdbl/periodcentered/quotesinglbase/quotedblbase
+/perthousand/Acircumflex/Ecircumflex/Aacute
+/Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex
+/apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde
+/macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron
+MacVec 128 128 getinterval astore pop
+/findheaderfont {
+/Helvetica findfont
+} def
+end %. AltsysDict
+%%EndResource
+%%EndProlog
+
+%%BeginSetup
+
+AltsysDict begin
+_bfh
+
+_efh
+end %. AltsysDict
+
+%%EndSetup
+AltsysDict begin
+
+/onlyk4{false}ndf
+/ccmyk{dup 5 -1 roll sub 0 max exch}ndf
+/cmyk2gray{
+4 -1 roll 0.3 mul 4 -1 roll 0.59 mul 4 -1 roll 0.11 mul
+add add add 1 min neg 1 add
+}bdf
+/setcmykcolor{1 exch sub ccmyk ccmyk ccmyk pop setrgbcolor}ndf
+/maxcolor {
+max max max
+} ndf
+/maxspot {
+pop
+} ndf
+/setcmykcoloroverprint{4{dup -1 eq{pop 0}if 4 1 roll}repeat setcmykcolor}ndf
+/findcmykcustomcolor{5 packedarray}ndf
+/setcustomcolor{exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop}ndf
+/setseparationgray{setgray}ndf
+/setoverprint{pop}ndf
+/currentoverprint false ndf
+/cmykbufs2gray{
+0 1 2 index length 1 sub
+{
+4 index 1 index get 0.3 mul
+4 index 2 index get 0.59 mul
+4 index 3 index get 0.11 mul
+4 index 4 index get
+add add add cvi 255 min
+255 exch sub
+2 index 3 1 roll put
+}for
+4 1 roll pop pop pop
+}bdf
+/colorimage{
+pop pop
+[
+5 -1 roll/exec cvx
+6 -1 roll/exec cvx
+7 -1 roll/exec cvx
+8 -1 roll/exec cvx
+/cmykbufs2gray cvx
+]cvx
+image
+}
+%. version 47.1 on Linotronic of Postscript defines colorimage incorrectly (rgb model only)
+version cvr 47.1 le
+statusdict /product get (Lino) anchorsearch{pop pop true}{pop false}ifelse
+and{userdict begin bdf end}{ndf}ifelse
+fhnumcolors 1 ne {/yt save def} if
+/customcolorimage{
+aload pop
+(_vc_Registration) eq
+{
+pop pop pop pop separationimage
+}
+{
+/ik xdf /iy xdf /im xdf /ic xdf
+ic im iy ik cmyk2gray /xt xdf
+currenttransfer
+{dup 1.0 exch sub xt mul add}concatprocs
+st
+image
+}
+ifelse
+}ndf
+fhnumcolors 1 ne {yt restore} if
+fhnumcolors 3 ne {/yt save def} if
+/customcolorimage{
+aload pop
+(_vc_Registration) eq
+{
+pop pop pop pop separationimage
+}
+{
+/ik xdf /iy xdf /im xdf /ic xdf
+1.0 dup ic ik add min sub
+1.0 dup im ik add min sub
+1.0 dup iy ik add min sub
+/ic xdf /iy xdf /im xdf
+currentcolortransfer
+4 1 roll
+{dup 1.0 exch sub ic mul add}concatprocs 4 1 roll
+{dup 1.0 exch sub iy mul add}concatprocs 4 1 roll
+{dup 1.0 exch sub im mul add}concatprocs 4 1 roll
+setcolortransfer
+{/dummy xdf dummy}concatprocs{dummy}{dummy}true 3 colorimage
+}
+ifelse
+}ndf
+fhnumcolors 3 ne {yt restore} if
+fhnumcolors 4 ne {/yt save def} if
+/customcolorimage{
+aload pop
+(_vc_Registration) eq
+{
+pop pop pop pop separationimage
+}
+{
+/ik xdf /iy xdf /im xdf /ic xdf
+currentcolortransfer
+{1.0 exch sub ik mul ik sub 1 add}concatprocs 4 1 roll
+{1.0 exch sub iy mul iy sub 1 add}concatprocs 4 1 roll
+{1.0 exch sub im mul im sub 1 add}concatprocs 4 1 roll
+{1.0 exch sub ic mul ic sub 1 add}concatprocs 4 1 roll
+setcolortransfer
+{/dummy xdf dummy}concatprocs{dummy}{dummy}{dummy}
+true 4 colorimage
+}
+ifelse
+}ndf
+fhnumcolors 4 ne {yt restore} if
+/separationimage{image}ndf
+/spotascmyk false ndf
+/newcmykcustomcolor{6 packedarray}ndf
+/inkoverprint false ndf
+/setinkoverprint{pop}ndf
+/setspotcolor {
+spots exch get
+dup 4 get (_vc_Registration) eq
+{pop 1 exch sub setseparationgray}
+{0 5 getinterval exch setcustomcolor}
+ifelse
+}ndf
+/currentcolortransfer{currenttransfer dup dup dup}ndf
+/setcolortransfer{st pop pop pop}ndf
+/fas{}ndf
+/sas{}ndf
+/fhsetspreadsize{pop}ndf
+/filler{fill}bdf
+/F{gsave {filler}fp grestore}bdf
+/f{closepath F}bdf
+/S{gsave {stroke}fp grestore}bdf
+/s{closepath S}bdf
+userdict /islevel2
+systemdict /languagelevel known dup
+{
+pop systemdict /languagelevel get 2 ge
+} if
+put
+islevel2 not
+{
+/currentcmykcolor
+{
+0 0 0 1 currentgray sub
+} ndf
+} if
+/tc
+{
+gsave
+setcmykcolor currentcmykcolor
+grestore
+} bind def
+/testCMYKColorThrough
+{
+tc add add add 0 ne
+} bind def
+/fhiscomposite where not {
+userdict /fhiscomposite
+islevel2
+{
+gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore
+add add add 4 eq
+}
+{
+1 0 0 0 testCMYKColorThrough
+0 1 0 0 testCMYKColorThrough
+0 0 1 0 testCMYKColorThrough
+0 0 0 1 testCMYKColorThrough
+and and and
+} ifelse
+put
+}
+{ pop }
+ifelse
+/bc4 [0 0 0 0] def
+/_lfp4 {
+1 pop
+/yt xdf
+/xt xdf
+/ang xdf
+storerect
+/taperfcn xdf
+/k2 xdf /y2 xdf /m2 xdf /c2 xdf
+/k1 xdf /y1 xdf /m1 xdf /c1 xdf
+c1 c2 sub abs
+m1 m2 sub abs
+y1 y2 sub abs
+k1 k2 sub abs
+maxcolor
+calcgraysteps mul abs round
+height abs adjnumsteps
+dup 1 lt {pop 1} if
+1 sub /numsteps1 xdf
+currentflat mark
+currentflat clipflatness
+/delta top bottom sub numsteps1 1 add div def
+/right right left sub def
+/botsv top delta sub def
+{
+{
+W
+xt yt translate
+ang rotate
+xt neg yt neg translate
+dup setflat
+/bottom botsv def
+0 1 numsteps1
+{
+numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse
+taperfcn /frac xdf
+bc4 0 c2 c1 sub frac mul c1 add put
+bc4 1 m2 m1 sub frac mul m1 add put
+bc4 2 y2 y1 sub frac mul y1 add put
+bc4 3 k2 k1 sub frac mul k1 add put
+bc4 vc
+1 index setflat
+{
+mark {newpath left bottom right delta rectfill}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+/bottom bottom delta sub def
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/bcs [0 0] def
+/_lfs4 {
+/yt xdf
+/xt xdf
+/ang xdf
+storerect
+/taperfcn xdf
+/tint2 xdf
+/tint1 xdf
+bcs exch 1 exch put
+tint1 tint2 sub abs
+bcs 1 get maxspot
+calcgraysteps mul abs round
+height abs adjnumsteps
+dup 2 lt {pop 2} if
+1 sub /numsteps1 xdf
+currentflat mark
+currentflat clipflatness
+/delta top bottom sub numsteps1 1 add div def
+/right right left sub def
+/botsv top delta sub def
+{
+{
+W
+xt yt translate
+ang rotate
+xt neg yt neg translate
+dup setflat
+/bottom botsv def
+0 1 numsteps1
+{
+numsteps1 div taperfcn /frac xdf
+bcs 0
+1.0 tint2 tint1 sub frac mul tint1 add sub
+put bcs vc
+1 index setflat
+{
+mark {newpath left bottom right delta rectfill}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+/bottom bottom delta sub def
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/_rfs6 {
+/tint2 xdf
+/tint1 xdf
+bcs exch 1 exch put
+/inrad xdf
+/radius xdf
+/yt xdf
+/xt xdf
+tint1 tint2 sub abs
+bcs 1 get maxspot
+calcgraysteps mul abs round
+radius inrad sub abs
+adjnumsteps
+dup 1 lt {pop 1} if
+1 sub /numsteps1 xdf
+radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse
+2 div /halfstep xdf
+currentflat mark
+currentflat clipflatness
+{
+{
+dup setflat
+W
+0 1 numsteps1
+{
+dup /radindex xdf
+numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse
+/frac xdf
+bcs 0
+tint2 tint1 sub frac mul tint1 add
+put bcs vc
+1 index setflat
+{
+newpath mark
+xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360
+{ arc
+radindex numsteps1 ne
+inrad 0 gt or
+{
+xt yt
+numsteps1 0 eq
+{ inrad }
+{
+radindex 1 add numsteps1 div 1 exch sub
+radius inrad sub mul halfstep add inrad add
+}ifelse
+dup xt add yt moveto
+360 0 arcn
+} if
+fill
+}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/_rfp6 {
+1 pop
+/k2 xdf /y2 xdf /m2 xdf /c2 xdf
+/k1 xdf /y1 xdf /m1 xdf /c1 xdf
+/inrad xdf
+/radius xdf
+/yt xdf
+/xt xdf
+c1 c2 sub abs
+m1 m2 sub abs
+y1 y2 sub abs
+k1 k2 sub abs
+maxcolor
+calcgraysteps mul abs round
+radius inrad sub abs
+adjnumsteps
+dup 1 lt {pop 1} if
+1 sub /numsteps1 xdf
+radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse
+2 div /halfstep xdf
+currentflat mark
+currentflat clipflatness
+{
+{
+dup setflat
+W
+0 1 numsteps1
+{
+dup /radindex xdf
+numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse
+/frac xdf
+bc4 0 c2 c1 sub frac mul c1 add put
+bc4 1 m2 m1 sub frac mul m1 add put
+bc4 2 y2 y1 sub frac mul y1 add put
+bc4 3 k2 k1 sub frac mul k1 add put
+bc4 vc
+1 index setflat
+{
+newpath mark
+xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360
+{ arc
+radindex numsteps1 ne
+inrad 0 gt or
+{
+xt yt
+numsteps1 0 eq
+{ inrad }
+{
+radindex 1 add numsteps1 div 1 exch sub
+radius inrad sub mul halfstep add inrad add
+}ifelse
+dup xt add yt moveto
+360 0 arcn
+} if
+fill
+}stopped
+{cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if}
+{cleartomark exit}ifelse
+}loop
+}for
+}
+gsave stopped grestore
+{exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if}
+{exit}ifelse
+}loop
+cleartomark setflat
+}bdf
+/lfp4{_lfp4}ndf
+/lfs4{_lfs4}ndf
+/rfs6{_rfs6}ndf
+/rfp6{_rfp6}ndf
+/cvc [0 0 0 1] def
+/vc{
+AltsysDict /cvc 2 index put
+aload length dup 4 eq
+{pop dup -1 eq{pop setrgbcolor}{setcmykcolor}ifelse}
+{6 eq {sethexcolor} {setspotcolor} ifelse }
+ifelse
+}bdf
+0 setseparationgray
+/imgr {1692.47 1570.59 2287.75 2412.48 } def
+/bleed 0 def
+/clpr {1692.47 1570.59 2287.75 2412.48 } def
+/xs 1 def
+/ys 1 def
+/botx 0 def
+/overlap 0 def
+/wdist 18 def
+0 2 mul fhsetspreadsize
+0 0 ne {/df 0 def /clipflatness 0 def} if
+/maxsteps 256 def
+/forcemaxsteps false def
+/minsteps 0 def
+
+userdict begin /AGDOrigMtx matrix currentmatrix def end
+vms
+0.15 0.15 scale %JND
+-1845 -2006 translate
+
+/currentpacking defed{false setpacking}if
+/spots[
+
+1 0 0 0 (Process Cyan) false newcmykcustomcolor
+
+0 1 0 0 (Process Magenta) false newcmykcustomcolor
+
+0 0 1 0 (Process Yellow) false newcmykcustomcolor
+
+0 0 0 1 (Process Black) false newcmykcustomcolor
+]def
+n
+[] 0 d
+3.863708 M
+1 w
+0 j
+0 J
+false setoverprint
+0 i
+false eomode
+[0 0 0 1]vc
+vms
+1848.4365 2094.0422 m
+1848.4365 2140.987 1886.4917 2179.0422 1933.4365 2179.0422 C
+1980.3813 2179.0422 2018.4365 2140.987 2018.4365 2094.0422 C
+2018.4365 2047.0974 1980.3813 2009.0422 1933.4365 2009.0422 C
+1886.4917 2009.0422 1848.4365 2047.0974 1848.4365 2094.0422 C
+5.3858 w
+3.863693 M
+s
+n
+true eomode
+1897.6516 2067.1709 m
+1897.6087 2066.5538 L
+1885.3743 2066.1319 L
+1883.1946 2062.4053 L
+1869.9055 2063.9522 L
+1869.9055 2067.1712 L
+1897.6516 2067.1709 L
+h
+1944.0852 2067.1709 m
+1944.0852 2067.0077 1944.0852 2066.8741 1944.0852 2066.7647 C
+1944.1314 2066.5757 1944.1775 2066.4131 1944.2258 2066.2725 C
+1945.0213 2065.0992 1946.0056 2064.2554 1947.179 2063.7413 C
+1948.3963 2063.2249 1950.0134 2062.9678 1952.0305 2062.9678 C
+1956.0142 2062.9678 1959.7627 2063.9522 1963.2805 2065.9209 C
+1964.0204 2066.3353 1964.6824 2066.7527 1965.2665 2067.1732 C
+1971.313 2067.1709 L
+1970.2122 2065.693 1968.5893 2064.3153 1966.4446 2063.0381 C
+1962.0369 2060.4585 1956.8821 2059.1709 1950.9758 2059.1709 C
+1948.6775 2059.1709 1946.7791 2059.5445 1945.2805 2060.2959 C
+1943.7798 2061.0914 1942.5142 2062.357 1941.4837 2064.0928 C
+1941.2486 2064.0928 1940.8728 2064.0928 1940.3587 2064.0928 C
+1937.5462 2063.9039 1935.4829 2063.8116 1934.1712 2063.8116 C
+1929.2954 2063.8116 1925.1228 2064.2796 1921.6555 2065.2178 C
+1919.9787 2065.6936 1918.2362 2066.3443 1916.4282 2067.1704 C
+1944.0852 2067.1709 L
+true setoverprint
+f
+false setoverprint
+n
+1884.4125 2075.1709 m
+1884.4602 2073.585 L
+1893.1087 2073.0225 L
+1893.1087 2075.1712 L
+1910.8456 2075.1709 L
+1910.98 2075.0913 1911.1146 2075.0069 1911.2493 2074.9209 C
+1911.9986 2074.3584 1912.583 2073.9585 1913.0071 2073.7256 C
+1916.804 2071.4756 1920.2954 2069.9288 1923.4837 2069.085 C
+1926.718 2068.2413 1931.0071 2067.8194 1936.3508 2067.8194 C
+1940.3587 2067.8194 L
+1940.7805 2070.7022 L
+1938.9524 2070.8428 1937.522 2071.4053 1936.4915 2072.3897 C
+1935.7726 2073.1422 1935.3163 2074.0693 1935.1223 2075.1726 C
+1940.1696 2075.1709 L
+1940.3293 2074.9768 1940.5095 2074.8018 1940.7102 2074.6397 C
+1941.7407 2073.8421 1943.147 2073.4444 1944.929 2073.4444 C
+1948.4128 2073.4444 1951.8259 2074.0193 1955.1674 2075.169 C
+1963.5704 2075.1709 L
+1962.8877 2074.843 1962.0411 2074.4337 1961.0305 2073.9366 C
+1958.1697 2072.5303 1955.2166 2071.4976 1952.1712 2070.8428 C
+1951.3274 2070.7022 1950.2244 2070.5132 1948.8665 2070.2803 C
+1945.6782 2069.7178 1944.0852 2068.8038 1944.0852 2067.5381 C
+1944.0852 2067.4017 1944.0852 2067.2776 1944.0852 2067.1658 C
+1916.4282 2067.1709 L
+1914.4953 2068.0535 1912.4877 2069.1369 1910.4055 2070.4209 C
+1910.0759 2070.6539 1909.6321 2070.9593 1909.0696 2071.335 C
+1905.9275 2073.5367 1902.9041 2074.6375 1899.9993 2074.6397 C
+1899.9509 2074.6397 1899.6939 2074.6155 1899.2258 2074.5694 C
+1898.7556 2074.521 1898.4041 2074.5452 1898.1712 2074.6397 C
+1897.6516 2067.1709 L
+1869.9055 2067.1709 L
+1869.9055 2075.1714 L
+1884.4125 2075.1709 L
+h
+1972.5022 2075.1709 m
+1972.8687 2074.2606 1973.0523 2073.2652 1973.054 2072.1788 C
+1973.054 2070.3983 1972.4736 2068.7289 1971.313 2067.1709 C
+1965.2666 2067.1709 L
+1967.4581 2068.751 1968.554 2070.3727 1968.554 2072.0381 C
+1968.554 2073.0686 1968.2486 2073.9827 1967.6399 2074.7803 C
+1967.5373 2074.922 1967.4334 2075.0518 1967.3283 2075.1698 C
+1972.5022 2075.1709 L
+true setoverprint
+f
+false setoverprint
+n
+1869.9055 2075.1709 m
+1869.9055 2119.0772 L
+1897.1868 2119.8506 L
+1897.8899 2114.2256 L
+1899.2962 2114.2256 L
+1901.0759 2114.2256 1902.7876 2114.5069 1904.429 2115.0694 C
+1906.1165 2115.678 1908.2478 2116.825 1910.8274 2118.5147 C
+1911.9524 2119.2178 L
+1919.5923 2124.1397 1925.4041 2126.6006 1929.3899 2126.6006 C
+1930.8423 2126.6006 1932.3408 2126.3655 1933.8899 2125.8975 C
+1935.4368 2125.4756 1937.1463 2124.7945 1939.0227 2123.8584 C
+1940.1939 2123.9046 1941.8814 2123.9507 1944.0852 2123.9991 C
+1950.0376 2124.0914 1954.0674 2124.1375 1956.179 2124.1397 C
+1972.7244 2124.1397 1984.583 2123.1311 1991.7571 2121.1163 C
+1998.9751 2119.1475 2002.583 2115.9351 2002.5852 2111.4834 C
+2002.5852 2107.8272 2000.2869 2105.2959 1995.6946 2103.8897 C
+1991.1463 2102.5296 1981.865 2101.8506 1967.8508 2101.8506 C
+1963.5618 2101.8506 L
+1964.6384 2100.8179 1965.4361 2099.8116 1965.9524 2098.8272 C
+1966.4666 2097.8428 1966.7236 2096.8343 1966.7258 2095.8038 C
+1966.7258 2095.3335 1966.6314 2094.7952 1966.4446 2094.1866 C
+1966.2556 2093.6241 1965.9041 2092.8506 1965.3899 2091.8663 C
+1967.1697 2091.1631 1968.5056 2090.1788 1969.3977 2088.9131 C
+1970.2876 2087.6936 1970.7315 2086.1929 1970.7337 2084.4131 C
+1970.7337 2083.521 1970.615 2082.6311 1970.3821 2081.7413 C
+1970.147 2080.8492 1969.7954 2079.9593 1969.3274 2079.0694 C
+1970.5447 2078.2256 1971.4588 2077.2171 1972.0696 2076.0459 C
+1972.2346 2075.7625 1972.3788 2075.4685 1972.5022 2075.1642 C
+1967.3284 2075.1709 L
+1966.8077 2075.7539 1966.2562 2076.0459 1965.6712 2076.0459 C
+1965.5191 2076.0459 1964.8189 2075.7521 1963.5704 2075.1643 C
+1955.1674 2075.1709 L
+1956.5004 2075.6277 1957.8219 2076.1778 1959.1321 2076.8194 C
+1963.7727 2079.1155 1966.093 2081.5523 1966.093 2084.1319 C
+1966.093 2085.303 1965.7173 2086.2632 1964.968 2087.0147 C
+1964.2649 2087.764 1963.3508 2088.1375 1962.2258 2088.1397 C
+1961.7556 2088.1397 1959.0838 2086.9905 1954.2102 2084.6944 C
+1949.3806 2082.396 1944.4368 2080.6624 1939.3743 2079.4913 C
+1939.2798 2079.3023 1939.2337 2079.0914 1939.2337 2078.8584 C
+1939.2337 2078.6695 1939.2337 2078.3663 1939.2337 2077.9444 C
+1939.2337 2076.8248 1939.5456 2075.8974 1940.1695 2075.1644 C
+1935.1224 2075.1709 L
+1935.0507 2075.5803 1935.0149 2076.012 1935.0149 2076.4678 C
+1935.0149 2076.8414 1935.0369 2077.2391 1935.0852 2077.6631 C
+1935.1775 2078.085 1935.294 2078.5992 1935.4368 2079.21 C
+1934.7337 2079.21 L
+1931.9673 2079.21 1929.7876 2080.0296 1928.1946 2081.6709 C
+1926.5994 2083.3101 1925.804 2085.514 1925.804 2088.2803 C
+1925.804 2088.9834 L
+1924.3032 2088.6077 1922.9673 2088.3265 1921.7962 2088.1397 C
+1920.6712 2087.9507 1919.6626 2087.8584 1918.7727 2087.8584 C
+1916.8501 2087.8584 1914.9517 2088.232 1913.0774 2088.9834 C
+1911.2493 2089.7789 1909.2102 2091.0906 1906.9602 2092.9209 C
+1906.8196 2094.6084 L
+1909.1619 2093.7647 1911.2713 2093.1077 1913.1477 2092.6397 C
+1915.022 2092.2178 1916.7556 2092.0069 1918.3508 2092.0069 C
+1920.6931 2092.0069 1922.9431 2092.521 1925.1008 2093.5538 C
+1927.3025 2094.5843 1929.5986 2096.2476 1931.9915 2098.5459 C
+1925.804 2107.7569 L
+1927.0696 2109.4444 L
+1928.4275 2108.3655 1930.2556 2106.7945 1932.554 2104.7334 C
+1938.2251 2099.6226 1942.9361 2097.0694 1946.6868 2097.0694 C
+1948.5149 2097.0694 1950.1782 2097.5132 1951.679 2098.4053 C
+1953.2258 2099.2952 1953.9993 2100.1851 1953.9993 2101.0772 C
+1953.9993 2101.6397 1952.9446 2103.1866 1950.8352 2105.7178 C
+1948.772 2108.2491 1946.1946 2111.0374 1943.1008 2114.085 C
+1939.4446 2117.6006 1936.7244 2119.8023 1934.9446 2120.6944 C
+1933.2088 2121.6304 1931.3103 2122.0984 1929.2493 2122.1006 C
+1925.3579 2122.1006 1920.3657 2120.0374 1914.2727 2115.9131 C
+1913.5696 2115.4913 1913.0532 2115.1617 1912.7258 2114.9288 C
+1909.6321 2112.8194 1907.1228 2111.4131 1905.2024 2110.71 C
+1903.2798 2110.053 1901.2166 2109.7256 1899.0149 2109.7256 C
+1898.0305 2109.7256 L
+1898.0305 2078.6475 L
+1899.8587 2078.6475 L
+1903.4329 2078.6475 1907.0952 2077.4884 1910.8456 2075.1742 C
+1893.1087 2075.1709 L
+1893.1087 2115.7725 L
+1883.1946 2115.6319 L
+1884.4125 2075.171 L
+1869.9055 2075.1709 L
+h
+1957.9368 2101.0772 m
+1957.3259 2098.5459 1956.0603 2096.6695 1954.1399 2095.4522 C
+1952.2634 2094.2327 1949.6399 2093.6241 1946.2649 2093.6241 C
+1945.1861 2093.6241 1943.615 2093.9273 1941.554 2094.5381 C
+1939.5369 2095.1929 1938.0383 2095.5203 1937.054 2095.5225 C
+1935.3665 2095.5225 1933.679 2094.8194 1931.9915 2093.4131 C
+1930.3501 2092.0069 1929.5305 2090.5765 1929.5305 2089.1241 C
+1929.5305 2087.107 1930.0447 2085.5601 1931.0774 2084.4834 C
+1932.1079 2083.4507 1933.6065 2082.9366 1935.5774 2082.9366 C
+1937.5462 2082.9366 1940.1477 2083.4046 1943.3821 2084.3428 C
+1946.6626 2085.3272 1949.9673 2086.5928 1953.2962 2088.1397 C
+1956.3416 2089.5459 1958.5674 2090.8819 1959.9758 2092.1475 C
+1961.3821 2093.4131 1962.0852 2094.6788 1962.0852 2095.9444 C
+1962.0852 2096.8343 1961.7556 2097.678 1961.1008 2098.4756 C
+1960.4439 2099.3194 1959.3892 2100.1851 1957.9368 2101.0772 C
+h
+1943.3821 2119.71 m
+1946.054 2117.1788 1948.3501 2114.8584 1950.2727 2112.7491 C
+1952.2415 2110.6397 1954.0213 2108.5303 1955.6165 2106.4209 C
+1958.5696 2106.1397 1961.2876 2105.9288 1963.7727 2105.7881 C
+1966.304 2105.6475 1968.6243 2105.5772 1970.7337 2105.5772 C
+1980.7642 2105.5772 1987.7471 2106.021 1991.6868 2106.9131 C
+1995.6704 2107.803 1997.6611 2109.3719 1997.6633 2111.6241 C
+1997.6633 2114.4366 1994.2883 2116.5459 1987.5383 2117.9522 C
+1980.8345 2119.4046 1970.8259 2120.1297 1957.5149 2120.1319 C
+1955.4055 2120.1319 1953.1555 2120.0835 1950.7649 2119.9913 C
+1948.4204 2119.9429 1945.9595 2119.8506 1943.3821 2119.71 C
+true setoverprint
+f
+false setoverprint
+n
+vmr
+vmr
+end
+%%Trailer
diff --git a/docs/docbook/xslt/figures/tip.pdf b/docs/docbook/xslt/figures/tip.pdf
new file mode 100644
index 0000000000..54f5dedb5d
--- /dev/null
+++ b/docs/docbook/xslt/figures/tip.pdf
Binary files differ
diff --git a/docs/docbook/xslt/figures/warning.eps b/docs/docbook/xslt/figures/warning.eps
new file mode 100644
index 0000000000..0c10b371b1
--- /dev/null
+++ b/docs/docbook/xslt/figures/warning.eps
@@ -0,0 +1 @@
+%!PS-Adobe-2.0 EPSF-1.2 %%Title: Untitled-3 %%Creator: FreeHand 9.0 %%CreationDate: 2002/12/05 8:20 PM %%BoundingBox: 0 0 29 29 %%FHPathName:Untitled:FreeHand 9:English:Untitled-3 %ALDOriginalFile:Untitled:FreeHand 9:English:Untitled-3 %ALDBoundingBox: -2 -2 29 29 %%FHPageNum:1 %%DocumentSuppliedResources: procset Altsys_header 4 0 %%ColorUsage: Color %%DocumentProcessColors: Black %%EndComments %%BeginResource: procset Altsys_header 4 0 userdict begin /AltsysDict 300 dict def end AltsysDict begin /bdf{bind def}bind def /xdf{exch def}bdf /defed{where{pop true}{false}ifelse}bdf /ndf{1 index where{pop pop pop}{dup xcheck{bind}if def}ifelse}bdf /d{setdash}bdf /h{closepath}bdf /H{}bdf /J{setlinecap}bdf /j{setlinejoin}bdf /M{setmiterlimit}bdf /n{newpath}bdf /N{newpath}bdf /q{gsave}bdf /Q{grestore}bdf /w{setlinewidth}bdf /Xic{matrix invertmatrix concat}bdf /Xq{matrix currentmatrix mark}bdf /XQ{cleartomark setmatrix}bdf /sepdef{ dup where not { AltsysSepDict } if 3 1 roll exch put }bdf /st{settransfer}bdf /colorimage defed /_rci xdf /cntr 0 def /readbinarystring{ /cntr 0 def 2 copy readstring { { dup (\034) search { length exch pop exch dup length 0 ne { dup dup 0 get 32 sub 0 exch put /cntr cntr 1 add def } { pop 1 string dup 0 6 index read pop 32 sub put }ifelse 3 copy putinterval pop 1 add 1 index length 1 sub 1 index sub dup 0 le {pop pop exit}if getinterval } { pop exit } ifelse } loop }if cntr 0 gt { pop 2 copy dup length cntr sub cntr getinterval readbinarystring } if pop exch pop } bdf /_NXLevel2 defed { _NXLevel2 not { /colorimage where { userdict eq { /_rci false def } if } if } if } if /md defed{ md type /dicttype eq { /colorimage where { md eq { /_rci false def }if }if /settransfer where { md eq { /st systemdict /settransfer get def }if }if }if }if /setstrokeadjust defed { true setstrokeadjust /C{curveto}bdf /L{lineto}bdf /m{moveto}bdf } { /dr{transform .25 sub round .25 add exch .25 sub round .25 add exch itransform}bdf /C{dr curveto}bdf /L{dr lineto}bdf /m{dr moveto}bdf /setstrokeadjust{pop}bdf }ifelse /privrectpath { 4 -2 roll m dtransform round exch round exch idtransform 2 copy 0 lt exch 0 lt xor {dup 0 exch rlineto exch 0 rlineto neg 0 exch rlineto} {exch dup 0 rlineto exch 0 exch rlineto neg 0 rlineto} ifelse closepath }bdf /rectclip{newpath privrectpath clip newpath}def /rectfill{gsave newpath privrectpath fill grestore}def /rectstroke{gsave newpath privrectpath stroke grestore}def /_fonthacksave false def /currentpacking defed { /_bfh {/_fonthacksave currentpacking def false setpacking} bdf /_efh {_fonthacksave setpacking} bdf } { /_bfh {} bdf /_efh {} bdf }ifelse /packedarray{array astore readonly}ndf /` { false setoverprint /-save0- save def 5 index concat pop storerect left bottom width height rectclip pop /MMdict_count countdictstack def /MMop_count count 1 sub def userdict begin /showpage {} def 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin 10 setmiterlimit [] 0 setdash newpath } bdf /currentpacking defed{true setpacking}if /min{2 copy gt{exch}if pop}bdf /max{2 copy lt{exch}if pop}bdf /xformfont { currentfont exch makefont setfont } bdf /fhnumcolors 1 statusdict begin /processcolors defed { pop processcolors } { /deviceinfo defed { deviceinfo /Colors known { pop deviceinfo /Colors get } if } if } ifelse end def /printerRes gsave matrix defaultmatrix setmatrix 72 72 dtransform abs exch abs max grestore def /graycalcs [ {Angle Frequency} {GrayAngle GrayFrequency} {0 Width Height matrix defaultmatrix idtransform dup mul exch dup mul add sqrt 72 exch div} {0 GrayWidth GrayHeight matrix defaultmatrix idtransform dup mul exch dup mul add sqrt 72 exch div} ] def /calcgraysteps { forcemaxsteps { maxsteps } { /currenthalftone defed {currenthalftone /dicttype eq}{false}ifelse { currenthalftone begin HalftoneType 4 le {graycalcs HalftoneType 1 sub get exec} { HalftoneType 5 eq { Default begin {graycalcs HalftoneType 1 sub get exec} end } {0 60} ifelse } ifelse end } { currentscreen pop exch } ifelse printerRes 300 max exch div exch 2 copy sin mul round dup mul 3 1 roll cos mul round dup mul add 1 add dup maxsteps gt {pop maxsteps} if dup minsteps lt {pop minsteps} if } ifelse } bdf /nextrelease defed { /languagelevel defed not { /framebuffer defed { 0 40 string framebuffer 9 1 roll 8 {pop} repeat dup 516 eq exch 520 eq or { /fhnumcolors 3 def /currentscreen {60 0 {pop pop 1}}bdf /calcgraysteps {maxsteps} bdf }if }if }if }if fhnumcolors 1 ne { /calcgraysteps {maxsteps} bdf } if /currentpagedevice defed { currentpagedevice /PreRenderingEnhance known { currentpagedevice /PreRenderingEnhance get { /calcgraysteps { forcemaxsteps {maxsteps} {256 maxsteps min} ifelse } def } if } if } if /gradfrequency 144 def printerRes 1000 lt { /gradfrequency 72 def } if /adjnumsteps { dup dtransform abs exch abs max printerRes div gradfrequency mul round 5 max min }bdf /goodsep { spots exch get 4 get dup sepname eq exch (_vc_Registration) eq or }bdf /BeginGradation defed {/bb{BeginGradation}bdf} {/bb{}bdf} ifelse /EndGradation defed {/eb{EndGradation}bdf} {/eb{}bdf} ifelse /bottom -0 def /delta -0 def /frac -0 def /height -0 def /left -0 def /numsteps1 -0 def /radius -0 def /right -0 def /top -0 def /width -0 def /xt -0 def /yt -0 def /df currentflat def /tempstr 1 string def /clipflatness currentflat def /inverted? 0 currenttransfer exec .5 ge def /tc1 [0 0 0 1] def /tc2 [0 0 0 1] def /storerect{/top xdf /right xdf /bottom xdf /left xdf /width right left sub def /height top bottom sub def}bdf /concatprocs{ systemdict /packedarray known {dup type /packedarraytype eq 2 index type /packedarraytype eq or}{false}ifelse { /proc2 exch cvlit def /proc1 exch cvlit def proc1 aload pop proc2 aload pop proc1 length proc2 length add packedarray cvx } { /proc2 exch cvlit def /proc1 exch cvlit def /newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx }ifelse }bdf /i{dup 0 eq {pop df dup} {dup} ifelse /clipflatness xdf setflat }bdf version cvr 38.0 le {/setrgbcolor{ currenttransfer exec 3 1 roll currenttransfer exec 3 1 roll currenttransfer exec 3 1 roll setrgbcolor}bdf}if /vms {/vmsv save def} bdf /vmr {vmsv restore} bdf /vmrs{vmsv restore /vmsv save def}bdf /eomode{ {/filler /eofill load def /clipper /eoclip load def} {/filler /fill load def /clipper /clip load def} ifelse }bdf /normtaper{}bdf /logtaper{9 mul 1 add log}bdf /CD{ /NF exch def { exch dup /FID ne 1 index/UniqueID ne and {exch NF 3 1 roll put} {pop pop} ifelse }forall NF }bdf /MN{ 1 index length /Len exch def dup length Len add string dup Len 4 -1 roll putinterval dup 0 4 -1 roll putinterval }bdf /RC{4 -1 roll /ourvec xdf 256 string cvs(|______)anchorsearch {1 index MN cvn/NewN exch def cvn findfont dup maxlength dict CD dup/FontName NewN put dup /Encoding ourvec put NewN exch definefont pop}{pop}ifelse}bdf /RF{ dup FontDirectory exch known {pop 3 -1 roll pop} {RC} ifelse }bdf /FF{dup 256 string cvs(|______)exch MN cvn dup FontDirectory exch known {exch pop findfont 3 -1 roll pop} {pop dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll {3 -1 roll dup 4 -2 roll put}forall put definefont} ifelse}bdf /RCJ{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFJ exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFJ{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCJ} ifelse }bdf /hasfont { /resourcestatus where { pop /Font resourcestatus { pop pop true } { false } ifelse } { dup FontDirectory exch known {pop true} { 256 string cvs (fonts/) exch MN status {pop pop pop pop true} {false} ifelse } ifelse } ifelse }bdf /FDFJ { dup hasfont not { pop /Ryumin-Light-83pv-RKSJ-H hasfont { /Ryumin-Light-83pv-RKSJ-H } { /Courier } ifelse } if }bdf /FFJ{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFJ dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /GS { dup hasfont { findfont exch makesetfont exch pop ts } { pop pop pop ts } ifelse } bdf /RCK{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFK exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFK{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCK} ifelse }bdf /hasfont { /resourcestatus where { pop /Font resourcestatus { pop pop true } { false } ifelse } { dup FontDirectory exch known {pop true} { 256 string cvs (fonts/) exch MN status {pop pop pop pop true} {false} ifelse } ifelse } ifelse }bdf /FDFK { dup hasfont not { pop /JCsm hasfont { /JCsm } { /Courier } ifelse } if }bdf /FFK{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFK dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /RCTC{4 -1 roll /ourvec xdf 256 string cvs (|______) anchorsearch {pop cvn dup FDFTC exch 1 index eq { _bfh findfont _efh dup maxlength dict CD dup /FontName 3 index put dup /Encoding ourvec put 1 index exch definefont pop } {exch pop} ifelse } {pop} ifelse }bdf /RFTC{ dup FontDirectory exch known {pop 3 -1 roll pop} {RCTC} ifelse }bdf /FDFTC { dup hasfont not { pop /DFMing-Lt-HK-BF hasfont { /DFMing-Lt-HK-BF } { /Courier } ifelse } if }bdf /FFTC{ _bfh dup 256 string cvs (|______)exch MN cvn dup FontDirectory exch known { exch pop findfont 3 -1 roll pop } { pop FDFTC dup findfont dup maxlength dict CD dup dup /Encoding exch /Encoding get 256 array copy 7 -1 roll { 3 -1 roll dup 4 -2 roll put }forall put definefont } ifelse _efh }bdf /fps{ currentflat exch dup 0 le{pop 1}if { dup setflat 3 index stopped {1.3 mul dup 3 index gt{pop setflat pop pop stop}if} {exit} ifelse }loop pop setflat pop pop }bdf /fp{100 currentflat fps}bdf /clipper{clip}bdf /W{/clipper load 100 clipflatness dup setflat fps}bdf userdict begin /BDFontDict 29 dict def end BDFontDict begin /bu{}def /bn{}def /setTxMode{av 70 ge{pop}if pop}def /gm{m}def /show{pop}def /gr{pop}def /fnt{pop pop pop}def /fs{pop}def /fz{pop}def /lin{pop pop}def /:M {pop pop} def /sf {pop} def /S {pop} def /@b {pop pop pop pop pop pop pop pop} def /_bdsave /save load def /_bdrestore /restore load def /save { dup /fontsave eq {null} {_bdsave} ifelse } def /restore { dup null eq { pop } { _bdrestore } ifelse } def /fontsave null def end /MacVec 256 array def MacVec 0 /Helvetica findfont /Encoding get 0 128 getinterval putinterval MacVec 127 /DEL put MacVec 16#27 /quotesingle put MacVec 16#60 /grave put /NUL/SOH/STX/ETX/EOT/ENQ/ACK/BEL/BS/HT/LF/VT/FF/CR/SO/SI /DLE/DC1/DC2/DC3/DC4/NAK/SYN/ETB/CAN/EM/SUB/ESC/FS/GS/RS/US MacVec 0 32 getinterval astore pop /Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis/Udieresis/aacute /agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute/egrave /ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde/oacute /ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex/udieresis /dagger/degree/cent/sterling/section/bullet/paragraph/germandbls /registered/copyright/trademark/acute/dieresis/notequal/AE/Oslash /infinity/plusminus/lessequal/greaterequal/yen/mu/partialdiff/summation /product/pi/integral/ordfeminine/ordmasculine/Omega/ae/oslash /questiondown/exclamdown/logicalnot/radical/florin/approxequal/Delta/guillemotleft /guillemotright/ellipsis/nbspace/Agrave/Atilde/Otilde/OE/oe /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide/lozenge /ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright/fi/fl /daggerdbl/periodcentered/quotesinglbase/quotedblbase /perthousand/Acircumflex/Ecircumflex/Aacute /Edieresis/Egrave/Iacute/Icircumflex/Idieresis/Igrave/Oacute/Ocircumflex /apple/Ograve/Uacute/Ucircumflex/Ugrave/dotlessi/circumflex/tilde /macron/breve/dotaccent/ring/cedilla/hungarumlaut/ogonek/caron MacVec 128 128 getinterval astore pop /findheaderfont { /Helvetica findfont } def end %. AltsysDict %%EndResource %%EndProlog %%BeginSetup AltsysDict begin _bfh _efh end %. AltsysDict %%EndSetup AltsysDict begin /onlyk4{false}ndf /ccmyk{dup 5 -1 roll sub 0 max exch}ndf /cmyk2gray{ 4 -1 roll 0.3 mul 4 -1 roll 0.59 mul 4 -1 roll 0.11 mul add add add 1 min neg 1 add }bdf /setcmykcolor{1 exch sub ccmyk ccmyk ccmyk pop setrgbcolor}ndf /maxcolor { max max max } ndf /maxspot { pop } ndf /setcmykcoloroverprint{4{dup -1 eq{pop 0}if 4 1 roll}repeat setcmykcolor}ndf /findcmykcustomcolor{5 packedarray}ndf /setcustomcolor{exch aload pop pop 4{4 index mul 4 1 roll}repeat setcmykcolor pop}ndf /setseparationgray{setgray}ndf /setoverprint{pop}ndf /currentoverprint false ndf /cmykbufs2gray{ 0 1 2 index length 1 sub { 4 index 1 index get 0.3 mul 4 index 2 index get 0.59 mul 4 index 3 index get 0.11 mul 4 index 4 index get add add add cvi 255 min 255 exch sub 2 index 3 1 roll put }for 4 1 roll pop pop pop }bdf /colorimage{ pop pop [ 5 -1 roll/exec cvx 6 -1 roll/exec cvx 7 -1 roll/exec cvx 8 -1 roll/exec cvx /cmykbufs2gray cvx ]cvx image } %. version 47.1 on Linotronic of Postscript defines colorimage incorrectly (rgb model only) version cvr 47.1 le statusdict /product get (Lino) anchorsearch{pop pop true}{pop false}ifelse and{userdict begin bdf end}{ndf}ifelse fhnumcolors 1 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf ic im iy ik cmyk2gray /xt xdf currenttransfer {dup 1.0 exch sub xt mul add}concatprocs st image } ifelse }ndf fhnumcolors 1 ne {yt restore} if fhnumcolors 3 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf 1.0 dup ic ik add min sub 1.0 dup im ik add min sub 1.0 dup iy ik add min sub /ic xdf /iy xdf /im xdf currentcolortransfer 4 1 roll {dup 1.0 exch sub ic mul add}concatprocs 4 1 roll {dup 1.0 exch sub iy mul add}concatprocs 4 1 roll {dup 1.0 exch sub im mul add}concatprocs 4 1 roll setcolortransfer {/dummy xdf dummy}concatprocs{dummy}{dummy}true 3 colorimage } ifelse }ndf fhnumcolors 3 ne {yt restore} if fhnumcolors 4 ne {/yt save def} if /customcolorimage{ aload pop (_vc_Registration) eq { pop pop pop pop separationimage } { /ik xdf /iy xdf /im xdf /ic xdf currentcolortransfer {1.0 exch sub ik mul ik sub 1 add}concatprocs 4 1 roll {1.0 exch sub iy mul iy sub 1 add}concatprocs 4 1 roll {1.0 exch sub im mul im sub 1 add}concatprocs 4 1 roll {1.0 exch sub ic mul ic sub 1 add}concatprocs 4 1 roll setcolortransfer {/dummy xdf dummy}concatprocs{dummy}{dummy}{dummy} true 4 colorimage } ifelse }ndf fhnumcolors 4 ne {yt restore} if /separationimage{image}ndf /spotascmyk false ndf /newcmykcustomcolor{6 packedarray}ndf /inkoverprint false ndf /setinkoverprint{pop}ndf /setspotcolor { spots exch get dup 4 get (_vc_Registration) eq {pop 1 exch sub setseparationgray} {0 5 getinterval exch setcustomcolor} ifelse }ndf /currentcolortransfer{currenttransfer dup dup dup}ndf /setcolortransfer{st pop pop pop}ndf /fas{}ndf /sas{}ndf /fhsetspreadsize{pop}ndf /filler{fill}bdf /F{gsave {filler}fp grestore}bdf /f{closepath F}bdf /S{gsave {stroke}fp grestore}bdf /s{closepath S}bdf userdict /islevel2 systemdict /languagelevel known dup { pop systemdict /languagelevel get 2 ge } if put islevel2 not { /currentcmykcolor { 0 0 0 1 currentgray sub } ndf } if /tc { gsave setcmykcolor currentcmykcolor grestore } bind def /testCMYKColorThrough { tc add add add 0 ne } bind def /fhiscomposite where not { userdict /fhiscomposite islevel2 { gsave 1 1 1 1 setcmykcolor currentcmykcolor grestore add add add 4 eq } { 1 0 0 0 testCMYKColorThrough 0 1 0 0 testCMYKColorThrough 0 0 1 0 testCMYKColorThrough 0 0 0 1 testCMYKColorThrough and and and } ifelse put } { pop } ifelse /bc4 [0 0 0 0] def /_lfp4 { 1 pop /yt xdf /xt xdf /ang xdf storerect /taperfcn xdf /k2 xdf /y2 xdf /m2 xdf /c2 xdf /k1 xdf /y1 xdf /m1 xdf /c1 xdf c1 c2 sub abs m1 m2 sub abs y1 y2 sub abs k1 k2 sub abs maxcolor calcgraysteps mul abs round height abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf currentflat mark currentflat clipflatness /delta top bottom sub numsteps1 1 add div def /right right left sub def /botsv top delta sub def { { W xt yt translate ang rotate xt neg yt neg translate dup setflat /bottom botsv def 0 1 numsteps1 { numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse taperfcn /frac xdf bc4 0 c2 c1 sub frac mul c1 add put bc4 1 m2 m1 sub frac mul m1 add put bc4 2 y2 y1 sub frac mul y1 add put bc4 3 k2 k1 sub frac mul k1 add put bc4 vc 1 index setflat { mark {newpath left bottom right delta rectfill}stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop /bottom bottom delta sub def }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /bcs [0 0] def /_lfs4 { /yt xdf /xt xdf /ang xdf storerect /taperfcn xdf /tint2 xdf /tint1 xdf bcs exch 1 exch put tint1 tint2 sub abs bcs 1 get maxspot calcgraysteps mul abs round height abs adjnumsteps dup 2 lt {pop 2} if 1 sub /numsteps1 xdf currentflat mark currentflat clipflatness /delta top bottom sub numsteps1 1 add div def /right right left sub def /botsv top delta sub def { { W xt yt translate ang rotate xt neg yt neg translate dup setflat /bottom botsv def 0 1 numsteps1 { numsteps1 div taperfcn /frac xdf bcs 0 1.0 tint2 tint1 sub frac mul tint1 add sub put bcs vc 1 index setflat { mark {newpath left bottom right delta rectfill}stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop /bottom bottom delta sub def }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /_rfs6 { /tint2 xdf /tint1 xdf bcs exch 1 exch put /inrad xdf /radius xdf /yt xdf /xt xdf tint1 tint2 sub abs bcs 1 get maxspot calcgraysteps mul abs round radius inrad sub abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse 2 div /halfstep xdf currentflat mark currentflat clipflatness { { dup setflat W 0 1 numsteps1 { dup /radindex xdf numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse /frac xdf bcs 0 tint2 tint1 sub frac mul tint1 add put bcs vc 1 index setflat { newpath mark xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 { arc radindex numsteps1 ne inrad 0 gt or { xt yt numsteps1 0 eq { inrad } { radindex 1 add numsteps1 div 1 exch sub radius inrad sub mul halfstep add inrad add }ifelse dup xt add yt moveto 360 0 arcn } if fill }stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /_rfp6 { 1 pop /k2 xdf /y2 xdf /m2 xdf /c2 xdf /k1 xdf /y1 xdf /m1 xdf /c1 xdf /inrad xdf /radius xdf /yt xdf /xt xdf c1 c2 sub abs m1 m2 sub abs y1 y2 sub abs k1 k2 sub abs maxcolor calcgraysteps mul abs round radius inrad sub abs adjnumsteps dup 1 lt {pop 1} if 1 sub /numsteps1 xdf radius inrad sub numsteps1 dup 0 eq {pop} {div} ifelse 2 div /halfstep xdf currentflat mark currentflat clipflatness { { dup setflat W 0 1 numsteps1 { dup /radindex xdf numsteps1 dup 0 eq {pop pop 0.5} {div} ifelse /frac xdf bc4 0 c2 c1 sub frac mul c1 add put bc4 1 m2 m1 sub frac mul m1 add put bc4 2 y2 y1 sub frac mul y1 add put bc4 3 k2 k1 sub frac mul k1 add put bc4 vc 1 index setflat { newpath mark xt yt radius inrad sub 1 frac sub mul halfstep add inrad add 0 360 { arc radindex numsteps1 ne inrad 0 gt or { xt yt numsteps1 0 eq { inrad } { radindex 1 add numsteps1 div 1 exch sub radius inrad sub mul halfstep add inrad add }ifelse dup xt add yt moveto 360 0 arcn } if fill }stopped {cleartomark exch 1.3 mul dup setflat exch 2 copy gt{stop}if} {cleartomark exit}ifelse }loop }for } gsave stopped grestore {exch pop 2 index exch 1.3 mul dup 100 gt{cleartomark setflat stop}if} {exit}ifelse }loop cleartomark setflat }bdf /lfp4{_lfp4}ndf /lfs4{_lfs4}ndf /rfs6{_rfs6}ndf /rfp6{_rfp6}ndf /cvc [0 0 0 1] def /vc{ AltsysDict /cvc 2 index put aload length dup 4 eq {pop dup -1 eq{pop setrgbcolor}{setcmykcolor}ifelse} {6 eq {sethexcolor} {setspotcolor} ifelse } ifelse }bdf 0 setseparationgray /imgr {1692.47 1570.59 1723.65 1601.77 } def /bleed 0 def /clpr {1692.47 1570.59 1723.65 1601.77 } def /xs 1 def /ys 1 def /botx 0 def /overlap 0 def /wdist 18 def 0 2 mul fhsetspreadsize 0 0 ne {/df 0 def /clipflatness 0 def} if /maxsteps 256 def /forcemaxsteps false def /minsteps 0 def userdict begin /AGDOrigMtx matrix currentmatrix def end vms -1694 -1572 translate /currentpacking defed{false setpacking}if /spots[ 1 0 0 0 (Process Cyan) false newcmykcustomcolor 0 1 0 0 (Process Magenta) false newcmykcustomcolor 0 0 1 0 (Process Yellow) false newcmykcustomcolor 0 0 0 1 (Process Black) false newcmykcustomcolor ]def n [] 0 d 3.863708 M 1 w 0 j 0 J false setoverprint 0 i false eomode [0 0 0 1]vc vms q [1 0 0 1 -249.981674 -586.867554] concat vms 1946.9506 2177.5114 m 1954.4907 2185.0516 L 1956.7047 2187.2656 1960.2943 2187.2656 1962.5083 2185.0516 C 1970.0485 2177.5114 L 1972.2625 2175.2974 1972.2625 2171.7078 1970.0485 2169.4938 C 1962.5083 2161.9537 L 1960.2943 2159.7396 1956.7047 2159.7396 1954.4907 2161.9537 C 1946.9506 2169.4938 L 1944.7365 2171.7078 1944.7365 2175.2974 1946.9506 2177.5114 C s n true eomode 1958.5469 2181.0039 m 1959.2148 2181.0039 1959.7012 2180.9296 1960.0059 2180.7813 C 1960.3142 2180.6326 1960.4684 2180.363 1960.4688 2179.9727 C 1960.4688 2179.7383 1960.3398 2178.8026 1960.082 2177.166 C 1959.0742 2170.4219 L 1958.9373 2170.3241 1958.7615 2170.2754 1958.5469 2170.2754 C 1958.3319 2170.2754 1958.1561 2170.3241 1958.0195 2170.4219 C 1957.0117 2177.166 L 1956.7539 2178.8026 1956.625 2179.7379 1956.625 2179.9727 C 1956.625 2180.363 1956.7792 2180.6326 1957.0879 2180.7813 C 1957.4003 2180.9296 1957.8866 2181.0035 1958.5469 2181.0039 C h 1958.5469 2165.166 m 1958.0389 2165.166 1957.5878 2165.3499 1957.1934 2165.7168 C 1956.7986 2166.0837 1956.6016 2166.5485 1956.6016 2167.1113 C 1956.6016 2167.6698 1956.7891 2168.1404 1957.1641 2168.5234 C 1957.5427 2168.9102 1958.0038 2169.1035 1958.5469 2169.1035 C 1959.1094 2169.1035 1959.5741 2168.9043 1959.9414 2168.5059 C 1960.3083 2168.1074 1960.4918 2167.6423 1960.4922 2167.1113 C 1960.4922 2166.748 1960.4102 2166.4177 1960.2461 2166.1211 C 1960.082 2165.8241 1959.8513 2165.5916 1959.5547 2165.4238 C 1959.2577 2165.2521 1958.9219 2165.1664 1958.5469 2165.166 C true setoverprint f false setoverprint n vmr Q false eomode vmr vmr end %%Trailer \ No newline at end of file
diff --git a/docs/docbook/xslt/figures/warning.pdf b/docs/docbook/xslt/figures/warning.pdf
new file mode 100644
index 0000000000..a0afabfa23
--- /dev/null
+++ b/docs/docbook/xslt/figures/warning.pdf
Binary files differ
diff --git a/docs/docbook/xslt/generate-attributions.xsl b/docs/docbook/xslt/generate-attributions.xsl
new file mode 100644
index 0000000000..29683b1921
--- /dev/null
+++ b/docs/docbook/xslt/generate-attributions.xsl
@@ -0,0 +1,70 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common"
+ xmlns:samba="http://samba.org/common"
+ version="1.1"
+ extension-element-prefixes="exsl">
+
+<xsl:output method="xml" omit-xml-declaration="yes"/>
+
+<!-- Remove all character data -->
+<xsl:template match="@*|node()">
+ <xsl:apply-templates select="@*|node()"/>
+</xsl:template>
+
+<xsl:template match="chapter">
+ <xsl:choose>
+ <xsl:when test="chapterinfo/author != ''">
+ <xsl:element name="para">
+ <xsl:element name="link">
+ <xsl:attribute name="linkend"><xsl:value-of select="@id"/></xsl:attribute>
+ <xsl:value-of select="title"/>
+ </xsl:element>
+ <xsl:element name="itemizedlist">
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="author">
+ <xsl:element name="listitem">
+ <xsl:element name="para">
+ <xsl:value-of select="firstname"/>
+ <xsl:if test="othername != ''">
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="othername"/>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+ <xsl:text> </xsl:text><xsl:value-of select="surname"/>
+ <xsl:choose>
+ <xsl:when test="affiliation/address/email != ''">
+ <xsl:text> &lt;</xsl:text>
+ <xsl:element name="ulink">
+ <xsl:attribute name="noescape">
+ <xsl:text>1</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="url">
+ <xsl:text>mailto:</xsl:text>
+ <xsl:value-of select="affiliation/address/email"/>
+ </xsl:attribute>
+ <xsl:value-of select="affiliation/address/email"/>
+ </xsl:element>
+ <xsl:text>&gt;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:choose>
+ <xsl:when test="contrib != ''">
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="contrib"/>
+ <xsl:text>) </xsl:text>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:element>
+ <xsl:text>
+ </xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/docbook/xslt/html-chunk.xsl b/docs/docbook/xslt/html-chunk.xsl
new file mode 100644
index 0000000000..00b310610a
--- /dev/null
+++ b/docs/docbook/xslt/html-chunk.xsl
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This file is generated from param.xweb; do not edit this file! -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl"/>
+<xsl:import href="html-common.xsl"/>
+<xsl:param name="chunk.first.sections" select="1"/>
+<xsl:param name="chunk.quietly" select="0"/>
+<xsl:param name="chunk.section.depth" select="0"/>
+<xsl:param name="chunk.toc" select="''"/>
+<xsl:param name="chunk.tocs.and.lots" select="0"/>
+
+</xsl:stylesheet>
diff --git a/docs/docbook/xslt/html-common.xsl b/docs/docbook/xslt/html-common.xsl
new file mode 100644
index 0000000000..eeb7d5d6b4
--- /dev/null
+++ b/docs/docbook/xslt/html-common.xsl
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This file is generated from param.xweb; do not edit this file! -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+ <xsl:template match="ulink">
+ <xsl:element name="ulink">
+ <xsl:attribute name="url">
+ <xsl:value-of select="@url"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test=". != ''">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@url"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+</xsl:template>
+
+
+
+<xsl:template match="link">
+ <xsl:element name="link">
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="@linkend"/>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test=". != ''">
+ <xsl:value-of select="."/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="@linkend"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+</xsl:template>
+
+<xsl:param name="base.dir" select="'../htmldocs/'"/>
+<xsl:param name="bridgehead.in.toc" select="1"/>
+<xsl:param name="citerefentry.link" select="'1'"/>
+<xsl:param name="css.decoration" select="1"/>
+<xsl:param name="html.stylesheet" select="'samba.css'"/>
+<xsl:param name="html.stylesheet.type">text/css</xsl:param>
+<xsl:param name="use.extensions" select="'0'"/>
+<xsl:param name="use.id.as.filename" select="'1'"/>
+<xsl:param name="use.local.olink.style" select="1"/>
+<xsl:param name="use.role.as.xrefstyle" select="1"/>
+<xsl:param name="use.role.for.mediaobject" select="1"/>
+
+<xsl:template name="generate.citerefentry.link">
+ <xsl:value-of select="refentrytitle"/><xsl:text>.</xsl:text><xsl:value-of select="manvolnum"/><xsl:text>.html</xsl:text>
+</xsl:template>
+
+<xsl:template match="author">
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/docbook/xslt/html.xsl b/docs/docbook/xslt/html.xsl
new file mode 100644
index 0000000000..1a5fe1bc65
--- /dev/null
+++ b/docs/docbook/xslt/html.xsl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This file is generated from param.xweb; do not edit this file! -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/>
+<xsl:import href="html-common.xsl"/>
+
+
+</xsl:stylesheet>
diff --git a/docs/docbook/xslt/html/samba.css b/docs/docbook/xslt/html/samba.css
new file mode 100644
index 0000000000..3d926e8e74
--- /dev/null
+++ b/docs/docbook/xslt/html/samba.css
@@ -0,0 +1,80 @@
+BODY {
+ font-family: helvetica, arial, lucida sans, sans-serif;
+ background-color: white;
+}
+
+H1, H2, H3 {
+ color: blue;
+ font-size: 120%;
+ padding: 2px;
+ margin-top: 0px;
+}
+
+H1 {
+ background-color: #EEEEFF;
+ color: blue;
+}
+
+H2 {
+ background-color: #DDDDFF;
+ color: blue;
+}
+
+H3 {
+ background-color: #CCCCFF;
+ color: blue;
+}
+
+H4 {
+ color: blue;
+}
+
+TR.qandadiv TD {
+ padding-top: 1em;
+}
+
+DIV.navhead {
+ font-size: 80%;
+}
+
+A:link {
+ color: #36F;
+}
+
+A:visited {
+ color: #96C;
+}
+
+A:active {
+ color: #F63;
+}
+
+TR.question {
+ color: #33C;
+ font-weight: bold;
+}
+
+TR.question TD {
+ padding-top: 1em;
+}
+
+DIV.variablelist {
+ padding-left: 2em;
+ color: #33C;
+}
+
+P {
+ color: black;
+}
+
+DIV.note, DIV.warning, DIV.caution, DIV.tip, DIV.important {
+ border: dashed 1px;
+ background-color: #EEEEFF;
+ width: 40em;
+}
+
+PRE.programlisting, PRE.screen {
+ border: #630 1px dashed;
+ color: #630;
+}
+
diff --git a/docs/docbook/xslt/latex.xsl b/docs/docbook/xslt/latex.xsl
new file mode 100644
index 0000000000..406a64b646
--- /dev/null
+++ b/docs/docbook/xslt/latex.xsl
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
+<xsl:import href="http://db2latex.sourceforge.net/xsl/docbook.xsl"/>
+
+<xsl:output method="text" encoding="ISO-8859-1" indent="yes"/>
+<xsl:param name="l10n.gentext.default.language">en</xsl:param>
+<xsl:variable name="latex.documentclass">sambadoc</xsl:variable>
+<xsl:variable name="latex.documentclass.common">english,final,titlepage,parskip,<xsl:value-of select="$papersize"/>,<xsl:value-of select="$fontsize"/>pt</xsl:variable>
+<xsl:variable name="latex.documentclass.book"></xsl:variable>
+<xsl:variable name="latex.generate.indexterm">1</xsl:variable>
+<xsl:variable name="latex.hyperref.param.pdftex">hyperfigures,hyperindex,citecolor=blue,urlcolor=blue</xsl:variable>
+<xsl:variable name="latex.document.font">default</xsl:variable>
+<xsl:variable name="latex.admonition.path">xslt/figures</xsl:variable>
+<xsl:variable name="latex.hyphenation.tttricks">1</xsl:variable>
+<xsl:variable name="latex.use.tabularx">1</xsl:variable>
+<xsl:template name="latex.thead.row.entry">
+<xsl:text>{\bfseries </xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:param name="latex.babel.language">english</xsl:param>
+<xsl:param name="ulink.url">1</xsl:param>
+
+<xsl:variable name="latex.book.preamble.post">\fancyhf{}
+\fancyhead[RE]{\slshape \rightmark}
+\fancyhead[LO]{\slshape \leftmark}
+\fancyfoot[R]{\thepage}
+</xsl:variable>
+
+<xsl:template match="//title/filename|//title/command">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:if test="$content != ''">
+ <xsl:value-of select="$content" />
+ </xsl:if>
+</xsl:template>
+
+<xsl:template name="latex.thead.row.entry">
+<xsl:text>{\bfseries </xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/docbook/xslt/latex/sambadoc.cls b/docs/docbook/xslt/latex/sambadoc.cls
new file mode 100644
index 0000000000..fcea11992f
--- /dev/null
+++ b/docs/docbook/xslt/latex/sambadoc.cls
@@ -0,0 +1,129 @@
+%%---------------------------------------------------
+%%-- RC Thesis
+%%---------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{sambadoc}
+
+%%---------------------------------------------------
+%%-- Load the base class and modify current macros.
+%%---------------------------------------------------
+
+\newif\if@usecppsyntax \@usecppsyntaxfalse
+
+\DeclareOption{cpp}{\@usecppsyntaxtrue}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrreprt}}
+\ProcessOptions
+
+\LoadClass{scrreprt}
+
+%%--Set the section number depth.
+\setcounter{secnumdepth}{3}
+\setcounter{tocdepth}{4}
+
+%\setcounter{page}{2}
+
+%%--Create a vertical skip for the distance between the title and
+%%--the first line of text on the prolog pages.
+\newskip\thesisvskip
+\thesisvskip 36pt
+
+%%--Set the margins. %\headheight6pt \headsep12pt
+\usepackage[margin=20pt,head=20pt,headsep=20pt,foot=20pt]{geometry}
+
+%%--Use typehtml for better specification of tables
+\usepackage{typehtml}
+
+%%--Change the marginpar.
+\reversemarginpar
+\let\old@marginpar=\marginpar
+\def\marginpar#1{
+ \old@marginpar{\def\baselinestretch{1}\em\small #1}}
+
+\renewcommand*{\scr@parskip}{%
+ \setlength{\parskip}{\baselineskip}%
+ \addtolength{\parskip}{\z@ \@plus .5\baselineskip}}
+
+\setlength\parindent{0pt}
+
+%%--Parameters that can be set by the user.
+\def\samba@listtables{y}
+\def\samba@listfigures{y}
+
+\newcommand{\notablelist}{\gdef\samba@listtables{n}}
+\newcommand{\nofigurelist}{\gdef\samba@listfigures{n}}
+
+
+%%--Modify behavior of the figure and table environment.
+\def\fps@figure{hbt}
+\def\fnum@figure{{\bf \figurename~\thefigure}}
+\def\fps@table{htb}
+\def\fnum@table{{\bf \tablename~\thetable}}
+
+\def\mathfigure{\thesisfiguretrue\figure}
+\def\endmathfigure{\endfigure\thesisfigurefalse}
+
+
+
+%%-----------------------------------------------
+%%-- Modify the displayed math environments.
+%%-----------------------------------------------
+
+\newif\ifthesisfigure
+\thesisfigurefalse
+
+
+
+%%--------------------------------------------
+%%-- Miscellaneous commands.
+%%--------------------------------------------
+
+%%--Commands to simplify font changing.
+\newcommand{\sfup}{\sffamily\mdseries\upshape}
+\newcommand{\sfsc}{\ttfamily\mdseries\scshape}
+\newcommand{\sfit}{\sffamily\mdseries\itshape}
+\newcommand{\rmup}{\rmfamily\mdseries\upshape}
+\newcommand{\rmbf}{\rmfamily\bfseries\upshape}
+\newcommand{\rmit}{\rmfamily\mdseries\itshape}
+\newcommand{\ttup}{\ttfamily\mdseries\upshape}
+
+
+\endinput
+
+%%--The \tableofcontents.
+\renewcommand\tableofcontents{%
+ \renewcommand{\contentsname}{Table of Contents}
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \oldchapter*{\contentsname
+ \@mkboth{\uppercase{\contentsname}}{\uppercase{\contentsname}}}%
+ \@starttoc{toc}%
+ \if@restonecol\twocolumn\fi}
+
+%%--The \listoffigures command.
+\renewcommand\listoffigures{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \oldchapter*{\listfigurename
+ \@mkboth{\uppercase{\listfigurename}}{\uppercase{\listfigurename}}}%
+ \@starttoc{lof}%
+ \if@restonecol\twocolumn\fi}
+
+%%--The \listoftables command.
+\renewcommand\listoftables{%
+ \if@twocolumn%
+ \@restonecoltrue\onecolumn%
+ \else%
+ \@restonecolfalse%
+ \fi%
+ \oldchapter*{\listtablename%
+ \@mkboth{\uppercase{\listtablename}}{\uppercase{\listtablename}}}%
+ \@starttoc{lot}%
+ \if@restonecol\twocolumn\fi}
+
+\endinput
diff --git a/docs/docbook/xslt/lists.mod.xsl b/docs/docbook/xslt/lists.mod.xsl
new file mode 100644
index 0000000000..49e39d5e7f
--- /dev/null
+++ b/docs/docbook/xslt/lists.mod.xsl
@@ -0,0 +1,29 @@
+<?xml version='1.0'?>
+<!--#############################################################################
+|- #############################################################################
+|
+| PURPOSE:
++ ############################################################################## -->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc" version='1.0'>
+
+
+ <xsl:template match="simplelist">
+ <xsl:if test="title"> <xsl:apply-templates select="title"/></xsl:if>
+ <xsl:text>&#10;\begin{itemize}&#10;</xsl:text>
+ <xsl:apply-templates select="member"/>
+ <xsl:text>&#10;\end{itemize}&#10;</xsl:text>
+ </xsl:template>
+
+
+ <xsl:template match="member">
+ <xsl:text>&#10;%--- Item&#10;</xsl:text>
+ <xsl:text>\item[] </xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/docbook/xslt/man.xsl b/docs/docbook/xslt/man.xsl
new file mode 100644
index 0000000000..c1566b30c5
--- /dev/null
+++ b/docs/docbook/xslt/man.xsl
@@ -0,0 +1,159 @@
+<?xml version='1.0'?>
+<!-- vim:set sts=2 shiftwidth=2 syntax=xml: -->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version='1.0'>
+
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"/>
+
+<xsl:param name="chunk.section.depth" select="0"/>
+<xsl:param name="chunk.first.sections" select="1"/>
+<xsl:param name="use.id.as.filename" select="1"/>
+<xsl:param name="base.dir" select="'../manpages/'"/>
+
+<!--
+ Our ulink stylesheet omits @url part if content was specified
+-->
+<xsl:template match="ulink">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:if test="$content = ''">
+ <xsl:text>: </xsl:text>
+ </xsl:if>
+ <xsl:if test="$content != ''">
+ <xsl:value-of select="$content" />
+ </xsl:if>
+ <xsl:if test="$content = ''">
+ <xsl:apply-templates mode="italic" select="@url" />
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="refentry">
+
+ <xsl:variable name="section" select="refmeta/manvolnum"/>
+ <xsl:variable name="name" select="refnamediv/refname[1]"/>
+ <xsl:variable name="base.dir" select="$base.dir"/>
+ <!-- standard man page width is 64 chars; 6 chars needed for the two
+ (x) volume numbers, and 2 spaces, leaves 56 -->
+ <xsl:variable name="twidth" select="(74 - string-length(refmeta/refentrytitle)) div 2"/>
+
+ <xsl:variable name="reftitle"
+ select="substring(refmeta/refentrytitle, 1, $twidth)"/>
+
+ <xsl:variable name="title">
+ <xsl:choose>
+ <xsl:when test="refentryinfo/title">
+ <xsl:value-of select="refentryinfo/title"/>
+ </xsl:when>
+ <xsl:when test="../referenceinfo/title">
+ <xsl:value-of select="../referenceinfo/title"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="date">
+ <xsl:choose>
+ <xsl:when test="refentryinfo/date">
+ <xsl:value-of select="refentryinfo/date"/>
+ </xsl:when>
+ <xsl:when test="../referenceinfo/date">
+ <xsl:value-of select="../referenceinfo/date"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="productname">
+ <xsl:choose>
+ <xsl:when test="refentryinfo/productname">
+ <xsl:value-of select="refentryinfo/productname"/>
+ </xsl:when>
+ <xsl:when test="../referenceinfo/productname">
+ <xsl:value-of select="../referenceinfo/productname"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename"
+ select="concat($base.dir, normalize-space ($name), '.', $section)"/>
+ <xsl:with-param name="content">
+ <xsl:text>.\"Generated by db2man.xsl. Don't modify this, modify the source.
+.de Sh \" Subsection
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Ip \" List item
+.br
+.ie \\n(.$>=3 .ne \\$3
+.el .ne 3
+.IP "\\$1" \\$2
+..
+.TH "</xsl:text>
+ <xsl:value-of select="translate($reftitle,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ <xsl:text>" </xsl:text>
+ <xsl:value-of select="refmeta/manvolnum[1]"/>
+ <xsl:text> "</xsl:text>
+ <xsl:value-of select="normalize-space($date)"/>
+ <xsl:text>" "</xsl:text>
+ <xsl:value-of select="normalize-space($productname)"/>
+ <xsl:text>" "</xsl:text>
+ <xsl:value-of select="$title"/>
+ <xsl:text>"
+</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>&#10;</xsl:text>
+
+ <!-- Author section -->
+ <xsl:choose>
+ <xsl:when test="refentryinfo//author">
+ <xsl:apply-templates select="refentryinfo" mode="authorsect"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+</xsl:template>
+
+<xsl:template match="informalexample|screen|programlisting">
+ <xsl:text>.nf&#10;</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>.fi&#10;</xsl:text>
+</xsl:template>
+
+<xsl:template match="//emphasis">
+ <xsl:text>\fB</xsl:text>
+ <xsl:apply-templates/>
+ <xsl:text>\fR</xsl:text>
+</xsl:template>
+
+<xsl:template match="para|simpara|remark" mode="list">
+ <xsl:variable name="foo">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:choose match="node()">
+ <!-- Don't normalize-space() for verbatim paragraphs -->
+ <xsl:when test="informalexample|screen|programlisting">
+ <xsl:value-of select="$foo"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($foo)"/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:text>&#10;</xsl:text>
+ <xsl:if test="following-sibling::para or following-sibling::simpara or
+ following-sibling::remark">
+ <!-- Make sure multiple paragraphs within a list item don't -->
+ <!-- merge together. -->
+ <xsl:text>&#10;</xsl:text>
+ </xsl:if>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/docbook/xslt/table.mod.xsl b/docs/docbook/xslt/table.mod.xsl
new file mode 100644
index 0000000000..b20752d91d
--- /dev/null
+++ b/docs/docbook/xslt/table.mod.xsl
@@ -0,0 +1,743 @@
+<?xml version='1.0'?>
+<!--#############################################################################
+|- #############################################################################
+|
+| PURPOSE:
++ ############################################################################## -->
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ exclude-result-prefixes="doc" version='1.0'>
+
+
+
+ <!--############################################################################# -->
+ <!-- DOCUMENTATION -->
+ <doc:reference id="table" xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ </releaseinfo>
+ <authorgroup>
+ <firstname>Ramon</firstname> <surname>Casellas</surname>
+ <firstname>James</firstname> <surname>Devenish</surname>
+ </authorgroup>
+ <copyright>
+ <year>2000</year> <year>2001</year> <year>2002</year> <year>2003</year>
+ <holder>Ramon Casellas</holder>
+ </copyright>
+ </referenceinfo>
+
+ <title>Tables <filename>table.mod.xsl</filename></title>
+ <partintro>
+ <section><title>Introduction</title>
+ <para></para>
+ </section>
+ </partintro>
+ </doc:reference>
+
+
+
+
+ <!--############################################################################# -->
+ <!-- DOCUMENTATION -->
+ <doc:template match="table|informaltable" xmlns="">
+ <refpurpose>XSL template for docbook tables. </refpurpose>
+ <refdescription>
+ <para></para>
+ <formalpara><title>Remarks and Bugs</title>
+ <itemizedlist>
+ </itemizedlist>
+ </formalpara>
+ <formalpara><title>Default Behaviour</title>
+ <screen></screen>
+ </formalpara>
+ </refdescription>
+ </doc:template>
+ <!--############################################################################# -->
+
+ <xsl:template match="table">
+ <xsl:variable name="placement">
+ <xsl:call-template name="generate.formal.title.placement">
+ <xsl:with-param name="object" select="local-name(.)" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="caption">
+ <xsl:text>\caption{</xsl:text>
+ <xsl:apply-templates select="title" mode="caption.mode"/>
+ <xsl:text>}&#10;</xsl:text>
+ </xsl:variable>
+ <xsl:call-template name="map.begin"/>
+ <xsl:if test="$placement='before'">
+ <xsl:text>\captionswapskip{}</xsl:text>
+ <xsl:value-of select="$caption" />
+ <xsl:text>\captionswapskip{}</xsl:text>
+ </xsl:if>
+ <xsl:apply-templates/>
+ <xsl:if test="$placement!='before'"><xsl:value-of select="$caption" /></xsl:if>
+ <xsl:call-template name="map.end"/>
+ </xsl:template>
+
+ <xsl:template match="table/title"/>
+ <xsl:template match="table/title" mode="caption.mode"><xsl:apply-templates /></xsl:template>
+
+ <xsl:template match="informaltable">
+ <xsl:call-template name="map.begin"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="map.end"/>
+ </xsl:template>
+
+
+ <xsl:template name="table.format.tabularx">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="i" select="1"/>
+ <xsl:param name="colsep" select="1"/>
+ <!-- sum of numeric portions in 1*-like colwidths -->
+ <xsl:param name="starfactor" select="0"/>
+ <xsl:choose>
+ <!-- Out of the recursive iteration -->
+ <xsl:when test="$i > $cols"></xsl:when>
+ <!-- There are still columns to count -->
+ <xsl:otherwise>
+ <xsl:variable name="width">
+ <xsl:variable name="userchoice" select="colspec[@colnum=$i]/@colwidth"/>
+ <xsl:variable name="cells" select="thead/row/entry[$i]|tbody/row/entry[$i]"/>
+ <xsl:choose>
+ <xsl:when test="string-length($userchoice)=0 and count($cells//itemizedlist|$cells//orderedlist|$cells//variablelist)&gt;0">
+ <!-- In these specific circumstances, we MUST use a line-wrapped column
+ and yet the user hasn't specified one. -->
+ <xsl:value-of select="'1*'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- In the general case, we just do what the user wants (may even
+ have no pre-specified width). -->
+ <xsl:value-of select="$userchoice"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Try to take heed of colspecs -->
+ <xsl:choose>
+ <xsl:when test="$width!=''">
+ <xsl:text>&gt;{</xsl:text>
+ <xsl:if test="contains($width,'*')">
+ <!-- see tabularx documentation -->
+ <xsl:text>\hsize=</xsl:text>
+ <xsl:value-of select="substring-before($width,'*') * $starfactor" />
+ <xsl:text>\hsize</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="colspec[@colnum=$i]/@align='left'"><xsl:text>\RaggedRight</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='right'"><xsl:text>\RaggedLeft</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='center'"><xsl:text>\Centering</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='char'"><xsl:message>Table column char alignment is not supported.</xsl:message></xsl:when>
+ </xsl:choose>
+ <xsl:text>}</xsl:text>
+ <xsl:choose>
+ <xsl:when test="contains($width,'*')">
+ <xsl:text>X</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>p{</xsl:text><xsl:value-of select="$width" /><xsl:text>}</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$i&lt;$cols and $colsep='1'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="colspec[@colnum=$i]/@align='left'"><xsl:text>l</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='right'"><xsl:text>r</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='center'"><xsl:text>c</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='justify'"><xsl:text>X</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='char'"><xsl:text>c</xsl:text><xsl:message>Table column char alignment is not supported.</xsl:message></xsl:when>
+ <xsl:otherwise><xsl:text>X</xsl:text></xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$i&lt;$cols and $colsep='1'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- Recursive for next column -->
+ <xsl:call-template name="table.format.tabularx">
+ <xsl:with-param name="i" select="$i+1"/>
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="starfactor" select="$starfactor"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <!-- FIX THIS -->
+ <xsl:template name="table.format.tabular">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="i" select="1"/>
+ <xsl:param name="colsep" select="1"/>
+ <xsl:choose>
+ <!-- Out of the recursive iteration -->
+ <xsl:when test="$i > $cols"></xsl:when>
+ <!-- There are still columns to count -->
+ <xsl:otherwise>
+ <!-- Try to take heed of colspecs -->
+ <xsl:choose>
+ <!-- RC 2003/03/19 : Added first 'test' : colspec[@colnum=$i] for xsltproc
+ Before this patch, parsing the doc with xsltproc the xsl:when clause
+ was evaluated to 'true' even if there was no colspec for the column
+ -->
+ <xsl:when test="colspec[@colnum=$i] and colspec[@colnum=$i]/@colwidth!='' and not(contains(colspec[@colnum=$i]/@colwidth,'*'))">
+ <xsl:choose>
+ <xsl:when test="colspec[@colnum=$i]/@align='left'"><xsl:text>&gt;{\RaggedRight}</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='right'"><xsl:text>&gt;{\RaggedLeft}</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='center'"><xsl:text>&gt;{\Centering}</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='char'"><xsl:message>Table column char alignment is not supported.</xsl:message></xsl:when>
+ </xsl:choose>
+ <xsl:text>p{</xsl:text><xsl:value-of select="colspec[@colnum=$i]/@colwidth" /><xsl:text>}</xsl:text>
+ <xsl:if test="$i&lt;$cols and $colsep='1'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:choose>
+ <xsl:when test="colspec[@colnum=$i]/@align='left'"><xsl:text>l</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='right'"><xsl:text>r</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='center'"><xsl:text>c</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='justify'"><xsl:text>l</xsl:text></xsl:when>
+ <xsl:when test="colspec[@colnum=$i]/@align='char'"><xsl:text>c</xsl:text><xsl:message>Table column char alignment is not supported.</xsl:message></xsl:when>
+ <xsl:otherwise><xsl:text>c</xsl:text></xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$i&lt;$cols and $colsep='1'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- Recursive for next column -->
+ <xsl:call-template name="table.format.tabular">
+ <xsl:with-param name="i" select="$i+1"/>
+ <xsl:with-param name="cols" select="$cols"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+
+ <!-- See tabularx documentation. -->
+ <!-- For example, if we have a 1* column and a 3* column, then the
+ the hsizes for each column are (1/(1+3)*2) and (3/(1+3)*2).
+ The ratio of these to the star values (star values being 1 and 3)
+ is 2/(1+3).
+ BUT it is now very complicated because it takes into account columns
+ where the user has not specified a width but LaTeX requires a
+ fixed-width column (i.e. specialcols may vary).
+ Relies on there being (a) colspecs for every column or (b) no
+ colspecs.
+ -->
+ <xsl:template name="generate.starfactor">
+ <xsl:param name="i" select="1"/>
+ <xsl:param name="cols" select="count(colspec)"/>
+ <xsl:param name="sum" select="0"/>
+ <xsl:param name="specialcols" select="count(colspec[contains(@colwidth,'*')])"/>
+ <xsl:choose>
+ <xsl:when test="$i&lt;=$cols and colspec[position()=$i and contains(@colwidth,'*')]">
+ <!-- a * column -->
+ <xsl:call-template name="generate.starfactor">
+ <xsl:with-param name="i" select="$i+1"/>
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="sum" select="$sum+substring-before(colspec[$i]/@colwidth,'*')"/>
+ <xsl:with-param name="specialcols" select="$specialcols"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="$i&lt;=$cols">
+ <!-- not a * column, but we are going to pretend that it is -->
+ <xsl:variable name="cells" select="thead/row/entry[$i]|tbody/row/entry[$i]"/>
+ <xsl:variable name="problems" select="count($cells//itemizedlist|$cells//orderedlist|$cells//variablelist)"/>
+ <xsl:choose>
+ <xsl:when test="$problems &gt; 0">
+ <xsl:call-template name="generate.starfactor">
+ <xsl:with-param name="i" select="$i+1"/>
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="sum" select="$sum+1"/>
+ <xsl:with-param name="specialcols" select="$specialcols+1"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.starfactor">
+ <xsl:with-param name="i" select="$i+1"/>
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="sum" select="$sum"/>
+ <xsl:with-param name="specialcols" select="$specialcols"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$specialcols div $sum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <xsl:template match="tgroup">
+ <xsl:variable name="align" select="@align"/>
+ <xsl:variable name="frame">
+ <xsl:choose>
+ <xsl:when test="string-length(../@frame)&lt;1">all</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="../@frame"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="colspecs" select="./colspec"/>
+ <xsl:variable name="usex">
+ <xsl:choose>
+ <!-- if there are lists within cells, we need tabularx -->
+ <xsl:when test="$latex.use.tabularx=1 and (descendant::itemizedlist|descendant::orderedlist|descendant::variablelist)">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- if there are instances of 1*-style colwidths, we need tabularx -->
+ <xsl:when test="$latex.use.tabularx=1 and contains(colspec/@colwidth,'*')">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- if there are colspecs with 'justify' alignment and no explicit width, we need tabularx -->
+ <xsl:when test="$latex.use.tabularx=1 and count(colspec[@align='justify'])&gt;0">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>1</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:variable name="useminipage">
+ <!-- Hack to get around LaTeX issue with tabular (not necessary with tabularx).
+ This is NOT a good solution, and has problems of its own, but at least the footnotes
+ do not actually disappear (which is what would otherwise happen). -->
+ <xsl:if test="count(.//footnote)!=0">1</xsl:if>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$usex='1'">
+ <xsl:text>\begin{tabularx}{\linewidth}{</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="$useminipage='1'"><xsl:text>\begin{minipage}{\linewidth}&#10;</xsl:text></xsl:if>
+ <xsl:text>\begin{tabular}{</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$frame='all' or $frame='sides'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$usex=1">
+ <xsl:call-template name="table.format.tabularx">
+ <xsl:with-param name="cols" select="@cols"/>
+ <xsl:with-param name="starfactor">
+ <xsl:call-template name="generate.starfactor">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="table.format.tabular">
+ <xsl:with-param name="cols" select="@cols"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:if test="$frame='all' or $frame='sides'">
+ <xsl:text>|</xsl:text>
+ </xsl:if>
+ <xsl:text>}&#10;</xsl:text>
+ <xsl:if test="$frame!='sides' and $frame!='none' and $frame!='bottom'">
+ <xsl:text>\hline &#10;</xsl:text>
+ </xsl:if>
+ <!-- APPLY TEMPLATES -->
+ <xsl:apply-templates/>
+ <!-- -->
+ <xsl:if test="$frame!='sides' and $frame!='none' and $frame!='top'">
+ <xsl:text>\hline &#10;</xsl:text>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="$usex=1">
+ <xsl:text>\end{tabularx}&#10;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>\end{tabular}&#10;</xsl:text>
+ <xsl:if test="$useminipage='1'"><xsl:text>\end{minipage}&#10;</xsl:text></xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+
+ <!--
+ <xsl:template name="generate.col">
+ <xsl:param name="countcol">1</xsl:param>
+ </xsl:template>
+ -->
+
+ <xsl:template match="colspec"></xsl:template>
+ <xsl:template match="spanspec"></xsl:template>
+
+
+
+
+ <xsl:template match="thead|tfoot">
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="thead/row/entry|tfoot/row/entry">
+ <xsl:call-template name="latex.entry.prealign"/>
+ <xsl:call-template name="latex.thead.row.entry"/>
+ <xsl:call-template name="latex.entry.postalign"/>
+ <xsl:choose>
+ <xsl:when test="position()=last()"><xsl:text> \tabularnewline&#10;</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:call-template name="generate.latex.cell.separator"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template match="tbody">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="row">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="tbody/row|thead/row|tfoot/row">
+ <xsl:apply-templates/>
+ <!-- The rule below the last row in the table is controlled by the
+ Frame attribute of the enclosing Table or InformalTable and the RowSep
+ of the last row is ignored. If unspecified, this attribute is
+ inherited from enclosing elements, rowsep=1 by default. -->
+ <xsl:variable name="parent_position" select="count(../preceding-sibling::node())+1"/>
+ <xsl:variable name="grandparent_children" select="count(../../child::node())"/>
+ <xsl:if test="(count(@rowsep)=0 or @rowsep='1') and (position() != last() or $parent_position &lt; $grandparent_children)">
+ <xsl:text> \hline &#10;</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+
+ <xsl:template match="tbody/row/entry">
+ <xsl:call-template name="latex.entry.prealign"/>
+ <xsl:apply-templates/>
+ <xsl:call-template name="latex.entry.postalign"/>
+ <xsl:choose>
+ <xsl:when test="position()=last()"><xsl:text> \tabularnewline&#10;</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:call-template name="generate.latex.cell.separator"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+ <xsl:template name="latex.entry.prealign">
+ <xsl:variable name="span">
+ <xsl:choose>
+ <xsl:when test="@spanname!=''">
+ <xsl:call-template name="calculate.colspan">
+ <xsl:with-param name="namest" select="../../../spanspec[@spanname=@spanname]/@namest"/>
+ <xsl:with-param name="nameend" select="../../../spanspec[@spanname=@spanname]/@nameend"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:when test="@namest!=''">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:when>
+ <xsl:otherwise>-1</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="$span &gt; 1">
+ <xsl:text>\multicolumn{</xsl:text>
+ <xsl:value-of select="$span"/>
+ <xsl:text>|}{</xsl:text><!-- TODO take heed of @colsep -->
+ <xsl:choose>
+ <xsl:when test="@align='left'"><xsl:text>l</xsl:text></xsl:when>
+ <xsl:when test="@align='right'"><xsl:text>r</xsl:text></xsl:when>
+ <xsl:when test="@align='center'"><xsl:text>c</xsl:text></xsl:when>
+ <xsl:when test="@align='char'">c<xsl:message>Table entry char alignment is not supported.</xsl:message></xsl:when>
+ <xsl:otherwise>c</xsl:otherwise>
+ </xsl:choose>
+ <!-- use this as a hook for some general warnings -->
+ <xsl:text>}</xsl:text>
+ </xsl:if>
+ <!-- this is used when the entry's align spec wants to override the column default -->
+ <xsl:if test="$span &lt; 1">
+ <xsl:choose>
+ <xsl:when test="@align='left'"><xsl:text>\docbooktolatexalignll </xsl:text></xsl:when>
+ <xsl:when test="@align='right'"><xsl:text>\docbooktolatexalignrl </xsl:text></xsl:when>
+ <xsl:when test="@align='center'"><xsl:text>\docbooktolatexaligncl </xsl:text></xsl:when>
+ <xsl:when test="@align='char'"><xsl:message>Table entry char alignment is not supported.</xsl:message></xsl:when>
+ </xsl:choose>
+ </xsl:if>
+ <xsl:text>{</xsl:text>
+ <xsl:if test="@rotate='1'">
+ <xsl:text>\rotatebox{90}</xsl:text>
+ <xsl:if test="@align!=''"><xsl:message>entry[@rotate='1' and @align!=''] probably doesn't work.</xsl:message></xsl:if>
+ </xsl:if>
+ <xsl:text>{</xsl:text>
+ <!-- use this as a hook for some general warnings -->
+ <xsl:if test="@morerows!=''"><xsl:message>The morerows attribute is not supported.</xsl:message></xsl:if>
+ </xsl:template>
+
+ <xsl:template name="latex.entry.postalign">
+ <xsl:text>}}</xsl:text>
+ <!-- this is used when the entry's align spec wants to override the column default -->
+ <xsl:if test="@namest='' and @spanspec=''"><!-- TODO improve -->
+ <xsl:choose>
+ <xsl:when test="@align='left'"><xsl:text>\docbooktolatexalignlr </xsl:text></xsl:when>
+ <xsl:when test="@align='right'"><xsl:text>\docbooktolatexalignrr </xsl:text></xsl:when>
+ <xsl:when test="@align='center'"><xsl:text>\docbooktolatexaligncr </xsl:text></xsl:when>
+ </xsl:choose>
+ </xsl:if>
+ </xsl:template>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <xsl:template name="process.cell">
+ <xsl:param name="cellgi">td</xsl:param>
+ <xsl:variable name="empty.cell" select="count(node()) = 0"/>
+
+ <xsl:element name="{$cellgi}">
+ <xsl:if test="@morerows">
+ <xsl:attribute name="rowspan">
+ <xsl:value-of select="@morerows+1"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@namest">
+ <xsl:attribute name="colspan">
+ <xsl:call-template name="calculate.colspan"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="@valign">
+ <xsl:attribute name="valign">
+ <xsl:value-of select="@valign"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$empty.cell">
+ <xsl:text>&#160;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template name="generate.colgroup">
+ <xsl:param name="cols" select="1"/>
+ <xsl:param name="count" select="1"/>
+ <xsl:choose>
+ <xsl:when test="$count>$cols"></xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$count"/>
+ </xsl:call-template>
+ <xsl:call-template name="generate.colgroup">
+ <xsl:with-param name="cols" select="$cols"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="generate.col">
+ <xsl:param name="countcol">1</xsl:param>
+ <xsl:param name="colspecs" select="./colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)">
+ <col/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:variable name="colspec.colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$colspec.colnum=$countcol">
+ <col>
+ <xsl:if test="$colspec/@align">
+ <xsl:attribute name="align">
+ <xsl:value-of select="$colspec/@align"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$colspec/@char">
+ <xsl:attribute name="char">
+ <xsl:value-of select="$colspec/@char"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:if test="$colspec/@charoff">
+ <xsl:attribute name="charoff">
+ <xsl:value-of select="$colspec/@charoff"/>
+ </xsl:attribute>
+ </xsl:if>
+ </col>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="generate.col">
+ <xsl:with-param name="countcol" select="$countcol"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <xsl:template name="colspec.colnum">
+ <!-- when this macro is called, the current context must be an entry -->
+ <xsl:param name="colname"></xsl:param>
+ <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup -->
+ <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:param name="colnum">1</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <!--
+ <xsl:value-of select="$count"/>:
+ <xsl:value-of select="$colspec/@colname"/>=
+ <xsl:value-of select="$colnum"/>
+ -->
+ <xsl:choose>
+ <xsl:when test="$colspec/@colname=$colname">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colname" select="$colname"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ <xsl:with-param name="colnum">
+ <xsl:choose>
+ <xsl:when test="$colspec/@colnum">
+ <xsl:value-of select="$colspec/@colnum + 1"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$colnum + 1"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="colspec.colwidth">
+ <!-- when this macro is called, the current context must be an entry -->
+ <xsl:param name="colname"></xsl:param>
+ <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup -->
+ <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
+ <xsl:param name="count">1</xsl:param>
+ <xsl:choose>
+ <xsl:when test="$count>count($colspecs)"></xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
+ <xsl:choose>
+ <xsl:when test="$colspec/@colname=$colname">
+ <xsl:value-of select="$colspec/@colwidth"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="colspec.colwidth">
+ <xsl:with-param name="colname" select="$colname"/>
+ <xsl:with-param name="colspecs" select="$colspecs"/>
+ <xsl:with-param name="count" select="$count+1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="calculate.colspan">
+ <xsl:param name="namest" select="@namest"/>
+ <xsl:param name="nameend" select="@nameend"/>
+ <xsl:variable name="scol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colname" select="$namest"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="ecol">
+ <xsl:call-template name="colspec.colnum">
+ <xsl:with-param name="colname" select="$nameend"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="$ecol - $scol + 1"/>
+ </xsl:template>
+
+</xsl:stylesheet>