diff options
Diffstat (limited to 'Master/texmf-dist/doc/support')
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/MANIFEST | 17 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/README | 129 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/README.md | 206 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/VERSION | 1 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/classpack.pdf | bin | 310003 -> 148774 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/db2bibtex.xsl | 592 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/db2dtx.xsl | 5378 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/db2plaintext.xsl | 513 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/decommentbbl.awk | 37 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/doctexbook.dtd | 63 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/getgis.sh | 24 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/lppl.xml | 541 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/prepost.xml | 648 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/readme.xml | 166 | ||||
-rw-r--r-- | Master/texmf-dist/doc/support/classpack/test.sh | 4 |
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 Binary files differindex 881096d5d53..65f81b5e364 100644 --- a/Master/texmf-dist/doc/support/classpack/classpack.pdf +++ b/Master/texmf-dist/doc/support/classpack/classpack.pdf 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>}
</xsl:text> - </xsl:if> - <xsl:if test="count(//db:biblioref) + - count(//db:citetitle[@linkend]) + - count(//db:blockquote[@linkend])=0"> - <xsl:text>% \nocite{*}
</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} -%<*ignore>
</xsl:text> - <xsl:apply-templates/> - <xsl:text>%</ignore> -% \end{VerbatimOut}
</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>,
publisher 	 = {</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>,
publisher 	 = {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>
}
</xsl:text> - </xsl:template> - - <xsl:template match="db:biblioentry/db:authorgroup"> - <xsl:apply-templates/> - <xsl:text>,
shortauthor 	 = {</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> \& </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>,
</xsl:text> - <xsl:value-of select="name()"/> - <xsl:text> 	 = {</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>,
short</xsl:text> - <xsl:value-of select="name()"/> - <xsl:text> 	 = {</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>,
author 	 = {{</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>,
shortauthor 	 = {{</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>,
</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> 	 = {{</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>,
</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> 	 = {</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>,
lastchecked 	 = {</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>,
year 	 = {</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>,
month 	 = {</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>,
shorttitle 	 = {{</xsl:text> - <xsl:apply-templates/> - <xsl:text>}}</xsl:text> - </xsl:template> - - <xsl:template match="db:bibliocoverage"> - <xsl:text>,
</xsl:text> - <xsl:value-of select="@remap"/> - <xsl:text> 	 = {</xsl:text> - <xsl:apply-templates/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:seriesvolnums"> - <xsl:text>,
number 	 = {</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>,
note 	 = {</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>,
howpublished 	 = {</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>,
</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> 	 = {</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>,
series 	 = {{</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>,
organization 	 = {</xsl:text> - <xsl:apply-templates/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:confgroup/db:address"> - <xsl:text>,
address 	 = {</xsl:text> - <xsl:apply-templates/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:confdates"/> - - <xsl:template match="db:confnum"> - <xsl:text>,
series 	 = {</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>,
year 	 = {</xsl:text> - <xsl:value-of select="substring(@YYYY-MM-DD,1,4)"/> - <xsl:text>}</xsl:text> - <xsl:if test="string-length(@YYYY-MM-DD)>=7"> - <xsl:text>,
month 	 = {</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>,
howpublished 	 = {Pers.\ Comm.}</xsl:text> - </xsl:if> - </xsl:template> - - <xsl:template match="db:productnumber"> - <xsl:text>,
number 	 = {</xsl:text> - <xsl:value-of select="."/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:pagenums|db:artpagenums"> - <xsl:text>,
pages 	 = {</xsl:text> - <xsl:value-of select="translate(.,'–','-')"/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:volumenum"> - <xsl:text>,
volume 	 = {</xsl:text> - <xsl:apply-templates/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:releaseinfo"> - <xsl:text>,
url 	 = {</xsl:text> - <xsl:apply-templates/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:issuenum | db:invpartnumber"> - <xsl:text>,
number 	 = {</xsl:text> - <xsl:apply-templates/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:publisher/db:address"> - <xsl:text>,
</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> 	 = {</xsl:text> - <xsl:apply-templates/> - <xsl:text>}</xsl:text> - </xsl:template> - - <xsl:template match="db:edition"> - <xsl:text>,
edition 	 = {</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>
 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
</xsl:text> - <!-- special exception for classes: needs \ProvidesFile --> - <xsl:if test="$doctype='class'"> - <xsl:text>%<*driver> -\ProvidesFile{</xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.dtx} -%</driver> -</xsl:text> - </xsl:if> - <!-- prefix with <class> or <package> as appropriate --> - <xsl:text>%<</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>] -%<</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>
%<</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>]
</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 -%%
</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>%<*driver>
</xsl:text> - <!-- special action to preload xcolor options --> - <!-- \PassOptionsToPackage{svgnames}{xcolor} --> - <xsl:text>\PassOptionsToPackage{svgnames}{xcolor}
</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}
</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>: 〈</xsl:text> - <xsl:value-of select="@condition"/> - <xsl:text>〉 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:
</xsl:text> - <xsl:for-each select="$packages/*"> - <xsl:value-of select="name()"/> - <xsl:text> : </xsl:text> - <xsl:value-of select="child::*[1]"/> - <xsl:text>
</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 -%%
</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
\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}
</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>}
</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}
</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
</xsl:text> - </xsl:if> - <!-- 5. Process all the requested packages last! - optionally use segtitle? --> - <xsl:text>%% -%% Packages added by author -%%
</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}
</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}
</xsl:text> - </xsl:if> - <xsl:text>\begin{document}</xsl:text> - <xsl:value-of select="normalize-space(db:book/@annotations)"/> - <xsl:text>
 \DocInput{</xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.dtx} -\end{document} -%</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 \& -% Acute accent \' Left paren \( Right paren \) -% Asterisk \* Plus \+ Comma \, -% Minus \- Point \. Solidus \/ -% Colon \: Semicolon \; Less than \< -% Equals \= Greater than \> Question mark \? -% Commercial at \@ Left bracket \[ Backslash \\ -% Right bracket \] Circumflex \^ Underscore \_ -% Grave accent \` Left brace \{ Vertical bar \| -% Right brace \} Tilde \~} -% 
</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>.}
</xsl:text> - </xsl:for-each> - <xsl:text>% -% \GetFileInfo{</xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.dtx}
</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{\!,\#,\$,\&,\',\(,\),\+,\.,\:,\;,\<,\=,\>,\?,\_} -% \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>}
</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
</xsl:text> - </xsl:if> - <xsl:text>% </xsl:text> - <xsl:value-of select="normalize-space(.)"/> - <xsl:text>
</xsl:text> - <xsl:if test="contains(.,'@')"> - <xsl:text>% \makeatother
</xsl:text> - </xsl:if> - </xsl:for-each> - <xsl:text>%
</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>
</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}
</xsl:text> - </xsl:if> - <xsl:text>% \begin{abstract}
</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
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{abstract} -% \clearpage -% \tableofcontents
</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
</xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.ins
</xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.pdf
</xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.</xsl:text> - <xsl:value-of select="$filetype"/> - <xsl:text>
</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>
</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>
</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>}
</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>
</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
%% 
</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
</xsl:text> - </xsl:if> - <xsl:text>% \begin{macrocode}
</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
</xsl:text> - </xsl:if> - <!-- output any predefined commands --> - <xsl:value-of select="normalize-space(.)"/> - <xsl:text>
</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
</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>%<</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>
</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
</xsl:text> - </xsl:if> - <xsl:value-of select="normalize-space(.)"/> - <xsl:text>
</xsl:text> - <xsl:if test="contains(.,'@') and $mode=''"> - <xsl:text>\makeatother
</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}
</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}
</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
</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>
%<</xsl:text> - <xsl:value-of select="$doctype"/> - <xsl:text>> </xsl:text> - --> - <xsl:text>
 </xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>
 </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
</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>
</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>
</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>
</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>}
</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>{%
	</xsl:text> - <xsl:value-of select="db:arg"/> - <xsl:text>}
</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>{%
	</xsl:text> - <xsl:value-of select="db:arg[1]"/> - <xsl:text>}
</xsl:text> - <xsl:text>{%
	</xsl:text> - <xsl:value-of select="db:arg[2]"/> - <xsl:text>}
</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>}
</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>{%
	</xsl:text> - <xsl:value-of select="db:arg"/> - <xsl:text>}
</xsl:text> - </xsl:otherwise> - </xsl:choose> - </xsl:otherwise> - </xsl:choose> - <xsl:if test="position()=last() and ../db:cmdsynopsis[contains(.,'@')]"> - <xsl:text>\makeatother
</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>}
% \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>}
</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{%
% This document corresponds to \textsf{</xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>}
% \textit{v.}\ \fileversion, dated \filedate.}</xsl:text> - <xsl:if test="ancestor::db:info/descendant::db:author/ - db:contrib[@role='sponsor']"> - <xsl:text>\enspace\thanks{%
% 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>
% \\[1em]\Large 
% </xsl:text> - <xsl:apply-templates/> - <xsl:if test="following-sibling::db:subtitle[not(@role='labelonly')]"> - <xsl:text>
% \\[1ex]\large 
% </xsl:text> - <xsl:apply-templates select="following-sibling::db:subtitle/node()"/> - </xsl:if> - <xsl:text>}
</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>
% \and
% </xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>}
% \maketitle
</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>
</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
%% 
</xsl:text> - <xsl:apply-templates select="." mode="readme"/> - <xsl:text>% \fi
</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>
</xsl:text> - <xsl:apply-templates/> - <!-- terminate the centering group for untitled prefaces --> - <xsl:if test="not(db:title)"> - <xsl:text>% \par\endgroup\vfill
</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}
</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}
</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}
</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 -%<*</xsl:text> - <xsl:value-of select="$doctype"/> - <xsl:text>> -% \fi
</xsl:text> - </xsl:if> - <xsl:apply-templates/> - <xsl:if test="count(db:chapter)=0"> - <!-- no chapters, so output end-tag now --> - <xsl:text>% \iffalse -%</</xsl:text> - <xsl:value-of select="$doctype"/> - <xsl:text>> -% \fi
</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
</xsl:text> - </xsl:if> - <xsl:text>% \newgeometry{left=3cm}
</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
%<*</xsl:text> - <xsl:value-of select="@xml:id"/> - <xsl:text>>
</xsl:text> - <xsl:call-template name="lrtrim"> - <xsl:with-param name="text" select="."/> - </xsl:call-template> - <xsl:text>
%</</xsl:text> - <xsl:value-of select="@xml:id"/> - <xsl:text>>
% \fi
</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
</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>
</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 -%<*</xsl:text> - <xsl:value-of select="$doctype"/> - <xsl:text>> -% \fi
</xsl:text> - </xsl:if> - <xsl:call-template name="checkpackages"> - <xsl:with-param name="pos" select="'before'"/> - </xsl:call-template> - <xsl:text>% \clearpage
</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>
</xsl:text> - <xsl:if test="ancestor::db:part[@xml:id='code']"> - <xsl:text>% \iffalse
%% 
</xsl:text> - <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/> - <xsl:text>% \fi
</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 -%</</xsl:text> - <xsl:value-of select="$doctype"/> - <xsl:text>> -% \fi
</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
</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 -%<*</xsl:text> - <xsl:value-of select="@xml:id"/> - <xsl:text>> -% \fi
</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>
</xsl:text> - <xsl:if test="ancestor::db:part[@xml:id='code']"> - <xsl:text>% \iffalse
%% 
</xsl:text> - <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/> - <xsl:text>% \fi
</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}
\NeedsTeXFormat{</xsl:text> - <xsl:value-of select="/db:book/@conformance"/> - <xsl:text>}[</xsl:text> - <xsl:value-of select="translate(/db:book/@condition,'-','/')"/> - <xsl:text>]
\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>
 </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>]
% \end{macrocode}
</xsl:text> - </xsl:if> - </xsl:if> - <xsl:apply-templates/> - <xsl:if test="@xlink:href and @xml:id"> - <xsl:text>% \iffalse -%</</xsl:text> - <xsl:value-of select="@xml:id"/> - <xsl:text>> -% \fi
</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
</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>
</xsl:text> - <xsl:if test="ancestor::db:part[@xml:id='code']"> - <xsl:text>% \iffalse
%% 
</xsl:text> - <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/> - <xsl:text>% \fi
</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>
</xsl:text> - <xsl:if test="ancestor::db:part[@xml:id='code']"> - <xsl:text>% \iffalse
%% 
</xsl:text> - <xsl:apply-templates select="db:title|db:subtitle" mode="readme"/> - <xsl:text>% \fi
</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>—</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>
</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>
</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
% \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>}
</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>% 
</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>"`).
</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>
</xsl:text> - <xsl:apply-templates/> - </xsl:template> - - <xsl:template match="db:blockquote"> - <xsl:text>% \begin{quotation}</xsl:text> - <xsl:text>\small\noindent
</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
</xsl:text> - </xsl:if> - <xsl:text>% \end{quotation}
</xsl:text> - </xsl:template> - - <xsl:template match="db:warning | db:sidebar"> - <xsl:text>% \par\begingroup\fboxsep1em\centering
% \</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
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{minipage}}\par\endgroup
</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>}
</xsl:text> - </xsl:template> - - <xsl:template match="db:sidebar/db:address"> - <xsl:text>% \par\raggedleft </xsl:text> - <xsl:apply-templates/> - <xsl:text>\par
</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>}
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{</xsl:text> - <xsl:value-of select="$role"/> - <xsl:text>}
</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>}
</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>}
</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>}
% \begin{option}{</xsl:text> - <xsl:value-of select="@xml:id"/> - <xsl:text>}
% </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>
% using the </xsl:text> - <!-- langs in methodsynopsis/@xml:lang for babel --> - <xsl:value-of select="normalize-space(db:methodname)"/> - <xsl:text> citation format
% 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>.
% \begin{macrocode}
\DeclareOption{</xsl:text> - <xsl:value-of select="@xml:id"/> - <xsl:text>}{%
</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>}
</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>}{}
</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>}
</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>}}
</xsl:text> - </xsl:for-each> - </xsl:if> - </xsl:if> ---> - <xsl:text>}
</xsl:text> - <xsl:text>% \end{macrocode} -% \end{option}
</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,' '))<=$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,' '))) - < - string-length(substring-before( - substring-after($string,' '), ' '))"> - <xsl:text>
 </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>
