summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/Makefile.in50
-rw-r--r--docs/howto/DomainMember.xml (renamed from docs/howto/DOMAIN_MEMBER.xml)0
-rw-r--r--docs/howto/Group-Mapping.xml (renamed from docs/howto/GROUP-MAPPING-HOWTO.xml)0
-rw-r--r--docs/howto/Install.xml (renamed from docs/howto/UNIX_INSTALL.xml)0
-rw-r--r--docs/howto/PAM.xml (renamed from docs/howto/PAM-Authentication-And-Samba.xml)0
-rw-r--r--docs/xslt/docbook.xsl154
-rw-r--r--docs/xslt/expand-sambadoc.xsl486
-rw-r--r--docs/xslt/extract-examples.xsl50
-rw-r--r--docs/xslt/figures/caution.eps1
-rw-r--r--docs/xslt/figures/important.eps1
-rw-r--r--docs/xslt/figures/note.eps1387
-rw-r--r--docs/xslt/figures/tip.eps1503
-rw-r--r--docs/xslt/figures/warning.eps1
-rw-r--r--docs/xslt/generate-attributions.xsl81
-rw-r--r--docs/xslt/html-chunk.xsl16
-rw-r--r--docs/xslt/html-common.xsl25
-rw-r--r--docs/xslt/html.xsl11
-rw-r--r--docs/xslt/html/samba.css80
-rw-r--r--docs/xslt/latex.xsl107
-rw-r--r--docs/xslt/latex/sambadoc.cls466
-rw-r--r--docs/xslt/lists.mod.xsl29
-rw-r--r--docs/xslt/man.xsl169
-rw-r--r--docs/xslt/normalize-scape.mod.xsl395
-rw-r--r--docs/xslt/table.mod.xsl743
-rw-r--r--docs/xslt/unicode.mapping.dtd16
-rw-r--r--docs/xslt/unicode.mapping.xml72
26 files changed, 5822 insertions, 21 deletions
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 785be9a91a..7602476cb4 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -32,13 +32,14 @@ endif
# Paths
OUTPUTDIR = output
+ARCHIVEDIR = output/archive
SRCDIR = @srcdir@
MANDIR=$(OUTPUTDIR)/manpages
EPSTOPDF = @EPSTOPDF@
-MANPROJDOC = manpages
-PROJDOC = projdoc
+MANPAGEDIR = manpages
+HOWTODIR = howto
MAKEINDEX = @MAKEINDEX@
-IMAGEPROJDIR = $(PROJDOC)/imagefiles
+IMAGEPROJDIR = $(HOWTODIR)/imagefiles
GUIDEDOC = guide
EXAMPLESDIR = examples
DEVDOC = devdoc
@@ -47,21 +48,21 @@ PSDIR = $(OUTPUTDIR)
PDFDIR = $(OUTPUTDIR)
DVIDIR = $(OUTPUTDIR)
TXTDIR = $(OUTPUTDIR)/textdocs
-FAQPROJDOC = faq
+FAQHOWTODIR = faq
FAQDIR = $(OUTPUTDIR)/faq
HTMLDIR=$(OUTPUTDIR)/htmldocs
PLUCKERDIR=$(OUTPUTDIR)/plucker
# Lists of files to process
LATEX_FIGURES = xslt/figures/caution.pdf xslt/figures/important.pdf xslt/figures/note.pdf xslt/figures/tip.pdf xslt/figures/warning.pdf
-MANPAGES_SOURCES = $(wildcard $(MANPROJDOC)/*.?.xml)
-MANPAGES = $(patsubst $(MANPROJDOC)/%.xml,$(MANDIR)/%,$(MANPAGES_SOURCES)) $(MANDIR)/smb.conf.5
-MANPAGES_HTML = $(patsubst $(MANPROJDOC)/%.xml,$(HTMLDIR)/%.html,$(MANPAGES_SOURCES)) $(HTMLDIR)/smb.conf.5.html
-MANPAGES_PLUCKER = $(patsubst $(MANPROJDOC)/%.xml,$(PLUCKERDIR)/%.pdb,$(MANPAGES_SOURCES)) $(PLUCKERDIR)/smb.conf.5.pdb
-
-PROJDOC_IMAGES_PNG = $(wildcard $(IMAGEPROJDIR)/*.png)
-PROJDOC_IMAGES_EPS=$(patsubst %.png,%.eps,$(wildcard $(IMAGEPROJDIR)/*.png))
-PROJDOC_DEPS = $(PROJDOC)/*.xml $(PROJDOC)/attributions.xml $(MANPROJDOC)/*.xml $(SMBDOTCONFDOC)/smb.conf.5.xml $(SMBDOTCONFDOC)/parameters.all.xml $(SMBDOTCONFDOC)/parameters.global.xml $(SMBDOTCONFDOC)/parameters.service.xml
+MANPAGES_SOURCES = $(wildcard $(MANPAGEDIR)/*.?.xml)
+MANPAGES = $(patsubst $(MANPAGEDIR)/%.xml,$(MANDIR)/%,$(MANPAGES_SOURCES)) $(MANDIR)/smb.conf.5
+MANPAGES_HTML = $(patsubst $(MANPAGEDIR)/%.xml,$(HTMLDIR)/%.html,$(MANPAGES_SOURCES)) $(HTMLDIR)/smb.conf.5.html
+MANPAGES_PLUCKER = $(patsubst $(MANPAGEDIR)/%.xml,$(PLUCKERDIR)/%.pdb,$(MANPAGES_SOURCES)) $(PLUCKERDIR)/smb.conf.5.pdb
+
+HOWTODIR_IMAGES_PNG = $(wildcard $(IMAGEPROJDIR)/*.png)
+HOWTODIR_IMAGES_EPS=$(patsubst %.png,%.eps,$(wildcard $(IMAGEPROJDIR)/*.png))
+HOWTODIR_DEPS = $(HOWTODIR)/*.xml $(HOWTODIR)/attributions.xml $(MANPAGEDIR)/*.xml $(SMBDOTCONFDOC)/smb.conf.5.xml $(SMBDOTCONFDOC)/parameters.all.xml $(SMBDOTCONFDOC)/parameters.global.xml $(SMBDOTCONFDOC)/parameters.service.xml
DEVDOC_DEPS = $(DEVDOC)/*.xml $(DEVDOC)/attributions.xml
all:
@@ -101,7 +102,7 @@ txt: $(TXTDIR) $(TXTDIR)/Samba-HOWTO-Collection.txt $(TXTDIR)/Samba-Developers-G
htmlman: $(HTMLDIR) $(MANPAGES_HTML) CSS
htmlfaq: $(HTMLDIR) CSS
- $(XSLTPROC) --stringparam base.dir "$(FAQDIR)/" --stringparam root.filename samba-faq xslt/html-chunk.xsl $(FAQPROJDOC)/sambafaq.xml
+ $(XSLTPROC) --stringparam base.dir "$(FAQDIR)/" --stringparam root.filename samba-faq xslt/html-chunk.xsl $(FAQHOWTODIR)/sambafaq.xml
html-single: $(HTMLDIR) CSS $(HTMLDIR)/Samba-HOWTO-Collection.html $(HTMLDIR)/Samba-Developers-Guide.html
@if [ ! -d $(HTMLDIR)/images/ ]; then \
mkdir $(HTMLDIR)/images/; \
@@ -122,7 +123,7 @@ tex: Samba-HOWTO-Collection.tex Samba-Developers-Guide.tex gpl.tex
plucker: html-single htmlman htmlfaq $(PLUCKERDIR) $(MANPAGES_PLUCKER) $(PLUCKERDIR)/Samba-Developers-Guide.pdb $(PLUCKERDIR)/Samba-HOWTO-Collection.pdb
$(PLUCKERBUILD) -v -M2 --stayonhost --noimages --zlib-compression -H file:$(FAQDIR)/samba-faq.html -f samba-faq -p $(PLUCKERDIR)
-Samba-HOWTO-Collection.xml: $(PROJDOC)/samba-doc.xml $(PROJDOC_DEPS)
+Samba-HOWTO-Collection.xml: $(HOWTODIR)/index.xml $(HOWTODIR_DEPS)
$(XSLTPROC) --stringparam noreference 1 --xinclude --output $@ xslt/expand-sambadoc.xsl $<
Samba-Guide.xml: $(GUIDEDOC)/guide-main.xml
@@ -131,7 +132,7 @@ Samba-Guide.xml: $(GUIDEDOC)/guide-main.xml
Samba-Developers-Guide.xml: $(DEVDOC)/dev-doc.xml $(DEVDOC_DEPS)
$(XSLTPROC) --stringparam noreference 1 --xinclude --output $@ xslt/expand-sambadoc.xsl $<
-$(PROJDOC)/attributions.xml: $(PROJDOC)/samba-doc.xml
+$(HOWTODIR)/attributions.xml: $(HOWTODIR)/index.xml
@echo > $@ # Make sure we don't get recursive dependencies, etc!
$(XSLTPROC) --output $@ xslt/generate-attributions.xsl $<
@@ -144,11 +145,11 @@ clean:
$(PDFDIR)/*.pdf $(FAQDIR)/*.html $(HTMLDIR)/*html $(HTMLDIR)/samba.css
rm -f xslt/figures/*pdf
rm -f $(SMBDOTCONFDOC)/parameters.*.xml $(DVIDIR)/*.dvi
- rm -f samba-doc.* dev-doc.* $(PROJDOC)/changelog.xml $(PROJDOC)/attributions.xml $(DEVDOC)/attributions.xml
+ rm -f samba-doc.* dev-doc.* $(HOWTODIR)/changelog.xml $(HOWTODIR)/attributions.xml $(DEVDOC)/attributions.xml
rm -f Samba-HOWTO-Collection.*
rm -f Samba-Developers-Guide.*
rm -f Samba-Guide.*
- rm -f $(IMAGEPROJDIR)/*.eps $(MANPROJDOC)/smb.conf.5.xml
+ rm -f $(IMAGEPROJDIR)/*.eps $(MANPAGEDIR)/smb.conf.5.xml
rm -f $(PLUCKERDIR)/*.pdb
# Text files
@@ -175,7 +176,7 @@ $(PDFDIR)/%.pdf: %.tex latexfigures gpl.tex
-$(PDFLATEX) $<
mv $(patsubst %.tex,%.pdf,$<) $@
-epsimages: $(PROJDOC_IMAGES_EPS)
+epsimages: $(HOWTODIR_IMAGES_EPS)
# DVI files
$(DVIDIR)/%.dvi: %.tex epsimages gpl.tex
@@ -206,7 +207,7 @@ $(PLUCKERDIR):
CSS: $(HTMLDIR) xslt/html/samba.css
cp xslt/html/samba.css $(HTMLDIR)/
-$(HTMLDIR)/Samba-HOWTO-Collection.html: Samba-HOWTO-Collection.xml $(PROJDOC_DEPS) $(PROJDOC_IMAGES_PNG)
+$(HTMLDIR)/Samba-HOWTO-Collection.html: Samba-HOWTO-Collection.xml $(HOWTODIR_DEPS) $(HOWTODIR_IMAGES_PNG)
$(XSLTPROC) --output $@ xslt/html.xsl $<
$(HTMLDIR)/Samba-Developers-Guide.html: Samba-Developers-Guide.xml $(DEVDOC_DEPS)
@@ -218,7 +219,7 @@ $(HTMLDIR)/%.html: %.xml
$(PLUCKERDIR)/%.pdb: $(HTMLDIR)/%.html
$(PLUCKERBUILD) -v -M1 --stayonhost --noimages --zlib-compression -H file:$< -f $(patsubst $(PLUCKERDIR)/%.pdb,%,$@) -p $(PLUCKERDIR)
-%.xml: $(MANPROJDOC)/%.xml
+%.xml: $(MANPAGEDIR)/%.xml
$(XSLTPROC) --stringparam noreference 1 --output $@ xslt/expand-sambadoc.xsl $<
# Manpages
@@ -263,7 +264,7 @@ undocumented: $(SMBDOTCONFDOC)/parameters.all.xml
$(EXAMPLESDIR):
mkdir $(EXAMPLESDIR)
-files: $(PROJDOC)/samba-doc.xml $(PROJDOC)/attributions.xml $(EXAMPLESDIR)
+files: $(HOWTODIR)/index.xml $(HOWTODIR)/attributions.xml $(EXAMPLESDIR)
$(XSLTPROC) xslt/extract-smbfiles.xsl $< > /dev/null
samples: $(EXAMPLESDIR) Samba-HOWTO-Collection.xml
@@ -275,3 +276,10 @@ guide: $(PDFDIR)/Samba-Guide.pdf
%/changelog.xml: % $(wildcard %/CVS/*)
$(CVS2CL) --stdout --xml $< | $(XSLTPROC) --output $@ xslt/genchangelog.xsl -
+
+$(ARCHIVEDIR):
+ mkdir $(ARCHIVEDIR)
+
+archive: $(ARCHIVEDIR) guide howto
+ cp $(PDFDIR)/Samba-HOWTO-Collection.pdf $(ARCHIVEDIR)/TOSHARG-`date +%Y%m%d`.pdf
+ cp $(PDFDIR)/Samba-Guide.pdf $(ARCHIVEDIR)/S3bE-`date +%Y%m%d`.pdf
diff --git a/docs/howto/DOMAIN_MEMBER.xml b/docs/howto/DomainMember.xml
index 72b00663f7..72b00663f7 100644
--- a/docs/howto/DOMAIN_MEMBER.xml
+++ b/docs/howto/DomainMember.xml
diff --git a/docs/howto/GROUP-MAPPING-HOWTO.xml b/docs/howto/Group-Mapping.xml
index 41860d1757..41860d1757 100644
--- a/docs/howto/GROUP-MAPPING-HOWTO.xml
+++ b/docs/howto/Group-Mapping.xml
diff --git a/docs/howto/UNIX_INSTALL.xml b/docs/howto/Install.xml
index a4ba1c0aa7..a4ba1c0aa7 100644
--- a/docs/howto/UNIX_INSTALL.xml
+++ b/docs/howto/Install.xml
diff --git a/docs/howto/PAM-Authentication-And-Samba.xml b/docs/howto/PAM.xml
index 7e5911bb19..7e5911bb19 100644
--- a/docs/howto/PAM-Authentication-And-Samba.xml
+++ b/docs/howto/PAM.xml
diff --git a/docs/xslt/docbook.xsl b/docs/xslt/docbook.xsl
new file mode 100644
index 0000000000..1044b11791
--- /dev/null
+++ b/docs/xslt/docbook.xsl
@@ -0,0 +1,154 @@
+<?xml version='1.0'?>
+<!--#############################################################################
+| PURPOSE:
+| This is the "parent" stylesheet. The used "modules" are included here.
+| output encoding text in ISO-8859-1 indented.
++ ############################################################################## -->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ extension-element-prefixes="exsl"
+ exclude-result-prefixes="doc" version='1.0'>
+
+ <xsl:output method="text" encoding="ISO-8859-1" indent="yes"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/common/l10n.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/common/common.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/VERSION.xml"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/vars.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/latex.mapping.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/preamble.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/font.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/labelid.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/book-article.mod.xsl"/>
+
+<!--
+ ## commented out to prevent breaking the build - jerry
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/dedication.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/preface.mod.xsl"/>
+-->
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/part-chap-app.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/sections.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/bridgehead.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/abstract.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/biblio.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/revision.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/admonition.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/verbatim.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/email.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/sgmltag.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/citation.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/qandaset.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/procedure.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/lists.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/callout.mod.xsl"/>
+
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/figure.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/graphic.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mediaobject.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/index.mod.xsl"/>
+
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/xref.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/formal.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/example.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/table.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/inline.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/authorgroup.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/dingbat.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/info.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/keywords.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/refentry.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/component.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/glossary.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/block.mod.xsl"/>
+
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/synop-oop.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/synop-struct.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/pi.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/footnote.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/texmath.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mathelem.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mathml/mathml.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mathml/mathml.presentation.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mathml/mathml.content.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mathml/mathml.content.token.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mathml/mathml.content.functions.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/mathml/mathml.content.constsymb.mod.xsl"/>
+
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/para.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/msgset.mod.xsl"/>
+ <xsl:include href="http://db2latex.sourceforge.net/xsl/errors.mod.xsl"/>
+
+ <xsl:include href="normalize-scape.mod.xsl"/>
+
+
+ <xsl:template match="/">
+ <xsl:variable name="xsl-vendor" select="system-property('xsl:vendor')"/>
+ <xsl:message>################################################################################</xsl:message>
+ <xsl:message> XSLT stylesheets DocBook - LaTeX 2e </xsl:message>
+ <xsl:message> Reqs: LaTeX 2e installation common packages </xsl:message>
+ <xsl:message>################################################################################</xsl:message>
+ <xsl:message> RELEASE : <xsl:value-of select="$VERSION"/> </xsl:message>
+ <xsl:message> VERSION : <xsl:value-of select="$CVSVERSION"/> </xsl:message>
+ <xsl:message> TAG : <xsl:value-of select="$TAG"/> </xsl:message>
+ <xsl:message> WWW : http://db2latex.sourceforge.net </xsl:message>
+ <xsl:message> SUMMARY : http://www.sourceforge.net/projects/db2latex </xsl:message>
+ <xsl:message> AUTHOR : Ramon Casellas casellas@infres.enst.fr </xsl:message>
+ <xsl:message> AUTHOR : James Devenish j-devenish@users.sf.net </xsl:message>
+ <xsl:message> USING : <xsl:call-template name="set-vendor"/> </xsl:message>
+ <xsl:message>################################################################################</xsl:message>
+ <xsl:apply-templates/>
+ </xsl:template>
+
+
+ <!--############################################################################# -->
+ <!-- XSL Processor Vendor -->
+ <!-- XSL Mailing Lists http://www.dpawson.co.uk/xsl/N10378.html -->
+ <!--############################################################################# -->
+ <xsl:template name="set-vendor">
+ <xsl:variable name="xsl-vendor" select="system-property('xsl:vendor')"/>
+ <xsl:choose>
+ <xsl:when test="contains($xsl-vendor, 'SAXON 6.4')">
+ <xsl:text>SAXON 6.4.X</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($xsl-vendor, 'SAXON 6.2')">
+ <xsl:text>SAXON 6.2.X</xsl:text>
+ </xsl:when>
+ <xsl:when test="starts-with($xsl-vendor,'SAXON')">
+ <xsl:text>SAXON</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($xsl-vendor,'Apache')">
+ <xsl:text>XALAN</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($xsl-vendor,'Xalan')">
+ <xsl:text>XALAN</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($xsl-vendor,'libxslt')">
+ <xsl:text>libxslt/xsltproc</xsl:text>
+ </xsl:when>
+ <xsl:when test="contains($xsl-vendor,'Clark')">
+ <xsl:text>XT</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>UNKNOWN</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/docs/xslt/expand-sambadoc.xsl b/docs/xslt/expand-sambadoc.xsl
new file mode 100644
index 0000000000..2c9aa0a82a
--- /dev/null
+++ b/docs/xslt/expand-sambadoc.xsl
@@ -0,0 +1,486 @@
+<?xml version='1.0'?>
+<!--
+ Samba-documentation specific stylesheets
+ Published under the GNU GPL
+
+ (C) Jelmer Vernooij 2002-2004
+ (C) Alexander Bokovoy 2002-2004
+-->
+<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:import href="../settings.xsl"/>
+
+ <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="translator">
+ <xsl:element name="othercredit">
+ <xsl:element name="author">
+ <xsl:apply-templates/>
+ <xsl:element name="contrib">
+ <xsl:text>Translation to </xsl:text><xsl:value-of select="@lang"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </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="indexterm">
+ <xsl:element name="primary">
+ <xsl:value-of select="name"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="parameter">
+ <xsl:text disable-output-escaping="yes">
+ &lt;?latex \hspace{1cm} ?&gt;
+ </xsl:text>
+ <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:text disable-output-escaping="yes">
+ &lt;?latex \hspace{1cm} ?&gt;
+ </xsl:text>
+ <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>
+
+ <xsl:variable name="linkcontent">
+ <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:variable>
+
+ <xsl:choose>
+ <xsl:when test="$noreference = 1">
+ <xsl:value-of select="$linkcontent"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="link">
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="translate(translate(string(name),' ',''),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ </xsl:attribute>
+ <xsl:value-of select="$linkcontent"/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </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="smbfile">
+ <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="description"><xsl:apply-templates/></xsl:template>
+
+ <xsl:template match="value"><xsl:apply-templates/></xsl:template>
+
+ <xsl:template match="synonym"><xsl:apply-templates/></xsl:template>
+
+ <xsl:template match="related"><xsl:apply-templates/></xsl:template>
+
+ <xsl:template match="filterline">
+ <xsl:element name="programlisting">
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:template>
+
+ <xsl:template match="//samba:parameterlist">
+ <xsl:apply-templates>
+ <xsl:sort select="varlistentry/term/anchor"/>
+ </xsl:apply-templates>
+ </xsl:template>
+
+ <xsl:template match="value/comment">
+ <xsl:text>&#10;# </xsl:text>
+ <xsl:apply-templates/>
+ </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="cname"><xsl:value-of select="translate(translate(string(@name),' ',''),
+ 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ </xsl:variable>
+
+ <xsl:variable name="name"><xsl:value-of select="@name"/></xsl:variable>
+
+ <xsl:variable name="anchor">
+ <xsl:element name="anchor">
+ <xsl:attribute name="id">
+ <xsl:value-of select="$cname"/>
+ </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>
+
+
+ <!-- Generate list of examples -->
+ <xsl:variable name="examples">
+ <xsl:for-each select="value">
+ <xsl:if test="@type = 'example'">
+ <xsl:element name="para">
+ <xsl:text>Example: </xsl:text>
+ <xsl:element name="emphasis">
+ <xsl:element name="parameter">
+ <xsl:copy-of select="$name"/>
+ </xsl:element>
+ <xsl:text> = </xsl:text>
+ <xsl:apply-templates select="."/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:element>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="tdefault">
+ <xsl:for-each select="value">
+ <xsl:if test="@type = 'default'">
+ <xsl:element name="para">
+ <xsl:text>Default: </xsl:text>
+ <xsl:element name="emphasis">
+ <xsl:element name="parameter">
+ <xsl:copy-of select="$name"/>
+ </xsl:element>
+ <xsl:text> = </xsl:text>
+ <xsl:apply-templates select="."/>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:element>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="default">
+ <xsl:choose>
+ <xsl:when test="$tdefault = ''">
+ <xsl:element name="para">
+ <xsl:element name="emphasis">
+ <xsl:text>No default</xsl:text>
+ </xsl:element>
+ </xsl:element>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="$tdefault"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="content">
+ <xsl:apply-templates select="description"/>
+ </xsl:variable>
+
+ <xsl:for-each select="synonym">
+ <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="."/>
+ </xsl:element>
+ <xsl:element name="see">
+ <xsl:value-of select="$name"/>
+ </xsl:element>
+ </xsl:element>
+
+ <xsl:element name="term">
+ <xsl:element name="anchor">
+ <xsl:attribute name="id">
+ <xsl:value-of select="translate(translate(string(.),' ',''), 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ </xsl:attribute>
+ </xsl:element>
+ <xsl:value-of select="."/>
+ </xsl:element>
+
+ <xsl:element name="listitem">
+ <xsl:element name="para"><xsl:text>This parameter is a synonym for </xsl:text><xsl:copy-of select="$name"/><xsl:text>.</xsl:text></xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:for-each>
+
+ <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:element name="listitem">
+ <xsl:copy-of select="$content"/> <xsl:text>&#10;</xsl:text>
+ <xsl:copy-of select="$default"/> <xsl:text>&#10;</xsl:text>
+ <xsl:copy-of select="$examples"/> <xsl:text>&#10;</xsl:text>
+ </xsl:element>
+ </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:if test="contains(@url,'http://') or contains(@url,'ftp://')">
+ <xsl:if test="$duplicate_ulinks='brackets'">
+ <xsl:text> (</xsl:text>
+ <xsl:value-of select="@url"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
+ <xsl:if test="$duplicate_ulinks='footnote'">
+ <xsl:element name="footnote">
+ <xsl:element name="para">
+ <xsl:value-of select="@url"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:if>
+ </xsl:if>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- Just ignore these -->
+ <xsl:template match="smbfile">
+ <xsl:apply-templates/>
+ </xsl:template>
+
+ <xsl:template match="quote">
+ <xsl:element name="quote">
+ <xsl:element name="emphasis">
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xslt/extract-examples.xsl b/docs/xslt/extract-examples.xsl
new file mode 100644
index 0000000000..f31e13eec6
--- /dev/null
+++ b/docs/xslt/extract-examples.xsl
@@ -0,0 +1,50 @@
+<?xml version='1.0'?>
+<!--
+ Extract examples out of XML file
+ (C) Jelmer Vernooij 2003
+-->
+<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:template match="example/title"></xsl:template>
+
+<xsl:template match="example/simplelist/title"></xsl:template>
+
+<!-- Parse all varlistentries and extract those of them which are descriptions of smb.conf
+ parameters. We determine them by existence of <anchor> element inside <term> element.
+ If <anchor> is there, then its 'id' attribute is translated to lower case and is used
+ as basis for file name for that parameter.
+-->
+<xsl:template match="example">
+ <!-- reconstruct varlistentry - not all of them will go into separate files
+ and also we must repair the main varlistentry itself.
+ -->
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <!-- Now put varlistentry into separate file _if_ it has anchor associated with it -->
+ <xsl:variable name="filename"><xsl:text>examples/</xsl:text><xsl:value-of select="@id"/>.conf</xsl:variable>
+ <!-- Debug message for an operator, just to show progress of processing :) -->
+ <xsl:message>
+ <xsl:text>Writing </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text> for </xsl:text>
+ <xsl:value-of select="title"/>
+ </xsl:message>
+ <!-- Write finally varlistentry to a separate file -->
+ <exsl:document href="{$filename}"
+ method="xml"
+ encoding="UTF-8"
+ indent="yes"
+ omit-xml-declaration="yes">
+ <xsl:copy-of select="$content"/>
+ </exsl:document>
+</xsl:template>
+
+</xsl:stylesheet>
+
diff --git a/docs/xslt/figures/caution.eps b/docs/xslt/figures/caution.eps
new file mode 100644
index 0000000000..0c10b371b1
--- /dev/null
+++ b/docs/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/xslt/figures/important.eps b/docs/xslt/figures/important.eps
new file mode 100644
index 0000000000..0c10b371b1
--- /dev/null
+++ b/docs/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/xslt/figures/note.eps b/docs/xslt/figures/note.eps
new file mode 100644
index 0000000000..39be23fa77
--- /dev/null
+++ b/docs/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/xslt/figures/tip.eps b/docs/xslt/figures/tip.eps
new file mode 100644
index 0000000000..a28ad883eb
--- /dev/null
+++ b/docs/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/xslt/figures/warning.eps b/docs/xslt/figures/warning.eps
new file mode 100644
index 0000000000..0c10b371b1
--- /dev/null
+++ b/docs/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/xslt/generate-attributions.xsl b/docs/xslt/generate-attributions.xsl
new file mode 100644
index 0000000000..79bf942504
--- /dev/null
+++ b/docs/xslt/generate-attributions.xsl
@@ -0,0 +1,81 @@
+<?xml version='1.0'?>
+<!--
+ Generate Docbook/XML file with attributions based on chapter/author tags
+ (C) Jelmer Vernooij 2003
+-->
+<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:text>&#10;&#9;</xsl:text>
+ <xsl:element name="itemizedlist">
+ <xsl:apply-templates/>
+ <xsl:text>&#9;</xsl:text>
+ </xsl:element>
+ <xsl:text>&#10;</xsl:text>
+ </xsl:element>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="author">
+ <xsl:choose>
+ <xsl:when test="firstname != ''">
+ <xsl:text>&#9;</xsl:text>
+ <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>&#10;</xsl:text>
+ </xsl:when>
+ </xsl:choose>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/docs/xslt/html-chunk.xsl b/docs/xslt/html-chunk.xsl
new file mode 100644
index 0000000000..e98a3df8dc
--- /dev/null
+++ b/docs/xslt/html-chunk.xsl
@@ -0,0 +1,16 @@
+<?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="../settings.xsl"/>
+
+<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/xslt/html-common.xsl b/docs/xslt/html-common.xsl
new file mode 100644
index 0000000000..dce900ef67
--- /dev/null
+++ b/docs/xslt/html-common.xsl
@@ -0,0 +1,25 @@
+<?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: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/xslt/html.xsl b/docs/xslt/html.xsl
new file mode 100644
index 0000000000..bb07516ad2
--- /dev/null
+++ b/docs/xslt/html.xsl
@@ -0,0 +1,11 @@
+<?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="../settings.xsl"/>
+
+<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/xslt/html/samba.css b/docs/xslt/html/samba.css
new file mode 100644
index 0000000000..3d926e8e74
--- /dev/null
+++ b/docs/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/xslt/latex.xsl b/docs/xslt/latex.xsl
new file mode 100644
index 0000000000..8cc6b0d546
--- /dev/null
+++ b/docs/xslt/latex.xsl
@@ -0,0 +1,107 @@
+<?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="../settings.xsl"/>
+<!--<xsl:import href="docbook.xsl"/>-->
+<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" select="'en'"/>
+<xsl:param name="latex.example.caption.style"></xsl:param>
+<xsl:variable name="latex.documentclass">sambadoc</xsl:variable>
+<xsl:variable name="latex.documentclass.common">twoside,11pt,letterpaper</xsl:variable>
+<xsl:variable name="latex.documentclass.book"></xsl:variable>
+<xsl:variable name="latex.hyperref.param.pdftex">hyperfigures,hyperindex,citecolor=black,urlcolor=black,filecolor=black,linkcolor=black,menucolor=red,pagecolor=black</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.use.tabularx">1</xsl:variable>
+<xsl:variable name="latex.fancyhdr.lh"></xsl:variable>
+<xsl:variable name="latex.use.fancyhdr"></xsl:variable>
+<xsl:variable name="latex.use.parskip">1</xsl:variable>
+<!--<xsl:variable name="latex.use.ltxtable">1</xsl:variable>-->
+<xsl:variable name="latex.hyphenation.tttricks">1</xsl:variable>
+<xsl:variable name="latex.book.varsets"></xsl:variable>
+<xsl:variable name="latex.titlepage.file"></xsl:variable>
+<!--<xsl:variable name="formal.title.placement">
+ figure not_before
+ example not_before
+ equation not_before
+ table not_before
+ procedure before
+</xsl:variable>-->
+<!--<xsl:variable name="latex.procedure.title.style"><xsl:text>\subsubsection</xsl:text></xsl:variable>-->
+<xsl:template name="latex.thead.row.entry">
+<xsl:text>{\bfseries </xsl:text><xsl:apply-templates/><xsl:text>}</xsl:text>
+</xsl:template>
+<xsl:variable name="latex.book.preamblestart">
+\documentclass[twoside,openright,<xsl:value-of select="$fontsize"/>pt]{xslt/latex/sambadoc}
+
+\usepackage[twoside,dvips]{geometry}
+
+%\usepackage[section]{placeins}
+
+\geometry{%
+paperwidth=7in,
+paperheight=9.25in,
+lmargin=.75in,
+rmargin=.75in,
+bmargin=.625in,
+tmargin=.625in,
+width=5.5in,
+height=7.525in, %7.3
+marginparwidth=0.35in,
+headheight=0.2in,
+headsep=.25in,
+footskip=.025in}
+
+\setlength{\headwidth}{\textwidth}
+
+<xsl:if test="$docrop != '0'">
+\usepackage[letter,center,dvips]{crop}
+</xsl:if>
+\usepackage{amsmath}%
+\usepackage{amsfonts}%
+\usepackage{amssymb}
+
+<xsl:if test="$docrop != '0'">
+\special{papersize=11in,8.5in}
+
+%\crop[frame]
+\crop
+</xsl:if>
+
+\makeindex
+
+%% Preamble:
+
+% New commands and/or command redefinitions
+%
+% Added for the samba book
+%----------------------- paragraph ----------------------------------
+\cleardoublepage
+\pagenumbering{roman}
+
+\setcounter{page}{2}
+\setcounter{totalnumber}{8}
+\setcounter{bottomnumber}{3}
+\setcounter{topnumber}{3}
+\renewcommand{\textfraction}{0.1}
+\renewcommand{\topfraction}{1.0}
+\renewcommand{\bottomfraction}{1.0}
+
+%% Document Parts
+</xsl:variable>
+<xsl:param name="latex.babel.language">english</xsl:param>
+<xsl:param name="ulink.url">1</xsl:param>
+
+<xsl:template match="//title/filename|//title/command|//title/parameter|//title/constant">
+ <xsl:variable name="content">
+ <xsl:apply-templates/>
+ </xsl:variable>
+ <xsl:if test="$content != ''">
+ <xsl:value-of select="$content" />
+ </xsl:if>
+</xsl:template>
+
+
+</xsl:stylesheet>
+
diff --git a/docs/xslt/latex/sambadoc.cls b/docs/xslt/latex/sambadoc.cls
new file mode 100644
index 0000000000..c55bc970a5
--- /dev/null
+++ b/docs/xslt/latex/sambadoc.cls
@@ -0,0 +1,466 @@
+%
+% $Id: sambadoc.cls,v 1.4 2003/12/11 19:30:50 jelmer Exp $
+%
+
+% phstyle.cls -- Macros for formatting Prentice-Hall Books
+% -- Compiled by J.K. Shultis, Dec. 1993
+% -- Modified and enhanced for LaTeX2e mdh/rlm 1997/02
+% -- Style Modifications Lori Hughes June 2002
+
+\NeedsTeXFormat{LaTeX2e}%
+\ProvidesClass{sambadoc}[1997/02/20 Prentice Hall Book Class, February 1997]
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
+
+\ProcessOptions%
+
+% Base everything on the default class 'article'.
+\LoadClass{report}%
+
+
+%================================================================================
+% 1. Page layout dimensions
+% 3. Define new fonts for headings
+% 4. Define LaTeX logos (usually ot needed)
+% 5. Redefines the way "figure" amd "table" are formated in a \caption
+% 6. Defines a \capt macro which defines (1) \captwidth, (2) \captsize
+% and \beforetableskip.
+% 7. New Environemnts: Eqnarray, reflist, exerlist
+% 8. Defines and modifies FANCYHDS.STY for headers and foots
+% 9. Change sectioning headings to bold sans serif fonts
+%10. Turn off leader dots in Table of Contents
+%======================================================================
+
+%====================== Page Layout
+% \oddsidemargin 0.750in \evensidemargin 0.750in \textwidth 5.00in
+% \topmargin 0.625in \headheight 0.3in \headsep 0.2in
+% \textheight 7.3in %\footheight .2in
+% \footskip 0.3in
+% \parskip 0ex \marginparwidth 1.00in \marginparsep 0.5in
+%\setlength\arraycolsep{1pt}
+
+\textwidth 5.00in
+
+%====================== Define special fonts
+\newfont{\BIG}{cminch} %--- One-inch font
+\newfont{\sfbHuge}{cmssbx10 scaled\magstep5} %-- 25pt sans serif bold
+\newfont{\sfblarge}{cmssbx10 scaled\magstep1} %-- 12pt sans serif bold
+\newfont{\sfbeleven}{cmssbx10 scaled\magstephalf} %-- 11pt sans serif bold
+\newfont{\sfb}{cmssbx10} %-- 10pt sans serif bold
+\newfont{\sfeight}{cmss8} %-- 8pt sans serif
+\newfont{\sfnine}{cmss8 at 9pt} %-- 9pt sans serif
+
+\newfont{\defnem}{cmbxti10} %-- 10pt sans serif bold
+\def\spacingset#1{\def\baselinestretch{#1}\small\normalsize}
+
+%-----------Change section heading font sizes here----
+\newfont{\sfbsection}{cmssbx10 at 13pt}
+\newfont{\sfbsubsec}{cmssbx10 at 12pt}
+\newfont{\sfbsubsub}{cmssbx10 at 11pt}
+\newfont{\sfbpara}{cmssbx10}
+%---------------------------------------------------
+
+
+%===================== LaTeX and TeX type logos
+\newcount\TestCount
+\def\La{\TestCount=\the\fam \leavevmode L\raise.42ex
+ \hbox{$\fam\TestCount\scriptstyle\kern-.3em A$}}
+\def\LaTeX{\La\kern-.15em\TeX}
+\def\AllTeX{{(\La)\TeX}}
+
+%
+% Theorem hack
+%
+
+\def\@begintheorem#1#2{\trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2:}]\itshape}
+
+%===================== Redefine the \@makecaption command
+ \long\def\@makecaption#1#2{\vskip 10\p@
+%% \setbox\@tempboxa\hbox{#1: #2}% %% original label definition
+ \setbox\@tempboxa\hbox{\textbf{ \small #1.} \small #2}% %% bold and . instead of :
+ \ifdim \wd\@tempboxa >\hsize
+%% #1: #2\par %% original definition
+ \textbf{ \small #1.} \small #2\par %% bold and . instead of :
+ \else
+ \hbox to\hsize{\hfil\box\@tempboxa\hfil}% %% original
+%% \hbox to\hsize{\box\@tempboxa\hfil}% %% no centering
+ \fi}
+
+%===================== New caption macro
+\newlength{\captsize} \let\captsize=\footnotesize
+\newlength{\captwidth} \setlength{\captwidth}{\textwidth}
+\newlength{\beforetableskip} \setlength{\beforetableskip}{.5\baselineskip}
+\newcommand{\capt}[1]{\begin{minipage}{\captwidth}
+ \let\normalsize=\captsize
+ \caption[#1]{#1}
+ \end{minipage}\\ \vspace{\beforetableskip}}
+
+
+%---------- Change Figure Label
+\newcommand{\thefigurename}{Figure} %-- set default: Figure
+\def\fnum@figure{\thefigurename\ \thefigure}
+
+% This is to get the equation numbers in the form (section.equation),
+% and to have the equation counter reset every time the section
+% counter is incremented.
+
+\def\theequation{\thechapter.\arabic{equation}}
+\@addtoreset{equation}{chapter}
+
+
+%===================== New Environments
+
+%------ Reference List Macro
+\newenvironment{reflist}{\begin{list}{}{\leftmargin 1em \labelwidth 0in
+\labelsep 0in \itemsep 0ex \rightmargin 0in}}{\end{list}}
+\newcommand{\refitem}{\item \hspace*{-1em}} %--- item for ref list
+\newcommand{\SC}{\scriptsize} %--- small capitals for reference lists
+
+
+%------ New environment for better spacing in Eqnarray
+\def\eqnarray{%
+ \stepcounter{equation}%
+ \def\@currentlabel{\p@equation\theequation}%
+ \global\@eqnswtrue
+ \m@th
+ \global\@eqcnt\z@
+ \tabskip\@centering
+ \let\\\@eqncr
+ $$\everycr{}\halign to\displaywidth\bgroup
+ \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
+ &\global\@eqcnt\@ne\hskip \arraycolsep \hfil${##}$\hfil
+ &\global\@eqcnt\tw@ \hskip \arraycolsep
+ $\displaystyle{##}$\hfil\tabskip\@centering
+ &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
+ \tabskip\z@skip
+ \cr
+}
+
+
+
+
+
+%\newenvironment{Eqnarray}{\arraycolsep 0.14em\begin{eqnarray}}{\end{eqnarray}}
+
+% The hangitem environment -- like description, but text lines up with
+% the item descriptor. You give an additional argument containing text
+% of the width that you want indentations.
+%
+\def\hangitem#1{\list{}{\settowidth\labelwidth{#1}
+ \leftmargin\labelwidth\advance\leftmargin\labelsep }}
+\let\endhangitem\endlist
+
+%------ Problem List Macro
+\newcounter{probnum}
+\newenvironment{exerlist}%
+ {\begin{list}{\bf \theprobnum.}%
+ {\usecounter{probnum} \itemsep 1ex \leftmargin 2.0em \labelsep 0.5em
+ \rightmargin 0in}}{\end{list}}
+
+
+
+
+%===================== Define FANCYHDS.STY
+% fancyheadings.sty version 1.1
+% Fancy headers and footers.
+% Piet van Oostrum, Dept of Computer Science, University of Utrecht
+% Padualaan 14, P.O. Box 80.089, 3508 TB Utrecht, The Netherlands
+% Telephone: +31-30-531806. piet@cs.ruu.nl (mcvax!hp4nl!ruuinf!piet)
+% Sep 23, 1992.
+
+\def\lhead{\@ifnextchar[{\@xlhead}{\@ylhead}}
+\def\@xlhead[#1]#2{\gdef\@elhead{#1}\gdef\@olhead{#2}}
+\def\@ylhead#1{\gdef\@elhead{#1}\gdef\@olhead{#1}}
+
+\def\chead{\@ifnextchar[{\@xchead}{\@ychead}}
+\def\@xchead[#1]#2{\gdef\@echead{#1}\gdef\@ochead{#2}}
+\def\@ychead#1{\gdef\@echead{#1}\gdef\@ochead{#1}}
+
+\def\rhead{\@ifnextchar[{\@xrhead}{\@yrhead}}
+\def\@xrhead[#1]#2{\gdef\@erhead{#1}\gdef\@orhead{#2}}
+\def\@yrhead#1{\gdef\@erhead{#1}\gdef\@orhead{#1}}
+
+\def\lfoot{\@ifnextchar[{\@xlfoot}{\@ylfoot}}
+\def\@xlfoot[#1]#2{\gdef\@elfoot{#1}\gdef\@olfoot{#2}}
+\def\@ylfoot#1{\gdef\@elfoot{#1}\gdef\@olfoot{#1}}
+
+\def\cfoot{\@ifnextchar[{\@xcfoot}{\@ycfoot}}
+\def\@xcfoot[#1]#2{\gdef\@ecfoot{#1}\gdef\@ocfoot{#2}}
+\def\@ycfoot#1{\gdef\@ecfoot{#1}\gdef\@ocfoot{#1}}
+
+\def\rfoot{\@ifnextchar[{\@xrfoot}{\@yrfoot}}
+\def\@xrfoot[#1]#2{\gdef\@erfoot{#1}\gdef\@orfoot{#2}}
+\def\@yrfoot#1{\gdef\@erfoot{#1}\gdef\@orfoot{#1}}
+
+\newdimen\headrulewidth
+\newdimen\footrulewidth
+\newdimen\plainheadrulewidth
+\newdimen\plainfootrulewidth
+\newdimen\headwidth
+\newif\if@fancyplain \@fancyplainfalse
+\def\fancyplain#1#2{\if@fancyplain#1\else#2\fi}
+
+% Initialization of the head and foot text.
+
+\headrulewidth 0.4pt
+\footrulewidth\z@
+\plainheadrulewidth\z@
+\plainfootrulewidth\z@
+
+\lhead[\fancyplain{}{\sl\rightmark}]{\fancyplain{}{\sl\leftmark}}
+% i.e. empty on ``plain'' pages \rightmark on even, \leftmark on odd pages
+\chead{}
+\rhead[\fancyplain{}{\sl\leftmark}]{\fancyplain{}{\sl\rightmark}}
+% i.e. empty on ``plain'' pages \leftmark on even, \rightmark on odd pages
+\lfoot{}
+\cfoot{\rm\thepage} % page number
+\rfoot{}
+
+% Put together a header or footer given the left, center and
+% right text, fillers at left and right and a rule.
+% The \lap commands put the text into an hbox of zero size,
+% so overlapping text does not generate an errormessage.
+
+\def\@fancyhead#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\hbox
+{\rlap{\parbox[b]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[b]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[b]{\headwidth}{\raggedleft#4\strut}}}\headrule}}#5}
+
+
+\def\@fancyfoot#1#2#3#4#5{#1\hbox to\headwidth{\vbox{\footrule
+\hbox{\rlap{\parbox[t]{\headwidth}{\raggedright#2\strut}}\hfill
+\parbox[t]{\headwidth}{\centering#3\strut}\hfill
+\llap{\parbox[t]{\headwidth}{\raggedleft#4\strut}}}}}#5}
+
+\def\headrule{{\if@fancyplain\headrulewidth\plainheadrulewidth\fi
+\hrule\@height\headrulewidth\@width\headwidth \vskip-\headrulewidth}}
+
+\def\footrule{{\if@fancyplain\footrulewidth\plainfootrulewidth\fi
+\vskip-0.3\normalbaselineskip\vskip-\footrulewidth
+\hrule\@width\headwidth\@height\footrulewidth\vskip-0.3\normalbaselineskip}}
+
+\def\ps@fancy{
+\let\@mkboth\markboth
+\@ifundefined{chapter}{\def\sectionmark##1{\markboth
+{{\ifnum \c@secnumdepth>\z@ %MEUH
+ \thesection\hskip 1em\relax \fi ##1}}{}}
+\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne
+ \thesubsection\hskip 1em\relax \fi ##1}}}
+%
+{\def\chaptermark##1{\markboth {{\ifnum \c@secnumdepth>\m@ne %MEUH
+ \@chapapp\ \thechapter. \ \fi ##1}}{}}
+\def\sectionmark##1{\markright{{\ifnum \c@secnumdepth >\z@ %MEUH
+ \thesection. \ \fi ##1}}}}
+\ps@@fancy
+\headwidth\textwidth}
+\def\ps@fancyplain{\ps@fancy \let\ps@plain\ps@plain@fancy}
+\def\ps@plain@fancy{\@fancyplaintrue\ps@@fancy}
+\def\ps@@fancy{
+\def\@oddhead{\@fancyhead\relax\@olhead\@ochead\@orhead\hss}
+\def\@oddfoot{\@fancyfoot\relax\@olfoot\@ocfoot\@orfoot\hss}
+\def\@evenhead{\@fancyhead\hss\@elhead\@echead\@erhead\relax}
+\def\@evenfoot{\@fancyfoot\hss\@elfoot\@ecfoot\@erfoot\relax}
+}
+%------------------- Modify Headers for Prentice-Hall Book Style
+%---------- Setup headers and footers
+\pagestyle{fancyplain}
+\plainfootrulewidth 0pt %---- no foot rule for chapter page
+\footrulewidth 0pt %---- no rule for foot
+
+%--- Redefine Headers
+\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
+%
+\lhead[\fancyplain{}{\bf\thepage}]{\fancyplain{}{\sfnine\rightmark}}
+%
+%\rhead[\fancyplain{}{\footnotesize\sf\CHHEAD}]{\fancyplain{}{\bf\thepage}}
+ \rhead[\fancyplain{}{\sfnine \leftmark}]{\fancyplain{}{\bf\thepage}}
+%--- Empty footers on every page (except initial chapter page which has
+%--- page number) and optionally a small date stamp
+\cfoot[\fancyplain{}{}]{\fancyplain{}{}}
+\rfoot[\fancyplain{}{}]{\fancyplain{\hspace{\fill}\\ \bf\thepage}{}}
+\lfoot[\fancyplain{\hspace{\fill}\\ \bf\thepage}{}]{\fancyplain{}{}}
+%-- replace the two lines above with the two below for a date stamp footer
+%\rfoot[\fancyplain{\scriptsize \today}{\scriptsize \today}]{\fancyplain{\bf\thepage}{}}
+%\lfoot[\fancyplain{\bf\thepage}{}]{\fancyplain{\scriptsize \today}{\scriptsize \today}}
+%--- Change format of section header
+%
+% rlm added chaptermark 10/11/96
+\def\sectionmark#1{\markright{\ifnum \c@secnumdepth >\z@
+ {\sfeight Section}~\thesection.\quad \fi #1}}
+\def\sectionsmark#1{\markright{#1}{#1}}
+%
+\def\chaptermark#1{\markboth{#1 \quad \@chapapp{}~\thechapter}{}}
+\def\chaptersmark#1{\markboth{#1}{#1}}
+
+
+
+
+%===================== Change Section Heads to Bold Sans Serif
+% Create bolds sans serif sectioning headings. Also the headings have
+% been reduced in size with less space before and after the heading.
+% Modified from macros given in BK10.STY
+%
+%----------------------------- part ---------------------------------
+\def\@part[#1]#2{%
+ \thispagestyle{empty}
+ \ifodd\c@page\hbox{}\else\clearpage\fi
+ \addtocounter{page}{-2}
+ \thispagestyle{empty}
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{Part \thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{Part #1}%
+ \fi
+ {\centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\bfseries \partname\nobreakspace\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries #2\par}%
+ \@endpart}
+
+%------------------------- appendix -----------------------------------
+
+\let\oldappendix\appendix
+\def\appendix{\oldappendix\def\addchaptertoloe{}}
+
+%------------------------- chapter -----------------------------------
+\def\addchaptertoloe{%
+ \addtocontents{loe}{\protect\addvspace{14pt}}%
+ \addtocontents{loe}{\noindent {\bfseries Chapter~\thechapter}\protect\par}%
+ \addtocontents{loe}{\protect\addvspace{10pt}}%
+}
+
+\def\chapter{\clearpage \thispagestyle{plain} \global\@topnum\z@
+\@afterindentfalse \secdef\@chapter\@schapter}
+\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{chapter}
+ \typeout{\@chapapp\space\thechapter.}
+ \addcontentsline{toc}{chapter}{Chapter~\protect
+ \numberline{\thechapter}\uppercase{#1}}\else
+ \addcontentsline{toc}{chapter}{Chapter~\uppercase{#1}}\fi
+ \chaptermark{#1}
+ \addchaptertoloe
+ \addtocontents{lof}{\protect\addvspace{10pt}}
+\addtocontents{lot}{\protect\addvspace{10pt}} \if@twocolumn
+\@topnewpage[\@makechapterhead{#2}]
+ \else \@makechapterhead{#2}
+ \@afterheading \fi}
+%
+\def\@schapter#1{\if@twocolumn \@topnewpage[\@makeschapterhead{#1}]
+ \else \@makeschapterhead{#1}\chaptersmark{#1}
+ \@afterheading\fi\addcontentsline{toc}{chapter}{\uppercase{#1}}}
+
+
+
+\def\@makechapterhead#1{\vspace*{-20pt}{\parindent0pt\raggedright
+\ifnum\c@secnumdepth>\m@ne\LARGE\sf\@chapapp{}~\thechapter\par
+\vskip3pt\hrule\vskip3pt\hrule
+\vskip30pt\fi\raggedright\Huge\sfbHuge\uppercase{#1}\par
+\nobreak\vskip70pt}}%\chaptermark{#1}}
+
+\def\@makeschapterhead#1{\vspace*{4pt}{\parindent0pt
+\vskip3pt\hrule\vskip3pt\hrule
+\vskip36pt\raggedright\Huge\sfbHuge\uppercase{#1}\par
+\nobreak\vskip70pt}}%\chaptersmark{#1}}
+
+%------------------------ section -----------------------------------
+\def\section{\@startsection{section}{1}{\z@}{-3.5ex plus-1ex
+ minus -.2ex}{1.8ex}{\sfbsection}}
+
+%--------------------- subsection -----------------------------------
+\def\subsection{\@startsection{subsection}{2}{\z@}{-2.75ex plus -1ex
+ minus -.2ex}{1.2ex}{\sfbsubsec}}
+
+%-------------------- subsubsection --------------------------------
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.75ex
+ plus -1ex minus -.2ex}{1.2ex}{\sfbsubsub}}
+
+%----------------------- paragraph ----------------------------------
+\def\paragraph{\@startsection{paragraph}{4}{\z@}{1.25ex plus
+ 1ex minus .2ex}{-1em}{\sfbpara}}
+
+%---------------------- subparagraph --------------------------------
+\def\subparagraph{\@startsection{subparagraph}{4}{\parindent}{1.25ex
+ plus 1ex minus .2ex}{-1em}{\normalsize\sfb}}
+
+
+
+%====================== Turn off leader dots in Table of Contents
+\renewcommand{\@dotsep}{500}
+
+\def\tableofcontents{\markboth{}{}\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\thispagestyle{plain} \@makeschapterhead{Contents}
+ \@afterheading
+ \chaptersmark{Contents}
+ \sectionsmark{Contents}
+ \@starttoc{toc}\if@restonecol\twocolumn\fi}
+
+
+\def\thebibliography#1{\chapter*{Bibliography}\list
+% \addcontentsline{toc}{chapter}{Bibliography}
+ {[\arabic{enumi}]}{\settowidth\labelwidth{2em}\leftmargin\labelwidth
+% \advance\leftmargin\labelsep
+ \usecounter{enumi}}
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+
+%% BIBLIOGRAPHY
+%
+%% separate citations with "], ["
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+\def\@citea{}\@cite{\@for\@citeb:=#2\do {\@citea\def\@citea{],
+[}\@ifundefined {b@\@citeb}{{\bf ?}\@warning {Citation `\@citeb' on
+page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}
+
+\def\@cite#1#2{[{#1\if@tempswa, #2\fi}]}
+
+
+%% index
+
+%\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+%\columnseprule \z@
+%\columnsep 35pt\twocolumn[\@makeschapterhead{Subject Index}]
+% \addcontentsline{toc}{chapter}{SUBJECT INDEX}
+% \thispagestyle{plain}\parindent\z@
+% \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+
+\def\theindex{\cleardoublepage\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\@makeschapterhead{Subject Index}]
+ \chaptersmark{Subject Index}%
+ \addcontentsline{toc}{chapter}{SUBJECT INDEX}
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+
+
+\renewcommand{\cleardoublepage}{\clearpage\if@twoside \ifodd\c@page\else
+\hbox{}\thispagestyle{empty}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
+
+\renewcommand{\numberline}[1]{\sbox\@tempboxa{#1\hspace{2pt}}%
+ \ifdim\wd\@tempboxa>\@tempdima \else \wd\@tempboxa\@tempdima\fi
+ \box\@tempboxa}
+
+\def\listofexamples{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \fi\chapter*{List of Examples}
+ \renewcommand\@pnumwidth{0em}
+ \@starttoc{loe}\if@restonecol
+ \twocolumn\fi}
+
+\def\l@example{\noindent\@dottedtocline{1}{0em}{3.5em}}
+
+\parskip 1.5ex
+\parindent 0pt
+
+\renewcommand\listfigurename{\uppercase{List Of Figures}}
+\renewcommand\listtablename{\uppercase{List Of Tables}}
+
diff --git a/docs/xslt/lists.mod.xsl b/docs/xslt/lists.mod.xsl
new file mode 100644
index 0000000000..49e39d5e7f
--- /dev/null
+++ b/docs/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/xslt/man.xsl b/docs/xslt/man.xsl
new file mode 100644
index 0000000000..2a27bc4c04
--- /dev/null
+++ b/docs/xslt/man.xsl
@@ -0,0 +1,169 @@
+<?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="../settings.xsl"/>
+
+<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:template match="refsect3">
+ <xsl:text>&#10;.SS "</xsl:text>
+ <xsl:value-of select="title[1]"/>
+ <xsl:text>"&#10;</xsl:text>
+ <xsl:apply-templates/>
+</xsl:template>
+
+
+</xsl:stylesheet>
diff --git a/docs/xslt/normalize-scape.mod.xsl b/docs/xslt/normalize-scape.mod.xsl
new file mode 100644
index 0000000000..1ea5cbe8de
--- /dev/null
+++ b/docs/xslt/normalize-scape.mod.xsl
@@ -0,0 +1,395 @@
+<?xml version='1.0'?>
+<!--#############################################################################
+| $Id: normalize-scape.mod.xsl,v 1.1 2003/12/05 06:53:48 ab Exp $
+|- #############################################################################
+| $Author: ab $
+|
+| PURPOSE:
+| Escape LaTeX and normalize-space templates.
+| < > # $ % & ~ _ ^ \ { } |
++ ############################################################################## -->
+
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
+ xmlns:exsl="http://exslt.org/common"
+ exclude-result-prefixes="doc"
+ extension-element-prefixes="exsl"
+ version='1.0'>
+
+
+ <!--############################################################################# -->
+ <!-- DOCUMENTATION -->
+ <doc:reference id="normalize-scape" xmlns="">
+ <referenceinfo>
+ <releaseinfo role="meta">
+ $Id: normalize-scape.mod.xsl,v 1.1 2003/12/05 06:53:48 ab Exp $
+ </releaseinfo>
+ <authorgroup>
+ <author> <firstname>Ramon</firstname> <surname>Casellas</surname> </author>
+ <author> <firstname>James</firstname> <surname>Devenish</surname> </author>
+ </authorgroup>
+ <copyright><year>2000</year><year>2001</year><year>2002</year><year>2003</year>
+ <holder>Ramon Casellas</holder>
+ </copyright>
+ </referenceinfo>
+ <title>Normalize and Scape strings.</title>
+ <partintro>
+ <section><title>Introduction</title>
+ <para></para>
+ </section>
+ </partintro>
+ </doc:reference>
+ <!--############################################################################# -->
+
+ <xsl:key name="character" match="character" use="unicode"/>
+ <xsl:param name="unicode.mapping.local" select="''"/>
+ <xsl:param name="unicode.mapping.default" select="'unicode.mapping.xml'"/>
+ <xsl:param name="unicode.mapping.languages" select="''"/>
+ <xsl:variable name="unicode.mapping.sources">
+ <xsl:if test="not(function-available('exsl:node-set'))">
+ <xsl:message terminate="yes">
+ <xsl:text>Error: this style requires support for extension 'exsl:node-set()'</xsl:text>
+ </xsl:message>
+ </xsl:if>
+ <file><xsl:value-of select="$unicode.mapping.local"/></file>
+ <xsl:call-template name="parse.unicode.mapping.languages">
+ <xsl:with-param name="languages" select="$unicode.mapping.languages"/>
+ </xsl:call-template>
+ <file><xsl:value-of select="$unicode.mapping.default"/></file>
+ </xsl:variable>
+
+ <xsl:variable name="unicode.mapping.database" select="document(exsl:node-set($unicode.mapping.sources)/file,document(''))/mapping"/>
+
+ <xsl:template name="parse.unicode.mapping.languages">
+ <xsl:param name="languages"/>
+ <xsl:if test="contains($languages,' ')">
+ <xsl:variable name="unicode.mapping.lang.file" select="concat('unicode.mapping.',substring-before($languages,' '),'.xml')"/>
+ <xsl:if test="document($unicode.mapping.lang.file)">
+ <file><xsl:value-of select="$unicode.mapping.lang.file"/></file>
+ </xsl:if>
+ <xsl:call-template name="parse.unicode.mapping.languages">
+ <xsl:with-param name="languages" select="substring-after($languages,' ')"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="not(string-length($languages)=0)">
+ <xsl:variable name="unicode.mapping.lang.file" select="concat('unicode.mapping.',$languages,'.xml')"/>
+ <xsl:if test="document($unicode.mapping.lang.file)">
+ <file><xsl:value-of select="$unicode.mapping.lang.file"/></file>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="scape">
+ <xsl:param name="string"/>
+ <xsl:if test="not(string-length($string)=0)">
+ <xsl:variable name="char" select="substring($string,1,1)"/>
+ <xsl:variable name="preferred">
+ <xsl:for-each select="$unicode.mapping.database">
+ <preferred><xsl:value-of select="key('character',$char)/preferred"/></preferred>
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- Do not optimize it to variable calculation. I already test it for speed with xsltproc :) -->
+ <xsl:when test="exsl:node-set($preferred)/preferred[not(string-length(.)=0)][1]">
+ <xsl:value-of select="exsl:node-set($preferred)/preferred[not(string-length(.)=0)][1]"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$char"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="substring($string,2)"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="scape-href">
+ <xsl:param name="string"/>
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="scape-verbatim">
+ <xsl:param name="string"/>
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="scape.slash.hyphen">
+ <xsl:param name="string"/>
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="scape-url">
+ <xsl:param name="string"/>
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="example">
+ <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>{</xsl:text>
+ <xsl:value-of select="$latex.example.caption.style"/>
+ <xsl:text>{\caption{</xsl:text>
+ <!-- WARNING: do not scape if title output already scaped by original title parsing -->
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string">
+ <xsl:apply-templates select="title" mode="caption.mode"/>
+ </xsl:with-param>
+ </xsl:call-template>
+ <xsl:text>}</xsl:text>
+ <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>
+
+
+ <!--############################################################################# -->
+ <!-- DOCUMENTATION -->
+ <doc:template name="normalize-scape" xmlns="">
+ <refpurpose> Abstract XSL template. </refpurpose>
+ <refdescription>
+ </refdescription>
+ </doc:template>
+ <!--############################################################################# -->
+
+ <xsl:template match="text()" name="text">
+ <xsl:call-template name="trim-outer">
+ <xsl:with-param name="string">
+ <xsl:choose>
+ <xsl:when test="ancestor::literal|ancestor::filename|ancestor::userinput|ancestor::systemitem|ancestor::prompt|ancestor::email|ancestor::sgmltag">
+ <xsl:call-template name="scape-verbatim">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!--
+ <xsl:template match="abbrev/text()">
+ <xsl:variable name="string">
+ <xsl:call-template name="text()"/>
+ </xsl:variable>
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="to">.\ </xsl:with-param>
+ <xsl:with-param name="from">. </xsl:with-param>
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:template>
+ -->
+
+ <xsl:template match="text()" mode="xref.text">
+ <xsl:call-template name="trim-outer">
+ <xsl:with-param name="string">
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="xref-to">
+ <xsl:call-template name="trim-outer">
+ <xsl:with-param name="string">
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="."/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="text()" mode="latex.verbatim">
+ <!--
+ <xsl:call-template name="trim-outer">
+ <xsl:with-param name="string">
+ -->
+ <xsl:value-of select="."/>
+ <!--
+ </xsl:with-param>
+ </xsl:call-template>
+ -->
+ </xsl:template>
+
+ <!-- this template is noly used by xref.mod.xsl and only when
+ $latex.hyphenation.tttricks != 1. -->
+ <xsl:template match="text()" mode="slash.hyphen">
+ <xsl:call-template name="trim-outer">
+ <xsl:with-param name="string">
+ <xsl:call-template name="scape.slash.hyphen">
+ <xsl:with-param name="string" select="." />
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="trim-outer">
+ <xsl:param name="string"/>
+ <xsl:variable name="trimleft" select="position()=1"/>
+ <xsl:variable name="trimright" select="position()=last()"/>
+ <xsl:choose>
+ <xsl:when test="$trimleft and not($trimright)">
+ <xsl:value-of select="substring-before(normalize-space(concat($string,'$$')),'$$')"/>
+ </xsl:when>
+ <xsl:when test="$trimright and not($trimleft)">
+ <xsl:value-of select="substring-after(normalize-space(concat('$$',$string)),'$$')"/>
+ </xsl:when>
+ <xsl:when test="$trimleft and $trimright">
+ <xsl:value-of select="normalize-space($string)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="scape.slash.hyphen">
+ <xsl:param name="string" />
+ <xsl:choose>
+ <xsl:when test="contains($string,'://')">
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="to">/\dbz{}</xsl:with-param>
+ <xsl:with-param name="from">/</xsl:with-param>
+ <xsl:with-param name="string">
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="to">.\dbz{}</xsl:with-param>
+ <xsl:with-param name="from">.</xsl:with-param>
+ <xsl:with-param name="string">
+ <xsl:value-of select="substring-before($string,'://')"/>
+ <xsl:value-of select="'://'"/>
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="substring-after($string,'://')"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="to">/\dbz{}</xsl:with-param>
+ <xsl:with-param name="from">/</xsl:with-param>
+ <xsl:with-param name="string">
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="to">.\dbz{}</xsl:with-param>
+ <xsl:with-param name="from">.</xsl:with-param>
+ <xsl:with-param name="string">
+ <xsl:call-template name="scape">
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="normalize-scape" >
+ <xsl:param name="string"/>
+ <xsl:variable name="result">
+ <xsl:call-template name="scape"><xsl:with-param name="string" select="$string"/></xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of select="normalize-space($result)"/>
+ </xsl:template>
+
+
+ <doc:template name="scape-optionalarg" xmlns="">
+ <refpurpose> Escape the ] character in LaTeX optional arguments (experimental) </refpurpose>
+ <refdescription>
+ </refdescription>
+ </doc:template>
+ <xsl:template name="scape-optionalarg" >
+ <xsl:param name="string"/>
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="to">{\rbrack}</xsl:with-param>
+ <xsl:with-param name="from">]</xsl:with-param>
+ <xsl:with-param name="string" select="$string"/>
+ </xsl:call-template>
+ </xsl:template>
+
+
+
+
+ <xsl:template name="string-replace">
+ <xsl:param name="string"/>
+ <xsl:param name="from"/>
+ <xsl:param name="to"/>
+
+ <xsl:choose>
+ <xsl:when test="contains($string, $from)">
+
+ <xsl:variable name="before" select="substring-before($string, $from)"/>
+ <xsl:variable name="after" select="substring-after($string, $from)"/>
+ <xsl:variable name="prefix" select="concat($before, $to)"/>
+
+ <xsl:value-of select="$before"/>
+ <xsl:value-of select="$to"/>
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="string" select="$after"/>
+ <xsl:with-param name="from" select="$from"/>
+ <xsl:with-param name="to" select="$to"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+
+
+
+ <!--
+ (c) David Carlisle
+ replace all occurences of the character(s) `from'
+ by the string `to' in the string `string'.
+ <xsl:template name="string-replace" >
+ <xsl:param name="string"/>
+ <xsl:param name="from"/>
+ <xsl:param name="to"/>
+ <xsl:choose>
+ <xsl:when test="contains($string,$from)">
+ <xsl:value-of select="substring-before($string,$from)"/>
+ <xsl:value-of select="$to"/>
+ <xsl:call-template name="string-replace">
+ <xsl:with-param name="string" select="substring-after($string,$from)"/>
+ <xsl:with-param name="from" select="$from"/>
+ <xsl:with-param name="to" select="$to"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$string"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ -->
+
+</xsl:stylesheet>
diff --git a/docs/xslt/table.mod.xsl b/docs/xslt/table.mod.xsl
new file mode 100644
index 0000000000..b20752d91d
--- /dev/null
+++ b/docs/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>
diff --git a/docs/xslt/unicode.mapping.dtd b/docs/xslt/unicode.mapping.dtd
new file mode 100644
index 0000000000..d2b6b3db3a
--- /dev/null
+++ b/docs/xslt/unicode.mapping.dtd
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- $Id: unicode.mapping.dtd,v 1.1 2003/12/05 06:53:48 ab Exp $ -->
+<!-- DTD for XML with mapping Unicode entities to LaTeX commands -->
+<!-- Author: Vitaly Ostanin <vyt@altlinux.ru> -->
+
+<!ELEMENT mapping (character+)>
+
+<!ELEMENT character (unicode, latex?, mathlatex?, preferred)>
+
+<!ELEMENT unicode (#PCDATA)>
+
+<!ELEMENT latex (#PCDATA)>
+
+<!ELEMENT mathlatex (#PCDATA)>
+
+<!ELEMENT preferred (#PCDATA)>
diff --git a/docs/xslt/unicode.mapping.xml b/docs/xslt/unicode.mapping.xml
new file mode 100644
index 0000000000..06866efd53
--- /dev/null
+++ b/docs/xslt/unicode.mapping.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!-- $Id: unicode.mapping.xml,v 1.1 2003/12/05 06:53:48 ab Exp $ -->
+<!DOCTYPE mapping SYSTEM "unicode.mapping.dtd">
+<mapping>
+ <character>
+ <unicode>&lt;</unicode>
+ <latex>\guilsinglleft{}</latex>
+ <preferred>\guilsinglleft{}</preferred>
+ </character>
+ <character>
+ <unicode>></unicode>
+ <latex>\guilsinglright{}</latex>
+ <preferred>\guilsinglright{}</preferred>
+ </character>
+ <character>
+ <unicode>#</unicode>
+ <latex>\#</latex>
+ <preferred>\#</preferred>
+ </character>
+ <character>
+ <unicode>$</unicode>
+ <latex>\textdollar{}</latex>
+ <mathlatex>\$</mathlatex>
+ <preferred>\textdollar{}</preferred>
+ </character>
+ <character>
+ <unicode>%</unicode>
+ <latex>\%</latex>
+ <preferred>\%</preferred>
+ </character>
+ <character>
+ <unicode>&amp;</unicode>
+ <latex>\&amp;</latex>
+ <preferred>\&amp;</preferred>
+ </character>
+ <character>
+ <unicode>~</unicode>
+ <latex>\textasciitilde{}</latex>
+ <preferred>\textasciitilde{}</preferred>
+ </character>
+ <character>
+ <unicode>_</unicode>
+ <latex>\_</latex>
+ <preferred>\_</preferred>
+ </character>
+ <character>
+ <unicode>^</unicode>
+ <latex>\^{}</latex>
+ <preferred>\^{}</preferred>
+ </character>
+ <character>
+ <unicode>\</unicode>
+ <latex>\textbackslash{}</latex>
+ <mathlatex>\backslash </mathlatex>
+ <preferred>\textbackslash{}</preferred>
+ </character>
+ <character>
+ <unicode>{</unicode>
+ <latex>\{</latex>
+ <preferred>\{</preferred>
+ </character>
+ <character>
+ <unicode>}</unicode>
+ <latex>\}</latex>
+ <preferred>\}</preferred>
+ </character>
+ <character>
+ <unicode>|</unicode>
+ <latex>$\vert$</latex>
+ <preferred>$\vert$</preferred>
+ </character>
+</mapping>