summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-05-20 21:38:45 +0000
committerKarl Berry <karl@freefriends.org>2020-05-20 21:38:45 +0000
commit77312c5ce1f7c7c47b461a685daf05c00eb4bd9b (patch)
treec97f7cde517bce2424ef45e11e985198256479db /Master/texmf-dist/doc
parentea33ad37b4a5263120f90edc88a9a0aeb9714d11 (diff)
classpack (20may20)
git-svn-id: svn://tug.org/texlive/trunk@55218 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r--Master/texmf-dist/doc/support/classpack/MANIFEST17
-rw-r--r--Master/texmf-dist/doc/support/classpack/README129
-rw-r--r--Master/texmf-dist/doc/support/classpack/README.md206
-rw-r--r--Master/texmf-dist/doc/support/classpack/VERSION1
-rw-r--r--Master/texmf-dist/doc/support/classpack/classpack.pdfbin310003 -> 148774 bytes
-rw-r--r--Master/texmf-dist/doc/support/classpack/db2bibtex.xsl592
-rw-r--r--Master/texmf-dist/doc/support/classpack/db2dtx.xsl5378
-rw-r--r--Master/texmf-dist/doc/support/classpack/db2plaintext.xsl513
-rw-r--r--Master/texmf-dist/doc/support/classpack/decommentbbl.awk37
-rw-r--r--Master/texmf-dist/doc/support/classpack/doctexbook.dtd63
-rw-r--r--Master/texmf-dist/doc/support/classpack/getgis.sh24
-rw-r--r--Master/texmf-dist/doc/support/classpack/lppl.xml541
-rw-r--r--Master/texmf-dist/doc/support/classpack/prepost.xml648
-rw-r--r--Master/texmf-dist/doc/support/classpack/readme.xml166
-rw-r--r--Master/texmf-dist/doc/support/classpack/test.sh4
15 files changed, 210 insertions, 8109 deletions
diff --git a/Master/texmf-dist/doc/support/classpack/MANIFEST b/Master/texmf-dist/doc/support/classpack/MANIFEST
index 20b8b2d1530..964598d8866 100644
--- a/Master/texmf-dist/doc/support/classpack/MANIFEST
+++ b/Master/texmf-dist/doc/support/classpack/MANIFEST
@@ -1,17 +1,6 @@
-README
-MANIFEST
classpack.dtx
classpack.ins
classpack.pdf
-classpack.sty
-doctexbook.dtd
-getgis.sh
-test.sh
-../db2dtx.xsl
-../db2bibtex.xsl
-../db2plaintext.xsl
-../decommentbbl.awk
-doctexbook.dtd
-lppl.xml
-../prepost.xml
-../readme.xml
+MANIFEST
+README.md
+VERSION
diff --git a/Master/texmf-dist/doc/support/classpack/README b/Master/texmf-dist/doc/support/classpack/README
deleted file mode 100644
index 99d3d81e456..00000000000
--- a/Master/texmf-dist/doc/support/classpack/README
+++ /dev/null
@@ -1,129 +0,0 @@
-README
-This is the README file for the classpack package.
-1 Summary
-LaTeX document classes and packages are normally created, maintained,
-and distributed in .dtx format using the ltxdoc class, which provides
-facilities for modular or fragmentary coding combined with interleaved
-documentation. However, the accurate construction of these files is
-technically challenging.
-ClassPack allows a developer to create an XML document containing user
-documentation and annotated code, based on the DocBook vocabulary (with
-some minor abuses). An XSLT2 script then generates the .dtx and .ins
-files, ensuring that all the relevant pieces are emitted in the correct
-order and in the correct syntax.
-This is experimental software, and is incomplete. It has been
-successfully used in-house by the author since 2008 for several
-institutional and commercial packages and classes. There are some known
-deficiencies which remain to be corrected, and some legacy code
-(originally included for one specific package) which needs to be removed
-to an external file.
-A paper describing the system has been accepted for the Balisage markup
-conference 2013 in Montréal.
-
-2 Normal installation
-This package is distributed as a .tds.zip file (TDS is the TeX Directory
-Structure, the standard layout for a modern TeX installation). Install
-it on any personal TDS-compliant TeX system by unzipping it into your
-personal TeX directory (folder). This will put all the files into the
-right places, so you can start using them immediately.
-If you haven't yet created a personal TeX directory, see below for
-details of what one is, and how to create it.
-On a shared (multiuser) system like a server, unzip it into the
-$TEXMFLOCAL directory instead (see below), and run your TeX
-directory-indexing program (eg texhash, mktexlsr, Update FNDB, etc) so
-that everyone can use it.
-If you are using an old non-TDS-compliant system, see below under Manual
-Installation.
-2.1 Your personal TeX directory
-This is a directory (folder) on single-user systems like desktops and
-laptops where you put all your local manual modifications, updates, and
-additions such as classes, packages, and fonts. The name and location
-are fixed:
- Apple Mac OS X
- ~/Library/texmf
- Unix and GNU/Linux
- ~/texmf
- MS-Windows 95/XP
- C:\texmf
- MS-Windows 2007 and above
- Computer\System\YOURNAME\texmf
-Create that folder if it does not already exist.
- WARNING: If you are a Windows user running MiKTeX
- !
- ! When you create the folder, you must add it to MiKTeX's list of
- ! supported folders. Run the MiKTeX Maintenance/Settings program,
- ! select the Roots tab, and add the folder. You only have to do this
- ! once.
- !
- ! Each time you add or remove software in your personal TeX folder,
- ! you MUST also click on the Update FNDB button in the General tab.
-
-Unix (Mac and GNU/Linux) users do not need to (indeed, should not) run
-their filename database indexer (mktexlsr or texhash) for files put in
-your personal TeX directory.
-2.2 Installation on shared systems
-On multi-user systems (Unix-based), identify the shared local directory
-tree with the command
- kpsewhich -expand-var '$TEXMFLOCAL'
-
-This will give you the location of the shared texmf directory into which
-you must install these files.
-Do not forget to run the texhash or mktexlsr (filename indexer) program
-after installation, otherwise the files will not be found by LaTeX and
-nothing will work!
-
-3 Manual installation (non-TDS systems)
-To install this software manually, unzip the zip file into a temporary
-directory and move the classpack.sty file from the tex/latex/classpack
-directory to a location (directory/folder) where LaTeX will find it on
-your system. This referred to in some documentation as "the TEXINPUTS
-directory", although it may be called something else on your system.
-IT IS YOUR RESPONSIBILITY TO KNOW WHERE THIS LOCATION IS. See the
-question in the TeX FAQ at
-http://www.tex.ac.uk/cgi-bin/texfaq2html?label=inst-wlcf for more
-information. If you do not know, or cannot find it, or do not have
-access to it, your TeX system may be out of date need replacing.
-3.1 Last resort
-In an emergency, and as a last resort on unmanageable systems, it is
-possible simply to put the classpack.sty file in your current working
-directory (the same folder as your .tex file[s]).
-While this may work, it is not supported, and may lead to other
-resources (packages, fonts, etc) not being found.
-
-4 Usage
-Make this the first line of your LaTeX document:
- \usepackage[options]{classpack}
-
-Read the documentation for the options available. The documentation is
-distributed as a PDF document in the zip file. You can also regenerate
-it by typesetting the classpack.dtx file with LaTeX (and BiBTeX and
-makeindex) in the normal way.
-
-5 Bugs and TODO
-No outstanding reported bugs at the time of this version, but there are
-many facilities and features unimplemented, and the documentation is
-incomplete.
-
-6 Copyright
-The following statement is included in the source code:
-% Extracted from classpack.xml
-% classpack.sty is copyright © 2012-2013 by Peter Flynn <peter@silmaril.ie>
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either
-% version 1.3 of this license or (at your option) any later
-% version. The latest version of this license is in:
-%
-% http://www.latex-project.org/lppl.txt
-%
-% and version 1.3 or later is part of all distributions of
-% LaTeX version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The current maintainer of this work is Peter Flynn <peter@silmaril.ie>
-%
-% This work consists of the files classpack.dtx and classpack.ins,
-% the derived file classpack.sty, and any ancillary files listed
-% in the MANIFEST.
-
diff --git a/Master/texmf-dist/doc/support/classpack/README.md b/Master/texmf-dist/doc/support/classpack/README.md
new file mode 100644
index 00000000000..98aca922ca5
--- /dev/null
+++ b/Master/texmf-dist/doc/support/classpack/README.md
@@ -0,0 +1,206 @@
+
+[//]: # (classpack LaTeX package)
+
+# classpack
+
+This is the README.md file for the classpack LaTeX package v1.19 (2020-05-19)
+generated by ClassPack v.1.19 (2020-05-19) on 20 May 2020 at 14:32:36
+
+## Summary
+
+LaTeX document classes and packages are conventionally created,
+maintained, and distributed in DocTeX (`.dtx`) format using the _ltxdoc_
+class, which provides for interleaved code and documentation (“literate
+programming”). However, the accurate construction of these files is
+technically challenging, and editing them is tedious and error-prone.
+
+_ClassPack_ allows a developer to create a _DocBook5_ XML document for a
+class or package, containing the documentation and annotated code, and
+it provides XSLT3 scripts to generate the `.dtx`, `.ins`, and other
+files, which can be combined into a zip file suitable for submission to
+CTAN.
+
+_This package __classpack__ contains the small typographic adjustments
+and utilities needed to re-typeset the documentation of classes and
+packages developed using __classpack-dev__. It is not used for any other
+purpose and is not required for using any other class or package, only
+for the documentation of __ClassPack__–developed classes and packages._
+
+**You do not need to install the upcoming development package
+**_classpack-dev_** unless you want to develop classes or packages by
+using **_ClassPack_** yourself.**
+
+_ClassPack_ is a work-in-progress. A paper describing an earlier version
+was presented at the Balisage markup conference in Montréal (Flynn,
+2013).
+
+
+## Automated installation
+
+If this package is distributed from CTAN, it should be in a zip file
+which allows it to be installed automatically by the TeX Live Manager
+(tlmgr) and similar automated installers.
+
+If you are using automated LaTeX package installation, no further action
+is required: the package will be installed the first time you use it in
+a LaTeX document.
+
+If you are using the TeX Live Manager (_tlmgr_) program manually, you
+can install this package with the command:
+
+ $ tlmgr install classpack
+
+
+## TDS installation
+
+This package is also available as a TeX Directory System (TDS) zip file
+(`.tds.zip`). This is the standard directory layout for a modern TeX
+installation which enables the package to be unzipped directly into your
+Personal TeX Directory without the need to use _tlmgr_. If you haven’t
+yet created a Personal TeX Directory, see below for details of what one
+is, and how to create it.
+ * You can install this package on any TDS-compliant personal system
+(laptop, desktop, workstation, table, smartphone, PDA, etc) by unzipping
+it straight into your Personal TeX Directory. This will put all the
+files into the right places, so you can start using them immediately.
+ * On a shared (multiuser) system like a server, the administrator can
+unzip it into the `$TEXMFLOCAL` directory instead (see below), and run
+your TeX directory-indexing program (eg _texhash_, _mktexlsr_, etc) so
+that everyone can use it.
+ * If you are using an old non-TDS-compliant system, see below under Manual
+Installation.
+
+### Your Personal TeX Directory
+
+This is a directory (folder) where you should put all local manual
+modifications (updates, additions such as new or updated classes,
+packages, and fonts) that are _not_ handled automatically by _tlmgr_.
+The name and location are fixed (for all practical purposes):
+ * Apple Mac OS X
+
+ ~/Library/texmf
+ * Unix and GNU/Linux
+
+ ~/texmf
+ * MS-Windows 95/XP/NT
+
+ C:\texmf
+ * MS-Windows 2007 and above
+
+ Computer\System\YOURNAME\texmf
+
+Create that folder now if it does not already exist. Put (or unzip) all
+additions to your system that are _not_ handled by _tlmgr_ into this
+directory, following _exactly_ the subdirectory structure that is used
+in your main TeX distribution (unzipping a TDS file does this for you).
+This is what enables LaTeX to find stuff automatically.
+
+
+> #### If you are a Windows user running _MiKTeX_
+> When you create the folder for your Personal TeX Directory, you MUST add it to _MiKTeX_ ’s list of supported folders. Run the _MiKTeX Maintenance/Settings_ program, select the `Roots` tab, and add the folder. You only have to do this once.
+> > Each time you add or remove software in your Personal TeX Directory, you MUST then click on the `Update FNDB` button in the `General` tab of the _MiKTeX Maintenance/Settings_ program, otherwise _MiKTeX_ will not find them and nothing will work!
+>
+
+Unix (Mac and GNU/Linux) users do not need to (indeed, should not) run
+their filename database indexer program (_mktexlsr_ or _texhash_) for
+files put into a personal TeX directory.
+
+
+## Installation on shared systems
+
+On multi-user systems (Unix-based), identify the shared local directory
+tree with the command
+
+ kpsewhich -expand-var '$TEXMFLOCAL'
+
+This will give you the location of the shared `texmf` directory into
+which you must unzip these files.
+
+Do not forget to run your local TeX filename database indexer program
+(_texhash_ or _mktexlsr_) after installation, otherwise the files will
+not be found by LaTeX and nothing will work!
+
+
+## Manual installation (non-TDS systems)
+
+To install this software manually, download and unzip the _non-_TDS zip
+file into a temporary directory and move the class and/or package
+file[s] and other files to the proper locations where LaTeX will find
+them on your system. This is referred to in some documentation as “the
+`TEXINPUTS` directory”, although it may be called something else on your
+system.
+
+_It is your responsibility to know where this location is._ See the
+question in the TeX FAQ at
+http://www.tex.ac.uk/cgi-bin/texfaq2html?label=inst-wlcf for more
+information. If you do not know, or cannot find it, or do not have
+access to it, your TeX system may be out of date and may need replacing.
+
+
+
+## Online systems and “last resort” systems
+
+Some online LaTeX systems use CTAN, so a package from there should be
+available on demand. For other online LaTeX systems where you do not
+have access to the file system, unzip the _non-_TDS zip file into a
+temporary directory and upload the files to the online system. Follow
+their instructions for where to put them.
+
+In an emergency, or as a last resort on unmanageable systems, it is
+possible simply to put the class and/or package file[s] into your
+current working directory (the same folder as your `.tex` file[s]).
+
+While this may work, it is not supported, and may lead to other
+resources (packages, fonts, images etc) not being found.
+
+
+## Usage
+
+Include the line shown below in the Preamble of your LaTeX document; a
+`\documentclass` line should be at the top; a `\usepackage` command
+normally goes anywhere in the Preamble:
+
+ \usepackage[options]{classpack}
+
+(similarly for other classes or packages if more than one is supplied
+with this package). Read the documentation for the options available, if
+any. The documentation is distributed as a PDF document in the zip file.
+You can also regenerate it by typesetting the `classpack.dtx` file with
+`xelatex` (and `biber` and _makeindex_) in the normal way.
+
+
+## Bugs and TODO
+
+No outstanding reported bugs at the time of this version.
+
+For TODO items, see the PDF documentation.
+
+
+## Copyright
+
+The following statement is included in the source code:
+
+ Transformed from classpack.xml by ClassPack db2dtx.xsl
+ version 1.19 (2020-05-19) on Wednesday 20 May 2020 at 14:32:36
+
+ classpack.sty is copyright © 2012-2020 by Peter Flynn <peter@silmaril.ie>
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either
+ version 1.3 of this license or (at your option) any later
+ version. The latest version of this license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status ‘maintained’.
+
+ The current maintainer of this work is Peter Flynn <peter@silmaril.ie>
+
+ This work consists of the files classpack.dtx and classpack.ins,
+ the derived file ,
+ and any other ancillary files listed in the MANIFEST.
+
+
diff --git a/Master/texmf-dist/doc/support/classpack/VERSION b/Master/texmf-dist/doc/support/classpack/VERSION
new file mode 100644
index 00000000000..d58f8224aee
--- /dev/null
+++ b/Master/texmf-dist/doc/support/classpack/VERSION
@@ -0,0 +1 @@
+Date of most recent change is 2020-05-19
diff --git a/Master/texmf-dist/doc/support/classpack/classpack.pdf b/Master/texmf-dist/doc/support/classpack/classpack.pdf
index 881096d5d53..65f81b5e364 100644
--- a/Master/texmf-dist/doc/support/classpack/classpack.pdf
+++ b/Master/texmf-dist/doc/support/classpack/classpack.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/support/classpack/db2bibtex.xsl b/Master/texmf-dist/doc/support/classpack/db2bibtex.xsl
deleted file mode 100644
index 0622766da0f..00000000000
--- a/Master/texmf-dist/doc/support/classpack/db2bibtex.xsl
+++ /dev/null
@@ -1,592 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:db="http://docbook.org/ns/docbook"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="2.0">
-
- <xsl:template match="db:bibliography">
- <xsl:if test="title">
- <xsl:text>% \renewcommand{\bibname}{</xsl:text>
- <xsl:value-of select="title"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:if>
- <xsl:if test="count(//db:biblioref) +
- count(//db:citetitle[@linkend]) +
- count(//db:blockquote[@linkend])=0">
- <xsl:text>% \nocite{*}&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \clearpage
-% \raggedright
-% \bibliography{</xsl:text>
- <xsl:value-of select="/db:book/@xml:id"/>
- <xsl:text>}
-% \bibliographystyle{</xsl:text>
- <xsl:value-of select="@label"/>
- <xsl:text>}
-% \begin{VerbatimOut}{</xsl:text>
- <xsl:choose>
- <xsl:when test="@xlink:href">
- <xsl:value-of select="@xlink:href"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/db:book/@xml:id"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>.bib}
-%&lt;*ignore>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>%&lt;/ignore>
-% \end{VerbatimOut}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:biblioentry">
- <xsl:text>@</xsl:text>
- <xsl:choose>
- <xsl:when test="@xreflabel='standard' and @role">
- <xsl:text>techreport</xsl:text>
- </xsl:when>
- <xsl:when test="@xreflabel='patent'">
- <xsl:text>misc</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@xreflabel"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:apply-templates/>
- <xsl:if test="@xreflabel='standard' and @role">
- <xsl:text>,&#xa;publisher &#x9; = {</xsl:text>
- <xsl:value-of select="@role"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:if test="@xreflabel='inproceedings'
- and not(descendant::db:publisher)
- and not(descendant::db:publishername)
- and not(descendant::db:orgname)
- and not(descendant::db:volumenum)
- and not(descendant::db:issuenum)">
- <xsl:text>,&#xa;publisher &#x9; = {Unpublished}</xsl:text>
- </xsl:if>
- <xsl:if test="not(descendant::db:date) and descendant::db:confdates">
- <xsl:for-each select="descendant::db:confdates[1]">
- <xsl:call-template name="dodate"/>
- </xsl:for-each>
- </xsl:if>
- <xsl:text>&#xa;}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:biblioentry/db:authorgroup">
- <xsl:apply-templates/>
- <xsl:text>,&#xa;shortauthor &#x9; = {</xsl:text>
- <xsl:value-of select="db:author[1]/db:personname/db:surname |
- db:author[1]/db:orgname |
- db:editor[1]/db:personname/db:surname"/>
- <xsl:choose>
- <xsl:when test="count(db:author)+count(db:editor)=2">
- <xsl:text> \&amp; </xsl:text>
- <xsl:value-of select="db:author[2]/db:personname/db:surname |
- db:author[2]/db:orgname |
- db:editor[2]/db:personname/db:surname"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> \textit{et al.}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!--
- <xsl:if test="db:editor">
- <xsl:text> (Ed</xsl:text>
- <xsl:if test="count(db:editor)>1">
- <xsl:text>s</xsl:text>
- </xsl:if>
- <xsl:text>)</xsl:text>
- </xsl:if>
- -->
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:biblioentry//db:author |
- db:biblioentry//db:editor |
- db:biblioentry//db:authorgroup/db:author |
- db:biblioentry//db:authorgroup/db:editor">
- <xsl:if test="count(preceding-sibling::*[name()=current()/name()])=0">
- <xsl:text>,&#xa;</xsl:text>
- <xsl:value-of select="name()"/>
- <xsl:text> &#x9; = {</xsl:text>
- </xsl:if>
- <xsl:if test="preceding-sibling::*[name()=current()/name()]">
- <xsl:text> and </xsl:text>
- </xsl:if>
- <!-- only one -->
- <xsl:for-each select="db:personname | db:orgname">
- <xsl:if test="db:firstname">
- <xsl:choose>
- <xsl:when test="db:firstname/@role='as-is'">
- <xsl:text>{</xsl:text>
- <xsl:value-of select="db:firstname"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="db:firstname"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <xsl:if test="db:othername">
- <xsl:text> </xsl:text>
- <xsl:value-of select="db:othername"/>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="local-name()='orgname'">
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="contains(db:surname,' ')">
- <xsl:text>{</xsl:text>
- <xsl:value-of select="db:surname"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="db:surname"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="db:honorific">
- <xsl:text> </xsl:text>
- <xsl:value-of select="db:honorific"/>
- </xsl:if>
- </xsl:for-each>
- <xsl:if test="count(following-sibling::*[name()=current()/name()])=0">
- <xsl:text>}</xsl:text>
- <!-- do shortauthor for solo authors/editors here -->
- <xsl:if test="count(../*[name()=current()/name()]) = 1
- and not(parent::db:authorgroup)">
- <xsl:text>,&#xa;short</xsl:text>
- <xsl:value-of select="name()"/>
- <xsl:text> &#x9; = {</xsl:text>
- <xsl:value-of select="db:personname/db:surname | db:orgname"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:biblioentry//db:corpauthor">
- <xsl:if test="count(preceding-sibling::db:author |
- preceding-sibling::db:corpauthor)=0">
- <xsl:text>,&#xa;author &#x9; = {{</xsl:text>
- </xsl:if>
- <xsl:if test="preceding-sibling::db:author |
- preceding-sibling::db:corpauthor">
- <xsl:text> and </xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="@remap">
- <xsl:value-of select="@remap"/>
- </xsl:when>
- <xsl:when test="not(@remap)">
- <xsl:text>{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="count(following-sibling::db:author |
- following-sibling::db:corpauthor)=0">
- <xsl:text>}}</xsl:text>
- <xsl:if test="count(preceding-sibling::db:author |
- preceding-sibling::db:corpauthor)=0">
- <xsl:text>,&#xa;shortauthor &#x9; = {{</xsl:text>
- <xsl:choose>
- <xsl:when test="@remap">
- <xsl:value-of select="@remap"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
- select="translate(normalize-space(.),
- '.,;:-abcdefghijklmnopqrstuvwxyz ','')"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}}</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:biblioset">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="db:biblioentry//db:title">
- <xsl:text>,&#xa;</xsl:text>
- <xsl:choose>
- <!-- if field is hardwired, use it -->
- <xsl:when test="@role">
- <xsl:value-of select="@role"/>
- </xsl:when>
- <!-- article titles are inside the biblioset -->
- <xsl:when test="parent::db:biblioset">
- <xsl:text>title</xsl:text>
- </xsl:when>
- <!-- articles use this for the journal because the article
- title was wrapped in a biblioset -->
- <xsl:when test="parent::db:biblioentry/@xreflabel='article'">
- <xsl:text>journal</xsl:text>
- </xsl:when>
- <!-- books and collections and journals use it for the booktitle -->
- <xsl:when test="parent::db:biblioentry/@xreflabel='inbook' or
- parent::db:biblioentry/@xreflabel='incollection' or
- parent::db:biblioentry/@xreflabel='inproceedings'">
- <xsl:text>booktitle</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>title</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> &#x9; = {{</xsl:text>
- <xsl:apply-templates/>
- <!-- if there is a matching subtitle, pick the right one -->
- <xsl:for-each select="following-sibling::db:subtitle
- [@role=current()/@role or
- (not(@role) and not(current()/@role))]">
- <xsl:choose>
- <xsl:when test="starts-with(.,'(')">
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>: </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates/>
- </xsl:for-each>
- <xsl:text>}}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:biblioentry//db:subtitle"/>
-
- <xsl:template match="db:biblioid | db:bibliosource |
- db:citebiblioid | db:isbn | db:issn">
- <!-- doi isbn isrn issn libraryofcongress pubsnumber uri other -->
- <xsl:text>,&#xa;</xsl:text>
- <xsl:choose>
- <xsl:when test="@class='uri'">
- <xsl:text>url</xsl:text>
- </xsl:when>
- <xsl:when test="@class='doi'">
- <xsl:value-of select="@class"/>
- </xsl:when>
- <xsl:when test="local-name()='isbn' or
- @class='isbn' or
- ancestor::db:biblioentry/@xreflabel='book'">
- <xsl:text>isbn</xsl:text>
- </xsl:when>
- <xsl:when test="local-name()='issn' or
- @class='issn' or
- ancestor::db:biblioentry/@xreflabel='article'">
- <xsl:text>issn</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>number</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> &#x9; = {</xsl:text>
- <xsl:choose>
- <xsl:when test="@class='other' and @otherclass">
- <xsl:value-of select="@otherclass"/>
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:when test="@class='libraryofcongress'">
- <xsl:text>LoC</xsl:text>
- <xsl:text>: </xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- <xsl:choose>
- <xsl:when test="@YYYY-MM-DD
- and ancestor::db:bibliography/@label='apacite'">
- <xsl:text>,&#xa;lastchecked &#x9; = {</xsl:text>
- <xsl:if test="string-length(@YYYY-MM-DD)>8">
- <xsl:value-of select="substring(@YYYY-MM-DD,9,2)"/>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:if test="string-length(@YYYY-MM-DD)>5">
- <xsl:call-template name="months">
- <xsl:with-param name="month"
- select="number(substring(@YYYY-MM-DD,6,2))"/>
- </xsl:call-template>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:value-of select="substring(@YYYY-MM-DD,1,4)"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:when test="@YYYY-MM-DD and not(ancestor::db:biblioentry//db:date)">
- <xsl:text>,&#xa;year &#x9; = {</xsl:text>
- <xsl:value-of select="substring(@YYYY-MM-DD,1,4)"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="string-length(@YYYY-MM-DD)>5">
- <xsl:text>,&#xa;month &#x9; = {</xsl:text>
- <xsl:call-template name="months">
- <xsl:with-param name="month"
- select="number(substring(@YYYY-MM-DD,6,2))"/>
- </xsl:call-template>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:titleabbrev">
- <xsl:text>,&#xa;shorttitle &#x9; = {{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:bibliocoverage">
- <xsl:text>,&#xa;</xsl:text>
- <xsl:value-of select="@remap"/>
- <xsl:text> &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:seriesvolnums">
- <xsl:text>,&#xa;number &#x9; = {</xsl:text>
- <xsl:if test="@xreflabel">
- <xsl:value-of select="@xreflabel"/>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:collab">
- <xsl:text>,&#xa;note &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:publisher">
- <xsl:choose>
- <xsl:when test="ancestor::db:biblioentry/@xreflabel='misc'">
- <xsl:text>,&#xa;howpublished &#x9; = {</xsl:text>
- <xsl:apply-templates select="db:address/node()"/>
- <xsl:text>: </xsl:text>
- <xsl:apply-templates select="db:publishername/node()"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:publishername">
- <xsl:text>,&#xa;</xsl:text>
- <xsl:choose>
- <xsl:when test="ancestor::db:biblioentry/@xreflabel='techreport' or
- ancestor::db:biblioentry/@xreflabel='standard'">
- <xsl:text>institution</xsl:text>
- </xsl:when>
- <xsl:when test="ancestor::db:biblioentry/@xreflabel='phdthesis' or
- ancestor::db:biblioentry/@xreflabel='mastersthesis'">
- <xsl:text>school</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>publisher</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:confgroup">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="db:conftitle">
- <xsl:text>,&#xa;series &#x9; = {{</xsl:text>
- <xsl:apply-templates/>
- <xsl:if test="../db:confdates">
- <xsl:text> (</xsl:text>
- <xsl:apply-templates select="../db:confdates/node()"/>
- <xsl:text>)</xsl:text>
- </xsl:if>
- <xsl:text>}}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:confsponsor">
- <xsl:text>,&#xa;organization &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:confgroup/db:address">
- <xsl:text>,&#xa;address &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:confdates"/>
-
- <xsl:template match="db:confnum">
- <xsl:text>,&#xa;series &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:date">
- <xsl:call-template name="dodate"/>
- </xsl:template>
-
- <xsl:template name="dodate">
- <xsl:text>,&#xa;year &#x9; = {</xsl:text>
- <xsl:value-of select="substring(@YYYY-MM-DD,1,4)"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="string-length(@YYYY-MM-DD)&gt;=7">
- <xsl:text>,&#xa;month &#x9; = {</xsl:text>
- <xsl:variable name="month">
- <xsl:call-template name="months">
- <xsl:with-param name="month"
- select="number(substring(@YYYY-MM-DD,6,2))"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="substring($month,1,3)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:if test="ancestor::db:biblioentry/@xreflabel='pc'">
- <xsl:text>,&#xa;howpublished &#x9; = {Pers.\ Comm.}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:productnumber">
- <xsl:text>,&#xa;number &#x9; = {</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:pagenums|db:artpagenums">
- <xsl:text>,&#xa;pages &#x9; = {</xsl:text>
- <xsl:value-of select="translate(.,'–','-')"/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:volumenum">
- <xsl:text>,&#xa;volume &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:releaseinfo">
- <xsl:text>,&#xa;url &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:issuenum | db:invpartnumber">
- <xsl:text>,&#xa;number &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:publisher/db:address">
- <xsl:text>,&#xa;</xsl:text>
- <xsl:choose>
- <xsl:when test="starts-with(normalize-space(.),'http://') or
- starts-with(normalize-space(.),'ftp://') or
- starts-with(normalize-space(.),'mailto:') or
- starts-with(normalize-space(.),'https://')">
- <xsl:text>url</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>address</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> &#x9; = {</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:edition">
- <xsl:text>,&#xa;edition &#x9; = {</xsl:text>
- <xsl:choose>
- <xsl:when test="not(number(.))">
- <xsl:apply-templates/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- <xsl:choose>
- <xsl:when test="substring(.,string-length(.))='1' and
- substring(.,string-length(.)-1)!='11'">
- <xsl:text>st</xsl:text>
- </xsl:when>
- <xsl:when test="substring(.,string-length(.))='2' and
- substring(.,string-length(.)-1)!='12'">
- <xsl:text>nd</xsl:text>
- </xsl:when>
- <xsl:when test="substring(.,string-length(.))='3' and
- substring(.,string-length(.)-1)!='13'">
- <xsl:text>rd</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>th</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template name="months">
- <xsl:param name="month"/>
- <xsl:choose>
- <xsl:when test="$month=1">
- <xsl:text>January</xsl:text>
- </xsl:when>
- <xsl:when test="$month=2">
- <xsl:text>February</xsl:text>
- </xsl:when>
- <xsl:when test="$month=3">
- <xsl:text>March</xsl:text>
- </xsl:when>
- <xsl:when test="$month=4">
- <xsl:text>April</xsl:text>
- </xsl:when>
- <xsl:when test="$month=5">
- <xsl:text>May</xsl:text>
- </xsl:when>
- <xsl:when test="$month=6">
- <xsl:text>June</xsl:text>
- </xsl:when>
- <xsl:when test="$month=7">
- <xsl:text>July</xsl:text>
- </xsl:when>
- <xsl:when test="$month=8">
- <xsl:text>August</xsl:text>
- </xsl:when>
- <xsl:when test="$month=9">
- <xsl:text>September</xsl:text>
- </xsl:when>
- <xsl:when test="$month=10">
- <xsl:text>October</xsl:text>
- </xsl:when>
- <xsl:when test="$month=11">
- <xsl:text>November</xsl:text>
- </xsl:when>
- <xsl:when test="$month=12">
- <xsl:text>December</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>Month must be a number from 1 to 12 in </xsl:text>
- <xsl:value-of select="name()"/>
- </xsl:message>
- <xsl:text>NaN</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/Master/texmf-dist/doc/support/classpack/db2dtx.xsl b/Master/texmf-dist/doc/support/classpack/db2dtx.xsl
deleted file mode 100644
index e74321cb7cd..00000000000
--- a/Master/texmf-dist/doc/support/classpack/db2dtx.xsl
+++ /dev/null
@@ -1,5378 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:db="http://docbook.org/ns/docbook"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="2.0">
-
- <!-- db2dtx.xsl
- XSL script to transform DocBook5 documentation and code of a
- LaTeX package or class file into a DocTeX (.dtx and .ins)
- distribution.
- Full processing command chain is output to file 'build'
- Note this requires an XSLT2 processor (eg Saxon9 or above)
- -->
-
- <xsl:variable name="thisversion">
- <xsl:text>15.02 (autopackage with multifile)</xsl:text>
- </xsl:variable>
-
- <xsl:output method="text"/>
- <xsl:output method="text" name="textFormat"/>
-
- <xsl:include href="db2bibtex.xsl"/>
- <xsl:include href="db2plaintext.xsl"/>
-
- <!-- path to the XSLT processor (eg Saxon) -->
- <xsl:param name="processor"/>
- <!-- path to the classpack directory -->
- <xsl:param name="cpdir"/>
- <!-- path to the project's app dev directory -->
- <xsl:param name="appdir"/>
-
- <xsl:variable name="prepost"
- select="document(concat($cpdir,'/prepost.xml'))/db:refsection"/>
- <xsl:variable name="langs"
- select="document(concat($cpdir,'/languages.xml'))/languages"/>
- <xsl:variable name="readme"
- select="document(concat($cpdir,'/readme.xml'))/db:chapter"/>
- <xsl:variable name="licence"
- select="document(concat($appdir,'/',/db:book/@audience,'.xml'))/db:chapter"/>
- <xsl:variable name="thisdoc" select="/"/>
-
- <xsl:variable name="maxcodelen">
- <xsl:text>40</xsl:text>
- </xsl:variable>
-
- <xsl:variable name="personaltree">
- <xsl:text>~/texmf</xsl:text>
- </xsl:variable>
-
- <xsl:variable name="name" select="/db:book/@xml:id"/>
- <xsl:variable name="doctype" select="/db:book/@arch"/>
- <xsl:variable name="version" select="/db:book/@version"/>
- <xsl:variable name="revision" select="/db:book/@revision"/>
- <xsl:variable name="filetype" select="/db:book/@userlevel"/>
-
- <xsl:variable name="latestrevhist"
- select="/db:book/db:info/db:revhistory/db:revision
- [not(../db:revision/@version > @version)]/@version"/>
-
- <xsl:template match="/">
- <xsl:message>
- <xsl:text>This is DB2DTX, Version </xsl:text>
- <xsl:value-of select="$thisversion"/>
- <xsl:text>.</xsl:text>
- </xsl:message>
- <!-- don't do anything if the version numbers don't accord -->
- <xsl:choose>
- <xsl:when test="concat($version,'.',$revision) != $latestrevhist">
- <xsl:message>
- <xsl:text>! Declared version </xsl:text>
- <xsl:value-of select="$version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$revision"/>
- <xsl:text> does not match latest revision history </xsl:text>
- <xsl:value-of select="$latestrevhist"/>
- <xsl:text>&#xa; I'm sorry, I can't go on until you fix this.</xsl:text>
- </xsl:message>
- </xsl:when>
- <xsl:otherwise>
- <!-- output the .ins file first -->
- <xsl:apply-templates select="/db:book/db:info" mode="ins"/>
- <!-- then the build file -->
- <xsl:call-template name="build"/>
- <!-- then the README -->
- <xsl:call-template name="readme"/>
- <!-- and then the MANIFEST -->
- <xsl:call-template name="manifest"/>
- <!-- and finally start creating the .dtx file -->
- <xsl:text>% \iffalse meta-comment
-%
-</xsl:text>
- <xsl:call-template name="copyright-statement">
- <xsl:with-param name="ftype">
- <xsl:text>dtx</xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>%
-% \fi
-% \iffalse&#xa;</xsl:text>
- <!-- special exception for classes: needs \ProvidesFile -->
- <xsl:if test="$doctype='class'">
- <xsl:text>%&lt;*driver>
-\ProvidesFile{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx}
-%&lt;/driver>
-</xsl:text>
- </xsl:if>
- <!-- prefix with <class> or <package> as appropriate -->
- <xsl:text>%&lt;</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>>\NeedsTeXFormat{</xsl:text>
- <xsl:value-of select="/db:book/@conformance"/>
- <xsl:text>}[</xsl:text>
- <xsl:value-of select="translate(/db:book/@condition,'-','/')"/>
- <xsl:text>]
-%&lt;</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>>\Provides</xsl:text>
- <xsl:value-of select="translate(substring($doctype,1,1),
- 'abcdefghijklmn0pqrstuvwxyz',
- 'ABCDEFGHIJKLMN0PQRSTUVWXYZ')"/>
- <xsl:value-of select="substring($doctype,2)"/>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>}</xsl:text>
- <!-- used to be a newline and repeat tag here for classes -->
- <xsl:text>[</xsl:text>
- <!-- use the latest revision date as the distro date -->
- <xsl:for-each select="//db:info/db:revhistory/db:revision">
- <xsl:sort select="@version" order="ascending"/>
- <xsl:if test="position()=last()">
- <xsl:value-of
- select="translate(db:date/@conformance,'-','/')"/>
- </xsl:if>
- </xsl:for-each>
- <xsl:text> v</xsl:text>
- <xsl:value-of select="/db:book/@version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="/db:book/@revision"/>
- <xsl:text>&#xa;%&lt;</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>> </xsl:text>
- <xsl:variable name="title">
- <xsl:choose>
- <xsl:when test="//db:info/db:subtitle">
- <xsl:value-of select="normalize-space(//db:info/db:subtitle)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="normalize-space(//db:info/db:title)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:call-template name="delogify">
- <xsl:with-param name="string" select="$title"/>
- </xsl:call-template>
- <!--
- <xsl:text> </xsl:text>
- <xsl:value-of select="$doctype"/>
- -->
- <xsl:text>]&#xa;</xsl:text>
- <!-- now add any packages needed for the class/package (only)
- unless they are to be deferred to a later
- section identified by an ID (in linkend)
- This is done to allow declarations to wait until after options.
- -->
- <xsl:if test="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id=concat($filetype,'packages')]
- [not(@linkend)]
- /db:segmentedlist/db:seglistitem[db:seg!='']">
- <xsl:text>%%
-%% Packages that need to be invoked at the start
-%%&#xa;</xsl:text>
- <xsl:for-each
- select="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id=concat($filetype,'packages')]
- [not(@linkend)]
- /db:segmentedlist/db:seglistitem[db:seg!='']">
- <xsl:call-template name="packages">
- <xsl:with-param name="pkg" select="."/>
- <xsl:with-param name="dest" select="$filetype"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:if>
- <!-- then start on the documentation -->
- <xsl:text>%&lt;*driver>&#xa;</xsl:text>
- <!-- special action to preload xcolor options -->
- <!-- \PassOptionsToPackage{svgnames}{xcolor} -->
- <xsl:text>\PassOptionsToPackage{svgnames}{xcolor}&#xa;</xsl:text>
- <xsl:text>\documentclass</xsl:text>
- <xsl:if test="/db:book/@remap">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="/db:book/@remap"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{ltxdoc}&#xa;</xsl:text>
- <!--
- PACKAGES FOR DOCUMENTATION
-
- Ensure we use all the required packages for documentation
- (this applies in both package and class cases). This invokes
- the pre- and post-commands from prepost.xml -->
- <!-- AUTOPACKAGE: construct a node-set of packages needed -->
- <xsl:variable name="packages">
- <!-- go through every step (package) in the PREPACKAGE spec
- which has a constructorsynopsis element type -->
- <xsl:for-each
- select="$prepost/db:procedure/
- db:step/db:constructorsynopsis">
- <!-- build a node-list of elements in the
- USER DOCUMENTATION, METADATA, or LICENCE
- which match the @condition on the constructorsynopsis -->
- <xsl:variable name="elements"
- select="$thisdoc/db:book/db:part[@xml:id='doc'
- and current()/@condition='']
- |
- $thisdoc/db:book/db:part[@xml:id='doc']/
- descendant::*[name()=current()/@condition]
- |
- $thisdoc/db:book/db:info/
- (db:title|db:author|db:abstract|db:annotation)/
- descendant::*[name()=current()/@condition]
- |
- $licence//descendant::*[name()=current()/@condition]"/>
- <!--
- <xsl:if test="count($elements)>0">
- <xsl:message>
- <xsl:text>Checking for package </xsl:text>
- <xsl:value-of select="parent::db:step/@remap"/>
- <xsl:text>: &#x2329;</xsl:text>
- <xsl:value-of select="@condition"/>
- <xsl:text>&#x232a; has </xsl:text>
- <xsl:value-of select="count($elements)"/>
- <xsl:text> occurrences</xsl:text>
- </xsl:message>
- </xsl:if>
- -->
- <!-- if there are some elements matching, and the package is
- not already explicitly requested or is not blocked -->
- <xsl:if test="count($elements)>0 and
- not($thisdoc//db:constraintdef[@xml:id='docpackages']
- /db:segmentedlist/db:seglistitem
- [db:seg=current()/parent::db:step/@remap]
- [not(@condition='off')])">
- <xsl:choose>
- <!-- if the constructorsynopsis element is empty
- then the package is required unconditionally
- but may be excluded later if another package already
- loads it (specified in @conformance) -->
- <xsl:when test="count(db:methodparam)=0">
- <db:seglistitem role="{@condition} was detected."
- conformance="{@conformance}">
- <db:seg>
- <xsl:if test="parent::db:step/@role">
- <xsl:attribute name="role">
- <xsl:value-of select="parent::db:step/@role"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:value-of select="parent::db:step/@remap"/>
- </db:seg>
- </db:seglistitem>
- </xsl:when>
- <!-- otherwise there are two ways to match: -->
- <xsl:otherwise>
- <xsl:for-each select="db:methodparam">
- <xsl:choose>
- <!-- 1. a parameter giving the attribute,
- with an optional modifier giving a value -->
- <xsl:when
- test="db:parameter and
- $elements[@*[name()=current()/db:parameter]]">
- <xsl:choose>
- <xsl:when test="count(db:modifier)=0">
- <db:seglistitem role="{parent::db:constructorsynopsis/@condition}/@{db:parameter} was detected."
- conformance="{@conformance}">
- <db:seg>
- <xsl:if test="ancestor::db:step/@role">
- <xsl:attribute name="role">
- <xsl:value-of select="ancestor::db:step/@role"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:value-of select="ancestor::db:step/@remap"/>
- </db:seg>
- </db:seglistitem>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if
- test="$elements[@*[name()=current()/db:parameter]
- =current()/db:modifier]">
- <db:seglistitem role="{parent::db:constructorsynopsis/@condition}/@{db:parameter}='{db:modifier}' was detected."
- conformance="{@conformance}">
- <db:seg>
- <xsl:if test="ancestor::db:step/@role">
- <xsl:attribute name="role">
- <xsl:value-of select="ancestor::db:step/@role"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:value-of select="ancestor::db:step/@remap"/>
- </db:seg>
- </db:seglistitem>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- 2. a funcparams giving the IDREF attribute
- with a modifier giving the name of the
- element type that the IDREF points at -->
- <xsl:when
- test="db:funcparams and
- $elements[@*[name()=current()/db:funcparams]]">
- <xsl:variable name="modval" select="db:modifier"/>
- <xsl:variable name="prepstep"
- select="ancestor::db:step"/>
- <xsl:variable name="prepmeth"
- select="."/>
- <!-- enter the document context -->
- <xsl:for-each
- select="$elements/@*[name()=current()/db:funcparams]">
- <xsl:if test="name($thisdoc//*[@xml:id=current()/.])=
- $modval">
- <db:seglistitem role="{$prepstep/db:constructorsynopsis/@condition}/@{$prepmeth/db:funcparams}='{$prepmeth/db:modifier}' was detected."
- conformance="{$prepstep/db:constructorsynopsis/@conformance}">
- <db:seg>
- <xsl:if test="$prepstep/@role">
- <xsl:attribute name="role">
- <xsl:value-of select="$prepstep/@role"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:value-of select="$prepstep/@remap"/>
- </db:seg>
- </db:seglistitem>
- </xsl:if>
- </xsl:for-each>
- </xsl:when>
- <!--
- <xsl:otherwise>
- <db:seglistitem
- role="parameter:{db:parameter};funcparams={db:funcparams};modifier={db:modifier}"
- conformance="{@conformance}">
- <db:seg>unmatched</db:seg>
- </db:seglistitem>
- </xsl:otherwise>
- -->
- <!-- there is no otherwise -->
- </xsl:choose>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <!--
- <xsl:message>
- <xsl:value-of select="count($packages/*)"/>
- <xsl:text> packages detected </xsl:text>
- <xsl:text> times: names and values are:&#xa;</xsl:text>
- <xsl:for-each select="$packages/*">
- <xsl:value-of select="name()"/>
- <xsl:text> : </xsl:text>
- <xsl:value-of select="child::*[1]"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:for-each>
- </xsl:message>
- -->
- <xsl:if test="count($packages/db:seglistitem)>0">
- <!--
- <xsl:message>
- <xsl:text>AUTOPACKAGE</xsl:text>
- </xsl:message>
- -->
- <xsl:text>%%
-%% Packages added automatically
-%%&#xa;</xsl:text>
- <xsl:for-each-group select="$packages/db:seglistitem"
- group-by="db:seg">
- <xsl:choose>
- <xsl:when
- test="$packages/db:seglistitem[db:seg=current()/@conformance]">
- <!--
- <xsl:message>
- <xsl:text>Omitting </xsl:text>
- <xsl:value-of select="db:seg"/>
- <xsl:text> automagically</xsl:text>
- </xsl:message>
- -->
- </xsl:when>
- <xsl:otherwise>
- <!--
- <xsl:message>
- <xsl:text>Adding </xsl:text>
- <xsl:value-of select="db:seg"/>
- <xsl:text> automagically</xsl:text>
- </xsl:message>
- -->
- <xsl:call-template name="packages">
- <xsl:with-param name="pkg" select="."/>
- <xsl:with-param name="dest" select="'doc'"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each-group>
- </xsl:if>
- <!-- EXTRAS that AUTOPACKAGE can't handle -->
- <!-- 1. Special for babel, needs languages -->
- <xsl:variable name="baselang" select="/db:book/@xml:lang"/>
- <xsl:if test="/db:book/db:part[@xml:id='doc']/
- descendant::*[@xml:lang][@xml:lang!=$baselang]">
- <xsl:text>% added babel automatically&#xa;\usepackage[</xsl:text>
- <xsl:for-each-group group-by="@xml:lang"
- select="/db:book/db:part[@xml:id='doc']/
- descendant::*[@xml:lang][@xml:lang!=$baselang]">
- <xsl:value-of
- select="tokenize($langs/language[@iso=current()/@xml:lang]/@babel,
- ' ')[1]"/>
- <xsl:text>,</xsl:text>
- </xsl:for-each-group>
- <xsl:value-of select="tokenize($langs/language[@iso=$baselang]/@babel,
- ' ')[1]"/>
- <xsl:text>]{babel}&#xa;</xsl:text>
- <xsl:message>
- <xsl:text>Adding babel automatically for </xsl:text>
- <xsl:for-each-group group-by="@xml:lang"
- select="/db:book/db:part[@xml:id='doc']/
- descendant::*[@xml:lang][@xml:lang!=$baselang]
- [not(local-name()='cmdsynopsis' or
- local-name()='command' or
- local-name()='literal' or
- local-name()='methodsynopsis')]">
- <xsl:value-of
- select="tokenize($langs/language[@iso=current()/@xml:lang]/@babel,
- ' ')[1]"/>
- <xsl:text>,</xsl:text>
- </xsl:for-each-group>
- <xsl:value-of
- select="tokenize($langs/language[@iso=$baselang]/@babel,
- ' ')[1]"/>
- </xsl:message>
- </xsl:if>
- <!-- 2. any extra package required by the documentation
- bibliography style. TODO: check prepost.xml -->
- <xsl:if test="/db:book/db:part
- //db:bibliography[@xreflabel]">
- <xsl:text>\usepackage{</xsl:text>
- <xsl:value-of select="/db:book/db:part
- //db:bibliography/@xreflabel"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:if>
- <!-- 3. url needed for metadata or abstract?
- <xsl:if test="/db:book/db:info//db:author/db:email |
- /db:book/db:info//db:author/db:uri |
- /db:book/db:info/db:abstract//db:ulink |
- /db:book/db:info/db:abstract//db:uri |
- /db:book/db:info/db:abstract//db:email">
- <xsl:text>\usepackage{url}&#xa;</xsl:text>
- </xsl:if>
- -->
- <!-- 4. load THIS package for use in the documentation? -->
- <xsl:if test="$doctype='package' and /db:book/@xlink:role">
- <xsl:message>
- <xsl:text>Adding </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text> as specified</xsl:text>
- </xsl:message>
- <xsl:text>\usepackage</xsl:text>
- <xsl:if test="/db:book/@xlink:role!=''">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="/db:book/@xlink:role"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>}[</xsl:text>
- <!-- use the latest revision date as the distro date -->
- <xsl:for-each select="//db:info/db:revhistory/db:revision">
- <xsl:sort select="@version" order="ascending"/>
- <xsl:if test="position()=last()">
- <xsl:value-of
- select="translate(db:date/@conformance,'-','/')"/>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>]% added by specification&#xa;</xsl:text>
- </xsl:if>
- <!-- 5. Process all the requested packages last!
- optionally use segtitle? -->
- <xsl:text>%%
-%% Packages added by author
-%%&#xa;</xsl:text>
- <xsl:for-each
- select="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id='docpackages']
- /db:segmentedlist/db:seglistitem
- [db:seg!=''][not(db:seg/@condition='off')]">
- <xsl:call-template name="packages">
- <xsl:with-param name="pkg" select="."/>
- <xsl:with-param name="dest" select="'doc'"/>
- </xsl:call-template>
- </xsl:for-each>
- <!-- additional settings or documentation (again, applies to both) -->
- <xsl:apply-templates select="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id='docpackages']
- /db:cmdsynopsis[.!='']"/>
- <!-- 6. Finally add classpack.sty for bells and whistles -->
- <xsl:text>\usepackage{classpack}
-%%
-%% Settings for docstrip and latexdoc
-%%
-\EnableCrossrefs
-\CodelineIndex
-\RecordChanges
-\newlength{\revmarg}
-\setlength{\revmarg}{1in}&#xa;</xsl:text>
- <!-- struts only used in tabular setting -->
- <xsl:if test="/db:book/db:part[@xml:id='doc']/
- descendant::db:tgroup">
- <xsl:text>\newcommand{\vstrut}{\vrule height1.2em depth.6667ex width0pt}
-\newcommand{\prestrut}{\vrule height1em width0pt}
-\newcommand{\poststrut}{\vrule depth.5ex width0pt}&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>\begin{document}</xsl:text>
- <xsl:value-of select="normalize-space(db:book/@annotations)"/>
- <xsl:text>&#xa; \DocInput{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx}
-\end{document}
-%&lt;/driver>
-% \fi
-%
-% \CheckSum{</xsl:text>
- <xsl:value-of select="/db:book/@security"/>
- <xsl:text>}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&amp;
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \&lt;
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-% &#xa;</xsl:text>
- <xsl:for-each select="/db:book/db:info/db:revhistory/db:revision">
- <xsl:text>% \changes{v</xsl:text>
- <xsl:value-of select="@version"/>
- <xsl:text>}{</xsl:text>
- <xsl:value-of select="translate(db:date/@conformance,'-','/')"/>
- <xsl:text>}{</xsl:text>
- <xsl:value-of
- select="normalize-space(
- db:revdescription/db:itemizedlist/db:title)"/>
- <xsl:text>: </xsl:text>
- <xsl:choose>
- <xsl:when
- test="count(db:revdescription/db:itemizedlist/db:listitem)=1">
- <xsl:value-of
- select="normalize-space(
- db:revdescription/db:itemizedlist/db:listitem)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:for-each
- select="db:revdescription/db:itemizedlist/db:listitem">
- <xsl:number/>
- <xsl:text>) </xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="position()!=last()">
- <xsl:text>; </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>.}&#xa;</xsl:text>
- </xsl:for-each>
- <xsl:text>%
-% \GetFileInfo{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx}&#xa;</xsl:text>
- <xsl:text>%
-% \DoNotIndex{\@,\@@par,\@beginparpenalty,\@empty}
-% \DoNotIndex{\@flushglue,\@gobble,\@input}
-% \DoNotIndex{\@makefnmark,\@makeother,\@maketitle}
-% \DoNotIndex{\@namedef,\@ne,\@spaces,\@tempa}
-% \DoNotIndex{\@tempb,\@tempswafalse,\@tempswatrue}
-% \DoNotIndex{\@thanks,\@thefnmark,\@topnum}
-% \DoNotIndex{\@@,\@elt,\@forloop,\@fortmp,\@gtempa,\@totalleftmargin}
-% \DoNotIndex{\",\/,\@ifundefined,\@nil,\@verbatim,\@vobeyspaces}
-% \DoNotIndex{\|,\~,\ ,\active,\advance,\aftergroup,\begingroup,\bgroup}
-% \DoNotIndex{\mathcal,\csname,\def,\documentstyle,\dospecials,\edef}
-% \DoNotIndex{\egroup}
-% \DoNotIndex{\else,\endcsname,\endgroup,\endinput,\endtrivlist}
-% \DoNotIndex{\expandafter,\fi,\fnsymbol,\futurelet,\gdef,\global}
-% \DoNotIndex{\hbox,\hss,\if,\if@inlabel,\if@tempswa,\if@twocolumn}
-% \DoNotIndex{\ifcase}
-% \DoNotIndex{\ifcat,\iffalse,\ifx,\ignorespaces,\index,\input,\item}
-% \DoNotIndex{\jobname,\kern,\leavevmode,\leftskip,\let,\llap,\lower}
-% \DoNotIndex{\m@ne,\next,\newpage,\nobreak,\noexpand,\nonfrenchspacing}
-% \DoNotIndex{\obeylines,\or,\protect,\raggedleft,\rightskip,\rm,\sc}
-% \DoNotIndex{\setbox,\setcounter,\small,\space,\string,\strut}
-% \DoNotIndex{\strutbox}
-% \DoNotIndex{\thefootnote,\thispagestyle,\topmargin,\trivlist,\tt}
-% \DoNotIndex{\twocolumn,\typeout,\vss,\vtop,\xdef,\z@}
-% \DoNotIndex{\,,\@bsphack,\@esphack,\@noligs,\@vobeyspaces,\@xverbatim}
-% \DoNotIndex{\`,\catcode,\end,\escapechar,\frenchspacing,\glossary}
-% \DoNotIndex{\hangindent,\hfil,\hfill,\hskip,\hspace,\ht,\it,\langle}
-% \DoNotIndex{\leaders,\long,\makelabel,\marginpar,\markboth,\mathcode}
-% \DoNotIndex{\mathsurround,\mbox,\newcount,\newdimen,\newskip}
-% \DoNotIndex{\nopagebreak}
-% \DoNotIndex{\parfillskip,\parindent,\parskip,\penalty,\raise,\rangle}
-% \DoNotIndex{\section,\setlength,\TeX,\topsep,\underline,\unskip,\verb}
-% \DoNotIndex{\vskip,\vspace,\widetilde,\\,\%,\@date,\@defpar}
-% \DoNotIndex{\[,\{,\},\]}
-% \DoNotIndex{\count@,\ifnum,\loop,\today,\uppercase,\uccode}
-% \DoNotIndex{\baselineskip,\begin,\tw@}
-% \DoNotIndex{\a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k,\l,\m,\n,\o,\p,\q}
-% \DoNotIndex{\r,\s,\t,\u,\v,\w,\x,\y,\z,\A,\B,\C,\D,\E,\F,\G,\H}
-% \DoNotIndex{\I,\J,\K,\L,\M,\N,\O,\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z}
-% \DoNotIndex{\1,\2,\3,\4,\5,\6,\7,\8,\9,\0}
-% \DoNotIndex{\!,\#,\$,\&amp;,\',\(,\),\+,\.,\:,\;,\&lt;,\=,\>,\?,\_}
-% \DoNotIndex{\discretionary,\immediate,\makeatletter,\makeatother}
-% \DoNotIndex{\meaning,\newenvironment,\par,\relax,\renewenvironment}
-% \DoNotIndex{\repeat,\scriptsize,\selectfont,\the,\undefined}
-% \DoNotIndex{\arabic,\do,\makeindex,\null,\number,\show,\write,\@ehc}
-% \DoNotIndex{\@author,\@ehc,\@ifstar,\@sanitize,\@title,\everypar}
-% \DoNotIndex{\if@minipage,\if@restonecol,\ifeof,\ifmmode}
-% \DoNotIndex{\lccode,\newtoks,\onecolumn,\openin,\p@,\SelfDocumenting}
-% \DoNotIndex{\settowidth,\@resetonecoltrue,\@resetonecolfalse,\bf}
-% \DoNotIndex{\clearpage,\closein,\lowercase,\@inlabelfalse}
-% \DoNotIndex{\selectfont,\mathcode,\newmathalphabet,\rmdefault}
-% \DoNotIndex{\bfdefault,\DeclareRobustCommand}
-</xsl:text>
- <!-- add an entry for examples except those with spaces -->
- <xsl:for-each-group select="//db:command
- [not(@role)]
- [not(contains(.,' ') or contains(.,'{'))]"
- group-by="normalize-space(.)">
- <xsl:text>% \DoNotIndex{\</xsl:text>
- <xsl:value-of select="current-grouping-key()"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:for-each-group>
- <xsl:for-each
- select="/db:book/db:info/db:cover/db:constraintdef[@xml:id='startdoc']
- /db:procedure/db:step[normalize-space(.)!='']
- /db:cmdsynopsis/db:command">
- <xsl:if test="contains(.,'@')">
- <xsl:text>% \makeatletter&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% </xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:if test="contains(.,'@')">
- <xsl:text>% \makeatother&#xa;</xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>%&#xa;</xsl:text>
- <!-- now the fun starts -->
- <xsl:apply-templates
- select="db:book/db:info |
- db:book/db:part[@xml:id='doc'] |
- db:book/db:part[@xml:id='code'] |
- db:book/db:part[@xml:id='files']"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:info/db:abstract">
- <xsl:if test="db:title">
- <xsl:text>% \renewcommand{\abstractname}{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}\thispagestyle{empty}&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \begin{abstract}&#xa;</xsl:text>
- <!-- fix broken abstract when parskip is used
- parskip is a default, so only do this when
- it has been manually disabled -->
- <xsl:if test="not(//db:constraintdef[@xml:id='docpackages']//
- db:seglistitem/db:seg[.='parskip'][@condition='off'])">
- <xsl:text>% \parskip=0.5\baselineskip
-% \advance\parskip by 0pt plus 2pt
-% \parindent=0pt</xsl:text>
- </xsl:if>
- <xsl:text>% \noindent&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{abstract}
-% \clearpage
-% \tableofcontents&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template name="readme">
- <xsl:variable name="file">
- <xsl:text>README</xsl:text>
- </xsl:variable>
- <xsl:result-document format="textFormat" href="{$file}">
- <xsl:apply-templates select="$readme/*" mode="readme"/>
- </xsl:result-document>
- </xsl:template>
-
- <xsl:template name="manifest">
- <xsl:variable name="file">
- <xsl:text>MANIFEST</xsl:text>
- </xsl:variable>
- <xsl:result-document format="textFormat" href="{$file}">
- <!-- these two files are always there -->
- <xsl:text>README
-MANIFEST
-</xsl:text>
- <!-- most of the rest: the .dtx and .ins files, the .pdf
- documentation, and any ancillary files -->
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx&#xa;</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.ins&#xa;</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.pdf&#xa;</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$filetype"/>
- <xsl:text>&#xa;</xsl:text>
- <!-- add any extra files extracted from the .dtx file -->
- <xsl:for-each select="/db:book/db:part[@xml:id='code']
- /db:appendix[@xml:id and @xlink:href]
- |
- /db:book/db:part[@xml:id='files']
- /db:chapter/db:programlisting">
- <xsl:value-of select="@xlink:href"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:for-each>
- <!-- add any extra files listed in the .xml file -->
- <xsl:for-each select="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id='manifest']
- /db:simplelist/db:member[.!='']">
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>&#xa;</xsl:text>
- <!-- add any secondary files generated -->
- <!-- TODO -->
- </xsl:for-each>
- </xsl:result-document>
- </xsl:template>
-
- <!-- seglistitems containing the packages needed are passed here -->
-
- <xsl:template name="packages">
- <!-- packages are given as seglistitems -->
- <xsl:param name="pkg"/>
- <!-- documentation (dest=doc) or class/package (dest=cls/pkg) -->
- <xsl:param name="dest"/>
- <!-- know whether this is operating in deferred mode or not -->
- <xsl:param name="mode">
- <xsl:text></xsl:text>
- </xsl:param>
- <!--[DEFERRED] start the package documentation block-->
- <xsl:if test="$mode='deferred'">
- <xsl:text>% \begin{package}{</xsl:text>
- <xsl:value-of select="$pkg/db:seg"/>
- <xsl:text>}&#xa;</xsl:text>
- <!-- doc for cls/sty output to .dtx -->
- <xsl:apply-templates
- select="$prepost/db:procedure[@xml:id='prepackage']
- /db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]/db:para"/>
- <xsl:if
- test="count($prepost/db:procedure[@xml:id='prepackage']
- /db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]/db:para)=0">
- <xsl:message>
- <xsl:text>ADVISORY: Package </xsl:text>
- <xsl:value-of select="$pkg/db:seg"/>
- <xsl:text> for </xsl:text>
- <xsl:value-of select="$filetype"/>
- <xsl:text> has no documentation in prepost.xml</xsl:text>
- </xsl:message>
- </xsl:if>
- <!-- additional per-sty/cls documentation from the
- maintained document (or if generated by autopackage) -->
- <xsl:if test="@role">
- <xsl:text>% </xsl:text>
- <xsl:value-of select="normalize-space(@role)"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- <!-- repeat for embedded comment doc -->
- <xsl:if test="count($prepost/db:procedure[@xml:id='prepackage']
- /db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]/db:para)>0">
- <xsl:text>% \iffalse&#xa;%% &#xa;</xsl:text>
- <xsl:apply-templates
- select="$prepost/db:procedure[@xml:id='prepackage']
- /db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]/db:para" mode="readme"/>
- <xsl:text>% \fi&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \begin{macrocode}&#xa;</xsl:text>
- </xsl:if>
- <!-- check if any special preprocessing is needed
- for documentation packages out of prepost.xml
- in the constraintdef element type -->
- <xsl:for-each
- select="$prepost/db:procedure[@xml:id='prepackage']
- /db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]
- /db:constraintdef/db:cmdsynopsis/db:command">
- <!-- checks for escaping internals only needed in doc mode -->
- <xsl:if test="contains(.,'@') and $mode=''">
- <xsl:text>\makeatletter&#xa;</xsl:text>
- </xsl:if>
- <!-- output any predefined commands -->
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>&#xa;</xsl:text>
- <!-- [DEFERRED] add any comment from seg here
- non-deferred comments get output *as* comments later
- <xsl:if test="$pkg/db:seg/@role">
- <xsl:text> (</xsl:text>
- <xsl:value-of select="normalize-space($pkg/db:seg/@role)"/>
- <xsl:text>)</xsl:text>
- </xsl:if>
- -->
- <!-- checks for escaping internals only needed in doc mode -->
- <xsl:if test="contains(.,'@') and $mode=''">
- <xsl:text>\makeatother&#xa;</xsl:text>
- </xsl:if>
- </xsl:for-each>
- <!-- decide on \usepackage (doc) or \RequirePackage (cls/sty) -->
- <xsl:choose>
- <!-- [DEFERRED] just needs RequirePackage -->
- <xsl:when test="$mode='deferred'">
- <xsl:text>\RequirePackage</xsl:text>
- </xsl:when>
- <!-- stypackages or clspackages in non-deferred mode
- need armour and RequirePackage -->
- <xsl:when test="$dest=$filetype">
- <xsl:text>%&lt;</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>>\RequirePackage</xsl:text>
- </xsl:when>
- <!-- otherwise it's plain \usepackage (for documentation) -->
- <xsl:otherwise>
- <xsl:text>\usepackage</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- output package options in either case -->
- <xsl:if test="$pkg/db:seg/@role
- or
- $prepost/db:procedure[@xml:id='prepackage']/
- db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]/@role">
- <xsl:choose>
- <!-- omit if role="" was specified -->
- <xsl:when test="$pkg/db:seg/@role and $pkg/db:seg/@role=''">
- <xsl:text></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>[</xsl:text>
- <!-- try to deduplicate -->
- <xsl:variable name="reqs">
- <xsl:value-of select="$pkg/db:seg/@role"/>
- <xsl:text>,</xsl:text>
- <xsl:value-of select="$prepost/db:procedure[@xml:id='prepackage']/
- db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]/@role"/>
- </xsl:variable>
- <xsl:variable name="args">
- <xsl:for-each select="tokenize(normalize-space($reqs),',')">
- <arg>
- <xsl:value-of select="normalize-space(.)"/>
- </arg>
- </xsl:for-each>
- </xsl:variable>
- <xsl:call-template name="rewrap">
- <xsl:with-param name="text">
- <xsl:for-each
- select="$args/arg[.!=''][not(preceding-sibling::arg=.)]">
- <xsl:if test="position()>1">
- <xsl:text>,</xsl:text>
- </xsl:if>
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>]</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <!-- then the package name -->
- <xsl:text>{</xsl:text>
- <xsl:value-of select="$pkg/db:seg"/>
- <xsl:text>}</xsl:text>
- <!-- and the version check, if any -->
- <xsl:if test="$pkg/db:seg/@version">
- <xsl:text>[</xsl:text>
- <xsl:value-of
- select="translate(substring($pkg/db:seg/@version,1,10),'-','/')"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <!-- only append comment in non-deferred mode
- [DEFERRED] ones were added earlier as text -->
- <xsl:if test="$pkg/@role and $mode=''">
- <xsl:text>% </xsl:text>
- <xsl:value-of select="normalize-space($pkg/@role)"/>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <!-- check if any corresponding postprocessing is needed -->
- <xsl:for-each
- select="$prepost/db:procedure[@xml:id='postpackage']
- /db:step[contains(@condition,$dest)]
- [@remap=$pkg/db:seg]
- /db:constraintdef/db:cmdsynopsis/db:command">
- <xsl:if test="contains(.,'@') and $mode=''">
- <xsl:text>\makeatletter&#xa;</xsl:text>
- </xsl:if>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:if test="contains(.,'@') and $mode=''">
- <xsl:text>\makeatother&#xa;</xsl:text>
- </xsl:if>
- </xsl:for-each>
- <!-- [DEFERRED] terminate the code and output any postpackage
- documentation -->
- <xsl:if test="$mode='deferred'">
- <xsl:text>% \end{macrocode}&#xa;</xsl:text>
- <xsl:apply-templates
- select="$prepost/db:procedure[@xml:id='postpackage']
- /db:step[contains(@condition,$dest)]
- [@remap=current()/db:seg]/para"/>
- <xsl:text>% \end{package}&#xa;</xsl:text>
- </xsl:if>
- <!-- now see if the package we are documenting needs itself
- loading for the documentation (eg for examples)
- (only applies in non-deferred mode) -->
- <xsl:if test="$mode='' and
- $dest='doc' and $doctype='package' and /db:book/@role">
- <xsl:text>% \usepackage</xsl:text>
- <xsl:if test="/db:book/@role!=''">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="/db:book/@role"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>}% added by specification&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- rewrap designed for long options list in
- \RequirePackage -->
-
- <xsl:template name="rewrap">
- <!-- text is a comma-separated vector or arguments -->
- <xsl:param name="text"/>
- <!-- maxlen is the max line length to output -->
- <xsl:param name="maxlen">
- <xsl:text>32</xsl:text>
- <!-- maxlen becomes 50 after the first line -->
- </xsl:param>
- <xsl:choose>
- <!-- if text is an overlong string but contains a comma -->
- <xsl:when test="string-length($text)>$maxlen and
- contains($text,',')">
- <!-- see if there is a comma within the first $maxlen chars -->
- <xsl:variable name="prelastcomma">
- <xsl:choose>
- <xsl:when test="contains(substring($text,1,$maxlen),',')">
- <xsl:analyze-string select="substring($text,1,$maxlen)"
- regex="^(.*)(,)([^,]*)$">
- <xsl:matching-substring>
- <xsl:value-of select="concat(regex-group(1),',')"/>
- </xsl:matching-substring>
- <xsl:non-matching-substring>
- <xsl:text>ERROR FINDING COMMA IN SUBSTRING</xsl:text>
- </xsl:non-matching-substring>
- </xsl:analyze-string>
- </xsl:when>
- <!-- No comma in range, test whole string -->
- <xsl:otherwise>
- <xsl:analyze-string select="$text"
- regex="^(.*)(,)([^,]*)$">
- <xsl:matching-substring>
- <xsl:value-of select="concat(regex-group(1),',')"/>
- </xsl:matching-substring>
- <xsl:non-matching-substring>
- <xsl:text>ERROR FINDING COMMA IN WHOLE STRING</xsl:text>
- </xsl:non-matching-substring>
- </xsl:analyze-string>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:value-of select="$prelastcomma"/>
- <xsl:choose>
- <!-- seems not to be needed -->
- <xsl:when test="ancestor::db:constraintdef
- [@xml:id=concat($filetype,'packages')]">
- <!--
- <xsl:text>&#xa;%&lt;</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>> </xsl:text>
- -->
- <xsl:text>&#xa; </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>&#xa; </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:call-template name="rewrap">
- <xsl:with-param name="text"
- select="normalize-space(substring-after($text,$prelastcomma))"/>
- <xsl:with-param name="maxlen">
- <xsl:text>50</xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- cmdsynopses contain special defs for documentation -->
-
- <xsl:template match="db:cmdsynopsis">
- <xsl:if test="position()=1 and ../db:cmdsynopsis[contains(.,'@')]">
- <xsl:text>\makeatletter&#xa;</xsl:text>
- </xsl:if>
- <xsl:choose>
- <!-- new \write files: new: no arg -->
- <xsl:when test="db:command/@remap='newwrite'">
- <xsl:text>\newwrite\</xsl:text>
- <xsl:value-of select="db:command"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:when>
- <!-- new counters -->
- <xsl:when test="db:command/@remap='counter'">
- <xsl:text>\newcounter{</xsl:text>
- <xsl:value-of select="db:command"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="db:arg">
- <xsl:text>\setcounter{</xsl:text>
- <xsl:value-of select="db:command"/>
- <xsl:text>}{</xsl:text>
- <xsl:value-of select="db:arg"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- </xsl:when>
- <!-- new lengths -->
- <xsl:when test="db:command/@remap='length'">
- <xsl:text>\newlength{\</xsl:text>
- <xsl:value-of select="db:command"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="db:arg">
- <xsl:text>\setlength{\</xsl:text>
- <xsl:value-of select="db:command"/>
- <xsl:text>}{</xsl:text>
- <xsl:value-of select="db:arg"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- </xsl:when>
- <!-- plain TeX commands -->
- <xsl:when test="@xml:lang='TeX'">
- <xsl:if test="@role='long'">
- <xsl:text>\long</xsl:text>
- </xsl:if>
- <xsl:text>\def\</xsl:text>
- <xsl:value-of select="db:command"/>
- <xsl:if test="db:arg/@wordsize">
- <xsl:call-template name="repeatarg">
- <xsl:with-param name="limit" select="db:arg/@wordsize"/>
- <xsl:with-param name="prefix"
- select="substring(db:arg/@annotations,1,
- (string-length(db:arg/@annotations) div 2))"/>
- <xsl:with-param name="suffix"
- select="substring(db:arg/@annotations,
- (string-length(db:arg/@annotations) div 2)+1)"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="db:arg/@remap">
- <xsl:text>{</xsl:text>
- <xsl:value-of
- select="/db:book/@*[name()=current()/db:arg/@remap]"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>{%&#xa;&#9;</xsl:text>
- <xsl:value-of select="db:arg"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="db:command/@remap='environment'
- and count(db:command/db:arg)=2">
- <xsl:choose>
- <xsl:when test="db:command/@role='renew'">
- <xsl:text>\renewenvironment{</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\newenvironment{</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="db:command"/>
- <xsl:text>}</xsl:text>
- <!-- number of arguments, if any -->
- <xsl:if test="db:arg[1]/@wordsize">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="db:arg[1]/@wordsize"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{%&#xa;&#9;</xsl:text>
- <xsl:value-of select="db:arg[1]"/>
- <xsl:text>}&#xa;</xsl:text>
- <xsl:text>{%&#xa;&#9;</xsl:text>
- <xsl:value-of select="db:arg[2]"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:when>
- <!-- LaTeX commands -->
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="db:command/@role='renew'">
- <xsl:text>\renewcommand{\</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\newcommand{\</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:value-of select="db:command"/>
- <xsl:text>}</xsl:text>
- <!-- number of arguments, if any -->
- <xsl:if test="db:arg/@wordsize">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="db:arg/@wordsize"/>
- <xsl:text>]</xsl:text>
- <xsl:if test="db:arg/@condition">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="db:arg/@condition"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- </xsl:if>
- <xsl:choose>
- <!-- remap is a reference to an attribute of the root
- element, eg arch means use @arch -->
- <xsl:when test="db:arg/@remap">
- <xsl:text>{</xsl:text>
- <xsl:value-of
- select="/db:book/@*[name()=current()/db:arg/@remap]"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>{%&#xa;&#9;</xsl:text>
- <xsl:value-of select="db:arg"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="position()=last() and ../db:cmdsynopsis[contains(.,'@')]">
- <xsl:text>\makeatother&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- for info, we omit the cover settings (done earlier)-->
-
- <xsl:template match="db:info">
- <xsl:message>
- <!--
- <xsl:text> on </xsl:text>
- <xsl:value-of select="$host"/>
- -->
- <xsl:text>Creating </xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text> '</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>' (v</xsl:text>
- <xsl:value-of select="$version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$revision"/>
- <xsl:text>) with checksum </xsl:text>
- <xsl:value-of select="/db:book/@security"/>
- <xsl:text>.</xsl:text>
- </xsl:message>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="db:cover"/>
-
- <xsl:template match="db:info/db:title">
- <!-- if this is a class, or a package which has not been
- loaded in the documentation, ensure the \fileversion
- and \filedate values are made available -->
- <xsl:if test="/db:book/@arch='package' or
- not(/db:book/@xlink:role)">
- <xsl:text>% \def\fileversion{</xsl:text>
- <xsl:value-of select="/db:book/@version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="/db:book/@revision"/>
- <xsl:text>}&#xa;% \def\filedate{</xsl:text>
- <xsl:for-each select="//db:info/db:revhistory/db:revision">
- <xsl:sort select="@version" order="ascending"/>
- <xsl:if test="position()=last()">
- <xsl:value-of
- select="translate(db:date/@conformance,'-','/')"/>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \title{The </xsl:text>
- <xsl:text> \textsf{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>} \LaTeXe\ </xsl:text>
- <xsl:choose>
- <xsl:when test="$doctype='class'">
- <xsl:text>document class</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$doctype"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>\thanks{%&#xa;% This document corresponds to \textsf{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>}&#xa;% \textit{v.}\ \fileversion, dated \filedate.}</xsl:text>
- <xsl:if test="ancestor::db:info/descendant::db:author/
- db:contrib[@role='sponsor']">
- <xsl:text>\enspace\thanks{%&#xa;% Development has been supported by </xsl:text>
- <xsl:for-each
- select="ancestor::db:info/descendant::db:author/
- db:contrib[@role='sponsor']">
- <xsl:if test="position()>1">
- <xsl:text>, </xsl:text>
- <xsl:if test="position()=last()">
- <xsl:text>and </xsl:text>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates/>
- </xsl:for-each>
- <xsl:text>.}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;% \\[1em]\Large &#xa;% </xsl:text>
- <xsl:apply-templates/>
- <xsl:if test="following-sibling::db:subtitle[not(@role='labelonly')]">
- <xsl:text>&#xa;% \\[1ex]\large &#xa;% </xsl:text>
- <xsl:apply-templates select="following-sibling::db:subtitle/node()"/>
- </xsl:if>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:info/db:subtitle"/>
-
- <xsl:template match="db:info//db:author">
- <xsl:if test="count(preceding-sibling::db:author)=0">
- <xsl:text>% \author{</xsl:text>
- </xsl:if>
- <xsl:for-each select="db:personname/db:*">
- <xsl:apply-templates/>
- <xsl:if test="position()!=last()">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:apply-templates select="db:honorific | db:affiliation"/>
- <xsl:if test="db:email">
- <xsl:text>\\\normalsize(\url{</xsl:text>
- <xsl:value-of select="db:email"/>
- <xsl:text>})</xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="following-sibling::db:author">
- <xsl:text>&#xa;% \and&#xa;% </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>}&#xa;% \maketitle&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:honorific">
- <xsl:text> \textsc{</xsl:text>
- <xsl:value-of select="translate(.,
- 'ABCDEFGHIJKLMN0PQRSTUVWXYZ',
- 'abcdefghijklmn0pqrstuvwxyz')"/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:affiliation">
- <xsl:text>\\\normalsize </xsl:text>
- <xsl:for-each select="db:*">
- <xsl:value-of select="normalize-space(.)"/>
- <!-- encapitalisation for Centre, Hospital, Unit, and Project -->
- <xsl:if test="@remap">
- <xsl:text> </xsl:text>
- <xsl:value-of
- select="translate(substring(@remap,1,1),'cuhp','CUHP')"/>
- <xsl:value-of select="substring(@remap,2)"/>
- </xsl:if>
- <xsl:if test="position()!=last()">
- <xsl:text>\\[-.25ex]\normalsize </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="db:info/db:releaseinfo |
- db:info/db:annotation |
- db:info/db:revhistory |
- db:info/db:copyright"/>
-
- <!-- normal text -->
-
- <xsl:template match="db:para">
- <!-- include percent-space for the fake steps in prepost.xml -->
- <xsl:choose>
- <xsl:when test="ancestor::db:procedure[@xml:id='prepackage' or
- @xml:id='postpackage']">
- <xsl:text>% </xsl:text>
- </xsl:when>
- <!-- omit for the first para in a list item -->
- <xsl:when test="(parent::db:listitem or parent::db:step)
- and count(preceding-sibling::db:para)=0">
- <xsl:text></xsl:text>
- </xsl:when>
- <!-- omit for the first para in a table cell -->
- <xsl:when test="parent::db:entry and position()=1">
- <xsl:text></xsl:text>
- </xsl:when>
- <!-- otherwise include -->
- <xsl:otherwise>
- <xsl:text>% </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- label it if necessary -->
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <!-- remap allows the bodging of (eg) font controls
- to apply just to this paragraph -->
- <xsl:if test="@remap">
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@remap"/>
- </xsl:if>
- <!-- do it -->
- <xsl:apply-templates/>
- <!-- if this is in a list item, note, footnote, or blockquote
- AND there are no more paragraphs to come,
- THEN DO NOT OUTPUT ANYTHING because the container will
- handle the closing syntax -->
- <xsl:choose>
- <!-- no \par after sole or last para, just a CR -->
- <xsl:when test="(parent::db:listitem or
- parent::db:note or
- parent::db:footnote or
- parent::db:blockquote) and
- not(following-sibling::db:para)">
- <xsl:text></xsl:text>
- </xsl:when>
- <!-- OR, if this is the last or sole paragraph in an
- auto-included documentation chunk in prepost.xml,
- omit the \par -->
- <xsl:when
- test="(parent::db:step/parent::db:procedure[@xml:id='prepackage'] or
- parent::db:step/parent::db:procedure[@xml:id='postpackage'])
- and not(following-sibling::db:para)">
- <xsl:text></xsl:text>
- </xsl:when>
- <!-- otherwise it's the end of a paragraph, which we
- make explicit, rather than rely on newlines -->
- <xsl:otherwise>
- <xsl:text>\par</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- add punctuation if the sole or last in a list item,
- only when needed,
- ie if this para does NOT end with its own punctuation
- and is not IMMEDIATELY followed by punctuation -->
- <xsl:if test="parent::db:listitem
- and
- not(contains(',.;:!?',substring(normalize-space(.),
- string-length(normalize-space(.)))))
- and
- not(contains(',.;:!?',substring(normalize-space((
- ancestor::db:itemizedlist[1] |
- ancestor::db:orderedlist[1] |
- ancestor::db:variablelist[1])[1]/
- following-sibling::node()[1]),1,1)))">
- <!-- only add punct to last para in item -->
- <xsl:if test="not(following-sibling::db:para)">
- <xsl:choose>
- <!-- add semicolon to all but last -->
- <xsl:when test="parent::db:listitem/following-sibling::db:listitem">
- <xsl:text>;</xsl:text>
- </xsl:when>
- <!-- add fullpoint to last except inline -->
- <xsl:otherwise>
- <xsl:text>.</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:if>
- <!-- terminate any font bodges -->
- <xsl:if test="@remap">
- <xsl:text>}</xsl:text>
- </xsl:if>
- <!-- in the case of notes, footnotes, and cell content
- we don't even want a newline -->
- <xsl:if test="not(parent::db:note or
- parent::db:footnote or
- parent::db:entry)">
- <xsl:text>&#xa;</xsl:text>
- <!-- but we need a space after \par in the case of cell content -->
- <xsl:if test="parent::db:entry">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:if>
- <!-- inline documentation echo, except for footnotes, which
- get done inline in db2plaintext.xsl -->
- <xsl:if test="ancestor::db:part[@xml:id='code'] and
- not(parent::db:footnote)">
- <xsl:text>% \iffalse&#xa;%% &#xa;</xsl:text>
- <xsl:apply-templates select="." mode="readme"/>
- <xsl:text>% \fi&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:literal[not(@xml:lang='LaTeX')]">
- <xsl:call-template name="avoidverb"/>
- </xsl:template>
-
- <xsl:template match="db:literal[@xml:lang='LaTeX']">
- <xsl:value-of select="."/>
- </xsl:template>
-
- <xsl:template match="db:preface">
- <xsl:choose>
- <!-- formal prefaces get a title and a ToC entry -->
- <xsl:when test="db:title">
- <xsl:text>% \clearpage\section*{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}\addcontentsline{toc}{subsection}{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <!-- untitled ones don't -->
- <xsl:otherwise>
- <xsl:text>% \clearpage\null\vfill\begingroup\centering</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- and a label if they have an ID -->
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <!-- terminate the centering group for untitled prefaces -->
- <xsl:if test="not(db:title)">
- <xsl:text>% \par\endgroup\vfill&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:info/db:abstract/db:title |
- db:preface/db:title |
- db:preface/db:section/db:title |
- db:chapter/db:title | db:chapter/db:subtitle |
- db:chapter/db:sect1/db:title |
- db:chapter//db:sect2/db:title |
- db:chapter//db:sect3/db:title |
- db:chapter//db:sect4/db:title |
- db:appendix/db:title |
- db:appendix/db:sect1/db:title |
- db:appendix//db:sect2/db:title |
- db:appendix//db:sect3/db:title |
- db:appendix//db:sect4/db:title |
- db:bibliography/db:title"/>
-
- <xsl:template match="db:part">
- <!-- there are three possible parts: doc, code, and files -->
- <xsl:choose>
- <!-- documentation -->
- <xsl:when test="@xml:id='doc'">
- <!-- iterate through commands and environment variables
- to be referenced, in order of length, longest first -->
- <xsl:for-each-group group-by="normalize-space(.)"
- select="descendant::db:command
- [@role and not(@xml:lang or
- contains(.,'[') or contains(.,'{'))]
- |
- descendant::db:envar
- [@role and not(@xml:lang or
- contains(.,'[') or contains(.,'{'))]
- |
- descendant::db:tag[@role]
- |
- descendant::db:varname[@role]
- |
- descendant::db:classname[@role]
- |
- descendant::db:package[@role]
- |
- descendant::db:annotation/@xreflabel">
- <!-- varname? -->
- <xsl:sort select="string-length(current-grouping-key())"
- data-type="number" order="descending"/>
- <!-- only use the first one -->
- <xsl:if test="position()=1">
- <xsl:text>% \addtolength{\revmarg}{\widthof{\LabelFont{</xsl:text>
- <xsl:value-of select="current-grouping-key()"/>
- <xsl:text>}}}
-% \newgeometry{left=\revmarg}&#xa;</xsl:text>
- </xsl:if>
- </xsl:for-each-group>
- <xsl:apply-templates/>
- </xsl:when>
- <!-- for the code part, start by terminating the userdoc -->
- <xsl:when test="@xml:id='code'">
- <xsl:text>% \StopEventually{\label{endcode}
-% \clearpage
-% \newgeometry{left=3cm}
-% \addcontentsline{toc}{section}{Change History}
-% \label{</xsl:text>
- <xsl:value-of select="/db:book/db:info/db:revhistory/@xml:id"/>
- <xsl:text>}
-% \PrintChanges
-% \clearpage
-% \label{codeindex}
-% \addcontentsline{toc}{section}{Index}
-% \PrintIndex}&#xa;</xsl:text>
- <!-- iterate through commands and environment variables
- to be referenced, in order of length, longest first -->
- <xsl:for-each-group group-by="normalize-space(.)"
- select="descendant::db:command
- [@role and not(@xml:lang or
- contains(.,'[') or contains(.,'{'))]
- |
- descendant::db:envar
- [@role and not(@xml:lang or
- contains(.,'[') or contains(.,'{'))]
- |
- descendant::db:tag[@role]
- |
- descendant::db:varname[@role]
- |
- descendant::db:classname[@role]
- |
- descendant::db:package[@role]
- |
- descendant::db:annotation/@xreflabel">
- <!-- varname? -->
- <xsl:sort select="string-length(current-grouping-key())"
- data-type="number" order="descending"/>
- <!-- only use the first one -->
- <xsl:if test="position()=1">
- <xsl:text>% \setlength{\revmarg}{1in}
-% \addtolength{\revmarg}{\widthof{\MacroFont{</xsl:text>
- <xsl:value-of select="current-grouping-key()"/>
- <xsl:text>}}}
-% \newgeometry{left=\revmarg}&#xa;</xsl:text>
- </xsl:if>
- </xsl:for-each-group>
- <!-- The code part could be a monolith (no chapters)
- so it would all be one <package> or <class>
- But if (usually) it has chapters, the tags for the
- primary output need to be set round the chapters,
- and any appendices may be ancillary files -->
- <xsl:if test="count(db:chapter)=0">
- <!-- no chapters, so output start-tag now -->
- <xsl:text>% \label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}
-% \iffalse
-%&lt;*</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>>
-% \fi&#xa;</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="count(db:chapter)=0">
- <!-- no chapters, so output end-tag now -->
- <xsl:text>% \iffalse
-%&lt;/</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>>
-% \fi&#xa;</xsl:text>
- </xsl:if>
- <!-- once the code has been done, and before any
- standalone ancillary files are done,
- output the Licence as an appendix -->
- <xsl:if test="not(//db:appendix)">
- <xsl:text>% \appendix&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \newgeometry{left=3cm}&#xa;</xsl:text>
- <xsl:apply-templates select="$licence"/>
- <!-- finally, do any delayed-output extractable files from
- the code part (these need no accompanying text as
- they're just re-given here for extraction) -->
- <xsl:for-each select="descendant::db:programlisting
- [@xml:id and @xlink:show='new' and @xlink:href]">
- <xsl:text>% \iffalse&#xa;%&lt;*</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>>&#xa;</xsl:text>
- <xsl:call-template name="lrtrim">
- <xsl:with-param name="text" select="."/>
- </xsl:call-template>
- <xsl:text>&#xa;%&lt;/</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>>&#xa;% \fi&#xa;</xsl:text>
- </xsl:for-each>
- </xsl:when>
- <!-- Part I page is generated by first chapter in part/@xml:id='doc'-->
- <xsl:when test="@xml:id='files'">
- <!-- output files that do not require pre/postamble here -->
- <xsl:apply-templates mode="files"/>
- </xsl:when>
- <!-- what other kind of part can there be? -->
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="count(following-sibling::db:part)=0">
- <xsl:text>% \Finale&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- TEXT -->
-
- <xsl:template match="db:acknowledgements">
- <xsl:text>% \subsection*{Acknowledgments}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'after'"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="db:chapter[not(@condition='draft')]">
- <!-- only if it contains something -->
- <xsl:if test="normalize-space(.)!=''">
- <!-- output the start-tag if this is the first chapter -->
- <xsl:if test="parent::db:part[@xml:id='code'] and
- count(preceding-sibling::db:chapter)=0">
- <xsl:text>% \iffalse
-%&lt;*</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>>
-% \fi&#xa;</xsl:text>
- </xsl:if>
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'before'"/>
- </xsl:call-template>
- <xsl:text>% \clearpage&#xa;</xsl:text>
- <xsl:text>% \section</xsl:text>
- <xsl:if test="db:subtitle">
- <xsl:text>[</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:if test="db:subtitle">
- <xsl:text>~--- </xsl:text>
- <xsl:apply-templates select="db:subtitle/node()"/>
- </xsl:if>
- <xsl:text>}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:if test="ancestor::db:part[@xml:id='code']">
- <xsl:text>% \iffalse&#xa;%% &#xa;</xsl:text>
- <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/>
- <xsl:text>% \fi&#xa;</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'after'"/>
- </xsl:call-template>
- </xsl:if>
- <!-- output the end-tag if this is the last chapter -->
- <xsl:if test="parent::db:part[@xml:id='code'] and
- count(following-sibling::db:chapter)=0">
- <xsl:text>% \iffalse
-%&lt;/</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>>
-% \fi&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:appendix">
- <!-- only do appendices with content, and do not output any
- programlisting code *as* code, only as documentation -->
- <xsl:if test="normalize-space(.)!=''">
- <!-- if this is the first appendix, issue the \appendix switch -->
- <xsl:if test="count(preceding-sibling::db:appendix)=0">
- <xsl:text>% \appendix&#xa;</xsl:text>
- </xsl:if>
- <!-- if this is a documented extractable *file*, tag it -->
- <xsl:if test="parent::db:part[@xml:id='code']
- and @xlink:href and @xml:id">
- <xsl:text>% \iffalse
-%&lt;*</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>>
-% \fi&#xa;</xsl:text>
- </xsl:if>
- <!-- normal titling -->
- <xsl:text>% \clearpage
-% \section{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:if test="ancestor::db:part[@xml:id='code']">
- <xsl:text>% \iffalse&#xa;%% &#xa;</xsl:text>
- <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/>
- <xsl:text>% \fi&#xa;</xsl:text>
- </xsl:if>
- <!-- if this is documented extractable file, output an
- identity -->
- <xsl:if test="parent::db:part[@xml:id='code']
- and @xlink:href and @xml:id">
- <xsl:variable name="ext" select="substring-after(@xlink:href,'.')"/>
- <xsl:if test="($ext='cls' or $ext='sty')
- and not(@conformance='nointro')">
- <xsl:text>% \begin{macrocode}&#xa;\NeedsTeXFormat{</xsl:text>
- <xsl:value-of select="/db:book/@conformance"/>
- <xsl:text>}[</xsl:text>
- <xsl:value-of select="translate(/db:book/@condition,'-','/')"/>
- <xsl:text>]&#xa;\Provides</xsl:text>
- <xsl:choose>
- <xsl:when test="$ext='sty'">
- <xsl:text>Package</xsl:text>
- </xsl:when>
- <xsl:when test="$ext='cls'">
- <xsl:text>Class</xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="substring-before(@xlink:href,'.')"/>
- <xsl:text>}[</xsl:text>
- <!-- use the latest revision date as the distro date -->
- <xsl:for-each select="/db:book/db:info/db:revhistory/db:revision">
- <xsl:sort select="@version" order="ascending"/>
- <xsl:if test="position()=last()">
- <xsl:value-of
- select="translate(db:date/@conformance,'-','/')"/>
- </xsl:if>
- </xsl:for-each>
- <xsl:text> v</xsl:text>
- <xsl:value-of select="/db:book/@version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="/db:book/@revision"/>
- <xsl:text>&#xa; </xsl:text>
- <xsl:variable name="title">
- <xsl:value-of select="normalize-space(db:title)"/>
- <xsl:if test="db:subtitle">
- <xsl:text>: </xsl:text>
- <xsl:value-of select="normalize-space(db:subtitle)"/>
- </xsl:if>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="contains($title,'\LaTeXe{}')">
- <xsl:value-of select="substring-before($title,'\LaTeXe{}')"/>
- <xsl:text>LaTeX2e</xsl:text>
- <xsl:value-of select="substring-after($title,'\LaTeXe{}')"/>
- </xsl:when>
- <xsl:when test="contains($title,'\LaTeX{}')">
- <xsl:value-of select="substring-before($title,'\LaTeX{}')"/>
- <xsl:text>LaTeX</xsl:text>
- <xsl:value-of select="substring-after($title,'\LaTeX{}')"/>
- </xsl:when>
- <xsl:when test="contains($title,'\TeX{}')">
- <xsl:value-of select="substring-before($title,'\TeX{}')"/>
- <xsl:text>TeX</xsl:text>
- <xsl:value-of select="substring-after($title,'\TeX{}')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$title"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>]&#xa;% \end{macrocode}&#xa;</xsl:text>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="@xlink:href and @xml:id">
- <xsl:text>% \iffalse
-%&lt;/</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>>
-% \fi&#xa;</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:sect1">
- <xsl:if test="normalize-space(.)!=''">
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'before'"/>
- </xsl:call-template>
- <xsl:if test="@condition='newpage'">
- <xsl:text>% \clearpage&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \subsection{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:if test="ancestor::db:part[@xml:id='code']">
- <xsl:text>% \iffalse&#xa;%% &#xa;</xsl:text>
- <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/>
- <xsl:text>% \fi&#xa;</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'after'"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:sect2">
- <xsl:if test="normalize-space(.)!=''">
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'before'"/>
- </xsl:call-template>
- <xsl:text>% \subsubsection{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:if test="ancestor::db:part[@xml:id='code']">
- <xsl:text>% \iffalse&#xa;%% &#xa;</xsl:text>
- <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/>
- <xsl:text>% \fi&#xa;</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'after'"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:sect3">
- <xsl:if test="normalize-space(.)!=''">
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'before'"/>
- </xsl:call-template>
- <xsl:text>% \paragraph{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <!--
- <xsl:if test="not(contains(':–-—',substring(normalize-space(db:title),string-length(normalize-space(db:title)))))">
- <xsl:text>&mdash;</xsl:text>
- </xsl:if>
- -->
- <xsl:text>}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'after'"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:sect4">
- <xsl:if test="normalize-space(.)!=''">
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'before'"/>
- </xsl:call-template>
- <xsl:text>% \subparagraph{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:if test="not(contains(':–-—',substring(normalize-space(db:title),string-length(normalize-space(db:title)))))">
- <xsl:text>\thinspace:</xsl:text>
- </xsl:if>
- <xsl:text>}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:call-template name="checkpackages">
- <xsl:with-param name="pos" select="'after'"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="checkpackages">
- <xsl:param name="pos"/>
- <xsl:if test="/db:book/db:info/db:cover/db:constraintdef
- [@xml:id='clspackages' or @xml:id='stypackages']
- [@linkend=current()/@xml:id]
- [@role=$pos or not(@role)]">
- <xsl:variable name="gi" select="local-name()"/>
- <xsl:text>%\iffalse
-%%
-%% Packages required
-%%
-% \fi
-% \</xsl:text>
- <xsl:choose>
- <xsl:when test="$gi='chapter' or $gi='appendix'">
- <xsl:text>clearpage&#xa;% \section</xsl:text>
- </xsl:when>
- <xsl:when test="$gi='sect1'">
- <xsl:text>subsection</xsl:text>
- </xsl:when>
- <xsl:when test="$gi='sect2'">
- <xsl:text>subsubsection</xsl:text>
- </xsl:when>
- <xsl:when test="$gi='sect3'">
- <xsl:text>paragraph</xsl:text>
- </xsl:when>
- <xsl:when test="$gi='sect4'">
- <xsl:text>subparagraph</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:message>
- <xsl:text>WARNING: </xsl:text>
- <xsl:value-of select="$gi"/>
- <xsl:text> is an unidentifiable place to declare packages</xsl:text>
- </xsl:message>
- <xsl:text>message{Unidentifiable place to declare packages}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>{</xsl:text>
- <xsl:choose>
- <xsl:when test="/db:book/db:info/db:cover
- /db:constraintdef[@linkend=current()/@xml:id]
- /db:segmentedlist/db:segtitle">
- <xsl:apply-templates
- select="/db:book/db:info/db:cover
- /db:constraintdef[@linkend=current()/@xml:id]
- /db:segmentedlist/db:segtitle/node()"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>Packages loaded</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}\label{</xsl:text>
- <xsl:value-of
- select="/db:book/db:info/db:cover
- /db:constraintdef[@linkend=current()/@xml:id]
- /@xml:id"/>
- <xsl:text>}&#xa;</xsl:text>
- <xsl:for-each
- select="/db:book/db:info/db:cover
- /db:constraintdef[@linkend=current()/@xml:id]
- /db:segmentedlist/db:seglistitem[db:seg!='']">
- <xsl:call-template name="packages">
- <xsl:with-param name="pkg" select="."/>
- <xsl:with-param name="dest" select="$filetype"/>
- <xsl:with-param name="mode" select="'deferred'"/>
- </xsl:call-template>
- </xsl:for-each>
- <xsl:text>% &#xa;</xsl:text>
- <xsl:if test="/db:book/db:info/db:cover
- /db:constraintdef[@linkend=current()/@xml:id]
- /@xml:id!='stypackages'
- and
- /db:book/db:info/db:cover
- /db:constraintdef[@linkend=current()/@xml:id]
- /@xml:id!='clspackages'">
- <xsl:message>
- <xsl:text>WARNING: these packages were listed in a </xsl:text>
- <xsl:value-of select="$gi"/>
- <xsl:text> element of the master document that was not flagged as belonging to this </xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text> (xml:id="</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>").</xsl:text>
- </xsl:message>
- <xsl:text>% WARNING: these packages were listed in
-% a \verb`</xsl:text>
- <xsl:value-of select="$gi"/>
- <xsl:text>` of the master document that was not flagged
-% as belonging to this </xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text> (\verb`xml:id="</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>"`).&#xa;</xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <!-- section in prelims needs to be done as subsection -->
-
- <xsl:template match="db:section">
- <xsl:text>% \subsection*{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="db:blockquote">
- <xsl:text>% \begin{quotation}</xsl:text>
- <xsl:text>\small\noindent&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:if test="@linkend">
- <xsl:text>% \hfill\begingroup</xsl:text>
- <xsl:call-template name="makeref"/>
- <xsl:text>\parfillskip=0pt\par\endgroup&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \end{quotation}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:warning | db:sidebar">
- <xsl:text>% \par\begingroup\fboxsep1em\centering&#xa;% \</xsl:text>
- <xsl:choose>
- <xsl:when test="name()='sidebar'">
- <xsl:text>shadowbox</xsl:text>
- </xsl:when>
- <xsl:when test="name()='warning'">
- <xsl:text>fbox</xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:text>{\begin{minipage}{</xsl:text>
- <xsl:choose>
- <xsl:when test="@wordsize">
- <xsl:value-of
- select="number(substring-before(@wordsize,'%')) div 100"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>0.8</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>\columnwidth}\sffamily
-% \raggedright\parindent0pt\parskip=.5\baselineskip&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{minipage}}\par\endgroup&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:warning/db:title | db:sidebar/db:title">
- <xsl:text>% \subsubsection*{\sffamily </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:sidebar/db:address">
- <xsl:text>% \par\raggedleft </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>\par&#xa;</xsl:text>
- </xsl:template>
-
- <!-- main element for code fragment markup -->
-
- <xsl:template match="db:annotation[@role and @role!='' and @xreflabel]
- [not(@annotations)]">
- <xsl:variable name="role" select="@role"/>
- <xsl:text>% \begin{</xsl:text>
- <xsl:value-of select="$role"/>
- <xsl:text>}{</xsl:text>
- <xsl:if test="$role='macro' or $role='variable' or
- $prepost//db:command[starts-with(.,'\doxitem')]
- [contains(.,concat('{',$role,'}'))]
- [contains(.,'macrolike')]">
- <xsl:text>\</xsl:text>
- </xsl:if>
- <xsl:value-of select="@xreflabel"/>
- <xsl:text>}&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{</xsl:text>
- <xsl:value-of select="$role"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:template>
-
- <!-- pull option declaration data from spec tree -->
-
- <xsl:template match="db:annotation[@annotations]">
- <xsl:apply-templates/>
- <xsl:variable name="college" select="tokenize(@audience,' ')"/>
- <xsl:variable name="canopy"
- select="//db:part[@xml:id='data']
- //db:constraintdef[@xml:id=current()/@annotations]"/>
- <xsl:for-each select="$college">
- <xsl:variable name="item" select="."/>
- <xsl:text>% \subsubsection{</xsl:text>
- <xsl:value-of select="translate(.,
- 'abcdefghijklmnopqrstuvwxyz',
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
- <xsl:text>}&#xa;</xsl:text>
- <xsl:apply-templates mode="declareoption"
- select="$canopy
- //db:methodsynopsis[tokenize(@arch,' ')=$item]">
- </xsl:apply-templates>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="db:annotation/db:title">
- <xsl:text>% \subsection{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:methodsynopsis" mode="declareoption">
- <!-- make a low-level title -->
- <xsl:text>% \paragraph{</xsl:text>
- <xsl:value-of
- select="normalize-space(db:methodparam[last()]/db:parameter)"/>
- <!-- start a Code block for the option -->
- <xsl:text>}&#xa;% \begin{option}{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}&#xa;% </xsl:text>
- <!-- now the descriptive text as a paragraph -->
- <!-- multiple parameters only for divisions, not degrees -->
- <!-- in document order, which is hierarchical top-down -->
- <xsl:for-each select="db:methodparam/db:parameter">
- <xsl:sort select="position()" order="descending"/>
- <xsl:if test="position()>1">
- <xsl:text> in </xsl:text>
- </xsl:if>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="not(@role='degree')">
- <xsl:text> (</xsl:text>
- <xsl:value-of select="@role"/>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>; </xsl:text>
- <xsl:if test="not(db:methodparam/db:parameter/@role='degree')">
- <xsl:text>&#xa;% using the </xsl:text>
- <!-- langs in methodsynopsis/@xml:lang for babel -->
- <xsl:value-of select="normalize-space(db:methodname)"/>
- <xsl:text> citation format&#xa;% from the \verb`</xsl:text>
- <xsl:value-of select="db:methodparam[1]/db:initializer"/>
- <xsl:text>.bst` \BibTeX\ style</xsl:text>
- <xsl:if test="db:methodparam[1]/db:modifier">
- <xsl:text> with the </xsl:text>
- <xsl:for-each select="db:methodparam[1]/db:modifier">
- <xsl:if test="preceding-sibling::db:modifier">
- <xsl:text> and </xsl:text>
- </xsl:if>
- <xsl:text>\textsf{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:for-each>
- <xsl:text> package</xsl:text>
- <xsl:if test="count(db:methodparam[1]/db:modifier)>1">
- <xsl:text>s</xsl:text>
- </xsl:if>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="contains(@xlink:href,'@')">
- <xsl:text> (confirmed by \url{</xsl:text>
- <xsl:value-of select="@xlink:href"/>
- <xsl:text>})</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> (unconfirmed)</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <!-- followed by the actual code for the declared option -->
- <xsl:text>.&#xa;% \begin{macrocode}&#xa;\DeclareOption{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}{%&#xa;</xsl:text>
- <!-- order doesn't matter here, but the line length does (maxcodelen) -->
- <xsl:for-each select="db:methodparam/db:parameter">
- <xsl:text> \</xsl:text>
- <xsl:value-of select="@role"/>
- <xsl:if test="@remap=''">
- <xsl:text>[]</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <!-- no more test for length to break if needed: too complex
- <xsl:call-template name="breakline">
- <xsl:with-param name="string" select="normalize-space(.)"/>
- </xsl:call-template> -->
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:for-each>
- <xsl:if test="db:methodparam[1]/db:modifier or
- db:methodparam[1]/db:initializer">
- <xsl:text> \@usebib</xsl:text>
- <xsl:if test="db:methodparam[1]/db:modifier">
- <xsl:text>[</xsl:text>
- <xsl:for-each select="db:methodparam[1]/db:modifier">
- <xsl:if test="position()>1">
- <xsl:text>,</xsl:text>
- </xsl:if>
- <xsl:value-of select="."/>
- </xsl:for-each>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="db:methodparam[1]/db:initializer"/>
- <xsl:text>}{</xsl:text>
- <xsl:value-of select="db:methodname"/>
- <xsl:text>}{}&#xa;</xsl:text>
- </xsl:if>
- <!-- dept-specific languages one day
- <xsl:if test="@xml:lang">
- <xsl:text> \use@babel[</xsl:text>
- <xsl:value-of select="translate(normalize-space(@xml:lang),' ',',')"/>
- <xsl:text>]{</xsl:text>
- <xsl:text>english</xsl:text>
- <xsl:text>}&#xa;</xsl:text>
- <xsl:variable name="langsused">
- <xsl:value-of select="normalize-space(@xml:lang)"/>
- </xsl:variable>
- <xsl:if test="@audience">
- <xsl:for-each select="tokenize(@audience,' ')">
- <xsl:variable name="curtok" select="position()"/>
- <xsl:text> \def\</xsl:text>
- <xsl:value-of select="upper-case(.)"/>
- <xsl:text>{\foreignlanguage{</xsl:text>
- <xsl:value-of select="tokenize($langsused,' ')[position()=$curtok]"/>
- <xsl:text>}}&#xa;</xsl:text>
- </xsl:for-each>
- </xsl:if>
- </xsl:if>
--->
- <xsl:text>}&#xa;</xsl:text>
- <xsl:text>% \end{macrocode}
-% \end{option}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template name="breakline">
- <xsl:param name="string"/>
- <xsl:param name="max">
- <xsl:value-of select="$maxcodelen"/>
- </xsl:param>
- <xsl:choose>
- <xsl:when test="string-length($string)>$max">
- <!-- see if there is a substring that will fit -->
- <xsl:choose>
- <!-- if there are no spaces, we're stuck, so use it as-is -->
- <xsl:when test="not(contains($string,' '))">
- <xsl:value-of select="$string"/>
- </xsl:when>
- <!-- if the first substring will fit, output it and try again -->
- <xsl:when
- test="string-length(substring-before($string,' '))&lt;=$max">
- <xsl:value-of select="$max"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="string-length(substring-before($string,' '))"/>
- <xsl:value-of select="substring-before($string,' ')"/>
- <xsl:text> </xsl:text>
- <!-- see how much we have left -->
- <xsl:choose>
- <xsl:when
- test="($max - 1 -
- string-length(substring-before($string,' ')))
- &lt;
- string-length(substring-before(
- substring-after($string,' '), ' '))">
- <xsl:text>&#xa; </xsl:text>
- <xsl:call-template name="breakline">
- <xsl:with-param name="string"
- select="substring-after($string,' ')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="breakline">
- <xsl:with-param name="string"
- select="substring-after($string,' ')"/>
- <xsl:with-param name="max"
- select="$max - 1 -
- string-length(substring-before($string,' '))"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$string"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:remark">
- <xsl:text>% \iffalse
-%% v</xsl:text>
- <xsl:value-of select="@version"/>
- <xsl:text> </xsl:text>
- <xsl:choose>
- <xsl:when test="@revision">
- <xsl:value-of select="translate(@revision,'-','/')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
- select="translate(
- //db:revhistory/db:revision[@version=current()/@version]
- /db:date/@conformance,'-','/')"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> </xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>&#xa;% \fi&#xa;</xsl:text>
- <xsl:text>% \changes{v</xsl:text>
- <xsl:value-of select="@version"/>
- <xsl:text>}{</xsl:text>
- <xsl:choose>
- <xsl:when test="@revision">
- <xsl:value-of select="translate(@revision,'-','/')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
- select="translate(
- //db:revhistory/db:revision[@version=current()/@version]
- /db:date/@conformance,'-','/')"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}{</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:template>
-
- <!-- programlisting is what produces nicely-typeset code -->
-
- <xsl:template match="db:programlisting">
- <!-- this references @remap, @xreflabel, @xml:id, @condition,
- @xlink:href, @startinglinenumber, @continuation, @wordsize,
- @language, @arch, @annotations, @role, xlink:show -->
- <xsl:choose>
- <!-- 1. SPECIAL USE IN GENERATING DTX MACROCODE:
- this occurs only in the "code" section of a
- classpack document where the code is unadorned -->
- <xsl:when test="(parent::annotation[@xreflabel]
- or ancestor::db:part[@xml:id='code'])
- and not(@condition='ignore')">
- <xsl:text>% \begin{macrocode}&#xa;</xsl:text>
- <!-- note any fragments required as external files
- specified in the 'code' part get output as extractables
- at the end of the dtx file, as separate tagging can't
- be nested inside class or package tags -->
- <xsl:call-template name="lrtrim">
- <xsl:with-param name="text" select="."/>
- </xsl:call-template>
- <xsl:text>&#xa;% \end{macrocode}&#xa;</xsl:text>
- </xsl:when>
- <!-- 2. INTERPRETABLE FORMATS IN DOCUMENTATION
- (embedded markup) -->
- <xsl:when test="db:token or db:xref">
- <xsl:text>% \iffalse
-%&lt;*ignore>
-% \fi
-% \begin{Verbatim}[frame=single,framesep=1em,fontsize=\small,commandchars=\\\{\}</xsl:text>
- <xsl:if test="@xml:id and @role">
- <xsl:text>,label=</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>,title={</xsl:text>
- <xsl:value-of select="normalize-space(@role)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>]&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>&#xa;% \end{Verbatim}
-% \iffalse
-%&lt;/ignore>
-% \fi&#xa;</xsl:text>
- </xsl:when>
- <!-- 3. EXAMPLE USE IN CODE,
- not for absorption into the package -->
- <xsl:when test="@condition='ignore'">
- <!--
- <xsl:call-template name="makelisting"/>
- -->
- <xsl:text>% \iffalse
-%&lt;*ignore>
-% \fi
-% \begin{Verbatim}[frame=single,framesep=1em,fontsize=\small]&#xa;</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>
-% \end{Verbatim}
-% \iffalse
-%&lt;/ignore>
-% \fi&#xa;</xsl:text>
- </xsl:when>
- <!-- 4. OTHERWISE UNADORNED USE IN DOCUMENTATION,
- but allows use of userinput -->
- <xsl:otherwise>
- <xsl:call-template name="makelisting"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- named template to handle listings called at various points -->
-
- <xsl:template name="makelisting">
- <!-- context is a programlisting element type -->
- <xsl:choose>
- <!-- read lines from external file -->
- <xsl:when test="@xlink:href">
- <xsl:text>% \lstinputlisting[firstline=</xsl:text>
- <xsl:choose>
- <xsl:when test="@startinglinenumber">
- <xsl:value-of select="@startinglinenumber"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>1</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="@endinglinenumber">
- <xsl:text>,lastline=</xsl:text>
- <xsl:value-of select="@endinglinenumber"/>
- </xsl:if>
- <!-- rest of settings are picked up after the begin/end type -->
- </xsl:when>
- <!-- otherwise do a begin and end -->
- <xsl:otherwise>
- <xsl:text>% \iffalse
-%&lt;*ignore>
-% \fi&#xa;</xsl:text>
- <xsl:text>\begin{lstlisting}[</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- now pick the parameters needed:
- basicstyle=\footnotesize\color{Black}\ttfamily
- and a lot else pre-set from prepost.xml configurations
- but the wordsize attribute can be used to change
- the font size (either a size and baseline separated
- by a slash, eg 12/14) or the whole basicstyle
- definition -->
- <xsl:if test="@xlink:href">
- <xsl:text>,</xsl:text>
- </xsl:if>
- <xsl:if test="@wordsize">
- <xsl:text>basicstyle=</xsl:text>
- <xsl:choose>
- <xsl:when test="contains(@wordsize,'/')">
- <xsl:text>\fontsize{</xsl:text>
- <xsl:value-of select="substring-before(@wordsize,'/')"/>
- <xsl:text>}{</xsl:text>
- <xsl:value-of select="substring-after(@wordsize,'/')"/>
- <xsl:text>}\selectfont</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@wordsize"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>\color{Black}\ttfamily,</xsl:text>
- </xsl:if>
- <!-- set the language -->
- <xsl:text>language=</xsl:text>
- <xsl:choose>
- <xsl:when test="@language='LaTeX' or not(@language)">
- <xsl:text>{[LaTeX]TeX}</xsl:text>
- </xsl:when>
- <xsl:when test="@language='DocBook'">
- <xsl:text>{[DocBook]XML}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@language"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- default is unframed -->
- <xsl:if test="@arch='framed'">
- <xsl:text>,frame=single,framesep=1em</xsl:text>
- </xsl:if>
- <!-- remap for emphases and options -->
- <xsl:if test="@remap">
- <xsl:text>,emphstyle=</xsl:text>
- <xsl:value-of select="@remap"/>
- </xsl:if>
- <xsl:if test="@annotations or db:userinput">
- <xsl:text>,emph={</xsl:text>
- <xsl:value-of select="@annotations"/>
- <xsl:if test="db:userinput">
- <xsl:for-each select="db:userinput">
- <xsl:if
- test="not(preceding-sibling::db:userinput[.=current()/.])">
- <xsl:if test="(position()=1 and ../@annotations)
- or position()&gt;1">
- <xsl:text>,</xsl:text>
- </xsl:if>
- <xsl:value-of select="."/>
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <!-- label -->
- <xsl:if test="@xml:id">
- <xsl:text>,label=</xsl:text>
- <xsl:value-of select="@xml:id"/>
- </xsl:if>
- <xsl:text>]</xsl:text>
- <!-- end of settings -->
- <xsl:choose>
- <!-- for an included file, here's the filename -->
- <xsl:when test="@xlink:href">
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@xlink:href"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <!-- otherwise we need the newline -->
- <xsl:otherwise>
- <xsl:text>&#xa;</xsl:text>
- <!-- output the content -->
- <xsl:call-template name="lrtrim">
- <xsl:with-param name="text" select="."/>
- <xsl:with-param name="indent">
- <xsl:choose>
- <xsl:when test="contains(.,'\end{lstlisting}') or
- contains(.,'\end{verbatim}') or
- contains(.,'\end{Verbatim}')">
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text></xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>&#xa;\end{lstlisting}&#xa;</xsl:text>
- <xsl:text>% \iffalse
-%&lt;/ignore>
-% \fi&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:userinput[not(parent::db:programlisting)]">
- <xsl:text>\emph{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template name="htrim">
- <xsl:param name="text"/>
- <xsl:variable name="TEXT" select="translate($text,'&#x9;',' ')"/>
- <xsl:choose>
- <xsl:when test="contains($TEXT,' ')">
- <xsl:call-template name="htrim">
- <xsl:with-param name="text">
- <xsl:value-of select="substring-before($TEXT,' ')"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="substring-after($TEXT,' ')"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($TEXT,'&#xa; ')">
- <xsl:call-template name="htrim">
- <xsl:with-param name="text">
- <xsl:value-of select="substring-before($TEXT,'&#xa; ')"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:value-of select="substring-after($TEXT,'&#xa; ')"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$TEXT"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="lrtrim">
- <xsl:param name="text"/>
- <xsl:param name="indent"/>
- <xsl:variable name="extent" select="string-length($text)"/>
- <xsl:choose>
- <!-- text in programlisting amost always begins with a newline,
- the one that comes right after <programlisting>, so remove
- it. This used to remove leading space and TAB characters,
- but that's wrong.
- substring($text,1,1)=' ' or or
- substring($text,1,1)='&#x9;'
- -->
- <xsl:when test="substring($text,1,1)='&#xa;'">
- <xsl:call-template name="lrtrim">
- <xsl:with-param name="text" select="substring($text,2)"/>
- <xsl:with-param name="indent" select="$indent"/>
- </xsl:call-template>
- </xsl:when>
- <!-- then trim trailing white-space. This is right -->
- <xsl:when test="substring($text,$extent)=' ' or
- substring($text,$extent)='&#xa;' or
- substring($text,$extent)='&#x9;'">
- <xsl:call-template name="lrtrim">
- <xsl:with-param name="text"
- select="substring($text,1,($extent - 1))"/>
- <xsl:with-param name="indent" select="$indent"/>
- </xsl:call-template>
- </xsl:when>
- <!-- now we're clean, but we need to paste on any indent
- passed by the calling routine, usually to avoid trouble
- with documentation the references \end{lstlisting} or
- \end{verbatim} within the text of the verbatim block -->
- <xsl:when test="$indent!=''">
- <xsl:call-template name="addindent">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="indent" select="$indent"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="addindent">
- <xsl:param name="text"/>
- <xsl:param name="indent"/>
- <xsl:value-of select="$indent"/>
- <xsl:choose>
- <xsl:when test="contains($text,'&#xa;')">
- <xsl:value-of select="substring-before($text,'&#xa;')"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:call-template name="addindent">
- <xsl:with-param name="text" select="substring-after($text,'&#xa;')"/>
- <xsl:with-param name="indent" select="$indent"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- tables and figures -->
-
- <xsl:template match="db:table">
- <xsl:text>% \begin{table}</xsl:text>
- <xsl:if test="@floatstyle">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="@floatstyle"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>\small\sffamily&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:if test="db:textobject[@role='footer']">
- <xsl:text>% \par\bigskip\footnotesize&#xa;</xsl:text>
- <xsl:apply-templates select="db:textobject[@role='footer']/*"/>
- </xsl:if>
- <xsl:text>% \end{table}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:table/db:textobject[@role='footer']"/>
-
- <xsl:template match="db:table/db:title | db:figure/db:title">
- <xsl:text>% \caption{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- <xsl:if test="../@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="../@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>\medskip&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:informaltable">
- <xsl:text>% \par\medskip{\sffamily\small</xsl:text>
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% }&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:tgroup">
- <xsl:text>% \begingroup</xsl:text>
- <xsl:value-of select="parent::db:table/@remap"/>
- <xsl:text>&#xa;% \centering&#xa;% \begin{tabular}{</xsl:text>
- <xsl:choose>
- <xsl:when test="@tgroupstyle='overhang'">
- <xsl:text></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>@{}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>%&#xa;% &#x9;</xsl:text>
- <xsl:for-each select="db:colspec">
- <xsl:call-template name="colprefix"/>
- <xsl:call-template name="colsettings"/>
- <xsl:call-template name="colsuffix"/>
- <xsl:text>%&#xa;% &#x9;</xsl:text>
- </xsl:for-each>
- <xsl:choose>
- <xsl:when test="@tgroupstyle='overhang'">
- <xsl:text></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>@{}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}&#xa;</xsl:text>
- <xsl:apply-templates select="db:thead"/>
- <xsl:if test="not(db:thead)">
- <xsl:text>% \hline&#xa;</xsl:text>
- </xsl:if>
- <xsl:apply-templates select="db:tbody"/>
- <xsl:apply-templates select="db:tfoot"/>
- <xsl:text>% \end{tabular}&#xa;</xsl:text>
- <!-- fake footnotes -->
- <xsl:if test="starts-with(db:tbody/@xlink:href,'affil') and
- count(//db:part[@xml:id='data']
- //db:constraintdef[@xml:id=
- concat(substring-before(current()/db:tbody/@xlink:href,'-'),'options')]
- /db:methodsynopsis[tokenize(@arch,' ')=
- substring-after(current()/db:tbody/@xlink:href,'-')]
- [db:modifier])>0">
- <xsl:text>% \scriptsize
-% \renewcommand{\labelenumi}{\itshape\alph{enumi}\upshape)}
-% \begin{enumerate}[noitemsep]&#xa;</xsl:text>
- <xsl:for-each
- select="//db:part[@xml:id='data']
- //db:constraintdef[@xml:id=
- concat(substring-before(current()/db:tbody/@xlink:href,'-'),'options')]
- /db:methodsynopsis[tokenize(@arch,' ')=
- substring-after(current()/db:tbody/@xlink:href,'-')]
- /db:modifier">
- <xsl:text>% \item The \texttt{</xsl:text>
- <xsl:value-of select="../@xml:id"/>
- <xsl:text>} option </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:for-each>
- <xsl:text>% \end{enumerate}
-% \setcounter{fnote}{0}&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \par\endgroup&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:colspec"/>
-
- <xsl:template name="colprefix">
- <!-- @colwidth in <colspec>
- @wordsize in <entry>, here and below -->
- <xsl:if test="@condition or @colwidth or @wordsize">
- <xsl:text>>{</xsl:text>
- <xsl:choose>
- <xsl:when test="@align='left' and (@colwidth or @wordsize)">
- <xsl:text>\raggedright{}</xsl:text>
- </xsl:when>
- <xsl:when test="@align='right' and (@colwidth or @wordsize)">
- <xsl:text>\raggedleft{}</xsl:text>
- </xsl:when>
- <xsl:when test="@align='center'">
- <xsl:text>\centering{}</xsl:text>
- </xsl:when>
- <!-- default is justified anyway, and char is inapplicable -->
- </xsl:choose>
- <!-- condition is for typographic changes -->
- <xsl:value-of select="@condition"/>
- <xsl:text>\prestrut</xsl:text>
- <xsl:if test="@align and (@colwidth or @wordsize or @condition)">
- <xsl:text>\arraybackslash</xsl:text>
- </xsl:if>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="colsettings">
- <!-- this is the type of column (p|m|b) and width -->
- <xsl:choose>
- <xsl:when test="@colwidth or @wordsize">
- <xsl:choose>
- <xsl:when test="@char='m' or @char='b'">
- <xsl:value-of select="@char"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>p</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>{</xsl:text>
- <xsl:variable name="width" select="@colwidth | @wordsize"/>
- <xsl:choose>
- <xsl:when test="contains($width,'%')">
- <xsl:value-of
- select="number(substring-before($width,'%')) div 100"/>
- <xsl:text>\columnwidth</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$width"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="@align='left' or @align='right' or @align='center'">
- <xsl:value-of select="substring(@align,1,1)"/>
- </xsl:when>
- <xsl:when test="@align='char'">
- <xsl:text>d</xsl:text>
- </xsl:when>
- <!-- justified is implied by @colwidth or @wordsize above -->
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="colsuffix">
- <xsl:text>&lt;{</xsl:text>
- <xsl:value-of select="normalize-space(@conformance)"/>
- <xsl:text>\poststrut\arraybackslash}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:thead">
- <xsl:apply-templates/>
- <xsl:text>[2pt]\hline&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:tbody">
- <xsl:text>% </xsl:text>
- <xsl:if test="not(db:row[1]/db:entry[1]/@spanname)">
- <xsl:text>\vstrut</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:choose>
- <!-- eg, xlink:href='deg-acsss' -->
- <xsl:when test="@xlink:href and @xlink:show='embed'">
- <xsl:apply-templates
- select="//db:part[@xml:id='data']
- //db:constraintdef[@xml:id=
- concat(substring-before(current()/@xlink:href,'-'),'options')]
- /db:methodsynopsis
- [tokenize(@arch,' ')=substring-after(current()/@xlink:href,'-')]" mode="row">
- <xsl:sort select="@xml:id"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:methodsynopsis" mode="row">
- <!-- each of these produces one row of the table -->
- <xsl:text>% </xsl:text>
- <!-- signal a footnote if needed -->
- <xsl:if test="db:modifier">
- <xsl:text>\fnote{}</xsl:text>
- </xsl:if>
- <!-- col 1: token for option -->
- <xsl:value-of select="@xml:id"/>
- <xsl:text>&amp;%&#xa;</xsl:text>
- <!-- col 2: division[s], may be multiple methodparam elements -->
- <xsl:for-each select="db:methodparam/db:parameter">
- <xsl:text>%&#x9;</xsl:text>
- <!-- @remap is a prefix except for institutes and centres -->
- <xsl:if test="not(@remap='') and @role!='institute' and @role!='centre'">
- <xsl:value-of select="normalize-space(@remap)"/>
- <xsl:text> </xsl:text>
- </xsl:if>
- <!-- the name -->
- <xsl:apply-templates/>
- <!-- @remap is a suffix for institutes and centres -->
- <xsl:if test="not(@remap='') and (@role='institute' or @role='centre')">
- <xsl:text> </xsl:text>
- <xsl:value-of select="normalize-space(@remap)"/>
- </xsl:if>
- <!-- any following divisions involved (only for affiliations) -->
- <xsl:choose>
- <xsl:when test="position()!=last()">
- <xsl:text>; </xsl:text>
- </xsl:when>
- <!-- dummy to terminate degree options cleanly -->
- <xsl:when test="@role='degree'">
- <xsl:text></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>&amp;%&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- <!-- citation format -->
- <xsl:if test="not(db:methodparam/db:parameter/@role='degree')">
- <xsl:text>%&#x9;</xsl:text>
- <xsl:value-of select="db:methodname"/>
- </xsl:if>
- <xsl:text>\\\hline[.1pt]%&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:row">
- <xsl:text>% </xsl:text>
- <xsl:if test="@role='header'">
- <xsl:if test="position()>1">
- <xsl:text>[2pt]\hline&#xa;% </xsl:text>
- </xsl:if>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:text>\\</xsl:text>
- <!--
- <xsl:if test="position()=last()">
- <xsl:text>[2pt]</xsl:text>
- </xsl:if>
- -->
- <xsl:if test="@role='header'">
- <xsl:text>[2pt]\hline\vstrut</xsl:text>
- </xsl:if>
- <xsl:if test="(ancestor::db:tbody or ancestor::db:tfoot)
- and position()=last()">
- <xsl:text>[2pt]\hline</xsl:text>
- </xsl:if>
- <xsl:if test="not(ancestor::db:thead)">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:entry[ancestor::db:thead or ancestor::db:tfoot]">
- <xsl:if test="preceding-sibling::db:entry">
- <xsl:text>&amp;</xsl:text>
- </xsl:if>
- <!-- always make headers paragraphic, which means \multicolumn{1}...
- because we don't know how they need to be formatted -->
- <xsl:text>\multicolumn{</xsl:text>
- <xsl:choose>
- <xsl:when test="@spanname">
- <xsl:value-of select="@spanname"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>1</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}{</xsl:text>
- <!-- omit LH shoulder on first column -->
- <xsl:if test="count(preceding-sibling::db:entry)=0">
- <xsl:text>@{}</xsl:text>
- </xsl:if>
- <xsl:choose>
- <!-- if alignment or width is specified in the heading cell,
- use local settings, honouring local prefix/suffix -->
- <xsl:when test="@align or @colwidth">
- <xsl:call-template name="colprefix"/>
- <xsl:call-template name="colsettings"/>
- <xsl:call-template name="colsuffix"/>
- </xsl:when>
- <!-- otherwise use the column default,
- but use local prefix/suffix by preference -->
- <xsl:otherwise>
- <!-- identify the column number -->
- <xsl:variable name="colpos"
- select="count(preceding-sibling::db:entry) + 1"/>
- <!-- test for the prefix -->
- <xsl:choose>
- <xsl:when
- test="ancestor::db:tgroup/db:colspec[position()=$colpos]/@condition
- or
- ancestor::db:tgroup/db:colspec[position()=$colpos]/@colwidth
- or
- ancestor::db:tgroup/db:colspec[position()=$colpos]/@wordsize">
- <xsl:for-each
- select="ancestor::db:tgroup/db:colspec[position()=$colpos]">
- <xsl:call-template name="colprefix"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="colprefix"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- switch context to the colspec to get the settings -->
- <xsl:for-each
- select="ancestor::db:tgroup/db:colspec[position()=$colpos]">
- <xsl:call-template name="colsettings"/>
- </xsl:for-each>
- <!-- test for the suffix -->
- <xsl:choose>
- <xsl:when
- test="ancestor::db:tgroup/db:colspec[position()=$colpos]/@condition
- or
- ancestor::db:tgroup/db:colspec[position()=$colpos]/@colwidth
- or
- ancestor::db:tgroup/db:colspec[position()=$colpos]/@wordsize">
- <xsl:for-each
- select="ancestor::db:tgroup/db:colspec[position()=$colpos]">
- <xsl:call-template name="colsuffix"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="colsuffix"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="count(following-sibling::db:entry)=0">
- <xsl:text>@{}</xsl:text>
- </xsl:if>
- <xsl:text>}{\sffamily\bfseries </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:entry[ancestor::db:tbody]">
- <xsl:if test="preceding-sibling::db:entry">
- <xsl:text>&amp;</xsl:text>
- </xsl:if>
- <xsl:if test="@spanname">
- <xsl:text>\multicolumn{</xsl:text>
- <xsl:value-of select="@spanname"/>
- <xsl:text>}{</xsl:text>
- <xsl:if test="count(preceding-sibling::db:entry)=0">
- <xsl:text>@{}</xsl:text>
- </xsl:if>
- <xsl:choose>
- <!-- if alignment or width is specified,
- use local settings -->
- <xsl:when test="@align or @wordsize">
- <xsl:call-template name="colprefix"/>
- <xsl:call-template name="colsettings"/>
- <xsl:call-template name="colsuffix"/>
- </xsl:when>
- <!-- otherwise use default,
- but check local pre and post -->
- <xsl:otherwise>
- <xsl:call-template name="colprefix"/>
- <xsl:variable name="colpos"
- select="count(preceding-sibling::db:entry) + 1"/>
- <xsl:for-each
- select="ancestor::db:tbody/db:colspec[position()=$colpos]">
- <xsl:call-template name="colsettings"/>
- </xsl:for-each>
- <xsl:call-template name="colsuffix"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="count(following-sibling::db:entry)=0">
- <xsl:text>@{}</xsl:text>
- </xsl:if>
- <xsl:text>}{</xsl:text>
- </xsl:if>
- <!-- check for hangouts -->
- <xsl:if test="@annotations">
- <xsl:text>\llap{\normalfont </xsl:text>
- <xsl:value-of select="@annotations"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <!-- text for headers is in bold -->
- <xsl:if test="../@role='header'">
- <xsl:text>\vstrut\bfseries </xsl:text>
- </xsl:if>
- <!-- check for row-spanned brace-collected -->
- <xsl:if test="@morerows">
- <xsl:if test="@charoff and @char">
- <xsl:text>\llap{</xsl:text>
- <xsl:value-of select="@char"/>
- <xsl:value-of select="@morerows"/>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@charoff"/>
- <xsl:text>}</xsl:text>
- <xsl:text>}%&#xa;% &#x9;</xsl:text>
- </xsl:if>
- <xsl:text>\multirow{</xsl:text>
- <xsl:value-of select="@morerows"/>
- <xsl:text>}{</xsl:text>
- <xsl:value-of select="@wordsize"/>
- <xsl:text>}{</xsl:text>
- </xsl:if>
- <!-- now we're in the content at last -->
- <xsl:if test="@condition">
- <xsl:value-of select="@condition"/>
- <xsl:text>{}</xsl:text>
- </xsl:if>
- <xsl:choose>
- <!-- mldr &#x2026; on its own (\dotfill) needs a \hbox -->
- <xsl:when test=".='\dotfill{}' and @wordsize">
- <xsl:text>\hbox to </xsl:text>
- <xsl:value-of select="@wordsize"/>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="@morerows">
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:if test="@spanname">
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:figure">
- <xsl:if test="@floatstyle='p' and
- descendant::db:imagedata[@format='pdf' and @condition]">
- <xsl:text>% \clearpage&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>% \begin{figure}</xsl:text>
- <xsl:if test="@floatstyle">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="@floatstyle"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>\small\sffamily\centering&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{figure}&#xa;</xsl:text>
- <xsl:if test="@floatstyle='p' and
- descendant::db:imagedata[@format='pdf' and @condition]">
- <xsl:text>% \clearpage&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:informalfigure">
- <xsl:text>% \begin{center}&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{center}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:figure/db:mediaobject |
- db:informalfigure/db:mediaobject">
- <xsl:if test="@role='framed'">
- <xsl:text>% \fbox{\vbox{%
-% \advance\hsize by-2\fboxsep\advance\hsize by-2\fboxrule&#xa;</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="@role='framed'">
- <xsl:text>% }}&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:imageobject">
- <xsl:choose>
- <!-- detect a previous image -->
- <xsl:when test="preceding-sibling::*[1][local-name()='imageobject']">
- <xsl:choose>
- <xsl:when test="@dir='ltr'">
- <xsl:text>% \quad\vrule\quad&#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>% \\&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text></xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="db:imagedata">
- <xsl:choose>
- <xsl:when test="@align='center'">
- <xsl:text>% \centering&#xa;</xsl:text>
- </xsl:when>
- <xsl:when test="@align='right'">
- <xsl:text>% \flushright&#xa;</xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:if test="@arch='framed'">
- <xsl:text>% \fbox{%&#xa;</xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="@fileref">
- <xsl:choose>
- <xsl:when test="@format='pdf' and @condition">
- <xsl:text>% \includepdf</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>% \includegraphics</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>[</xsl:text>
- <xsl:choose>
- <xsl:when test="@condition">
- <xsl:value-of select="normalize-space(@condition)"/>
- </xsl:when>
- <xsl:when test="@width">
- <xsl:text>width=</xsl:text>
- <xsl:choose>
- <xsl:when test="contains(@width,'%')">
- <xsl:value-of
- select="number(substring-before(@width,'%')) div 100"/>
- <xsl:text>\columnwidth</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@width"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="@depth">
- <xsl:text>height=</xsl:text>
- <xsl:choose>
- <xsl:when test="contains(@depth,'%')">
- <xsl:value-of
- select="number(substring-before(@depth,'%')) div 100"/>
- <xsl:text>\textheight</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@depth"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>width=\columnwidth</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>]</xsl:text>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@fileref"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:when test="@remap">
- <xsl:text>% </xsl:text>
- <xsl:if test="@condition">
- <xsl:text>{</xsl:text>
- <xsl:value-of select="normalize-space(@condition)"/>
- </xsl:if>
- <xsl:value-of select="@remap"/>
- <xsl:if test="@condition">
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>IMAGE</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="@arch='framed'">
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- </xsl:template>
-
- <!-- lists -->
-
- <xsl:template match="db:itemizedlist">
- <xsl:text>% \begin{itemize}</xsl:text>
- <xsl:if test="@spacing='compact'">
- <xsl:text>[noitemsep]</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{itemize}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:orderedlist/db:title |
- db:procedure/db:title |
- db:simplelist[@arch='enumerate']/db:title"/>
-
- <xsl:template match="db:orderedlist |
- db:procedure |
- db:simplelist[@arch='enumerate']">
- <xsl:variable name="armour">
- <xsl:choose>
- <xsl:when test="parent::db:para">
- <xsl:text></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>%</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- check format for twocol wrapper -->
- <xsl:if test="@role='twocol'">
- <xsl:value-of select="$armour"/>
- <xsl:text> \begin{multicols}{2}&#xa;</xsl:text>
- </xsl:if>
- <xsl:if test="db:title">
- <xsl:value-of select="$armour"/>
- <xsl:text> \noindent\textbf{</xsl:text>
- <xsl:apply-templates select="db:title/node()"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:if>
- <xsl:if test="@xml:id">
- <xsl:value-of select="$armour"/>
- <xsl:text> \label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}&#xa;</xsl:text>
- </xsl:if>
- <xsl:value-of select="$armour"/>
- <xsl:text> \begin{enumerate</xsl:text>
- <!-- check spacing -->
- <xsl:if test="parent::db:para">
- <xsl:text>*</xsl:text>
- </xsl:if>
- <xsl:text>}</xsl:text>
- <xsl:if test="parent::db:para
- or
- (@linkend and
- preceding::db:orderedlist[@xml:id=current()/@linkend])
- or
- @spacing='compact' or local-name()='simplelist'
- or
- @startingnumber">
- <xsl:text>[</xsl:text>
- <!-- test inline -->
- <xsl:if test="parent::db:para">
- <xsl:text>label=\emph{\alph*})</xsl:text>
- </xsl:if>
- <!-- test resumption -->
- <xsl:if test="@linkend and
- preceding::db:orderedlist[@xml:id=current()/@linkend]">
- <xsl:if test="parent::db:para">
- <xsl:text>,</xsl:text>
- </xsl:if>
- <xsl:text>resume</xsl:text>
- </xsl:if>
- <!-- check spacing -->
- <xsl:if test="@spacing='compact' or local-name()='simplelist'">
- <xsl:if test="parent::db:para or
- (@linkend and
- preceding::db:orderedlist[@xml:id=current()/@linkend])">
- <xsl:text>,</xsl:text>
- </xsl:if>
- <xsl:text>noitemsep</xsl:text>
- </xsl:if>
- <!-- check numbering -->
- <xsl:if test="@startingnumber">
- <xsl:if test="parent::db:para or
- (@linkend and
- preceding::db:orderedlist[@xml:id=current()/@linkend])
- or @spacing='compact' or local-name()='simplelist'">
- <xsl:text>,</xsl:text>
- </xsl:if>
- <xsl:text>start=</xsl:text>
- <xsl:value-of select="@startingnumber"/>
- </xsl:if>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <!-- do list -->
- <xsl:text>&#xa;</xsl:text>
- <xsl:apply-templates/>
- <!-- no withdrawal of armour needed for inline list termination
- because the end of a lit item para will have created a newline -->
- <xsl:text>% \end{enumerate</xsl:text>
- <!-- check spacing -->
- <xsl:if test="parent::db:para">
- <xsl:text>*</xsl:text>
- </xsl:if>
- <xsl:text>}</xsl:text>
- <xsl:if test="not(parent::db:para)">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- <!-- check format -->
- <xsl:if test="@role='twocol'">
- <xsl:text>% \end{multicols}&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:variablelist">
- <xsl:text>% \begin{description}[style=unboxed</xsl:text>
- <xsl:if test="@spacing='compact'">
- <xsl:text>,noitemsep</xsl:text>
- </xsl:if>
- <xsl:text>]&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{description}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:simplelist[@role='twocol']">
- <xsl:text>% \begin{multicols}{2}</xsl:text>
- <xsl:if test="@xreflabel">
- <xsl:text>[\paragraph*{</xsl:text>
- <xsl:value-of select="normalize-space(@xreflabel)"/>
- <xsl:text>}]</xsl:text>
- </xsl:if>
- <xsl:text>\begin{itemize}[noitemsep]&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>% \end{itemize}
-% \end{multicols}&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:type[@role='font']">
- <xsl:text>{</xsl:text>
- <xsl:if test="@arch">
- <xsl:text>\fontencoding{</xsl:text>
- <xsl:value-of select="upper-case(@arch)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:if test="@remap">
- <!-- special cases -->
- <xsl:choose>
- <xsl:when test="@remap='sans'">
- <xsl:text>\sffamily</xsl:text>
- </xsl:when>
- <xsl:when test="@remap='serif'">
- <xsl:text>\rmfamily</xsl:text>
- </xsl:when>
- <xsl:when test="@remap='mono'">
- <xsl:text>\ttfamily</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\fontfamily{</xsl:text>
- <xsl:value-of select="@remap"/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <xsl:if test="@condition">
- <!-- special cases -->
- <xsl:choose>
- <xsl:when test="@condition='italic'">
- <xsl:text>\itshape</xsl:text>
- </xsl:when>
- <xsl:when test="@condition='smallcaps'">
- <xsl:text>\scshape</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\fontshape{</xsl:text>
- <xsl:value-of select="@condition"/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <xsl:if test="@annotations">
- <!-- special cases -->
- <xsl:choose>
- <xsl:when test="@annotations='bold'">
- <xsl:text>\bfseries</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\fontseries{</xsl:text>
- <xsl:value-of select="@annotations"/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <xsl:text>\selectfont </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:property[@role]">
- <xsl:value-of select="@role"/>
- <xsl:text>{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <!-- list items -->
-
- <xsl:template match="db:itemizedlist/db:listitem |
- db:orderedlist/db:listitem |
- db:procedure/db:step |
- db:simplelist/db:member">
- <!-- add syntax to inline lists -->
- <xsl:if test="ancestor::db:para and
- not(following-sibling::db:listitem)">
- <xsl:choose>
- <xsl:when test="parent::db:orderedlist or parent::db:procedure">
- <xsl:text>% and &#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>% or &#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- <xsl:text>% \item</xsl:text>
- <xsl:choose>
- <!-- remap a bullet or number -->
- <xsl:when test="@remap or parent::db:simplelist">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="@remap"/>
- <xsl:text>]</xsl:text>
- </xsl:when>
- <!-- or prefix the number with a symbol (what was this for?!) -->
- <xsl:when test="@role">
- <xsl:text>\leavevmode\llap{</xsl:text>
- <xsl:value-of select="@role"/>
- <xsl:text>\thinspace}</xsl:text>
- </xsl:when>
- <!-- normally just a space -->
- <xsl:otherwise>
- <xsl:text> </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- label it if needed -->
- <xsl:if test="@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <!-- syntactic punctuation now handled by db:para template
- except for db:member, which needs terminating -->
- <xsl:if test="local-name()='member'">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:term">
- <xsl:text>% \item[</xsl:text>
- <xsl:apply-templates/>
- <xsl:if test="not(db:command[@conformance or @condition])">
- <xsl:text>\thinspace:</xsl:text>
- </xsl:if>
- <xsl:text>]</xsl:text>
- <xsl:if test="../@xml:id">
- <xsl:text>\label{</xsl:text>
- <xsl:value-of select="../@xml:id"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- inline -->
-
- <xsl:template match="db:token">
- <xsl:text>{\normalfont\itshape</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:package">
- <xsl:if test="@role and
- not(ancestor::db:title) and
- not(ancestor::db:abstract) and
- not(ancestor::db:acknowledgements) and
- not(ancestor::db:term) and
- not(ancestor::db:footnote) and
- not(ancestor::db:table) and
- not(ancestor::db:informaltable) and
- not(ancestor::db:figure)
- and not(preceding-sibling::db:package[.=current()/.])">
- <xsl:text>\DescribePackage{</xsl:text>
- <xsl:choose>
- <xsl:when test=".=''">
- <xsl:value-of select="/*[1]/@xml:id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <!-- in all cases, use sf -->
- <xsl:text>\textsf{</xsl:text>
- <xsl:choose>
- <xsl:when test=".=''">
- <xsl:value-of select="/*[1]/@xml:id"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:modifier/db:alt">
- <xsl:text>\textsf{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:productname">
- <xsl:text>\emph{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@userlevel">
- <xsl:text>\thinspace(</xsl:text>
- <xsl:value-of select="@userlevel"/>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:citetitle">
- <xsl:text>\emph{</xsl:text>
- <xsl:choose>
- <xsl:when test="@linkend">
- <xsl:apply-templates
- select="//*[@xml:id=current()/@linkend]/db:title/node()"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- <xsl:if test="//db:biblioentry[@xml:id=current()/@linkend]">
- <xsl:text> \cite{</xsl:text>
- <xsl:value-of select="@linkend"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:emphasis">
- <xsl:text>\emph{</xsl:text>
- <xsl:if test="@role='strong'">
- <xsl:text>\textbf{</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="@role='strong'">
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:tag">
- <!-- attribute attvalue element emptytag endtag genentity localname namespace numcharref paramentity pi prefix comment starttag xmlpi -->
- <xsl:if test="@role and
- not(ancestor::db:title) and
- not(ancestor::db:term) and
- not(ancestor::db:footnote) and
- not(ancestor::db:table) and
- not(ancestor::db:informaltable) and
- not(ancestor::db:figure)
- and not(preceding-sibling::db:tag[.=current()/.])">
- <xsl:text>\Describe</xsl:text>
- <xsl:choose>
- <xsl:when test="@class='element' or not(@class)">
- <xsl:text>Element</xsl:text>
- </xsl:when>
- <xsl:when test="@class='attribute'">
- <xsl:text>Attribute</xsl:text>
- </xsl:when>
- <xsl:when test="@class='attvalue'">
- <xsl:text>AttributeValue</xsl:text>
- </xsl:when>
- <xsl:when test="@class='genentity'">
- <xsl:text>Entity</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>Error</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>\texttt{</xsl:text>
- <xsl:choose>
- <xsl:when test="@class='attvalue'">
- <xsl:text>"</xsl:text>
- </xsl:when>
- <xsl:when test="@class='genentity'">
- <xsl:text>\&amp;</xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:value-of select="."/>
- <xsl:choose>
- <xsl:when test="@class='attvalue'">
- <xsl:text>"</xsl:text>
- </xsl:when>
- <xsl:when test="@class='genentity'">
- <xsl:text>;</xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- <xsl:if test="name(following-sibling::node()[1])='' and
- starts-with(following-sibling::node()[1],'s')">
- <xsl:text>\thinspace{}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:function">
- <xsl:text>\DescribeFunction{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}\texttt{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:errortext">
- <xsl:text>\DescribeError{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}\textsf{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:type[@role='colour']">
- <xsl:text>\DescribeColour{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}\texttt{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:methodname">
- <xsl:text>\DescribeTemplate{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}\texttt{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:code">
- <xsl:text>\texttt{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:option">
- <xsl:if test="@role and
- not(ancestor::db:title) and
- not(ancestor::db:term) and
- not(ancestor::db:footnote) and
- not(ancestor::db:table) and
- not(ancestor::db:informaltable) and
- not(ancestor::db:figure)
- and not(preceding-sibling::db:option[.=current()/.])">
- <xsl:text>\DescribeOption{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="@condition">
- <xsl:text>\oarg{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:when test="@conformance">
- <xsl:text>\marg{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <!-- otherwise it's for a package or command -->
- <xsl:otherwise>
- <xsl:text>\textbf{\texttt{</xsl:text>
- <xsl:if test="@xml:lang='bash'">
- <xsl:text>-</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="@xml:lang='bash' and not(@conformance='nocolon')">
- <xsl:text>:</xsl:text>
- </xsl:if>
- <xsl:text>}}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:guiicon">
- <xsl:text>\includegraphics</xsl:text>
- <xsl:if test="@annotations">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="@annotations"/>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@xlink:href"/>
- <xsl:text>}</xsl:text>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="db:personname">
- <xsl:apply-templates/>
- <xsl:text>\index{</xsl:text>
- <xsl:value-of select="normalize-space(db:surname)"/>
- <xsl:text>!</xsl:text>
- <xsl:value-of select="normalize-space(db:firstname)"/>
- <xsl:if test="db:othername">
- <xsl:text> </xsl:text>
- <xsl:value-of select="normalize-space(db:othername)"/>
- </xsl:if>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:personname/db:firstname">
- <xsl:value-of select="."/>
- </xsl:template>
-
- <xsl:template match="db:personname/db:othername">
- <xsl:if test="preceding-sibling::node()!=' '">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:value-of select="."/>
- <xsl:if test="string-length(normalize-space(.))=1 or
- (.=upper-case(.) and substring(.,string-length(.))!='.')">
- <xsl:text>.</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:personname/db:surname">
- <xsl:if test="preceding-sibling::node()!=' '">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:value-of select="."/>
- </xsl:template>
-
- <xsl:variable name="nosc">
- <xsl:for-each select="$prepost//db:step[@conformance='nosc']">
- <xsl:value-of select="$thisdoc//db:constraintdef
- [@xml:id='docpackages']
- //db:seg[.=current()/@remap]"/>
- </xsl:for-each>
- </xsl:variable>
-
- <xsl:template match="db:acronym">
- <xsl:choose>
- <!-- defining instance -->
- <xsl:when test="@xml:id">
- <xsl:apply-templates/>
- <xsl:text>~(</xsl:text>
- <xsl:call-template name="casestyle">
- <xsl:with-param name="text" select="@xml:id"/>
- <xsl:with-param name="style" select="'\textsc{'"/>
- </xsl:call-template>
- <xsl:text>)\index{</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>|see{</xsl:text>
- <xsl:value-of select="translate(@xml:id,
- 'abcdefghijklmnopqrstuvwxyz',
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
- <xsl:text>}}\index{</xsl:text>
- <xsl:value-of select="translate(@xml:id,
- 'abcdefghijklmnopqrstuvwxyz',
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
- <xsl:text>|textbf}</xsl:text>
- </xsl:when>
- <!-- no ID -->
- <xsl:otherwise>
- <!-- check for missing smallcaps in font -->
- <xsl:choose>
- <xsl:when test="$nosc=''">
- <xsl:call-template name="casestyle">
- <xsl:with-param name="text" select="normalize-space(.)"/>
- <xsl:with-param name="style" select="'\textsc{'"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="casestyle">
- <xsl:with-param name="text" select="normalize-space(.)"/>
- <xsl:with-param name="style" select="'{\small '"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="//db:acronym[@xml:id=current()/.]">
- <xsl:if test="ancestor::db:footnote">
- <xsl:text>\protect</xsl:text>
- </xsl:if>
- <xsl:text>\index{</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="casestyle">
- <xsl:param name="text"/>
- <xsl:param name="style"/>
- <xsl:value-of select="$style"/>
- <xsl:choose>
- <xsl:when test="contains($style,'\textsc')">
- <xsl:value-of select="translate($text,
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
- 'abcdefghijklmnopqrstuvwxyz')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="translate($text,
- 'abcdefghijklmnopqrstuvwxyz',
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:superscript">
- <xsl:text>\textsuperscript{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:exceptionname">
- <xsl:text>\textsc{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <!-- tagging features for the doc and dox packages -->
-
- <xsl:template match="db:envar">
- <!-- role specifies the command does not belong to this package
- and is only mentioned incidentally -->
- <xsl:if test="@role and
- not(ancestor::db:term) and
- not(.=ancestor::db:annotation/@xreflabel) and
- (@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))
- and not(preceding-sibling::db:envar[.=current()/.])">
- <xsl:text>\DescribeEnv{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>\texttt{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@condition">
- <xsl:text>\oarg{</xsl:text>
- <xsl:value-of select="normalize-space(@condition)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:if test="@conformance">
- <xsl:text>\marg{</xsl:text>
- <xsl:value-of select="normalize-space(@conformance)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:classname">
- <xsl:if test="@role and
- not(ancestor::db:footnote) and
- not(ancestor::db:title) and
- not(ancestor::db:term) and
- not(.=ancestor::db:annotation/@xreflabel) and
- (@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))
- and not(preceding-sibling::db:classname[.=current()/.])">
- <xsl:text>\DescribeClass{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:text>\textsf{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@condition">
- <xsl:text>\oarg{</xsl:text>
- <xsl:value-of select="normalize-space(@condition)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:if test="@conformance">
- <xsl:text>\marg{</xsl:text>
- <xsl:value-of select="normalize-space(@conformance)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- command occurring in documentation uses \DescribeMacro
- or whatever class is given in @remap (eg counter, switch,
- length, etc) -->
-
- <xsl:template match="db:command">
- <!-- role specifies the command does not belong to this package
- and is only mentioned incidentally (a common value is 'kernel')
- and therefore requires no indexing -->
- <xsl:if test="@role and not(.='TeX') and not(.='LaTeX') and
- not(ancestor::db:term) and
- not(.=ancestor::db:annotation/@xreflabel) and
- (@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))
- and not(preceding-sibling::db:command[.=current()/.])">
- <xsl:text>\DescribeMacro{\</xsl:text>
- <xsl:choose>
- <xsl:when
- test="@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang)
- and contains(.,'{')">
- <xsl:value-of select="substring-before(normalize-space(.),'{')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="normalize-space(.)"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:choose>
- <!-- fake the backslash when in term (definition list)
- or when being used as an example (not for indexing) -->
- <xsl:when test="(@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))
- and (not(@role) or parent::db:term)">
- <xsl:if test="parent::db:term and @userlevel!='optional'">
- <xsl:text>\llap{$\star$\enspace}</xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="parent::db:term">
- <xsl:text>\texttt{\textbackslash{}</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="avoidverb"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- otherwise use \verb for TeX commands only if needed -->
- <xsl:when test="@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang)">
- <xsl:call-template name="avoidverb"/>
- </xsl:when>
- <!-- bash -->
- <xsl:when test="@xml:lang='bash'">
- <xsl:call-template name="avoidverb"/>
- </xsl:when>
- <!-- other language commands have no backslash -->
- <xsl:when test="@condition='nolit'">
- <xsl:call-template name="avoidverb"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="avoidverb"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="@condition and @condition!='nolit'">
- <xsl:text>\oarg{</xsl:text>
- <xsl:value-of select="normalize-space(@condition)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:if test="@conformance">
- <xsl:text>\marg{</xsl:text>
- <xsl:value-of select="normalize-space(@conformance)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="avoidverb">
- <!-- try to output monospace filenames, URIs, etc while
- avoiding the use of \verb -->
- <xsl:variable name="delim">
- <!-- delimiter to use if we really do have to use \verb
- these are in order of preference -->
- <xsl:choose>
- <xsl:when test="not(contains(.,'|'))">
- <xsl:text>|</xsl:text>
- </xsl:when>
- <xsl:when test="not(contains(.,'+'))">
- <xsl:text>+</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>`</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <!-- if the contents contains any of TeX's special characters
- that are invalid or unconfortable in URIs (incl vis.space)
- \$^{}<|>␣ but not &_~#%
- we have to use \verb, reluctantly -->
- <xsl:when test="matches(.,'.*[\\\$\^{}&lt;\|&gt;␣].*')
- and not(ancestor::db:title)
- and not(ancestor::db:footnote)
- and not(ancestor::db:term)">
- <xsl:choose>
- <!-- replaceable adds a ` to end the \verb, and a new \verb`
- after it has emitted its value -->
- <xsl:when test="db:replaceable or @condition='nolit'">
- <xsl:text>\verb</xsl:text>
- <xsl:value-of select="$delim"/>
- <xsl:if
- test="name()='command' and
- (@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))">
- <xsl:text>\</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="@xlink:type">
- <xsl:text>.</xsl:text>
- <xsl:value-of select="@xlink:type"/>
- </xsl:if>
- <xsl:value-of select="$delim"/>
- </xsl:when>
- <!-- otherwise this is a plain \verb -->
- <xsl:otherwise>
- <xsl:text>\verb</xsl:text>
- <xsl:value-of select="$delim"/>
- <xsl:if
- test="name()='command' and
- (@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))">
- <xsl:text>\</xsl:text>
- </xsl:if>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="@xlink:type">
- <xsl:text>.</xsl:text>
- <xsl:value-of select="@xlink:type"/>
- </xsl:if>
- <xsl:value-of select="$delim"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- not ready for this yet -->
- <xsl:when test="matches(.,'.*[\\\$\^{}&lt;\|&gt;].*')
- and
- (ancestor::db:title or
- ancestor::db:footnote or
- ancestor::db:term)">
- <xsl:message>
- <xsl:text>Warning: verbatim in </xsl:text>
- <xsl:value-of select="name(ancestor::*[3])"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="name(ancestor::*[2])"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="name(ancestor::*[1])"/>
- <xsl:text> for "</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>"</xsl:text>
- </xsl:message>
- <xsl:text>\url{</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <!-- if it's in a , use \url
- <xsl:when test="contains(normalize-space(.),' ')
- and not(contains(.'{') or contains(.,'}'))">
- <xsl:text>\url{</xsl:text>
- ???
- <xsl:text>}</xsl:text>
- </xsl:when>
--->
- <!-- otherwise we can get away with a monospace -->
- <xsl:otherwise>
- <xsl:choose>
- <!-- if it contains the acceptable characters for URIs
- &_~#% -->
- <xsl:when test="matches(.,'.*[&amp;_~#%].*')
- and not(db:replaceable or @condition='nolit')">
- <xsl:text>\url{</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <!-- replaceable adds a ` to end the \verb, and a new \verb`
- after it has emitted its value -->
- <xsl:when test="db:replaceable or @condition='nolit'">
- <xsl:text>{\ttfamily{}</xsl:text>
- <xsl:if
- test="name()='command' and
- (@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))">
- <xsl:text>\textbackslash{}</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:if test="@xlink:type">
- <xsl:text>.</xsl:text>
- <xsl:value-of select="@xlink:type"/>
- </xsl:if>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <!-- otherwise this is a plain -->
- <xsl:otherwise>
- <xsl:text>{\ttfamily{}</xsl:text>
- <xsl:if
- test="name()='command' and
- (@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang))">
- <xsl:text>\textbackslash{}</xsl:text>
- </xsl:if>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:if test="@xlink:type">
- <xsl:text>.</xsl:text>
- <xsl:value-of select="@xlink:type"/>
- </xsl:if>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:footnote">
- <xsl:text>\footnote{%&#xa;</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:uri">
- <xsl:choose>
- <xsl:when test="@xlink:href and .!=''">
- <xsl:apply-templates/>
- <xsl:text>\footnote{\url{</xsl:text>
- <xsl:value-of select="@xlink:href"/>
- <xsl:text>}}</xsl:text>
- </xsl:when>
- <xsl:when test="not(@xlink:href) and .!=''">
- <xsl:text>\url{</xsl:text>
- <xsl:if test="@type">
- <xsl:value-of select="@type"/>
- <xsl:text>:</xsl:text>
- </xsl:if>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- </xsl:choose>
- <xsl:if test="@xreflabel and @type='news'">
- <xsl:text> at \textlangle\verb`</xsl:text>
- <xsl:value-of select="@xreflabel"/>
- <xsl:text>`\textrangle{}</xsl:text>
- </xsl:if>
- <!--xsl:if test="following-sibling::node()[1][substring(.,1,1)=',']">
- <xsl:text>\thinspace </xsl:text>
- </xsl:if-->
- </xsl:template>
-
- <xsl:template match="db:link">
- <xsl:text>{\color{blue}\uline{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:filename | db:systemitem">
- <xsl:call-template name="avoidverb"/>
- </xsl:template>
-
- <xsl:template match="db:firstterm">
- <xsl:text>\textbf{\emph{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}}\index{</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>|textbf}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:foreignphrase">
- <xsl:choose>
- <xsl:when test="@xml:lang='jp'">
- <xsl:text>\cjktext{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:when test="@xml:lang='ga'">
- <!-- <xsl:text>\texteiad{</xsl:text>-->
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@remap"/>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:when test="@xml:lang!=/db:book/@xml:lang">
- <xsl:text>\foreignlanguage{</xsl:text>
- <xsl:value-of
- select="tokenize($langs/language[@iso=current()/@xml:lang]/@babel,
- ' ')[1]"/>
- <xsl:text>}{</xsl:text>
- <xsl:choose>
- <xsl:when
- test="$langs/language[@iso=current()/@xml:lang]/@wsys='la'">
- <xsl:text>\emph{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\emph{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:note[not(parent::db:para)]">
- <xsl:text>\begin{Sbox}\begin{minipage}{.9\columnwidth}\sffamily
-</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>\end{minipage}\end{Sbox}{\fboxsep1em\centering\fbox{\TheSbox}\par}
-</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:note[parent::db:para]">
- <xsl:text>{\bfseries </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:quote | db:phrase | db:wordasword">
- <xsl:text>`</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>'</xsl:text>
- <xsl:if test="@linkend">
- <xsl:text>&#x0a;</xsl:text>
- <xsl:call-template name="makeref"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:email">
- <xsl:text>\url{</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:replaceable">
- <!-- make sure we use the same delimiter as the parent element does -->
- <xsl:variable name="delim">
- <!-- in order of preference -->
- <xsl:choose>
- <xsl:when test="not(contains(.,'|'))">
- <xsl:text>|</xsl:text>
- </xsl:when>
- <xsl:when test="not(contains(.,'+'))">
- <xsl:text>+</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>`</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <!-- stop-start \verb when in a command or systemitem -->
- <xsl:when test="parent::db:command
- or parent::db:systemitem
- or parent::db:filename">
- <xsl:value-of select="$delim"/>
- <xsl:text>{\ttfamily\itshape </xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}</xsl:text>
- <xsl:text>\verb</xsl:text>
- <xsl:value-of select="$delim"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>{\itshape </xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Counters and Lengths -->
-
- <xsl:template match="db:varname[not(ancestor::db:footnote)]
- | db:parameter[not(ancestor::db:footnote)]">
- <xsl:if test="@role
- and not(preceding-sibling::db:varname[.=current()/.][@role=current()/@role])">
- <xsl:text>\Describe</xsl:text>
- <xsl:value-of select="translate(substring(@role,1,1),'cl','CL')"/>
- <xsl:value-of select="substring(@role,2)"/>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- <xsl:call-template name="avoidverb"/>
- </xsl:template>
-
- <xsl:template match="db:varname[ancestor::db:footnote]
- | db:parameter[ancestor::db:footnote]">
- <xsl:call-template name="avoidverb"/>
- </xsl:template>
-
- <!-- special use of endterm xref for ref to ref
-
- <xsl:template match="db:xref[@endterm]">
- <xsl:choose>
- <xsl:when
- test="//db:constraintdef[@linkend=current()/@endterm][@remap]">
- <xsl:text>\vref{</xsl:text>
- <xsl:value-of
- select="//db:constraintdef[@linkend=current()/@endterm]/@remap"/>
- <xsl:text>}</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>[unknown reference to `\texttt{</xsl:text>
- <xsl:value-of select="@endterm"/>
- <xsl:text>}']</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
--->
-
- <xsl:template match="db:xref[@linkend]">
- <xsl:variable name="target"
- select="//*[@xml:id=current()/@linkend]"/>
- <!-- catch items in a labelled list before anything else,
- and give them an ordinal number -->
- <xsl:choose>
- <!-- DESC LIST -->
- <xsl:when test="name($target)='varlistentry'">
- <xsl:text>`\textbf{</xsl:text>
- <xsl:apply-templates select="$target/db:term/node()"/>
- <xsl:text>}', the </xsl:text>
- <xsl:variable name="nth"
- select="number(count($target/
- preceding-sibling::db:varlistentry)+1)"/>
- <xsl:choose>
- <xsl:when test="$nth=1">
- <xsl:text>first </xsl:text>
- </xsl:when>
- <xsl:when test="$nth=count($target/
- ancestor::db:variablelist[1]/db:varlistentry)">
- <xsl:text>last </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\ordinal</xsl:text>
- <xsl:if test="$nth &lt; 10">
- <xsl:text>string</xsl:text>
- </xsl:if>
- <xsl:text>num{</xsl:text>
- <xsl:value-of select="$nth"/>
- <xsl:text>} </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>item in the list </xsl:text>
- <xsl:if test="not(@xrefstyle='page')">
- <xsl:text>in </xsl:text>
- </xsl:if>
- </xsl:when>
- <!-- UNNUMBERED LIST ITEMS -->
- <xsl:when test="name($target)='listitem' and
- name($target/ancestor::*[1])='itemizedlist'">
- <xsl:text>the </xsl:text>
- <xsl:variable name="nth"
- select="number(count($target/
- preceding-sibling::db:listitem)+1)"/>
- <xsl:choose>
- <xsl:when test="$nth=1">
- <xsl:text>first </xsl:text>
- </xsl:when>
- <xsl:when test="$nth=count($target/
- ancestor::db:itemizedlist[1]/db:listitem)">
- <xsl:text>last </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\ordinal</xsl:text>
- <xsl:if test="$nth &lt; 10">
- <xsl:text>string</xsl:text>
- </xsl:if>
- <xsl:text>num{</xsl:text>
- <xsl:value-of select="$nth"/>
- <xsl:text>} </xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>item in the list </xsl:text>
- <xsl:if test="not(@xrefstyle='page')">
- <xsl:text>in </xsl:text>
- </xsl:if>
- </xsl:when>
- <!-- ORDERED LIST ITEMS or PROCEDURE STEPS -->
- <xsl:when test="(local-name($target)='listitem' and
- local-name($target/parent::*[1])='orderedlist') or
- (local-name($target)='step' and
- local-name($target/parent::*[1])='procedure')">
- <xsl:choose>
- <xsl:when test="ancestor::procedure">
- <xsl:text>step</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>item</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>~\ref{</xsl:text>
- <xsl:value-of select="@linkend"/>
- <xsl:text>}</xsl:text>
- <xsl:choose>
- <xsl:when test="generate-id(ancestor::db:procedure)=
- generate-id($target/parent::db:procedure)">
- <xsl:choose>
- <xsl:when
- test="count(preceding::* | $target)=count(preceding::*)">
- <xsl:text> above</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> below</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> in the list on p.\thinspace\pageref{</xsl:text>
- <xsl:value-of select="@linkend"/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- TITLED ORDERED LISTS -->
- <xsl:when test="local-name($target)='orderedlist' and $target/db:title">
- <xsl:text>the list `</xsl:text>
- <xsl:apply-templates select="$target/db:title/node()"/>
- <xsl:text>' in </xsl:text>
- </xsl:when>
- <!-- INFORMAL TABLES -->
- <xsl:when test="local-name($target)='informaltable'">
- <xsl:text>the table </xsl:text>
- </xsl:when>
- <!-- PROGRAMLISTING with condition="ignore" in package code -->
- <xsl:when test="local-name($target)='programlisting'">
- <xsl:text>the code example </xsl:text>
- </xsl:when>
- </xsl:choose>
- <!-- AUTOMATED -->
- <xsl:choose>
- <xsl:when test="@xrefstyle='page'
- or local-name($target)='informaltable'
- or local-name($target)='programlisting'">
- <xsl:text>\vpageref</xsl:text>
- </xsl:when>
- <!-- omit numbered list items done manually above -->
- <xsl:when test="(local-name($target)='listitem' and
- local-name($target/ancestor::*[1])='orderedlist')
- or
- (ancestor::db:procedure and
- generate-id(ancestor::db:procedure)=
- generate-id($target/parent::db:procedure))">
- <xsl:text></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\vref</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- now the argument[s]: not wanted for list items done manually -->
- <xsl:if test="not(local-name($target)='listitem' and
- local-name($target/ancestor::*[1])='orderedlist')
- and
- not(ancestor::db:procedure and $target/parent::db:procedure)">
- <xsl:if test="@endterm">
- <xsl:text>range</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@linkend"/>
- <xsl:text>}</xsl:text>
- <xsl:if test="@endterm">
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@endterm"/>
- <xsl:text>}</xsl:text>
- </xsl:if>
- </xsl:if>
- <xsl:if test="@xreflabel">
- <xsl:text> (</xsl:text>
- <xsl:apply-templates
- select="$target/child::*[local-name()=current()/@xreflabel][1]/node()"/>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- gui menu stuff -->
-
- <xsl:template match="db:guimenu">
- <xsl:text>\textsf{\bfseries </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:guisubmenu">
- <xsl:if test="starts-with(local-name(preceding-sibling::*[1]),'gui')">
- <xsl:text>\menusep</xsl:text>
- </xsl:if>
- <xsl:text>\textsf{</xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:guimenuitem">
- <xsl:if test="starts-with(local-name(preceding-sibling::*[1]),'gui')">
- <xsl:text>\menusep</xsl:text>
- </xsl:if>
- <xsl:text>\textsf{\itshape </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:guilabel">
- <xsl:text>{\fboxsep2pt\fbox{\sffamily </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}}</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:guibutton">
- <xsl:text>{\fboxsep2pt\ovalbox{\sffamily </xsl:text>
- <xsl:apply-templates/>
- <xsl:text>}}</xsl:text>
- </xsl:template>
-
- <!-- odds 'n' sods -->
-
- <xsl:template match="processing-instruction('LaTeX')">
- <xsl:value-of select="."/>
- </xsl:template>
-
- <xsl:template match="db:varlistentry |
- db:varlistentry/db:listitem |
- db:authorgroup">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="*">
- <xsl:message>
- <xsl:text>default: </xsl:text>
- <xsl:value-of select="local-name()"/>
- <xsl:text> ("</xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>")</xsl:text>
- </xsl:message>
- <xsl:apply-templates/>
- </xsl:template>
-
- <!-- bib -->
-
- <xsl:template match="db:biblioref">
- <xsl:call-template name="makeref"/>
- </xsl:template>
-
- <xsl:template name="makeref">
- <xsl:variable name="target"
- select="//db:bibliography/db:biblioentry[@xml:id=current()/@linkend]"/>
- <xsl:choose>
- <!-- title only -->
- <xsl:when test="@xrefstyle='title'">
- <xsl:choose>
- <xsl:when test="$target/@xreflabel='article' or
- $target/@xreflabel='inbook' or
- $target/@xreflabel='incollection'">
- <xsl:text>`</xsl:text>
- <xsl:apply-templates
- select="($target/descendant::db:title)[1]/node()"/>
- <xsl:text>'</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>\emph{</xsl:text>
- <xsl:apply-templates
- select="($target/descendant::db:title)[1]/node()"/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- author only -->
- <xsl:when test="@xrefstyle='author'">
- <xsl:for-each select="$target//db:author[1]/db:personname">
- <xsl:value-of select="db:firstname"/>
- <xsl:if test="db:othername">
- <xsl:text>&#x0a;</xsl:text>
- <xsl:value-of select="db:othername"/>
- </xsl:if>
- <xsl:text> </xsl:text>
- <xsl:value-of select="db:surname"/>
- </xsl:for-each>
- </xsl:when>
- <!-- author only -->
- <xsl:when test="@xrefstyle='shortauthor'">
- <xsl:for-each select="$target//db:author[1]/db:personname">
- <xsl:value-of select="db:surname"/>
- </xsl:for-each>
- </xsl:when>
- <!-- all the rest -->
- <xsl:otherwise>
- <xsl:text>\cite</xsl:text>
- <xsl:if test="(@units and @begin) or @annotations">
- <xsl:text>[</xsl:text>
- <xsl:value-of select="@units"/>
- <xsl:if test="@units='p' and @end">
- <xsl:text>p</xsl:text>
- </xsl:if>
- <xsl:text>.\thinspace </xsl:text>
- <xsl:value-of select="@begin"/>
- <xsl:if test="@end">
- <xsl:text>--</xsl:text>
- <xsl:value-of select="@end"/>
- </xsl:if>
- <xsl:if test="@annotations">
- <xsl:if test="@units and @begin">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:value-of select="normalize-space(@annotations)"/>
- </xsl:if>
- <xsl:text>]</xsl:text>
- </xsl:if>
- <xsl:text>{</xsl:text>
- <xsl:value-of select="@linkend"/>
- <xsl:text>}</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- utilities -->
-
- <xsl:template name="copyright-statement">
- <xsl:param name="ftype"/>
- <xsl:text>% Extracted from </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.xml</xsl:text>
- <xsl:text>
-% </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$ftype"/>
- <xsl:text> is copyright © </xsl:text>
- <xsl:variable name="copyright-first">
- <xsl:for-each select="//db:info/db:revhistory/db:revision">
- <xsl:sort select="@version" order="descending"/>
- <xsl:if test="position()=last()">
- <xsl:value-of
- select="substring(db:date/@conformance,1,4)"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:value-of select="$copyright-first"/>
- <xsl:variable name="copyright-latest">
- <xsl:for-each select="//db:info/db:revhistory/db:revision">
- <xsl:sort select="@version" order="ascending"/>
- <xsl:if test="position()=last()">
- <xsl:value-of
- select="substring(db:date/@conformance,1,4)"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:if test="$copyright-latest > $copyright-first">
- <xsl:text>-</xsl:text>
- <xsl:value-of select="$copyright-latest"/>
- </xsl:if>
- <xsl:text> by </xsl:text>
- <!-- RIGHTS -->
- <xsl:choose>
- <xsl:when test="/db:book/@audience='lppl'">
- <xsl:value-of
- select="normalize-space(//db:info//db:author[1]/
- db:personname/db:firstname)"/>
- <xsl:text> </xsl:text>
- <xsl:value-of
- select="normalize-space(//db:info//db:author[1]/
- db:personname/db:surname)"/>
- <xsl:text> &lt;</xsl:text>
- <xsl:value-of select="//db:info//db:author[1]/db:email"/>
- <xsl:text>>&#xa;</xsl:text>
- <xsl:text>%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either
-% version 1.3 of this license or (at your option) any later
-% version. The latest version of this license is in:
-%
-% http://www.latex-project.org/lppl.txt
-%
-% and version 1.3 or later is part of all distributions of
-% LaTeX version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-% &#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
- select="normalize-space(//db:info/db:copyright/db:holder)"/>
- <xsl:text> &lt;</xsl:text>
- <xsl:value-of
- select="substring-after(//db:info/db:copyright/db:holder
- /@xlink:href,'mailto:')"/>
- <xsl:text>>&#xa;</xsl:text>
- <xsl:text>%
-% This work may not be copied or re-used without the express
-% written permission of the copyright holder[s]. Access to this
-% work is restricted to the copyright holder[s] and their
-% authorised employees, contractors, or agents.
-% &#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>% The current maintainer of this work is </xsl:text>
- <xsl:choose>
- <xsl:when test="//db:info//db:author[@role='maintainer']">
- <xsl:for-each select="//db:info//db:author[@role='maintainer']">
- <xsl:value-of
- select="normalize-space(db:personname/db:firstname)"/>
- <xsl:text> </xsl:text>
- <xsl:value-of
- select="normalize-space(db:personname/db:surname)"/>
- <xsl:text> &lt;</xsl:text>
- <xsl:value-of select="db:email"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of
- select="normalize-space(//db:info//db:author/db:personname/db:firstname)"/>
- <xsl:text> </xsl:text>
- <xsl:value-of
- select="normalize-space(//db:info//db:author/db:personname/db:surname)"/>
- <xsl:text> &lt;</xsl:text>
- <xsl:value-of select="//db:info//db:author/db:email"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>>&#xa;</xsl:text>
- <xsl:text>%
-% This work consists of the files </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx and </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.ins,
-% the derived file </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$filetype"/>
- <xsl:text>, and any ancillary files listed
-% in the MANIFEST.&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template name="repeatarg">
- <xsl:param name="limit"/>
- <xsl:param name="count">
- <xsl:text>0</xsl:text>
- </xsl:param>
- <xsl:param name="prefix"/>
- <xsl:param name="suffix"/>
- <xsl:if test="$count&lt;$limit">
- <xsl:value-of select="$prefix"/>
- <xsl:text>#</xsl:text>
- <xsl:value-of select="$count + 1"/>
- <xsl:value-of select="$suffix"/>
- <xsl:call-template name="repeatarg">
- <xsl:with-param name="limit" select="$limit"/>
- <xsl:with-param name="count" select="$count + 1"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- special mode for outputting the .ins file -->
-
- <xsl:template match="db:info" mode="ins">
- <xsl:variable name="file">
- <xsl:value-of select="$name"/>
- <xsl:text>.ins</xsl:text>
- </xsl:variable>
- <xsl:result-document format="textFormat" href="{$file}">
- <xsl:text>%</xsl:text>
- <xsl:call-template name="copyright-statement">
- <xsl:with-param name="ftype">
- <xsl:text>ins</xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>%
-\input docstrip.tex
-\keepsilent
-\usedir{tex/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>}
-\preamble&#xa;</xsl:text>
- <xsl:call-template name="htrim">
- <xsl:with-param name="text">
- <xsl:call-template name="lrtrim">
- <xsl:with-param name="text" select="db:annotation/*"/>
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>&#xa;\endpreamble&#xa;</xsl:text>
- <!-- this bit just doesn't seem to work right
- <xsl:for-each select="/db:book/db:part[@xml:id='files']
- /db:chapter[db:programlisting]">
- <xsl:variable name="ext"
- select="substring-after(db:programlisting/@xlink:href,'.')"/>
- <xsl:text>\declarepreamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>
-\DoubleperCent\space This is file </xsl:text>
- <xsl:value-of select="db:programlisting/@xlink:href"/>
- <xsl:text>&#xa;\endpreamble&#xa;</xsl:text>
- <xsl:text>\declarepostamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>
-\DoubleperCent\space End of file </xsl:text>
- <xsl:value-of select="db:programlisting/@xlink:href"/>
- <xsl:text>&#xa;\endpreamble&#xa;</xsl:text>
- </xsl:for-each>
- -->
- <xsl:text>\generate{</xsl:text>
- <!-- generate the main file first -->
- <xsl:text>\file{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$filetype"/>
- <xsl:text>}{\from{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx}{</xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text>}}%&#xa;</xsl:text>
- <!-- add any fragments from the documentation
- these are those with an ID, a href, *and* show='new' -->
- <xsl:for-each
- select="//db:programlisting
- [@xml:id and @xlink:show='new' and @xlink:href]">
- <xsl:variable name="ext" select="substring-after(@xlink:href,'.')"/>
- <xsl:choose>
- <xsl:when test="$ext='tex'">
- <xsl:text> \usepreamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>preamble\usepostamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>postamble</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> \usepreamble\empty\usepostamble\empty</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#xa; \file{</xsl:text>
- <xsl:value-of select="@xlink:href"/>
- <xsl:text>}{\from{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx}{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}}%&#xa;</xsl:text>
- </xsl:for-each>
- <!-- add any documented ancillary files from appendixes
- in the code part -->
- <xsl:for-each select="/db:book/db:part[@xml:id='code']
- /db:appendix[@xml:id and @xlink:href]">
- <xsl:variable name="ext" select="substring-after(@xlink:href,'.')"/>
- <xsl:choose>
- <xsl:when test="$ext='tex'">
- <xsl:text> \usepreamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>preamble\usepostamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>postamble</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text></xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> \file{</xsl:text>
- <xsl:value-of select="@xlink:href"/>
- <xsl:text>}{\from{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx}{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}}%&#xa;</xsl:text>
- </xsl:for-each>
- <!-- add any undocumented ancillary files -->
- <xsl:for-each select="/db:book/db:part[@xml:id='files']
- /db:chapter[db:programlisting]">
- <xsl:variable name="ext"
- select="substring-after(db:programlisting/@xlink:href,'.')"/>
- <xsl:choose>
- <xsl:when test="$ext='tex'">
- <xsl:text> \usepreamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>preamble\usepostamble\</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>postamble</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text> \usepreamble\empty\usepostamble\empty</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#xa; \file{</xsl:text>
- <xsl:value-of select="db:programlisting/@xlink:href"/>
- <xsl:text>}{\from{</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx}{</xsl:text>
- <xsl:value-of select="@xml:id"/>
- <xsl:text>}}%&#xa;</xsl:text>
- </xsl:for-each>
- <xsl:text>}
-\obeyspaces
-\Msg{********************************************************}
-\Msg{** **}
-\Msg{** Read the documentation before using this </xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:if test="$doctype='class'">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:text>. **}
-\Msg{** **}
-\Msg{********************************************************}
-\endbatchfile
-</xsl:text>
- </xsl:result-document>
- </xsl:template>
-
- <xsl:template match="text()">
- <xsl:choose>
- <!-- SPECIAL HANDLING FOR SHELL SCRIPTS -->
- <xsl:when test="ancestor::db:programlisting[@language='bash']">
- <xsl:choose>
- <!-- remove leading newlines from initial strings -->
- <xsl:when test="count(preceding-sibling::text())=0
- and starts-with(.,'&#xa;')">
- <xsl:value-of select="substring(.,2)"/>
- </xsl:when>
- <!-- remove trailing space from terminals -->
- <xsl:when test="count(following-sibling::text())=0
- and matches(.,'\n[\s]*$')">
- <xsl:value-of select="replace(.,'\n[\s]*$','')"/>
- </xsl:when>
- <!-- otherwise don't prefix or suffix -->
- <xsl:otherwise>
- <xsl:value-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- SIMILAR FOR TEXT OF INLINE COMMANDS (and bibliography entries
- being handled by db2bibtex.xsl): normalise spaces
- but preserve one leading and one trailing space if given -->
- <xsl:when test="ancestor::db:command or ancestor::db:biblioentry">
- <!-- replace a single leading WS token with a space -->
- <xsl:if test="starts-with(.,' ') or
- starts-with(.,'&#x9;') or
- starts-with(.,'&#xa;')">
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:value-of select="normalize-space(.)"/>
- <!-- replace a single trailing WS token with a space -->
- <xsl:if test="substring(.,string-length(.))=' ' or
- substring(.,string-length(.))='&#x9;' or
- substring(.,string-length(.))='&#xa;'">
- <xsl:text> </xsl:text>
- </xsl:if>
- </xsl:when>
- <!-- otherwise check for percent prefixes -->
- <xsl:otherwise>
- <xsl:call-template name="dtxtext">
- <xsl:with-param name="text" select="."/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="dtxtext">
- <xsl:param name="text"/>
- <xsl:choose>
- <xsl:when test="normalize-space(.)=''">
- <xsl:text></xsl:text>
- </xsl:when>
- <!-- if the span starts with a TAB, remove it,
- and keep doing so until no more TABs -->
- <xsl:when test="starts-with($text,'&#x9;')">
- <xsl:call-template name="dtxtext">
- <xsl:with-param name="text"
- select="substring($text,2)"/>
- </xsl:call-template>
- </xsl:when>
- <!-- if it starts with a newline AND it's in a <programlisting>
- element AND this is the first span of its type, prefix
- a percent -->
- <xsl:when test="starts-with($text,'&#xa;') and
- parent::db:programlisting and
- count(preceding-sibling::text())=0">
- <xsl:text>% </xsl:text>
- <xsl:call-template name="dtxtext">
- <xsl:with-param name="text"
- select="substring($text,2)"/>
- </xsl:call-template>
- </xsl:when>
- <!-- break strings containing newlines -->
- <xsl:when test="contains($text,'&#xa;')">
- <xsl:value-of select="substring-before($text,'&#xa;')"/>
- <xsl:choose>
- <xsl:when
- test="normalize-space(substring-after($text,'&#xa;'))='' and
- parent::db:programlisting and
- count(following-sibling::text())=0">
- <xsl:text></xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>&#xa;% </xsl:text>
- <xsl:call-template name="dtxtext">
- <xsl:with-param name="text"
- select="substring-after($text,'&#xa;')"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- convert underscores in filenames -->
- <xsl:when test="ancestor::db:filename[db:replaceable] and
- contains($text,'_')">
- <xsl:value-of select="substring-before($text,'_')"/>
- <xsl:text>\_</xsl:text>
- <xsl:call-template name="dtxtext">
- <xsl:with-param name="text"
- select="substring-after($text,'_')"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="build">
- <xsl:result-document format="textFormat" href="build">
- <xsl:text>#! /bin/bash
-#
-# Bourne shell script to build the </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="$doctype"/>
- <xsl:text> file and documentation
-#
-java -jar </xsl:text>
- <xsl:value-of select="$processor"/>
- <xsl:text> -o:</xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.xml </xsl:text>
- <xsl:value-of select="$cpdir"/>
- <xsl:text>/db2dtx.xsl processor=</xsl:text>
- <xsl:value-of select="$processor"/>
- <xsl:text> cpdir=</xsl:text>
- <xsl:value-of select="$cpdir"/>
- <xsl:text> appdir=</xsl:text>
- <xsl:value-of select="$appdir"/>
- <xsl:text>
-yes|pdflatex </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.ins
-pdflatex </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx&#xa;</xsl:text>
- <xsl:if test="//db:part[descendant::db:bibliography
- and descendant::db:biblioref]">
- <xsl:text>bibtex </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>&#xa;awk -f </xsl:text>
- <xsl:value-of select="$cpdir"/>
- <xsl:text>/decommentbbl.awk </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.bbl ></xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.bdc&#xa;mv </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.bdc </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.bbl&#xa;pdflatex </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx&#xa;</xsl:text>
- </xsl:if>
- <xsl:text>makeindex -s gind.ist -o </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.ind </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.idx
-makeindex -s gglo.ist -o </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.gls </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.glo
-pdflatex </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx&#xa;</xsl:text>
- <!-- additional processing steps -->
- <xsl:for-each select="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id='builder']
- /db:segmentedlist/db:seglistitem/db:seg">
- <!-- 1. Content is the command including any fixed parameters
- which immediately follow it, but not usually arguments -->
- <xsl:value-of select="normalize-space(.)"/>
- <!-- 1a. alternative way for a -f argument -->
- <xsl:if test="@xlink:show='replace'">
- <xsl:text> -f</xsl:text>
- </xsl:if>
- <!-- 1b. output spec with a -o option -->
- <xsl:if test="@role">
- <xsl:text> -o </xsl:text>
- <xsl:choose>
- <xsl:when test="@audience">
- <xsl:value-of select="@audience"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="@role"/>
- </xsl:if>
- <!-- 2. space between command and args -->
- <xsl:text> </xsl:text>
- <!-- 3. input default file is the name of the current document -->
- <xsl:choose>
- <xsl:when test="@audience">
- <xsl:value-of select="@audience"/>
- </xsl:when>
- <xsl:when test="@xlink:actuate!='none'">
- <xsl:value-of select="$name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text></xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <!-- filetype of the input file -->
- <xsl:choose>
- <!-- either with xlink:type -->
- <xsl:when test="@xlink:type">
- <xsl:text>.</xsl:text>
- <xsl:value-of select="@xlink:type"/>
- </xsl:when>
- <!-- default for the first one is the current (dtx) -->
- <xsl:when test="position()=1">
- <xsl:text>.dtx</xsl:text>
- </xsl:when>
- <!-- otherwise it's the @role of the preceding command -->
- <xsl:when test="parent::db:seglistitem
- /preceding-sibling::db:seglistitem[1]
- /db:seg[@role]">
- <xsl:text>.</xsl:text>
- <xsl:value-of
- select="parent::db:seglistitem
- /preceding-sibling::db:seglistitem[1]
- /db:seg/@role"/>
- </xsl:when>
- <!-- otherwise nothing -->
- </xsl:choose>
- <!-- 4. Output: optionally a redirect -->
- <xsl:if test="@xlink:arcrole">
- <xsl:text> ></xsl:text>
- <xsl:value-of select="@xlink:arcrole"/>
- </xsl:if>
- <!-- 5. newline at end -->
- <xsl:text>&#xa;</xsl:text>
- </xsl:for-each>
- <xsl:text>echo Copying files into dev tree...&#xa;</xsl:text>
- <!-- copy all the files into the dev tree for zipping
- doc/latex/name/MANIFEST|README|.pdf
- source/latex/name/.dtx|.ins
- tex/latex/name/.cls|.sty
- -->
- <xsl:text>mkdir -p doc/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:text>mkdir -p source/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:text>mkdir -p tex/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- <!-- first the documentation -->
- <xsl:text>cp README MANIFEST </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.pdf </xsl:text>
- <xsl:text>doc/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- <!-- then the source code -->
- <xsl:text>cp </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.dtx </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.ins </xsl:text>
- <xsl:text>source/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- <!-- then this class or package -->
- <xsl:text>cp </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$filetype"/>
- <xsl:text> </xsl:text>
- <xsl:text>tex/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- <!-- add any ancillary files extracted from the .dtx file -->
- <xsl:for-each select="/db:book/db:part[@xml:id='code']
- /db:appendix[@xml:id and @xlink:href]
- |
- /db:book/db:part[@xml:id='files']
- /db:chapter/db:programlisting">
- <xsl:text>cp </xsl:text>
- <xsl:value-of select="@xlink:href"/>
- <xsl:text> </xsl:text>
- <xsl:text>tex/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:for-each>
- <!-- add any extra files listed in the .xml file -->
- <xsl:for-each select="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id='manifest']
- /db:simplelist/db:member[.!='']">
- <xsl:text>cp </xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- <xsl:text> </xsl:text>
- <xsl:text>source/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:for-each>
- <!-- ZIP 'EM UP from the dev directory -->
- <xsl:text>echo Zipping up files from dev tree...&#xa;</xsl:text>
- <xsl:text>zip -r --exclude=*.svn* --exclude=*.DS_Store* </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>-</xsl:text>
- <xsl:value-of select="/db:book/@version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="/db:book/@revision"/>
- <xsl:text>.tds.zip doc/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text> source/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text> tex/latex/</xsl:text>
- <xsl:value-of select="/db:book/@xml:base"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:text>echo Zipping up plain CTAN version...&#xa;</xsl:text>
- <xsl:text>zip </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>-</xsl:text>
- <xsl:value-of select="/db:book/@version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="/db:book/@revision"/>
- <xsl:text>.zip README MANIFEST </xsl:text>
- <xsl:value-of select="/db:book/@xml:id"/>
- <xsl:text>.dtx </xsl:text>
- <xsl:value-of select="/db:book/@xml:id"/>
- <xsl:text>.ins </xsl:text>
- <xsl:value-of select="/db:book/@xml:id"/>
- <xsl:text>.pdf </xsl:text>
- <xsl:value-of select="/db:book/@xml:id"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$filetype"/>
- <xsl:for-each select="/db:book/db:info/db:cover
- /db:constraintdef[@xml:id='manifest']
- /db:simplelist/db:member[.!='']">
- <xsl:text> </xsl:text>
- <xsl:value-of select="normalize-space(.)"/>
- </xsl:for-each>
- <xsl:text> </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>-</xsl:text>
- <xsl:value-of select="/db:book/@version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="/db:book/@revision"/>
- <xsl:text>.tds.zip&#xa;</xsl:text>
- <!-- INSTALL the package or class file into the live tree -->
- <xsl:text>echo Installing working copy...&#xa;</xsl:text>
- <xsl:text>unzip -o -d </xsl:text>
- <xsl:value-of select="$personaltree"/>
- <xsl:text> </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>-</xsl:text>
- <xsl:value-of select="/db:book/@version"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="/db:book/@revision"/>
- <xsl:text>.tds.zip&#xa;</xsl:text>
- </xsl:result-document>
- </xsl:template>
-
- <xsl:template match="db:part/db:title |
- db:chapter/db:title |
- db:chapter/db:para" mode="files"/>
-
- <xsl:template match="db:chapter" mode="files">
- <xsl:apply-templates mode="files"/>
- </xsl:template>
-
- <xsl:template match="db:programlisting" mode="files">
- <xsl:choose>
- <xsl:when test="ancestor::db:part[@xml:id='files']">
- <xsl:text>% \iffalse&#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>% \begin{macrocode}&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>%&lt;*</xsl:text>
- <xsl:value-of select="parent::db:chapter/@xml:id"/>
- <xsl:text>></xsl:text>
- <xsl:value-of select="."/>
- <xsl:text>&#xa;%&lt;/</xsl:text>
- <xsl:value-of select="parent::db:chapter/@xml:id"/>
- <xsl:text>>&#xa;</xsl:text>
- <xsl:choose>
- <xsl:when test="ancestor::db:part[@xml:id='files']">
- <xsl:text>% \fi&#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>% \end{macrocode}&#xa;</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="delogify">
- <xsl:param name="string"/>
- <xsl:choose>
- <xsl:when test="contains($string,'\LaTeXe{}')">
- <xsl:call-template name="delogify">
- <xsl:with-param name="string">
- <xsl:value-of select="substring-before($string,'\LaTeXe{}')"/>
- <xsl:text>LaTeX2e</xsl:text>
- <xsl:value-of select="substring-after($string,'\LaTeXe{}')"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($string,'\LaTeX{}')">
- <xsl:call-template name="delogify">
- <xsl:with-param name="string">
- <xsl:value-of select="substring-before($string,'\LaTeX{}')"/>
- <xsl:text>LaTeX</xsl:text>
- <xsl:value-of select="substring-after($string,'\LaTeX{}')"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="contains($string,'\TeX{}')">
- <xsl:call-template name="delogify">
- <xsl:with-param name="string">
- <xsl:value-of select="substring-before($string,'\TeX{}')"/>
- <xsl:text>TeX</xsl:text>
- <xsl:value-of select="substring-after($string,'\TeX{}')"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$string"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
-
-<!--
- Checksum is the number of backslash commands in the
- output code — approximately!
- lxgrep "part[@xml:id='code']//programlisting" $1.xml |\
- grep '\\' |\
- sed -e "s+[^\\\\]++g" |\
- tr -d '\012' |\
- tr '\\' '\012' |\
- wc -l
--->
diff --git a/Master/texmf-dist/doc/support/classpack/db2plaintext.xsl b/Master/texmf-dist/doc/support/classpack/db2plaintext.xsl
deleted file mode 100644
index ec518d7b8f3..00000000000
--- a/Master/texmf-dist/doc/support/classpack/db2plaintext.xsl
+++ /dev/null
@@ -1,513 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:db="http://docbook.org/ns/docbook"
- version="2.0">
-
- <!-- ClassPack README STRUCTURE ONLY for inclusion in db2dtx.xsl
-
- 23 para
- 11 productname
- 11 title
- 10 olink
- 6 filename
- 6 sect1
- 5 acronym
- 4 listitem
- 4 systemitem
- 4 term
- 4 varlistentry
- 3 programlisting
- 3 sect2
- 2 anchor
- 2 guilabel
- 2 varname
- 1 chapter
- 1 emphasis
- 1 guibutton
- 1 replaceable
- 1 uri
- 1 variablelist
- 1 warning
-
--->
-
- <xsl:variable name="maindoc" select="."/>
-
- <xsl:variable name="width">
- <xsl:text>72</xsl:text>
- </xsl:variable>
-
- <!-- plain titles and plain paras -->
-
- <xsl:template mode="readme"
- match="db:title[not(parent::db:chapter) and
- not(parent::db:sect1) and
- not(parent::db:sect2) and
- not(parent::db:sect3) and
- not(parent::db:warning)] |
- db:para[not(parent::db:listitem) and
- not(parent::db:warning)]">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:if test="ancestor::db:part[@xml:id!='code']">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- section headings -->
-
- <xsl:template match="db:chapter/db:title" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content"
- select="upper-case(normalize-space($content))"/>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:if test="ancestor::db:part[@xml:id!='code']">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:sect1/db:title" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="prefix">
- <xsl:value-of
- select="count(parent::db:sect1/preceding-sibling::db:sect1) + 1"/>
- <xsl:text> </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:if test="ancestor::db:part[@xml:id!='code']">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:sect2/db:title" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="prefix">
- <xsl:value-of
- select="count(ancestor::db:sect1/preceding-sibling::db:sect1) + 1"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of
- select="count(parent::db:sect2/preceding-sibling::db:sect2) + 1"/>
- <xsl:text> </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:if test="ancestor::db:part[@xml:id!='code']">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:sect3/db:title" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="prefix">
- <xsl:value-of
- select="count(ancestor::db:sect1/preceding-sibling::db:sect1) + 1"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of
- select="count(ancestor::db:sect2/preceding-sibling::db:sect2) + 1"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of
- select="count(parent::db:sect3/preceding-sibling::db:sect3) + 1"/>
- <xsl:text> </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:if test="ancestor::db:part[@xml:id!='code']">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:warning/db:title" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="prefix">
- <xsl:text> WARNING: </xsl:text>
- </xsl:with-param>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text> !&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:programlisting" mode="readme">
- <xsl:variable name="curdoctype">
- <xsl:value-of select="$maindoc/db:book/@arch"/>
- </xsl:variable>
- <xsl:if test="@condition=$curdoctype or not(@condition)">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="indent">
- <xsl:text> </xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:term" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="indent">
- <xsl:text> </xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="db:para[parent::db:listitem]" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="ancestor::db:variablelist">
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:when test="ancestor::db:itemizedlist">
- <xsl:text> * </xsl:text>
- </xsl:when>
- <xsl:when test="ancestor::db:orderedlist">
- <xsl:text> </xsl:text>
- <xsl:value-of
- select="count(parent::db:listitem/preceding-sibling::db:listitem)+1"/>
- <xsl:text> </xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:if test="ancestor::db:part[@xml:id!='code']">
- <xsl:text>&#xa;</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="db:para[parent::db:warning]" mode="readme">
- <xsl:variable name="content">
- <xsl:apply-templates select="node()" mode="inline"/>
- </xsl:variable>
- <xsl:call-template name="normtext">
- <xsl:with-param name="content" select="normalize-space($content)"/>
- <xsl:with-param name="indent">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- <xsl:text> ! </xsl:text>
- </xsl:with-param>
- </xsl:call-template>
- <xsl:if test="following-sibling::db:para">
- <xsl:if test="ancestor::db:part[@xml:id='code'] or
- ancestor::db:procedure[@xml:id='prepackage']">
- <xsl:text>%% </xsl:text>
- </xsl:if>
- <xsl:text> !</xsl:text>
- </xsl:if>
- <xsl:text>&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:sect1" mode="readme">
- <xsl:choose>
- <xsl:when
- test="@xml:id='bugs' and
- $maindoc//db:revhistory/db:revision[1]/db:revdescription/db:orderedlist">
- <xsl:apply-templates mode="readme" select="db:title"/>
- <xsl:text>The following need attention:&#xa;&#xa;</xsl:text>
- <xsl:apply-templates mode="readme"
- select="$maindoc//db:revhistory/db:revision[1]/db:revdescription/db:orderedlist"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates mode="readme"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>&#xa;</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:anchor" mode="readme">
- <xsl:variable name="loc" select="@targetptr"/>
- <xsl:variable name="pos" select="@type"/>
- <xsl:variable name="omit" select="@remap"/>
- <!--
- <xsl:message>
- <xsl:text>Getting </xsl:text>
- <xsl:value-of select="$loc"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$pos"/>
- </xsl:message>
- -->
- <xsl:choose>
- <!-- special usage referencing a macro -->
- <xsl:when test="@targetptr='copyright' and @type='*'">
- <xsl:for-each select="$maindoc">
- <xsl:call-template name="copyright-statement">
- <xsl:with-param name="ftype" select="/db:book/@userlevel"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <!-- normal operation -->
- <xsl:otherwise>
- <xsl:apply-templates mode="readme"
- select="$maindoc/
- descendant::*[local-name()=$loc][1]/*[local-name()!=$omit]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- CONTENT -->
-
- <xsl:template match="db:olink" mode="inline">
- <xsl:call-template name="metadata"/>
- </xsl:template>
-
- <xsl:template match="db:acronym | db:uri | db:filename"
- mode="inline">
- <xsl:apply-templates mode="inline"/>
- </xsl:template>
-
- <xsl:template match="db:phrase | db:wordasword | db:quote"
- mode="inline">
- <xsl:text>"</xsl:text>
- <xsl:apply-templates mode="inline"/>
- <xsl:text>"</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:footnote" mode="inline">
- <xsl:text> [</xsl:text>
- <xsl:apply-templates mode="inline"/>
- <xsl:text>]</xsl:text>
- </xsl:template>
-
- <xsl:template match="db:command" mode="inline">
- <xsl:if test="@xml:lang='TeX' or @xml:lang='LaTeX' or not(@xml:lang)">
- <xsl:text>\</xsl:text>
- </xsl:if>
- <xsl:apply-templates mode="inline"/>
- </xsl:template>
-
- <xsl:template match="text()" mode="inline">
- <xsl:choose>
- <xsl:when test="parent::db:emphasis">
- <xsl:value-of select="upper-case(.)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="db:biblioref" mode="inline">
- <xsl:text>(</xsl:text>
- <xsl:variable name="bibref" select="@linkend"/>
- <!-- go to the entry -->
- <xsl:for-each select="$maindoc/descendant::db:biblioentry[@xml:id=$bibref]">
- <xsl:variable name="authors" select="count(descendant::db:author)"/>
- <!-- only name up to the first two -->
- <xsl:for-each select="descendant::db:author
- [count(preceding-sibling::db:author)&lt;2]">
- <xsl:if test="$authors>2
- and count(preceding-sibling::db:author)=1">
- <xsl:text>, </xsl:text>
- </xsl:if>
- <xsl:if test="count(preceding-sibling::db:author)=2">
- <xsl:text> &amp; </xsl:text>
- </xsl:if>
- <xsl:value-of select="db:personname/db:surname"/>
- </xsl:for-each>
- <xsl:if test="$authors>3">
- <xsl:text> et al</xsl:text>
- </xsl:if>
- <xsl:text>, </xsl:text>
- <xsl:value-of select="substring(descendant::db:date[1]/@YYYY-MM-DD,1,4)"/>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:template>
-
- <!-- extraction of metadata from master file -->
-
- <xsl:template name="metadata">
- <xsl:variable name="loc" select="@targetptr"/>
- <xsl:variable name="pos" select="@type"/>
- <!--
- <xsl:message>
- <xsl:text>Getting </xsl:text>
- <xsl:value-of select="$loc"/>
- <xsl:text>/</xsl:text>
- <xsl:value-of select="$pos"/>
- </xsl:message>
- -->
- <xsl:value-of
- select="$maindoc/
- descendant::*[local-name()=$loc][1]/@*[name()=$pos]"/>
- </xsl:template>
-
- <!-- typesetting -->
-
- <xsl:template name="normtext">
- <xsl:param name="content"/>
- <xsl:param name="indent">
- <xsl:text></xsl:text>
- </xsl:param>
- <xsl:param name="prefix">
- <xsl:text></xsl:text>
- </xsl:param>
- <xsl:call-template name="set">
- <!--
- <xsl:value-of select='replace(., "\$\d+\.\d{2}","\$xx.xx")'/>
--->
- <xsl:with-param name="text"
- select="replace(replace(replace(replace(
- concat($prefix,$content),'\\TeX\{\}','TeX'),
- '\\LaTeX\{\}','LaTeX'),
- '\\thinspace\{\}',' '),
- '\\nicefrac(.)(.)','$1/$2')"/>
- <xsl:with-param name="indent" select="$indent"/>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="set">
- <xsl:param name="text"/>
- <xsl:param name="indent">
- <xsl:text></xsl:text>
- </xsl:param>
- <xsl:choose>
- <xsl:when test="string-length($text) &lt; $width">
- <xsl:value-of select="$indent"/>
- <xsl:value-of select="$text"/>
- <xsl:text>&#xa;</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="line">
- <xsl:call-template name="token">
- <xsl:with-param name="text" select="$text"/>
- <xsl:with-param name="indent" select="$indent"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="$line"/>
- <xsl:text>&#xa;</xsl:text>
- <xsl:call-template name="set">
- <xsl:with-param name="text"
- select="normalize-space(substring-after(
- concat($indent,$text),$line))"/>
- <xsl:with-param name="indent" select="$indent"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="token">
- <xsl:param name="text"/>
- <xsl:param name="line"/>
- <xsl:param name="length">
- <xsl:text>0</xsl:text>
- </xsl:param>
- <xsl:param name="indent">
- <xsl:text></xsl:text>
- </xsl:param>
- <xsl:variable name="word">
- <xsl:choose>
- <xsl:when test="contains($text,' ')">
- <xsl:value-of select="substring-before($text,' ')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$text"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="size" select="string-length($word)"/>
- <xsl:choose>
- <!-- too much for line -->
- <xsl:when test="$length + 1 + $size > $width">
- <xsl:value-of select="$line"/>
- </xsl:when>
- <!-- another word will fit -->
- <xsl:otherwise>
- <xsl:call-template name="token">
- <xsl:with-param name="line">
- <xsl:choose>
- <xsl:when test="$length=0">
- <xsl:value-of select="$indent"/>
- <xsl:value-of select="$word"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($line,' ',$word)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="length">
- <xsl:choose>
- <xsl:when test="$length=0">
- <xsl:value-of select="$size + string-length($indent)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="string-length($line) + 1 + $size"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="text" select="substring-after($text,' ')"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
diff --git a/Master/texmf-dist/doc/support/classpack/decommentbbl.awk b/Master/texmf-dist/doc/support/classpack/decommentbbl.awk
deleted file mode 100644
index 0ceb4d7f369..00000000000
--- a/Master/texmf-dist/doc/support/classpack/decommentbbl.awk
+++ /dev/null
@@ -1,37 +0,0 @@
-# decommentbbl.awk
-#
-# This awk(1) script catenates consecutive lines of a BiBTeX-produced
-# .bbl file which end in a comment character (removing the comment
-# character in the process) because the default % comment character
-# gets misinterpreted by the ltxdoc package when building class or
-# package files.
-#
-# Copyright © 2008-2012 Silmaril Consultants
-# Available under the terms of the LaTeX Project Public License
-# as part of the classpack development package
-# Peter Flynn <peter@silmaril.ie> 2010-10-14
-#
-######################################################################
-#
-# Read every line of the file into an array
-
-{
- line[NR]=$0;
-}
-
-######################################################################
-#
-# At the end, go through the array; if a line ends with a % sign,
-# catenate it to the buffer, omitting the percent sign itself;
-# otherwise, output the buffer and zero it for further use.
-
-END {
- for(i=1;i<=NR;++i) {
- if(substr(line[i],length(line[i]))=="%") {
- buffer=buffer substr(line[i],1,length(line[i])-1);
- } else {
- print buffer line[i];buffer="";
- }
- }
-}
-
diff --git a/Master/texmf-dist/doc/support/classpack/doctexbook.dtd b/Master/texmf-dist/doc/support/classpack/doctexbook.dtd
deleted file mode 100644
index 8d144373d53..00000000000
--- a/Master/texmf-dist/doc/support/classpack/doctexbook.dtd
+++ /dev/null
@@ -1,63 +0,0 @@
-%%
-%% This is file `doctexbook.dtd',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% classpack.dtx (with options: `savedtd')
-%% This file was generated from an XML master source.
-%% Amendments and corrections should be notified to the
-%% maintainer for inclusion in future versions.
-%%
-%% The XML vocabulary
-%%
-%% There are currently no changes to the DocBook element structure.
-%%
-%% The DTD is a driver implementing a number of entity declarations to
-%% ease the transformation to LaTeX.
-<!ENTITY % db5dtd SYSTEM "/dtds/docbook/docbook-5.0/dtd/docbook.dtd">
-<!ATTLIST date YYYY-MM-DD CDATA #IMPLIED>
-<!ATTLIST blockquote units CDATA #IMPLIED
- begin CDATA #IMPLIED
- end CDATA #IMPLIED>
-<!ATTLIST quote units CDATA #IMPLIED
- begin CDATA #IMPLIED
- end CDATA #IMPLIED>
-<!ELEMENT html:form EMPTY>
-<!ENTITY ampers "\&#38;#38;">
-<!ENTITY BiBTeX "\BibTeX{}">
-<!ENTITY BibTeX "\BibTeX{}">
-<!ENTITY BIBTeX "\BibTeX{}">
-<!ENTITY ConTeXt "\ConTeXt{}">
-<!ENTITY LaTeX "\LaTeX{}">
-<!ENTITY LaTeX2e "\LaTeXe{}">
-<!ENTITY XeTeX "\XeTeX{}">
-<!ENTITY LyX "\LyX{}">
-<!ENTITY METAFONT "\MF{}">
-<!ENTITY METAPOST "\MP{}">
-<!ENTITY TeX "\TeX{}">
-<!ENTITY bsol "{\texttt{\textbackslash}}">
-<!ENTITY date "\filedate{}">
-<!ENTITY degree "\textdegree{}">
-<!ENTITY doctype "\classorpackage{}">
-<!ENTITY filler "\hfil{}">
-<!ENTITY frac12 "\nicefrac12">
-<!ENTITY frac13 "\nicefrac13">
-<!ENTITY frac23 "\nicefrac23">
-<!ENTITY hellip "\dots{}">
-<!ENTITY mdash "~--- ">
-<!ENTITY mldr "\dotfill{}">
-<!ENTITY nbsp "~">
-<!ENTITY ndash "--">
-<!ENTITY percnt "\&#x0025;">
-<!ENTITY square "\raisebox{-1pt}{\Square}">
-<!ENTITY thinsp "\thinspace{}">
-<!ENTITY times "×">
-<!ENTITY specialUuml '{\normalfont\"{\fontfamily{cdr}\selectfont U}}'>
-<!ENTITY verbar "\menusep{}">
-<!ENTITY version "\fileversion{}">
-<!-- call the main DTD --> %db5dtd;
-
-\endinput
-%%
-%% End of file `doctexbook.dtd'.
diff --git a/Master/texmf-dist/doc/support/classpack/getgis.sh b/Master/texmf-dist/doc/support/classpack/getgis.sh
deleted file mode 100644
index 65e1c855fd1..00000000000
--- a/Master/texmf-dist/doc/support/classpack/getgis.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-%%
-%% This is file `getgis.sh',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% classpack.dtx (with options: `lxp')
-%% This file was generated from an XML master source.
-%% Amendments and corrections should be notified to the
-%% maintainer for inclusion in future versions.
-%%
-%% Reusable XML
-%%
-%% In , I said that one of the benefits of using XML for software
-%% generation and documentation was the re-usability of the data. Here
-%% are a couple of simple examples.
-$ lxprintf -e productname "%s\n" . classpack.xml |\
- sort | uniq -c | sort -k 1nr
-%%
-%% Checking that all element types have been described!
-
-\endinput
-%%
-%% End of file `getgis.sh'.
diff --git a/Master/texmf-dist/doc/support/classpack/lppl.xml b/Master/texmf-dist/doc/support/classpack/lppl.xml
deleted file mode 100644
index 1c405b15682..00000000000
--- a/Master/texmf-dist/doc/support/classpack/lppl.xml
+++ /dev/null
@@ -1,541 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE chapter PUBLIC "+//Silmaril//DTD DocBook 5.0//EN"
- "/dtds/docbook/docbook-5.0/dtd/docbook.dtd" [
-<!ENTITY TeX "\TeX{}">
-<!ENTITY LaTeX "\LaTeX{}">
-<!ENTITY LaTeX3 "\LaTeX{3}">
-<!ENTITY mdash "~--- ">
-<!ENTITY nbsp "~">
-]>
-<chapter xml:id="LPPL:LPPL" version="1.3c" xml:lang="en:US"
- revision="2008-05-04" annotations="Copyright 1999, 2002--2008
- &LaTeX3; Project">
- <title>The &LaTeX; Project Public License</title>
- <blockquote>
- <para>Everyone is allowed to distribute verbatim copies of this
- license document, but modification of it is not allowed.</para>
- </blockquote>
- <sect1 xml:id="LPPL:Preamble">
- <title>Preamble</title>
- <para>The &LaTeX; Project Public License (<acronym>LPPL</acronym>)
- is the primary license under which the &LaTeX; kernel and the
- base &LaTeX; packages are distributed.</para>
- <para>You may use this license for any work of which you hold the
- copyright and which you wish to distribute. This license may be
- particularly suitable if your work is &TeX;-related (such as a
- &LaTeX; package), but it is written in such a way that you can
- use it even if your work is unrelated to &TeX;.</para>
- <para>The section <citetitle linkend="LPPL:Distribute"
- pubwork="section"/>, below, gives instructions, examples, and
- recommendations for authors who are considering distributing
- their works under this license.</para>
- <para>This license gives conditions under which a work may be
- distributed and modified, as well as conditions under which
- modified versions of that work may be distributed.</para>
- <para>We, the &LaTeX3; Project, believe that the conditions below
- give you the freedom to make and distribute modified versions of
- your work that conform with whatever technical specifications
- you wish while maintaining the availability, integrity, and
- reliability of that work. If you do not see how to achieve your
- goal while meeting these conditions, then read the document
- <filename xlink:type="tex">cfgguide</filename> and <filename
- xlink:type="tex">modguide</filename> in the base &LaTeX;
- distribution for suggestions.</para>
- </sect1>
- <sect1 xml:id="LPPL:Definitions">
- <title>Definitions</title>
- <para>In this license document the following terms are used:</para>
- <variablelist>
- <varlistentry>
- <term>Work</term>
- <listitem>
- <para>Any work being distributed under this License.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Derived Work</term>
- <listitem>
- <para>Any work that under any applicable law is derived from
- the Work.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Modification</term>
- <listitem>
- <para>Any procedure that produces a Derived Work under any
- applicable law&mdash;for example, the production of a file
- containing an original file associated with the Work or a
- significant portion of such a file, either verbatim or
- with modifications and/or translated into another
- language.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Modify</term>
- <listitem>
- <para>To apply any procedure that produces a Derived Work
- under any applicable law.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Distribution</term>
- <listitem>
- <para>Making copies of the Work available from one person to
- another, in whole or in part. Distribution includes (but
- is not limited to) making any electronic components of the
- Work accessible by file transfer protocols such as
- <acronym>FTP</acronym> or <acronym>HTTP</acronym> or by
- shared file systems such as Sun's Network File System
- (<acronym>NFS</acronym>).</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Compiled Work</term>
- <listitem>
- <para>A version of the Work that has been processed into a
- form where it is directly usable on a computer system.
- This processing may include using installation facilities
- provided by the Work, transformations of the Work, copying
- of components of the Work, or other activities. Note that
- modification of any installation facilities provided by
- the Work constitutes modification of the Work.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Current Maintainer</term>
- <listitem>
- <para>A person or persons nominated as such within the Work.
- If there is no such explicit nomination then it is the
- <phrase>Copyright Holder</phrase> under any applicable
- law.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Base Interpreter</term>
- <listitem>
- <para>A program or process that is normally needed for
- running or interpreting a part or the whole of the
- Work.</para>
- <para>A Base Interpreter may depend on external components
- but these are not considered part of the Base Interpreter
- provided that each external component clearly identifies
- itself whenever it is used interactively. Unless
- explicitly specified when applying the license to the
- Work, the only applicable Base Interpreter is a
- <phrase>&LaTeX;-Format</phrase> or in the case of files
- belonging to the <phrase>&LaTeX;-format</phrase> a program
- implementing the `&TeX; language'.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect1>
- <sect1 xml:id="LPPL:Conditions">
- <title>Conditions on Distribution and Modification</title>
- <orderedlist>
- <listitem>
- <para>Activities other than distribution and/or modification
- of the Work are not covered by this license; they are
- outside its scope. In particular, the act of running the
- Work is not restricted and no requirements are made
- concerning any offers of support for the Work.</para>
- </listitem>
- <listitem xml:id="LPPL:item:distribute">
- <para>You may distribute a complete, unmodified copy of the
- Work as you received it. Distribution of only part of the
- Work is considered modification of the Work, and no right to
- distribute such a Derived Work may be assumed under the
- terms of this clause.</para>
- </listitem>
- <listitem>
- <para>You may distribute a Compiled Work that has been
- generated from a complete, unmodified copy of the Work as
- distributed under Clause&nbsp;<xref
- linkend="LPPL:item:distribute"/> above, as
- long as that Compiled Work is distributed in such a way that
- the recipients may install the Compiled Work on their system
- exactly as it would have been installed if they generated a
- Compiled Work directly from the Work.</para>
- </listitem>
- <listitem xml:id="LPPL:item:currmaint">
- <para>If you are the Current Maintainer of the Work, you may,
- without restriction, modify the Work, thus creating a
- Derived Work. You may also distribute the Derived Work
- without restriction, including Compiled Works generated from
- the Derived Work. Derived Works distributed in this manner
- by the Current Maintainer are considered to be updated
- versions of the Work.</para>
- </listitem>
- <listitem>
- <para>If you are not the Current Maintainer of the Work, you
- may modify your copy of the Work, thus creating a Derived
- Work based on the Work, and compile this Derived Work, thus
- creating a Compiled Work based on the Derived Work.</para>
- </listitem>
- <listitem xml:id="LPPL:item:conditions">
- <para>If you are not the Current Maintainer of the Work, you
- may distribute a Derived Work provided the following
- conditions are met for every component of the Work unless
- that component clearly states in the copyright notice that
- it is exempt from that condition. Only the Current
- Maintainer is allowed to add such statements of exemption to
- a component of the Work.</para>
- <orderedlist>
- <listitem>
- <para>If a component of this Derived Work can be a direct
- replacement for a component of the Work when that
- component is used with the Base Interpreter, then,
- wherever this component of the Work identifies itself to
- the user when used interactively with that Base
- Interpreter, the replacement component of this Derived
- Work clearly and unambiguously identifies itself as a
- modified version of this component to the user when used
- interactively with that Base Interpreter.</para>
- </listitem>
- <listitem>
- <para>Every component of the Derived Work contains
- prominent notices detailing the nature of the changes to
- that component, or a prominent reference to another file
- that is distributed as part of the Derived Work and that
- contains a complete and accurate log of the
- changes.</para>
- </listitem>
- <listitem>
- <para>No information in the Derived Work implies that any
- persons, including (but not limited to) the authors of
- the original version of the Work, provide any support,
- including (but not limited to) the reporting and
- handling of errors, to recipients of the Derived Work
- unless those persons have stated explicitly that they do
- provide such support for the Derived Work.</para>
- </listitem>
- <listitem>
- <para>You distribute at least one of the following with
- the Derived Work:</para>
- <orderedlist>
- <listitem>
- <para>A complete, unmodified copy of the Work; if your
- distribution of a modified component is made by
- offering access to copy the modified component from
- a designated place, then offering equivalent access
- to copy the Work from the same or some similar place
- meets this condition, even though third parties are
- not compelled to copy the Work along with the
- modified component;</para>
- </listitem>
- <listitem>
- <para>Information that is sufficient to obtain a
- complete, unmodified copy of the Work.</para>
- </listitem>
- </orderedlist>
- </listitem>
- </orderedlist>
- </listitem>
- <listitem>
- <para>If you are not the Current Maintainer of the Work, you
- may distribute a Compiled Work generated from a Derived
- Work, as long as the Derived Work is distributed to all
- recipients of the Compiled Work, and as long as the
- conditions of Clause&nbsp;<xref
- linkend="LPPL:item:conditions"/>, above, are met
- with regard to the Derived Work.</para>
- </listitem>
- <listitem>
- <para>The conditions above are not intended to prohibit, and
- hence do not apply to, the modification, by any method, of
- any component so that it becomes identical to an updated
- version of that component of the Work as it is distributed
- by the Current Maintainer under Clause&nbsp;<xref
- linkend="LPPL:item:currmaint"/>, above.</para>
- </listitem>
- <listitem>
- <para>Distribution of the Work or any Derived Work in an
- alternative format, where the Work or that Derived Work (in
- whole or in part) is then produced by applying some process
- to that format, does not relax or nullify any sections of
- this license as they pertain to the results of applying that
- process.</para>
- </listitem>
- <listitem>
- <orderedlist>
- <listitem>
- <para>A Derived Work may be distributed under a different
- license provided that license itself honors the
- conditions listed in Clause&nbsp;<xref
- linkend="LPPL:item:conditions"/> above, in
- regard to the Work, though it does not have to honor the
- rest of the conditions in this license.</para>
- </listitem>
- <listitem>
- <para>If a Derived Work is distributed under a different
- license, that Derived Work must provide sufficient
- documentation as part of itself to allow each recipient
- of that Derived Work to honor the restrictions in
- Clause&nbsp;<xref
- linkend="LPPL:item:conditions"/> above, concerning
- changes from the Work.</para>
- </listitem>
- </orderedlist>
- </listitem>
- <listitem>
- <para>This license places no restrictions on works that are
- unrelated to the Work, nor does this license place any
- restrictions on aggregating such works with the Work by any
- means.</para>
- </listitem>
- <listitem>
- <para>Nothing in this license is intended to, or may be used
- to, prevent complete compliance by all parties with all
- applicable laws.</para>
- </listitem>
- </orderedlist>
- </sect1>
- <sect1 xml:id="LPPL:Warranty">
- <title>No Warranty</title>
- <para>There is no warranty for the Work. Except when otherwise
- stated in writing, the Copyright Holder provides the Work
- <phrase>as is</phrase>, without warranty of any kind, either
- expressed or implied, including, but not limited to, the implied
- warranties of merchantability and fitness for a particular
- purpose. The entire risk as to the quality and performance of
- the Work is with you. Should the Work prove defective, you
- assume the cost of all necessary servicing, repair, or
- correction.</para>
- <para>In no event unless required by applicable law or agreed to
- in writing will The Copyright Holder, or any author named in the
- components of the Work, or any other party who may distribute
- and/or modify the Work as permitted above, be liable to you for
- damages, including any general, special, incidental or
- consequential damages arising out of any use of the Work or out
- of inability to use the Work (including, but not limited to,
- loss of data, data being rendered inaccurate, or losses
- sustained by anyone as a result of any failure of the Work to
- operate with any other programs), even if the Copyright Holder
- or said author or said other party has been advised of the
- possibility of such damages.</para>
- </sect1>
- <sect1 xml:id="LPPL:Maintenance">
- <title>Maintenance of The Work</title>
- <para>The Work has the status <phrase>author-maintained</phrase>
- if the Copyright Holder explicitly and prominently states near
- the primary copyright notice in the Work that the Work can only
- be maintained by the Copyright Holder or simply that it is
- <phrase>author-maintained</phrase>.</para>
- <para>The Work has the status <phrase>maintained</phrase> if there
- is a Current Maintainer who has indicated in the Work that they
- are willing to receive error reports for the Work (for example,
- by supplying a valid e-mail address). It is not required for the
- Current Maintainer to acknowledge or act upon these error
- reports.</para>
- <para>The Work changes from status <phrase>maintained</phrase> to
- <phrase>unmaintained</phrase> if there is no Current Maintainer,
- or the person stated to be Current Maintainer of the work cannot
- be reached through the indicated means of communication for a
- period of six months, and there are no other significant signs
- of active maintenance.</para>
- <para>You can become the Current Maintainer of the Work by
- agreement with any existing Current Maintainer to take over this
- role.</para>
- <para>If the Work is unmaintained, you can become the Current
- Maintainer of the Work through the following steps:</para>
- <orderedlist>
- <listitem>
- <para>Make a reasonable attempt to trace the Current
- Maintainer (and the Copyright Holder, if the two differ)
- through the means of an Internet or similar search.</para>
- </listitem>
- <listitem>
- <para>If this search is successful, then enquire whether the
- Work is still maintained.</para>
- <orderedlist>
- <listitem>
- <para>If it is being maintained, then ask the Current
- Maintainer to update their communication data within one
- month.</para>
- </listitem>
- <listitem xml:id="LPPL:item:intention">
- <para>If the search is unsuccessful or no action to resume
- active maintenance is taken by the Current Maintainer,
- then announce within the pertinent community your
- intention to take over maintenance. (If the Work is a
- &LaTeX; work, this could be done, for example, by
- posting to <uri type="news">comp.text.tex</uri>.)</para>
- </listitem>
- </orderedlist>
- </listitem>
- <listitem>
- <orderedlist>
- <listitem>
- <para>If the Current Maintainer is reachable and agrees to
- pass maintenance of the Work to you, then this takes
- effect immediately upon announcement.</para>
- </listitem>
- <listitem xml:id="LPPL:item:announce">
- <para>If the Current Maintainer is not reachable and the
- Copyright Holder agrees that maintenance of the Work be
- passed to you, then this takes effect immediately upon
- announcement.</para>
- </listitem>
- </orderedlist>
- </listitem>
- <listitem xml:id="LPPL:item:change">
- <para>If you make an <phrase>intention announcement</phrase>
- as described in&nbsp;<xref
- linkend="LPPL:item:intention"/> above and after three
- months your intention is challenged neither by the Current
- Maintainer nor by the Copyright Holder nor by other people,
- then you may arrange for the Work to be changed so as to
- name you as the (new) Current Maintainer.</para>
- </listitem>
- <listitem>
- <para>If the previously unreachable Current Maintainer becomes
- reachable once more within three months of a change
- completed under the terms of&nbsp;<xref
- linkend="LPPL:item:announce"/>
- or&nbsp;<xref linkend="LPPL:item:change"/>, then that
- Current
- Maintainer must become or remain the Current Maintainer upon
- request provided they then update their communication data
- within one month.</para>
- </listitem>
- </orderedlist>
- <para>A change in the Current Maintainer does not, of itself,
- alter the fact that the Work is distributed under the
- <acronym>LPPL</acronym> license.</para>
- <para>If you become the Current Maintainer of the Work, you should
- immediately provide, within the Work, a prominent and
- unambiguous statement of your status as Current Maintainer. You
- should also announce your new status to the same pertinent
- community as in&nbsp;<xref linkend="LPPL:item:intention"/>
- above.</para>
- </sect1>
- <sect1 xml:id="LPPL:Distribute">
- <title>Whether and How to Distribute Works under This
- License</title>
- <para>This section contains important instructions, examples, and
- recommendations for authors who are considering distributing
- their works under this license. These authors are addressed as
- <wordasword>you</wordasword> in this section.</para>
- <sect2 xml:id="LPPL:Choosing">
- <title>Choosing This License or Another License</title>
- <para>If for any part of your work you want or need to use
- <emphasis>distribution</emphasis> conditions that differ
- significantly from those in this license, then do not refer to
- this license anywhere in your work but, instead, distribute
- your work under a different license. You may use the text of
- this license as a model for your own license, but your license
- should not refer to the <acronym>LPPL</acronym> or otherwise
- give the impression that your work is distributed under the
- <acronym>LPPL</acronym>.</para>
- <para>The document <filename
- xlink:type="tex">modguide</filename> in the base &LaTeX;
- distribution explains the motivation behind the conditions of
- this license. It explains, for example, why distributing
- &LaTeX; under the <acronym>GNU</acronym> General Public
- License (<acronym>GPL</acronym>) was considered inappropriate.
- Even if your work is unrelated to &LaTeX;, the discussion in
- <filename xlink:type="tex">modguide</filename> may still be
- relevant, and authors intending to distribute their works
- under any license are encouraged to read it.</para>
- </sect2>
- <sect2 xml:id="LPPL:WithoutDistribution">
- <title>A Recommendation on Modification Without
- Distribution</title>
- <para>It is wise never to modify a component of the Work, even
- for your own personal use, without also meeting the above
- conditions for distributing the modified component. While you
- might intend that such modifications will never be
- distributed, often this will happen by accident&mdash;you may
- forget that you have modified that component; or it may not
- occur to you when allowing others to access the modified
- version that you are thus distributing it and violating the
- conditions of this license in ways that could have legal
- implications and, worse, cause problems for the community. It
- is therefore usually in your best interest to keep your copy
- of the Work identical with the public one. Many works provide
- ways to control the behavior of that work without altering any
- of its licensed components.</para>
- </sect2>
- <sect2 xml:id="LPPL:HowTo">
- <title>How to Use This License</title>
- <para>To use this license, place in each of the components of
- your work both an explicit copyright notice including your
- name and the year the work was authored and/or last
- substantially modified. Include also a statement that the
- distribution and/or modification of that component is
- constrained by the conditions in this license.</para>
- <para>Here is an example of such a notice and statement:</para>
- <programlisting>
-%%% pig.dtx
-%%% Copyright 2005 M. Y. Name
-%%
-%% This work may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% http://www.latex-project.org/lppl.txt
-%% and version 1.3 or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This work has the LPPL maintenance status `maintained'.
-%%
-%% The Current Maintainer of this work is M. Y. Name.
-%%
-%% This work consists of the files pig.dtx and pig.ins
-%% and the derived file pig.sty.
- </programlisting>
- <para>Given such a notice and statement in a file, the
- conditions given in this license document would apply, with
- the <wordasword>Work</wordasword> referring to the three files
- <filename xlink:type="dtx">pig</filename>, <filename
- xlink:type="ins">pig</filename>, and <filename
- xlink:type="sty">pig</filename> (the last being generated
- from <filename xlink:type="dtx">pig</filename> using <filename
- xlink:type="ins">pig</filename>), the <phrase>Base
- Interpreter</phrase> referring to any
- <phrase>&LaTeX;-Format</phrase>, and both <phrase>Copyright
- Holder</phrase> and <phrase>Current Maintainer</phrase>
- referring to the person
- <personname>M.&nbsp;Y.&nbsp;Name</personname>.</para>
- <para>If you do not want the Maintenance section of
- <acronym>LPPL</acronym> to apply to your Work, change
- <wordasword>maintained</wordasword> above into
- <phrase>author-maintained</phrase>. However, we recommend that
- you use <wordasword>maintained</wordasword> as the Maintenance
- section was added in order to ensure that your Work remains
- useful to the community even when you can no longer maintain
- and support it yourself.</para>
- </sect2>
- <sect2 xml:id="LPPL:NotReplacements">
- <title>Derived Works That Are Not Replacements</title>
- <para>Several clauses of the <acronym>LPPL</acronym> specify
- means to provide reliability and stability for the user
- community. They therefore concern themselves with the case
- that a Derived Work is intended to be used as a (compatible or
- incompatible) replacement of the original Work. If this is not
- the case (e.g., if a few lines of code are reused for a
- completely different task), then clauses 6b and 6d shall not
- apply.</para>
- </sect2>
- <sect2 xml:id="LPPL:Recommendations">
- <title>Important Recommendations</title>
- <sect3>
- <title>Defining What Constitutes the Work</title>
- <para>The <acronym>LPPL</acronym> requires that distributions
- of the Work contain all the files of the Work. It is
- therefore important that you provide a way for the licensee
- to determine which files constitute the Work. This could,
- for example, be achieved by explicitly listing all the files
- of the Work near the copyright notice of each file or by
- using a line such as:</para>
- <programlisting>
-%% This work consists of all files listed in manifest.txt.
- </programlisting>
- <para>in that place. In the absence of an unequivocal list it
- might be impossible for the licensee to determine what is
- considered by you to comprise the Work and, in such a case,
- the licensee would be entitled to make reasonable
- conjectures as to which files comprise the Work.</para>
- </sect3>
- </sect2>
- </sect1>
-</chapter>
diff --git a/Master/texmf-dist/doc/support/classpack/prepost.xml b/Master/texmf-dist/doc/support/classpack/prepost.xml
deleted file mode 100644
index a61f0268df0..00000000000
--- a/Master/texmf-dist/doc/support/classpack/prepost.xml
+++ /dev/null
@@ -1,648 +0,0 @@
-<!DOCTYPE refsection
- PUBLIC "+//Silmaril//DTD DocBook 5.0 for DocTeX//EN" "doctexbook-master.dtd">
-<!-- This is the lookup table prepost.xml used by the db2dtx.xsl
- program, part of the classpack package for maintaining LaTeX
- packages and document classes. It is documented in the manual for
- classpack.
-
- To sort the contents of this file by package name, use the command
- lxsort refsection/procedure step @remap prepost.xml
-
- To list the packages specified, use the command
- lxprintf -e step "%s %s\n" ancestor::procedure/@xml:id @remap prepost.xml
--->
-<refsection>
- <title>Commands to use before and after packages</title>
- <procedure xml:id="prepackage">
- <!-- FONTS -->
- <step condition="doc cls sty" remap="fix-cm">
- <para>Allow infinitely-variable font scaling.</para>
- </step>
- <step condition="cls sty" remap="avant">
- <para>Adobe Avant Garde as the default sans-serif typeface.</para>
- </step>
- <step condition="cls sty" remap="mathdesign">
- <para>Use the alternate MathDesign fonts for mathematics.</para>
- </step>
- <step condition="cls sty" remap="charter">
- <para>Bitstream Charter as the default typeface</para>
- </step>
- <step condition="cls sty" remap="courier">
- <para>Adobe Courier as the default monospace (typewriter)
- typeface.</para>
- </step>
- <step condition="cls doc sty" remap="emerald">
- <para>Collection of handwriting typefaces.</para>
- </step>
- <step remap="dejavu" condition="cls sty doc" conformance="nosc">
- <para>Sets the DejaVu typeface as the default.</para>
- </step>
- <step condition="cls sty doc" remap="DejaVuSans" conformance="nosc">
- <para>Sets the DejaVu typeface as the default sans-serif typeface.</para>
- </step>
- <step condition="cls sty doc" remap="DejaVuSerif" conformance="nosc">
- <para>Sets the DejaVu typeface as the default serif typeface.</para>
- </step>
- <step condition="cls sty" remap="eucal">
- <para>Add the AMS Euler calligraphic math letters.</para>
- </step>
- <step condition="doc cls sty" remap="aller">
- <para>Sans-serif typeface by Dalton Maag available free from
- <uri>http://www.fontsquirrel.com/fonts/Aller</uri></para>
- </step>
- <step condition="cls sty" remap="amssymb">
- <para>Provide for the American Mathematical Society's symbols
- (see their documentation for details).</para>
- </step>
- <step role="utf8x" remap="inputenc" condition="cls sty">
- <para>UTF-8 is the default character set, to allow for use of
- any character in any writing system. Some characters are not
- specified for all fonts, so may have to be specified
- manually.</para>
- </step>
- <step condition="doc" remap="inputenc" role="utf8x">
- <constructorsynopsis condition=""/>
- <constraintdef>
- <cmdsynopsis>
- <command>\let\SavedShow\show</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="cls sty" remap="fontenc" role="T1">
- <para>Extended font encoding to handle UTF-8.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="cls sty" remap="marvosym">
- <para>Selection of symbols by Martin Vogel, including the Euro
- sign.</para>
- </step>
- <step condition="cls sty" remap="helvet" role="scaled=0.8667">
- <para>Adobe Helvetica as the default sans-serif typeface.</para>
- </step>
- <step condition="cls sty" remap="lmodern">
- <para>The updated Computer Modern typeface as the default.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="cls sty" remap="manfnt">
- <para>Knuth's <wordasword>manual</wordasword> font (as in
- <citetitle>The &TeX;book</citetitle>), used for symbols.</para>
- </step>
- <step condition="cls sty" remap="mathptmx">
- <para>Adobe Times New Roman as the default serif typeface, with
- extended (non-Adobe) Times math.</para>
- </step>
- <step condition="doc cls sty" remap="warnock">
- <para>Serif typeface by Robert Slimbach available under licence
- from Adobe.</para>
- </step>
- <step condition="cls sty" remap="pslatex">
- <para>Provides Times, Helvetica, and Courier, but chiefly used
- for its specially-narrowed Courier.</para>
- </step>
- <step condition="doc" remap="mflogo">
- <para>Provides the &METAFONT; and &METAPOST; logos.</para>
- <constructorsynopsis condition=""/>
- </step>
- <!-- BIBLIO -->
- <step condition="doc" remap="apacite">
- <para>Bibliographic commands and formatting for the American
- Psychological Association journals.</para>
- <constraintdef>
- <cmdsynopsis>
- <command>\AtBeginDocument{\edef\ApaciteRestoreAtCode{\catcode`@=\the\catcode`@\relax}}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="cls sty" remap="bibunits">
- <para>Provision for per-chapter bibliographies.</para>
- </step>
- <!-- UTILS -->
- <step remap="array" condition="cls sty doc">
- <para>Additional column formatting for tables.</para>
- <constructorsynopsis condition="tgroup">
- </constructorsynopsis>
- <constructorsynopsis condition="colspec">
- <methodparam>
- <parameter>condition</parameter>
- </methodparam>
- <methodparam>
- <parameter>colwidth</parameter>
- </methodparam>
- <methodparam>
- <parameter>char</parameter>
- <modifier>m</modifier>
- </methodparam>
- <methodparam>
- <parameter>char</parameter>
- <modifier>b</modifier>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step remap="dcolumn" condition="doc">
- <para>Column formatting for decimal-aligned values</para>
- <constructorsynopsis condition="colspec">
- <methodparam>
- <parameter>align</parameter>
- <modifier>char</modifier>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step condition="cls sty" remap="babel">
- <para>Add H&ampers;J support and cultural changes for many
- languages.</para>
- </step>
- <step condition="doc cls sty" remap="calc">
- <para>Required for the calculation of extra widths for margin
- adjustment.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="cls" remap="ccaption">
- <para>Allows modifications to the layout of table and figure
- captions.</para>
- </step>
- <step remap="etoolbox" condition="doc cls sty">
- <para>An e-&TeX; toolbox for class and package authors</para>
- </step>
- <step condition="cls sty doc" remap="draftwatermark">
- <para>Allow the creation of a background watermark saying
- <wordasword>DRAFT</wordasword>.</para>
- </step>
- <step condition="cls doc sty" remap="enumitem" role="inline">
- <para>List variants: inline and compact. THIS REPLACES PARALIST
- AND MDWLIST.</para>
- <constructorsynopsis condition="orderedlist">
- <methodparam>
- <parameter>spacing</parameter>
- <modifier>compact</modifier>
- </methodparam>
- </constructorsynopsis>
- <constructorsynopsis condition="itemizedlist">
- <methodparam>
- <parameter>spacing</parameter>
- <modifier>compact</modifier>
- </methodparam>
- </constructorsynopsis>
- <constructorsynopsis condition="variablelist">
- </constructorsynopsis>
- </step>
- <step condition="doc cls sty" remap="fancybox">
- <para>This provides round-cornered and drop-shadow boxes.</para>
- <constructorsynopsis condition="guibutton"/>
- <constructorsynopsis condition="sidebar"/>
- </step>
- <step condition="cls sty" remap="fancyhdr">
- <para>Do running headers and footers.</para>
- </step>
- <step condition="cls sty" remap="fancyvrb">
- <para>Add more robust verbatim facilities.</para>
- <constructorsynopsis condition="programlisting"/>
- </step>
- <step condition="cls sty" remap="textcase">
- <para>Provides a more sophisticated casing function than the
- default.</para>
- </step>
- <step condition="cls sty" remap="float">
- <para>Allows redesigning of floats and creation of new float
- types.</para>
- </step>
- <step condition="doc cls sty" remap="fmtcount">
- <para>Allows for the automated formatting of ordinal
- representations of numbers and counters as strings (eg first,
- second, third, etc).</para>
- <constructorsynopsis condition="xref">
- <methodparam>
- <funcparams>linkend</funcparams>
- <modifier>varlistentry</modifier>
- </methodparam>
- <methodparam>
- <funcparams>linkend</funcparams>
- <modifier>listitem</modifier>
- </methodparam>
- </constructorsynopsis>
- </step>
-<!-- defaults for Letter
-* driver: pdftex
-* paper: letterpaper
-* layout: <same size as paper>
-* layoutoffset:(h,v)=(0.0pt,0.0pt)
-* modes:
-* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt)
-* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt)
-* \paperwidth=614.295pt
-* \paperheight=794.96999pt
-* \textwidth=469.75502pt
-* \textheight=650.43001pt
-* \oddsidemargin=0.0pt
-* \evensidemargin=0.0pt
-* \topmargin=-37.0pt
-* \headheight=12.0pt
-* \headsep=25.0pt
-* \topskip=10.0pt
-* \footskip=30.0pt
-* \marginparwidth=65.0pt
-* \marginparsep=11.0pt
-* \columnsep=10.0pt
-* \skip\footins=9.0pt plus 4.0pt minus 2.0pt
-* \hoffset=0.0pt
-* \voffset=0.0pt
-* \mag=1000
-* \@twocolumnfalse
-* \@twosidefalse
-* \@mparswitchfalse
-* \@reversemarginfalse
-* (1in=72.27pt=25.4mm, 1cm=28.453pt)
--->
-<!-- defaults for A4
-* driver: pdftex
-* paper: a4paper
-* layout: <same size as paper>
-* layoutoffset:(h,v)=(0.0pt,0.0pt)
-* modes:
-* h-part:(L,W,R)=(71.13188pt, 455.24411pt, 71.13188pt)
-* v-part:(T,H,B)=(71.13188pt, 702.78308pt, 71.13188pt)
-* \paperwidth=597.50787pt
-* \paperheight=845.04684pt
-* \textwidth=455.24411pt
-* \textheight=702.78308pt
-* \oddsidemargin=-1.1381pt
-* \evensidemargin=-1.1381pt
-* \topmargin=-38.1381pt
-* \headheight=12.0pt
-* \headsep=25.0pt
-* \topskip=10.0pt
-* \footskip=30.0pt
-* \marginparwidth=57.0pt
-* \marginparsep=11.0pt
-* \columnsep=10.0pt
-* \skip\footins=9.0pt plus 4.0pt minus 2.0pt
-* \hoffset=0.0pt
-* \voffset=0.0pt
-* \mag=1000
-* \@twocolumnfalse
-* \@twosidefalse
-* \@mparswitchfalse
-* \@reversemarginfalse
-* (1in=72.27pt=25.4mm, 1cm=28.453pt)
--->
- <step condition="doc" remap="geometry"
- role="textwidth=150mm,textheight=8.5in">
- <!-- width from A4, height from Letter, assuming 25mm/1in margins -->
- <para>Needed to allow resettable left margin to take account of
- whatever the widest macro name is; and to adjust margins on
- default base article package so that the document fits
- acceptably on both A4 and Letter paper. Assuming a 25mm (1in)
- margin, this means a text area of
- \[\min\big\{8½″-2″\,\big\|\,210\mbox{mm}-2″\big\}×
- \min\big\{9″-2″\,\big\|\,297\mbox{mm}-2″\big\}\]which I
- calculate as 6.27″×9″ or 159mm\,×\,229mm.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="cls sty" remap="geometry">
- <para>Package for establishing margins and text area.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="cls sty" remap="graphicx">
- <para>Provide for graphics (PNG, JPG, or PDF format (only) for
- pdflatex; EPS format (only) for standard &LaTeX;).</para>
- <constructorsynopsis condition="imagedata">
- <methodparam>
- <parameter>fileref</parameter>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step condition="cls sty" remap="hyperref">
- <para>Provides complex settings for making hypertext (clickable)
- links in PDF and PS output for URIs, cross-references, and
- bibliographic citations.</para>
- </step>
- <step condition="cls sty" remap="ifpdf">
- <para>Allow detection of PDF or DVI mode.</para>
- </step>
- <step condition="cls sty" remap="ifsym" role="geometry">
- <para>Geometric symbols from the <filename>if</filename>
- fonts.</para>
- </step>
- <step condition="cls sty" remap="ifthen">
- <para>Package to enable if--then--else conditional
- processing.</para>
- </step>
- <step condition="cls sty" remap="lipsum">
- <para>Package to generate <wordasword>Greeked</wordasword> text
- (actually cod-Latin) as a placeholder.</para>
- </step>
- <step condition="cls sty" remap="listings">
- <para>Provides syntactic fontification or formatting
- (<phrase>pretty-printing</phrase>) of verbatim text according to
- the computer language used.</para>
- <constructorsynopsis condition="programlisting">
- </constructorsynopsis>
- </step>
- <step condition="doc cls sty" remap="makeidx">
- <para>Package for creating indexes.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="cls sty" remap="mdwlist">
- <para>DEPRECATED: USE ENUMITEM. Mark Wooding's package for
- compact lists.</para>
- </step>
- <step condition="cls sty" remap="minitoc">
- <para>Provides a <wordasword>mini</wordasword> (per-chapter or
- per-section) Table of Contents.</para>
- </step>
- <step condition="cls sty" remap="multicol">
- <para>Provides multi-column typesetting.</para>
- <constructorsynopsis condition="simplelist">
- <methodparam>
- <parameter>role</parameter>
- <modifier>twocol</modifier>
- </methodparam>
- </constructorsynopsis>
- <constructorsynopsis condition="orderedlist">
- <methodparam>
- <parameter>role</parameter>
- <modifier>twocol</modifier>
- </methodparam>
- </constructorsynopsis>
- <constructorsynopsis condition="procedure">
- <methodparam>
- <parameter>role</parameter>
- <modifier>twocol</modifier>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step condition="cls sty doc" remap="multirow">
- <para>Provides multi-column typesetting.</para>
- <constructorsynopsis condition="entry">
- <methodparam>
- <parameter>morerows</parameter>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step condition="doc cls sty" remap="nicefrac">
- <para>Slanted fractions, even in math mode.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="doc cls sty" remap="paralist">
- <para>DEPRECATED: USE ENUMITEM. Provides for in-line lists.</para>
- </step>
- <step condition="doc cls sty" remap="parskip">
- <para>Creates paragraphs separated by white-space with no
- indentation.</para>
- <constructorsynopsis condition=""/>
- </step>
- <step condition="doc cls sty" remap="pdfpages">
- <para>Allow embedding of individual pages from another PDF
- document.</para>
- <constructorsynopsis condition="imagedata">
- <methodparam>
- <parameter>format</parameter>
- <modifier>pdf</modifier>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step condition="doc cls sty" remap="ragged2e">
- <para>Allow hyphenation in ragged setting.</para>
- </step>
- <step condition="doc cls sty" remap="sectsty">
- <para>Allows the section headings to be re-styled.</para>
- </step>
- <step condition="cls sty" remap="setspace">
- <para>Provide 1½ or double line spacing.</para>
- </step>
- <step condition="cls sty" remap="soul">
- <para>Provides letter-spacing, strikeout, and underlining.</para>
- </step>
- <step condition="cls sty" remap="textcomp">
- <para>Additional commands for common symbols and punctuation.</para>
- </step>
- <step condition="doc cls sty" remap="ucccrest">
- <para>University College Cork crest (restricted).</para>
- </step>
- <step condition="doc cls sty" remap="ulem" role="normalem">
- <para>Underlining as an option (<emphasis>not</emphasis>
- automatically replacing italics).</para>
- <constructorsynopsis condition="link">
- </constructorsynopsis>
- </step>
- <step condition="doc cls sty" remap="url">
- <para>Handling of URI formatting.</para>
- <constructorsynopsis condition="ulink">
- </constructorsynopsis>
- <constructorsynopsis condition="uri">
- </constructorsynopsis>
- <constructorsynopsis condition="email">
- </constructorsynopsis>
- <constructorsynopsis condition="">
- <methodparam>
- <parameter>methodsynopsis</parameter>
- <modifier>href</modifier>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step condition="doc" remap="chicago">
- <para>University of Chicago reference and citation style.</para>
- <constructorsynopsis condition="bibliography">
- <methodparam>
- <parameter>xreflabel</parameter>
- <modifier>chicago</modifier>
- </methodparam>
- </constructorsynopsis>
- </step>
- <step condition="doc cls sty" remap="varioref">
- <para>Provides extended formatting of cross-references.</para>
- <constructorsynopsis condition="xref"/>
- </step>
- <step condition="cls sty" remap="xargs">
- <para>Allow for multiple optional arguments.</para>
- </step>
- <step condition="doc cls sty" remap="xcolor" role="svgnames">
- <para>Provide color.</para>
- <constructorsynopsis condition=""/>
- </step>
- </procedure>
- <procedure xml:id="postpackage">
- <step condition="doc" remap="apacite">
- <constraintdef>
- <cmdsynopsis>
- <command>\AtBeginDocument{\ApaciteRestoreAtCode}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc" remap="dox">
- <para>Provides extra documentation commands to
- distinguish types of macro being defined.</para>
- <constructorsynopsis condition=""/>
- <constraintdef>
- <cmdsynopsis>
- <!-- define the names -->
- <command>\doxitem{Attribute}{attribute}{attributes}</command>
- <command>\doxitem{AttributeValue}{attributevalue}{attribute values}</command>
- <command>\doxitem{Class}{class}{classes}</command>
- <command>\doxitem{Colour}{colour}{colours}</command>
- <command>\doxitem{Counter}{counter}{counters}</command>
- <command>\doxitem{DTD}{dtd}{DTDs/Schemas}</command>
- <command>\doxitem{Element}{element}{element types}</command>
- <command>\doxitem{Entity}{entity}{entities}</command>
- <command>\doxitem{Error}{error}{errors}</command>
- <command>\doxitem{Function}{function}{functions}</command>
- <command>\doxitem[macrolike]{Length}{length}{lengths}</command>
- <command>\doxitem{Mode}{mode}{mode}</command>
- <command>\doxitem{Option}{option}{options}</command>
- <command>\doxitem{Package}{package}{packages}</command>
- <command>\doxitem{Template}{template}{templates}</command>
- <!-- a narrow font to display the tags in the userdoc -->
- <command>\newcommand{\LabelFont}[2][\relax]{\strut
- {\fontencoding\encodingdefault
- \fontfamily{lmtt}\fontseries{lc}\selectfont#1#2}\space}</command>
- <!-- how to print them in the margin -->
- <command>\def\PrintDescribeAttribute#1{\LabelFont{@#1}}</command>
- <command>\def\PrintDescribeAttributeValue#1{\LabelFont[\itshape]{#1}}</command>
- <command>\def\PrintDescribeClass#1{\LabelFont{#1}}</command>
- <command>\def\PrintDescribeColour#1{\LabelFont[\color{#1}]{#1}}</command>
- <command>\def\PrintDescribeCounter#1{\LabelFont{#1}}</command>
- <command>\def\PrintDescribeDTD#1{\LabelFont{#1}}</command>
- <command>\def\PrintDescribeElement#1{\LabelFont{&lt;#1&gt;}}</command>
- <command>\def\PrintDescribeEntity#1{\LabelFont{\&amp;#1;}}</command>
- <command>\def\PrintDescribeError#1{\LabelFont[\color{Red}!]{#1}}</command>
- <command>\def\PrintDescribeFunction#1{\LabelFont{#1}}</command>
- <command>\def\PrintDescribeLength#1{\LabelFont{#1}}</command>
- <command>\def\PrintDescribeMode#1{\LabelFont[\sffamily]{\textlangle#1\textrangle}}</command>
- <command>\def\PrintDescribeOption#1{\LabelFont[\itshape]{#1}}</command>
- <command>\def\PrintDescribePackage#1{\LabelFont{#1}}</command>
- <command>\def\PrintDescribeTemplate#1{\LabelFont[\fontfamily{lmss}\fontseries{sbc}\selectfont]{#1}}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc cls sty" remap="enumitem" role="inline">
- <constraintdef>
- <cmdsynopsis>
- <command>\setlist[description]{style=unboxed}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc" remap="inputenc" role="utf8x">
- <constraintdef>
- <cmdsynopsis>
- <command>\AtBeginDocument{\let\show\SavedShow}</command>
- <command>\DeclareUnicodeCharacter{9251}{\textvisiblespace}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="cls sty" remap="inputenc" role="utf8x">
- <constraintdef>
- <cmdsynopsis>
- <command>\PrerenderUnicode{–}</command>
- <command>\PrerenderUnicode{š}</command>
- <command>\PrerenderUnicode{ć}</command>
- <command>\PrerenderUnicode{Å}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc" remap="listings">
- <para>Provides better formatting of listings, with syntactic
- highlighting for &LaTeX; and other languages.</para>
- <constraintdef>
- <cmdsynopsis>
- <command>\lstdefinelanguage[DocBook]{XML}
- {morekeywords={abstract,address,affiliation,annotation,arg,author,
- book,chapter,classname,cmdsynopsis,command,constraintdef,contrib,
- copyright,cover,date,email,emphasis,envar,filename,firstname,
- footnote,guibutton,guilabel,guimenu,guimenuitem,guisubmenu,
- holder,info,itemizedlist,listitem,literal,member,option,
- orderedlist,orgdiv,orgname,package,para,parameter,part,
- personname,phrase,procedure,productname,programlisting,quote,
- refsection,remark,constructorsynopsis,methodparan,modifier,
- funcparams,olink,bibliography,biblioentry,biblioset,subtitle,
- artpagenums,volumenum,issuenum,
- releaseinfo,replaceable,revdescription,revhistory,revision,
- sect1,sect2,sect3,sect4,seg,seglistitem,segmentedlist,segtitle,
- simplelist,step,surname,systemitem,tag,term,title,uri,userinput,
- variablelist,varlistentry,wordasword,xref,year,xml:id,xlink:href},}
- </command>
- <command>\lstdefinelanguage[TEI]{XML}
- {morekeywords={TEI.2,teiHeader,div2,head,p,num,val,xml:id},
- }[keywords,comments,strings]
- </command>
- <command>\lstloadlanguages{[LaTeX]TeX,[DocBook]XML,XSLT,bash,R}</command>
- <command>\lstset{basicstyle=\small\color{Black}\ttfamily,
- literate=
- {Ö}{{\"O}}1
- {Ä}{{\"A}}1
- {Ü}{{\"U}}1
- {ß}{{\ss}}2
- {ü}{{\"u}}1
- {á}{{\'a}}1
- {é}{{\'e}}1
- {í}{{\'i}}1
- {ó}{{\'o}}1
- {ú}{{\'u}}1
- {ä}{{\"a}}1
- {ö}{{\"o}}1,
- keywordstyle=\color{DarkGreen}\bfseries,
- commentstyle=\color{Gray}\upshape,
- stringstyle=\color{DarkRed}\upshape,
- emphstyle=\color{MediumBlue}\itshape,
- showstringspaces=false,
- columns=fullflexible,
- keepspaces=true}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc cls sty" remap="makeidx">
- <constraintdef>
- <cmdsynopsis>
- <command>\makeindex</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc" remap="nicefrac">
- <constraintdef>
- <cmdsynopsis>
- <command>\def\textonehalf{\ensuremath{\nicefrac12}}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc" remap="sectsty">
- <constraintdef>
- <cmdsynopsis>
- <command>\allsectionsfont{\sffamily}</command>
- <command>\renewcommand*{\descriptionlabel}[1]{\hspace\labelsep
- \sffamily\bfseries #1}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="doc sty cls" remap="varioref">
- <constraintdef>
- <cmdsynopsis>
- <command>\vrefwarning</command>
- <command>\labelformat{chapter}{Chapter~#1}</command>
- <command>\labelformat{chapter}{\@chapapp~#1}</command>
- <command>\labelformat{section}{section~#1}</command>
- <command>\labelformat{subsection}{section~#1}</command>
- <command>\labelformat{subsubsection}{section~#1}</command>
- <command>\labelformat{paragraph}{section~#1}</command>
- <command>\labelformat{figure}{Figure~#1}</command>
- <command>\labelformat{table}{Table~#1}</command>
- <command>\labelformat{item}{item~#1}</command>
- <command>\renewcommand{\reftextcurrent}{elsewhere on this
- page}</command>
- <command>\def\reftextafter{on the
- \reftextvario{next}{following} page}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- <step condition="cls sty doc" remap="xcolor">
- <para>There seems to be a bug in the T1 encoding of some package
- (unidentified, but possibly <package>xcolor</package>) which
- uses the command <command>T1</command>, which is an
- impossibility (no digits allowed in command names). So we fake
- it here to stop &LaTeX; complaining, by dropping the first
- argument on the floor.</para>
- <constraintdef>
- <cmdsynopsis>
- <command>\@ifundefined{T}{\newcommand{\T}[2]{{\fontencoding{T1}\selectfont#2}}}{}</command>
- </cmdsynopsis>
- </constraintdef>
- </step>
- </procedure>
-</refsection>
diff --git a/Master/texmf-dist/doc/support/classpack/readme.xml b/Master/texmf-dist/doc/support/classpack/readme.xml
deleted file mode 100644
index f87175b79fe..00000000000
--- a/Master/texmf-dist/doc/support/classpack/readme.xml
+++ /dev/null
@@ -1,166 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE chapter PUBLIC "+//Silmaril//DTD DocBook 5.0//EN"
- "/dtds/docbook/docbook-5.0/dtd/docbook.dtd" [
-<!ENTITY TeX "TeX">
-<!ENTITY LaTeX "LaTeX">
-<!ENTITY BiBTeX "BiBTeX">
-<!ENTITY LaTeX3 "LaTeX3">
-<!ENTITY mdash " — ">
-<!ENTITY nbsp " ">
-<!ENTITY thinsp " ">
-<!ATTLIST sect1 targetptr CDATA #IMPLIED type CDATA #IMPLIED>
-<!ATTLIST anchor targetptr CDATA #IMPLIED type CDATA #IMPLIED>
-]>
-<chapter xml:id="readme" version="0.03" xml:lang="en:IE"
- revision="2012-06-16" annotations="Copyright © 2012 &LaTeX3; Project">
- <title>README</title>
- <para>This is the README file for the <olink targetptr="book"
- type="xml:id"/> <olink targetptr="book" type="arch"/>.</para>
- <sect1 targetptr="abstract" type="content">
- <title>Summary</title>
- <anchor targetptr="abstract" type="*" remap="title"/>
- </sect1>
- <sect1>
- <title>Normal installation</title>
- <para>This <olink targetptr="book" type="arch"/> is distributed as
- a <filename>.tds.zip</filename> file (TDS is the &TeX; Directory
- Structure, the standard layout for a modern &TeX; installation).
- Install it on any personal <acronym>TDS</acronym>-compliant
- &TeX; system by unzipping it into your personal &TeX; directory
- (folder). This will put all the files into the right places, so
- you can start using them immediately.</para>
- <para>If you haven't yet created a personal &TeX; directory, see
- below for details of what one is, and how to create it.</para>
- <para>On a shared (multiuser) system like a server, unzip it into
- the <varname>$TEXMFLOCAL</varname> directory instead (see
- below), and run your &TeX; directory-indexing program (eg
- <productname>texhash</productname>,
- <productname>mktexlsr</productname>,
- <productname>Update&nbsp;FNDB</productname>, etc) so that
- everyone can use it.</para>
- <para>If you are using an old non-<acronym>TDS</acronym>-compliant
- system, see below under Manual Installation.</para>
- <sect2>
- <title>Your personal &TeX; directory</title>
- <para>This is a directory (folder) on single-user systems like
- desktops and laptops where you put all your local manual
- modifications, updates, and additions such as classes,
- packages, and fonts. The name and location are fixed:</para>
- <variablelist>
- <varlistentry>
- <term>Apple Mac OS&thinsp;X</term>
- <listitem>
- <para><systemitem>~/Library/texmf</systemitem></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>Unix and GNU/Linux</term>
- <listitem>
- <para><systemitem>~/texmf</systemitem></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>MS-Windows 95/XP</term>
- <listitem>
- <para><systemitem>C:\texmf</systemitem></para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>MS-Windows 2007 and above</term>
- <listitem>
- <para><systemitem>Computer\System\<replaceable>YOURNAME</replaceable>\texmf</systemitem></para>
- </listitem>
- </varlistentry>
- </variablelist>
- <para>Create that folder if it does not already exist.</para>
- <warning>
- <title>If you are a Windows user running
- <productname>MiK&TeX;</productname></title>
- <para>When you create the folder, you must add it to
- <productname>MiK&TeX;</productname>'s list of supported
- folders. Run the <productname>MiK&TeX;
- Maintenance/Settings</productname> program, select the
- <guilabel>Roots</guilabel> tab, and add the folder. You only
- have to do this once.</para>
- <para>Each time you add or remove software in your personal
- &TeX; folder, you <emphasis>must</emphasis> also click on
- the <guibutton>Update FNDB</guibutton> button in the
- <guilabel>General</guilabel> tab.</para>
- </warning>
- <para>Unix (Mac and GNU/Linux) users do not need to (indeed,
- should not) run their filename database indexer
- (<productname>mktexlsr</productname> or
- <productname>texhash</productname>) for files put in
- your personal &TeX; directory.</para>
- </sect2>
- <sect2>
- <title>Installation on shared systems</title>
- <para>On multi-user systems (Unix-based), identify the shared
- local directory tree with the command</para>
- <programlisting>kpsewhich -expand-var '$TEXMFLOCAL'</programlisting>
- <para>This will give you the location of the shared
- <filename>texmf</filename> directory into which you must
- install these files.</para>
- <para>Do not forget to run the
- <productname>texhash</productname> or
- <productname>mktexlsr</productname> (filename indexer) program
- after installation, otherwise the files will not be found by
- &LaTeX; and nothing will work!</para>
- </sect2>
- </sect1>
- <sect1>
- <title>Manual installation (non-TDS systems)</title>
- <para>To install this software manually, unzip the zip file into a
- temporary directory and move the <filename><olink
- targetptr="book" type="xml:id"/>.<olink targetptr="book"
- type="userlevel"/></filename> file from the
- <filename>tex/latex/<olink targetptr="book"
- type="xml:base"/></filename> directory to a location
- (directory/folder) where &LaTeX; will find it on your system.
- This referred to in some documentation as <phrase>the
- <varname>TEXINPUTS</varname> directory</phrase>, although it
- may be called something else on your system.</para>
- <para><emphasis>It is your responsibility to know where this
- location is.</emphasis> See the question in the &TeX;
- <acronym>FAQ</acronym> at
- <uri>http://www.tex.ac.uk/cgi-bin/texfaq2html?label=inst-wlcf</uri>
- for more information. If you do not know, or cannot find it, or
- do not have access to it, your &TeX; system may be out of date
- need replacing.</para>
- <sect2>
- <title>Last resort</title>
- <para>In an emergency, and as a last resort on unmanageable
- systems, it is possible simply to put the <filename><olink
- targetptr="book" type="xml:id"/>.<olink targetptr="book"
- type="userlevel"/></filename> file in your current working
- directory (the same folder as your <filename>.tex</filename>
- file[s]).</para>
- <para>While this may work, it is not supported, and may lead to
- other resources (packages, fonts, etc) not being found.</para>
- </sect2>
- </sect1>
- <sect1>
- <title>Usage</title>
- <para>Make this the first line of your &LaTeX; document:</para>
- <programlisting condition="class">\documentclass[options]{<olink
- targetptr="book" type="xml:id"/>}</programlisting>
- <programlisting condition="package">\usepackage[options]{<olink
- targetptr="book" type="xml:id"/>}</programlisting>
- <para>Read the documentation for the options available. The
- documentation is distributed as a <acronym>PDF</acronym>
- document in the zip file. You can also regenerate it by
- typesetting the <filename><olink targetptr="book"
- type="xml:id"/>.dtx</filename> file with &LaTeX; (and
- &BiBTeX; and <productname>makeindex</productname>) in the normal
- way.</para>
- </sect1>
- <sect1 xml:id="bugs">
- <title>Bugs and TODO</title>
- <para>No outstanding reported bugs at the time of this version.</para>
- </sect1>
- <sect1 targetptr="copright" type="content">
- <title>Copyright</title>
- <para>The following statement is included in the source code:</para>
- <anchor targetptr="copyright" type="*"/>
- </sect1>
-</chapter>
diff --git a/Master/texmf-dist/doc/support/classpack/test.sh b/Master/texmf-dist/doc/support/classpack/test.sh
deleted file mode 100644
index d001b026c70..00000000000
--- a/Master/texmf-dist/doc/support/classpack/test.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-# This is a test script
-echo Hello, World!
-
-