% \fi
</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>}
</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}
</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>
% \end{macrocode}
</xsl:text> - </xsl:when> - <!-- 2. INTERPRETABLE FORMATS IN DOCUMENTATION - (embedded markup) --> - <xsl:when test="db:token or db:xref"> - <xsl:text>% \iffalse -%<*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>]
</xsl:text> - <xsl:apply-templates/> - <xsl:text>
% \end{Verbatim} -% \iffalse -%</ignore> -% \fi
</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 -%<*ignore> -% \fi -% \begin{Verbatim}[frame=single,framesep=1em,fontsize=\small]
</xsl:text> - <xsl:value-of select="."/> - <xsl:text> -% \end{Verbatim} -% \iffalse -%</ignore> -% \fi
</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 -%<*ignore> -% \fi
</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()>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>
</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>
\end{lstlisting}
</xsl:text> - <xsl:text>% \iffalse -%</ignore> -% \fi
</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,'	',' ')"/> - <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,'
 ')"> - <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: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)='	' - --> - <xsl:when test="substring($text,1,1)='
'"> - <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)='
' or - substring($text,$extent)='	'"> - <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,'
')"> - <xsl:value-of select="substring-before($text,'
')"/> - <xsl:text>
</xsl:text> - <xsl:call-template name="addindent"> - <xsl:with-param name="text" select="substring-after($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> - - <!-- 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
</xsl:text> - <xsl:apply-templates/> - <xsl:if test="db:textobject[@role='footer']"> - <xsl:text>% \par\bigskip\footnotesize
</xsl:text> - <xsl:apply-templates select="db:textobject[@role='footer']/*"/> - </xsl:if> - <xsl:text>% \end{table}
</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
</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>
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% }
</xsl:text> - </xsl:template> - - <xsl:template match="db:tgroup"> - <xsl:text>% \begingroup</xsl:text> - <xsl:value-of select="parent::db:table/@remap"/> - <xsl:text>
% \centering
% \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>%
% 	</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>%
% 	</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>}
</xsl:text> - <xsl:apply-templates select="db:thead"/> - <xsl:if test="not(db:thead)"> - <xsl:text>% \hline
</xsl:text> - </xsl:if> - <xsl:apply-templates select="db:tbody"/> - <xsl:apply-templates select="db:tfoot"/> - <xsl:text>% \end{tabular}
</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]
</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>
</xsl:text> - </xsl:for-each> - <xsl:text>% \end{enumerate} -% \setcounter{fnote}{0}
</xsl:text> - </xsl:if> - <xsl:text>% \par\endgroup
</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><{</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
</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>
</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>&%
</xsl:text> - <!-- col 2: division[s], may be multiple methodparam elements --> - <xsl:for-each select="db:methodparam/db:parameter"> - <xsl:text>%	</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>&%
</xsl:text> - </xsl:otherwise> - </xsl:choose> - </xsl:for-each> - <!-- citation format --> - <xsl:if test="not(db:methodparam/db:parameter/@role='degree')"> - <xsl:text>%	</xsl:text> - <xsl:value-of select="db:methodname"/> - </xsl:if> - <xsl:text>\\\hline[.1pt]%
</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
% </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>
</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>&</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>&</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>}%
% 	</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 … 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
</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
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{figure}
</xsl:text> - <xsl:if test="@floatstyle='p' and - descendant::db:imagedata[@format='pdf' and @condition]"> - <xsl:text>% \clearpage
</xsl:text> - </xsl:if> - </xsl:template> - - <xsl:template match="db:informalfigure"> - <xsl:text>% \begin{center}
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{center}
</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
</xsl:text> - </xsl:if> - <xsl:apply-templates/> - <xsl:if test="@role='framed'"> - <xsl:text>% }}
</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
</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>% \\
</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
</xsl:text> - </xsl:when> - <xsl:when test="@align='right'"> - <xsl:text>% \flushright
</xsl:text> - </xsl:when> - </xsl:choose> - <xsl:if test="@arch='framed'"> - <xsl:text>% \fbox{%
</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>
</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>
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{itemize}
</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}
</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>}
</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>}
</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>
</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>
</xsl:text> - </xsl:if> - <!-- check format --> - <xsl:if test="@role='twocol'"> - <xsl:text>% \end{multicols}
</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>]
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{description}
</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]
</xsl:text> - <xsl:apply-templates/> - <xsl:text>% \end{itemize} -% \end{multicols}
</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 
</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>% or 
</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>
</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>\&</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(.,'.*[\\\$\^{}<\|>␣].*') - 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(.,'.*[\\\$\^{}<\|>].*') - 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(.,'.*[&_~#%].*') - 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{%
</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>
</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 < 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 < 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>
</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> <</xsl:text> - <xsl:value-of select="//db:info//db:author[1]/db:email"/> - <xsl:text>>
</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'. -% 
</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:value-of - select="normalize-space(//db:info/db:copyright/db:holder)"/> - <xsl:text> <</xsl:text> - <xsl:value-of - select="substring-after(//db:info/db:copyright/db:holder - /@xlink:href,'mailto:')"/> - <xsl:text>>
</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. -% 
</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> <</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> <</xsl:text> - <xsl:value-of select="//db:info//db:author/db:email"/> - </xsl:otherwise> - </xsl:choose> - <xsl:text>>
</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.
</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<$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
</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>
\endpreamble
</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>
\endpreamble
</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>
\endpreamble
</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>}}%
</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>
 \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>}}%
</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>}}%
</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>
 \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>}}%
</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(.,'
')"> - <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(.,'	') or - starts-with(.,'
')"> - <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(.))='	' or - substring(.,string-length(.))='
'"> - <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,'	')"> - <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,'
') 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,'
')"> - <xsl:value-of select="substring-before($text,'
')"/> - <xsl:choose> - <xsl:when - test="normalize-space(substring-after($text,'
'))='' and - parent::db:programlisting and - count(following-sibling::text())=0"> - <xsl:text></xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>
% </xsl:text> - <xsl:call-template name="dtxtext"> - <xsl:with-param name="text" - select="substring-after($text,'
')"/> - </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
</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>
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
mv </xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.bdc </xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.bbl
pdflatex </xsl:text> - <xsl:value-of select="$name"/> - <xsl:text>.dtx
</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
</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>
</xsl:text> - </xsl:for-each> - <xsl:text>echo Copying files into dev tree...
</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>
</xsl:text> - <xsl:text>mkdir -p source/latex/</xsl:text> - <xsl:value-of select="/db:book/@xml:base"/> - <xsl:text>
</xsl:text> - <xsl:text>mkdir -p tex/latex/</xsl:text> - <xsl:value-of select="/db:book/@xml:base"/> - <xsl:text>
</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>
</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>
</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>
</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>
</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>
</xsl:text> - </xsl:for-each> - <!-- ZIP 'EM UP from the dev directory --> - <xsl:text>echo Zipping up files from dev tree...
</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>
</xsl:text> - <xsl:text>echo Zipping up plain CTAN version...
</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
</xsl:text> - <!-- INSTALL the package or class file into the live tree --> - <xsl:text>echo Installing working copy...
</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
</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
</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>% \begin{macrocode}
</xsl:text> - </xsl:otherwise> - </xsl:choose> - <xsl:text>%<*</xsl:text> - <xsl:value-of select="parent::db:chapter/@xml:id"/> - <xsl:text>></xsl:text> - <xsl:value-of select="."/> - <xsl:text>
%</</xsl:text> - <xsl:value-of select="parent::db:chapter/@xml:id"/> - <xsl:text>>
</xsl:text> - <xsl:choose> - <xsl:when test="ancestor::db:part[@xml:id='files']"> - <xsl:text>% \fi
</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:text>% \end{macrocode}
</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>
</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>
</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>
</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>
</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>
</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> !
</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>
</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>
</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>
</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:

</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>
</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)<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> & </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) < $width"> - <xsl:value-of select="$indent"/> - <xsl:value-of select="$text"/> - <xsl:text>
</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>
</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;"> -<!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 "\%"> -<!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—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 <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 <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 <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 <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 <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 <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 <xref - linkend="LPPL:item:announce"/> - or <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 <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—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. Y. 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&ers;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{<#1>}}</command> - <command>\def\PrintDescribeEntity#1{\LabelFont{\&#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 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 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! - - |