diff options
Diffstat (limited to 'src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages')
19 files changed, 17376 insertions, 0 deletions
diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 new file mode 100644 index 0000000..c170cc0 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 @@ -0,0 +1,195 @@ +Note: This changelog is a record of descriptions of all changes +made to the DocBook XSL manpages stylesheets during the time when +they were maintained in their original home in the +[cvs]/docbook/contrib/xsl/db2man area of the DocBook Project +source-code repository at Sourceforge; that is, from October 2001 +(when they were contributed to the project by Martijn van Beers) +until September 2002 (when they were moved to the +[cvs]/docbook/xsl/manpages area and became a standard part of all +subsequent DocBook XSL Stylesheets releases). + +2002-09-17 Norman Walsh <nwalsh@users.sourceforge.net> + + * README, db2man.xsl, lists.xsl, sect23.xsl, synop.xsl, xref.xsl: + Moved to docbook/xsl/manpages + + * db2man.xsl, synop.xsl: Patch from Joe Orton + +2002-06-16 <lotr@users.sourceforge.net> + + * db2man.xsl: commit patch sent by Joe Orton: + + This patch adds support for using the productname, date and title out of + a <referenceinfo> if one is present, rather than having to add each of + these individually for every refentry. + + * db2man.xsl: Tim Waugh sent: + + This patch normalizes space in each refname before displaying it in + the name section. + +2002-05-21 <lotr@users.sourceforge.net> + + * xref.xsl: from Joe Orton: + this patch allows cross-referencing to a specific refname. I + need this since I'm documenting several different (but related) + functions per refentry, and want to cross-reference them individually, + rather than just by the title used for the refentry as a whole. + +2002-05-17 <lotr@users.sourceforge.net> + + * lists.xsl: apply glosslist support patch from twaugh + +2002-05-15 <lotr@users.sourceforge.net> + + * db2man.xsl: slightly sanitize the filenames we generate. again from twaugh + + * db2man.xsl: Apply twaugh's fix for making the entity transform stuff work + +2002-05-14 <lotr@users.sourceforge.net> + + * db2man.xsl: generalize the tip template for all admonitions + (caution,important,note,tip,warning) + + * db2man.xsl: Apply Joe Orton's <tip> patch, modified to be indented. Also show "Tip" + in the title. + + so if <tip><title>foo</title></tip>, you get + Tip: foo + + * synop.xsl: rewrote funcprototype. It used to convert all its children to a single + string and the split it up again through recursion. Now has a nice + foreach loop for the paramdefs, which seems much cleaner than throwing + everything in a big string before processing it. + +2002-05-10 <lotr@users.sourceforge.net> + + * db2man.xsl: add support for simpara + + * db2man.xsl, lists.xsl: fix refsect2 titles + + * synop.xsl: also from twaugh: + + I found some input that goes wrong with the synop.xsl we have in CVS: + + <group choice="opt"> + <arg>-o <replaceable>FILE</replaceable></arg> + <arg>--output=<replaceable>FILE</replaceable></arg> + </group> + + It gets rendered as (with *bold* and _italic_): + + [*-o FILE* | *--output=FILE*] + + The desired markup should look like: + The following macro does the trick: + + [\fB-o \fIFILE\fR\fR | \fB--output=\fIFILE\fR\fR] + + The trouble is that the named template 'bold' uses value-of, and so + strips <replaceable> of its significance. + + Another thing I found is that the arg/replaceable template is + superfluous altogether: db2man.xsl has a 'replaceable' template which + does the same thing. + + Here is a patch to make those two modifications. + + NOTE TO SELF: must try to fix bold template so we can use it everywhere + +2002-05-09 <lotr@users.sourceforge.net> + + * db2man.xsl: oops, removed too much + + * db2man.xsl: remove stuff that's apparently left-over from sect23.xsl + + * db2man.xsl, lists.xsl, synop.xsl: batch of patches from twaugh: + * This patch (based on one from Jirka Kosek) adds support for + block-level elements inside <para>s---<screen>s for example, or lists. + * This patch replaces entities (like '舒') with sensible + characters or groups of characters. + * This patch adds support for sbr. + * This patch normalizes spaces in varlistentry terms. + * This patch normalizes spaces in terminal varlistentry terms. + * This patch allows variable lists to be nested (once). + * This patch prevents variable list item paragraphs from merging into + one another. + * This patch improves the rendering of itemized lists, and adds support + for ordered lists and procedures. + * This patch makes some small adjustments to group/arg: don't put extra + spaces in where they aren't needed, and normalize the space of $arg. + * This patch makes adjustments to cmdsynopsis elements. In particular, + they can now be wrapped if no <sbr/> is provided. + * This patch adds funcsynopsis//* support. Again, wrapping is done + automatically. + + * synop.xsl: make synopsises work for --arg=foo <arg>s too + + * synop.xsl: remove unneccesary adding of whitespace for arg/replaceable + +2002-05-01 <lotr@users.sourceforge.net> + + * db2man.xsl: This patch adds support for multiple refnames. + + (another twaugh patch) + + * db2man.xsl: modified ulink patch from twaugh. Be nice to content-less ulinks. But we + don't accomodate silly people who don't understand ulink and put the + url as the content too. + + * db2man.xsl, synop.xsl: db2man.xsl: + * temporarily add some params that chunker.xsl needs + * fix bold/italic templates + * update calls to bold/italic templates for new syntax + synop.xsl: + * add support for synopfragment + * update calls to bold/italic templates for new syntax + +2002-04-30 <lotr@users.sourceforge.net> + + * db2man.xsl: Add twaug's patch for xref support + + * db2man.xsl: This patch adds support for: + + - Multiple authors. + - A (single) man page editor. + + (another patch from twaugh) + + * db2man.xsl: more twaugh patches: + - Use refentrytitle, not refname[1], for title. + - Upper-case it. + - Use date, productname, and title. + - Pick up author from main document if not contained in refentry. + - Use refname[1] for man page filename, not refentrytitle. + + * db2man.xsl: add varname support + + * db2man.xsl: This patch makes userinput (an inline element) have inline formatting. + + * db2man.xsl: This patch adds support for the top-level document being something + other than an article. + + It also emits a helpful warning if no refentry elements are found. + + * db2man.xsl: next twaugh patch: + Instead of writing to stdout, create a file for each + refentry. Plus, for bonus points, a file for each additional refname + within that entry (pointing to the main page). + + * db2man.xsl: Add named templates for bold-ifying and italicizing stuff. Inspired + by yet another twaugh patch + + * db2man.xsl, lists.xsl, sect23.xsl: consistently use instead of a newline + + * db2man.xsl, synop.xsl: * add support for informalexample, screen, errorcode, constant, type, + quote, programlisting and citerefentry + * use the 'bold' and 'italic' named templates + + * xref.xsl: New file. + +2001-12-01 Norman Walsh <nwalsh@users.sourceforge.net> + + * README, db2man.xsl, lists.xsl, sect23.xsl, synop.xsl: + New file. + diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl new file mode 100644 index 0000000..9278561 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl @@ -0,0 +1,411 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="exsl" + version='1.0'> + +<!-- ******************************************************************** + $Id: block.xsl 8703 2010-07-06 20:57:06Z nwalsh $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="caution|important|note|tip|warning"> + <xsl:call-template name="roff-if-start"> + <xsl:with-param name="condition">n</xsl:with-param> + </xsl:call-template> + <xsl:text>.sp </xsl:text> + <xsl:call-template name="roff-if-end"/> + <xsl:text>.RS 4 </xsl:text> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>.BM yellow </xsl:text> + </xsl:if> + <xsl:call-template name="pinch.together"/> + <xsl:text>.ps +1 </xsl:text> + <xsl:call-template name="make.bold.title"/> + <xsl:text>.ps -1 </xsl:text> + <xsl:text>.br </xsl:text> + <xsl:apply-templates/> + <xsl:text>.sp .5v </xsl:text> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>.EM yellow </xsl:text> + </xsl:if> + <xsl:text>.RE </xsl:text> +</xsl:template> + +<xsl:template match="formalpara"> + <xsl:variable name="title.wrapper"> + <xsl:value-of select="normalize-space(title[1])"/> + </xsl:variable> + <xsl:text>.PP </xsl:text> + <!-- * don't put linebreak after head; instead render it as a "run in" --> + <!-- * head, that is, inline, with a period and space following it --> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="exsl:node-set($title.wrapper)"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text>. </xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="formalpara/para"> + <xsl:call-template name="mixed-block"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="para"> + <!-- * FIXME: Need to extract the ancestor::footnote, etc. checking and --> + <!-- * move to named template so that we can call it from templates for --> + <!-- * other block elements also --> + <xsl:choose> + <!-- * If a para is a descendant of a footnote, etc., then indent it --> + <!-- * (unless it is the first child, in which case don't generate --> + <!-- * anything at all to mark its start). --> + <!-- * FIXME: *blurb checking should not be munged in here the way --> + <!-- * it currently is; this probably breaks blurb indenting. --> + <xsl:when test="ancestor::footnote or + ancestor::annotation or + ancestor::authorblurb or + ancestor::personblurb or + ancestor::callout"> + <xsl:if test="preceding-sibling::*[not(name() ='')]"> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.RS 4n</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:text>.PP</xsl:text> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:call-template name="mixed-block"/> + <xsl:if test="ancestor::footnote or + ancestor::annotation or + ancestor::authorblurb or + ancestor::personblurb"> + <xsl:if test="preceding-sibling::*[not(name() ='')]"> + <xsl:text> </xsl:text> + <xsl:text>.RE</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="simpara"> + <xsl:choose> + <xsl:when test="ancestor::footnote or + ancestor::annotation or + ancestor::authorblurb or + ancestor::personblurb or + ancestor::callout"> + <xsl:if test="preceding-sibling::*[not(name() ='')]"> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.RS 4n</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:variable name="content"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($content)"/> + <xsl:text> </xsl:text> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * Yes, address, synopsis, and funcsynopsisinfo are verbatim environments. --> +<xsl:template match="literallayout|programlisting|screen| + address|synopsis|funcsynopsisinfo"> + <xsl:param name="indent"> + <!-- * Only indent this verbatim if $man.indent.verbatims is --> + <!-- * non-zero and it is not a child of a *synopsis element or a --> + <!-- * descendant of a refsynopsisdiv --> + <xsl:if test="not($man.indent.verbatims = 0) + and not(substring(local-name(..), + string-length(local-name(..))-7) = 'synopsis') + and not(ancestor::*[local-name() = 'refsynopsisdiv']) + "> + <xsl:text>Yes</xsl:text> + </xsl:if> + </xsl:param> + + <!-- * if this verbatim environment starts with a newline/linebreak --> + <!-- * (that is, if there is a linebreak after the opening tag), that --> + <!-- * break would otherwise show up in output; that does not seem to --> + <!-- * be what most users would expect, so we check to see if it does --> + <!-- * indeed start with a leading newline. if so, later in this --> + <!-- * template, we adjust for the leading new line by doing some --> + <!-- * monkeyshines with "sp -1" vertical spacing --> + <xsl:variable name="adjust-for-leading-newline"> + <xsl:if test="substring(., 1, 1) = ' '">Yes</xsl:if> + </xsl:variable> + + <xsl:choose> + <!-- * Check to see if this verbatim item is within a parent element that --> + <!-- * allows mixed content. --> + <!-- * --> + <!-- * If it is within a mixed-content parent, then a line space is --> + <!-- * already added before it by the mixed-block template, so we don't --> + <!-- * need to add one here. --> + <!-- * --> + <!-- * If it is not within a mixed-content parent, then we need to add a --> + <!-- * line space before it. --> + <xsl:when test="parent::caption|parent::entry|parent::para| + parent::td|parent::th" /> <!-- do nothing --> + <xsl:otherwise> + <xsl:text> </xsl:text> + <xsl:text>.sp </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$indent = 'Yes'"> + <!-- * start indented section --> + <xsl:call-template name="roff-if-start"/> + <!-- * only indent in TTY output, not in non-TTY/PS --> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($man.indent.width = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$man.indent.width"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:call-template name="roff-if-end"/> + </xsl:if> + <xsl:choose> + <xsl:when test="self::funcsynopsisinfo"> + <!-- * All Funcsynopsisinfo content is by default rendered in bold, --> + <!-- * because the man(7) man page says this: --> + <!-- * --> + <!-- * For functions, the arguments are always specified using --> + <!-- * italics, even in the SYNOPSIS section, where the rest of --> + <!-- * the function is specified in bold --> + <!-- * --> + <!-- * Look through the contents of the man/man2 and man3 directories --> + <!-- * on your system, and you'll see that most existing pages do follow --> + <!-- * this "bold everything in function synopsis" rule. --> + <!-- * --> + <!-- * Users who don't want the bold output can choose to adjust the --> + <!-- * man.font.funcsynopsisinfo parameter on their own. So even if you --> + <!-- * don't personally like the way it looks, please don't change the --> + <!-- * default to be non-bold - because it's a convention that's --> + <!-- * followed is the vast majority of existing man pages that document --> + <!-- * functions, and we need to follow it by default, like it or no. --> + <xsl:text>.ft </xsl:text> + <xsl:value-of select="$man.font.funcsynopsisinfo"/> + <xsl:text> </xsl:text> + <xsl:call-template name="verbatim-block-start"/> + <xsl:text>.nf </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + <xsl:text>.fi </xsl:text> + <xsl:call-template name="verbatim-block-end"/> + <xsl:text>.ft </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * Other verbatims do not need to get bolded --> + <xsl:call-template name="verbatim-block-start"/> + <xsl:text>.nf </xsl:text> + <xsl:choose> + <xsl:when test="self::literallayout|self::programlisting|self::screen + and not(ancestor::*[local-name() = 'refsynopsisdiv']) + and not($man.output.better.ps.enabled = 0) + "> + <!-- * if this is a literallayout|programlisting|screen, --> + <!-- * and user has set man.output.better.ps.enabled to non-zero, --> + <!-- * then we put a background behind it in non-TTY output; except --> + <!-- * if it’s a descendant of a refsynopsisdiv (as can be --> + <!-- * found in the git docs) --> + <xsl:choose> + <!-- * if content has a leading newline, we need to back up --> + <!-- * one line vertically to get it boxed correctly --> + <xsl:when test="not($adjust-for-leading-newline = '')"> + <xsl:call-template name="roff-if-start"> + <xsl:with-param name="condition">t</xsl:with-param> + </xsl:call-template> + <xsl:text>.sp -1 </xsl:text> + <xsl:call-template name="roff-if-end"/> + <xsl:text>.BB lightgray</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>adjust-for-leading-newline </xsl:text> + <!-- * in non-TTY output, for the case where we have a --> + <!-- * leading newline, we need to also back up one line --> + <!-- * vertically inside the background box --> + <xsl:text>.sp -1 </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>.BB lightgray </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + <xsl:choose> + <xsl:when test="not($adjust-for-leading-newline = '')"> + <xsl:text>.EB lightgray</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>adjust-for-leading-newline </xsl:text> + <xsl:call-template name="roff-if-start"> + <xsl:with-param name="condition">t</xsl:with-param> + </xsl:call-template> + <!-- * in non-TTY output, for the case where we have a --> + <!-- * leading newline, we need to add back at the end of --> + <!-- * the content some of the vertical space we chopped --> + <!-- * off at the beginning --> + <xsl:text>.sp 1 </xsl:text> + <xsl:call-template name="roff-if-end"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>.EB lightgray </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise this is not a literallayout|programlisting|screen, --> + <!-- * so we don’t put a background behind --> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>.fi </xsl:text> + <xsl:call-template name="verbatim-block-end"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$indent = 'Yes'"> + <!-- * end indented section --> + <xsl:call-template name="roff-if-start"/> + <xsl:text>.RE </xsl:text> + <xsl:call-template name="roff-if-end"/> + </xsl:if> + <!-- * if this verbatim environment has a following sibling node, --> + <!-- * output a line of space to separate the content --> + <xsl:if test="following-sibling::text() + |following-sibling::para + |following-sibling::simpara"> + <xsl:text>.sp </xsl:text> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="table|informaltable"> + <xsl:apply-templates select="." mode="to.tbl"> + <!--* we call the to.tbl mode with the "source" param so that we can --> + <!--* preserve the context information and pass it down to the --> + <!--* named templates that do the actual table processing --> + <xsl:with-param name="source" select="ancestor::refentry/refnamediv[1]/refname[1]"/> + </xsl:apply-templates> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="informalexample"> + <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="figure|example"> + <xsl:variable name="param.placement" + select="substring-after(normalize-space($formal.title.placement), + concat(local-name(.), ' '))"/> + + <xsl:variable name="placement"> + <xsl:choose> + <xsl:when test="contains($param.placement, ' ')"> + <xsl:value-of select="substring-before($param.placement, ' ')"/> + </xsl:when> + <xsl:when test="$param.placement = ''">before</xsl:when> + <xsl:otherwise> + <xsl:value-of select="$param.placement"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:text>.PP </xsl:text> + <xsl:call-template name="formal.object"> + <xsl:with-param name="placement" select="$placement"/> + </xsl:call-template> + <xsl:text> </xsl:text> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="mediaobject"> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + <xsl:text>.RE </xsl:text> +</xsl:template> + +<xsl:template match="imageobject"> + <xsl:text>[IMAGE]</xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="textobject[parent::inlinemediaobject]"> + <xsl:text>[</xsl:text> + <xsl:value-of select="."/> + <xsl:text>]</xsl:text> +</xsl:template> + +<xsl:template match="textobject"> + <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="formal.object"> + <xsl:param name="placement" select="'before'"/> + <xsl:param name="class" select="local-name(.)"/> + + <xsl:choose> + <xsl:when test="$placement = 'before'"> + <xsl:call-template name="formal.object.heading"/> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + <xsl:call-template name="formal.object.heading"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="formal.object.heading"> + <xsl:param name="object" select="."/> + <xsl:param name="title"> + <xsl:apply-templates select="$object" mode="object.title.markup.textonly"/> + </xsl:param> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="exsl:node-set($title)"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + + <xsl:text> </xsl:text> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * suppress abstract --> +<xsl:template match="abstract"/> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl new file mode 100644 index 0000000..a9492fa --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl @@ -0,0 +1,6013 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<xsl:stylesheet version="2.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:u="http://docbook.sf.net/xmlns/unichar/1.0" + exclude-result-prefixes="u"> + +<!-- ******************************************************************** + $Id: charmap.groff.xsl 7806 2008-03-04 03:27:47Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<xsl:character-map name="groff"> + + <!-- * *************************************************************** --> + <!-- * Commentary --> + <!-- * *************************************************************** --> + <!-- * --> + <!-- * This file maps a selection of Unicode symbols and special --> + <!-- * characters (about 800) to corresponding groff escape sequences.--> + <!-- * --> + <!-- * Although the format of this file follows the "character map" --> + <!-- * format described in the XSLT 2.0 specification[1], the file can --> + <!-- * also be used with an appropriate XSLT 1.0 stylesheet and any --> + <!-- * XSLT 1.0 processor. --> + <!-- * --> + <!-- * [1] http://www.w3.org/TR/xslt20/#character-maps --> + <!-- * --> + <!-- * In order to make the character map more readable, and to make --> + <!-- * it possible to create subsets of it at run time, it uses the --> + <!-- * following "extension attributes" (in the "unichar" namespace): --> + <!-- * --> + <!-- * - u:name = ISO character name (e.g., "OHM SIGN") --> + <!-- * - u:entity = ISO entity name (e.g., "ohm") --> + <!-- * - u:block = Unicode block name (e.g., "Letterlike Symbols") --> + <!-- * - u:class = character class (e.g., "bullets") --> + <!-- * --> + <!-- * Use of such extension attributes is permitted by the XSLT 2.0 --> + <!-- * spec; see the "Extension Attributes" section[2]. --> + <!-- * --> + <!-- * [2] http://www.w3.org/TR/xslt20/#extension-attributes --> + <!-- * --> + <!-- * *************************************************************** --> + <!-- * Acknowledgements --> + <!-- * *************************************************************** --> + <!-- * The following references were consulted when selecting roff --> + <!-- * mappings and character information: --> + <!-- * --> + <!-- * - groff_char(7) man page[3] --> + <!-- * - groff info file[4]; in particular, the "Page Motions" node[5] --> + <!-- * - tables in "Character Sets" chapter of "XML In a Nutshell"[6] --> + <!-- * - Zvon Character Search[7] --> + <!-- * --> + <!-- * [3] http://www.linux.se/showMan.php?TITLE=groff_char&SECTION=7 --> + <!-- * [4] http://www.fifi.org/cgi-bin/info2www?(groff) --> + <!-- * [5] http://www.fifi.org/cgi-bin/info2www?(groff)Page+Motions --> + <!-- * [6] http://www.ibiblio.org/xml/books/xian2/ --> + <!-- * [7] http://zvon.org/other/charSearch/PHP/search.php --> + <!-- * --> + <!-- * The initial version of this file (before the "string" mappings --> + <!-- * were added) was generated by taking the "unichars.el" file from --> + <!-- * Norm Walsh's "xmlunicode.el"[8] elisp distro, and running a --> + <!-- * script on it to convert it to XML. --> + <!-- * --> + <!-- * [8] http://nwalsh.com/emacs/xmlchars/ --> + <!-- * --> + <!-- * The idea for implementing a character map in the DocBook Project --> + <!-- * manpages system was inspired by Steve Cheng's docbook2x[9]; --> + <!-- * in particular, its "utf8trans" utility and character-map system. --> + <!-- * --> + <!-- * [9] http://docbook2x.sourceforge.net/ --> + <!-- * --> + <!-- * ################################################################# --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Latin-1/ISO-8859-1 --> + <!-- * x00a0 to x00ff --> + <!-- * ***************************************************************** --> + + <!-- * A no-break space can be written two ways in roff; the difference, --> + <!-- * according to the "Page Motions" node in the groff info page, is: --> + <!-- * --> + <!-- * "\ " = --> + <!-- * An unbreakable and unpaddable (i.e. not expanded during filling) --> + <!-- * space. --> + <!-- * --> + <!-- * "\~" = --> + <!-- * An unbreakable space that stretches like a normal --> + <!-- * inter-word space when a line is adjusted." --> + <!-- * --> + <!-- * Unfortunately, roff seems to do some weird things with long --> + <!-- * lines that only have words separated by "\~" spaces, so it's --> + <!-- * safer just to stick with the "\ " space --> + <xsl:output-character + character=" " + u:name="NO-BREAK SPACE" + u:entity="nbsp" + string="\ \&" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¡" + u:name="INVERTED EXCLAMATION MARK" + u:entity="iexcl" + string="\(r!" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¢" + u:name="CENT SIGN" + u:entity="cent" + string="\(ct" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="£" + u:name="POUND SIGN" + u:entity="pound" + string="\(Po" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¤" + u:name="CURRENCY SIGN" + u:entity="curren" + string="\(Cs" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¥" + u:name="YEN SIGN" + u:entity="yen" + string="\(Ye" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¦" + u:name="BROKEN BAR" + u:entity="brvbar" + string="\(bb" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="§" + u:name="SECTION SIGN" + u:entity="sect" + string="\(sc" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¨" + u:name="DIAERESIS" + u:entity="Dot" + string="\(ad" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="©" + u:name="COPYRIGHT SIGN" + u:entity="copy" + string="\(co" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="ª" + u:name="FEMININE ORDINAL INDICATOR" + u:entity="ordf" + string="\(Of" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="«" + u:name="LEFT-POINTING DOUBLE ANGLE QUOTATION MARK" + u:entity="laquo" + string="\(Fo" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¬" + u:name="NOT SIGN" + u:entity="not" + string="\(no" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <!-- * groff_char(7) man page sayxsl: "the soft hyphen control character --> + <!-- * (prints as itself). groff never use this character for output --> + <!-- * (thus it is omitted in the table below); the input character 173 --> + <!-- * is onto \%." --> + <xsl:output-character + character="­" + u:name="SOFT HYPHEN" + u:entity="shy" + string="\%" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="®" + u:name="REGISTERED SIGN" + u:entity="reg" + string="\(rg" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¯" + u:name="MACRON" + u:entity="macr" + string="\(a-" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="°" + u:name="DEGREE SIGN" + u:entity="deg" + string="\(de" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="±" + u:name="PLUS-MINUS SIGN" + u:entity="plusmn" + string="\(+-" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="²" + u:name="SUPERSCRIPT TWO" + u:entity="sup2" + string="\(S2" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="³" + u:name="SUPERSCRIPT THREE" + u:entity="sup3" + string="\(S3" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="´" + u:name="ACUTE ACCENT" + u:entity="acute" + string="\(aa" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="µ" + u:name="MICRO SIGN" + u:entity="micro" + string="\(mc" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¶" + u:name="PILCROW SIGN" + u:entity="para" + string="\(ps" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <!-- * according to groff_char(7), I think the escape string \(pc --> + <!-- * "periodcentered" could also be used for middot; not sure which --> + <!-- * is better, but "md" mnemonic is a better fit :-) --> + <xsl:output-character + character="·" + u:name="MIDDLE DOT" + u:entity="middot" + string="\(md" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¸" + u:name="CEDILLA" + u:entity="cedil" + string="\(ac" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¹" + u:name="SUPERSCRIPT ONE" + u:entity="sup1" + string="\(S1" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="º" + u:name="MASCULINE ORDINAL INDICATOR" + u:entity="ordm" + string="\(Om" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="»" + u:name="RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK" + u:entity="raquo" + string="\(Fc" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¼" + u:name="VULGAR FRACTION ONE QUARTER" + u:entity="frac14" + string="\(14" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="½" + u:name="VULGAR FRACTION ONE HALF" + u:entity="frac12" + string="\(12" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¾" + u:name="VULGAR FRACTION THREE QUARTERS" + u:entity="frac34" + string="\(34" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="¿" + u:name="INVERTED QUESTION MARK" + u:entity="iquest" + string="\(r?" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="À" + u:name="LATIN CAPITAL LETTER A WITH GRAVE" + u:entity="Agrave" + string="\(`A" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Á" + u:name="LATIN CAPITAL LETTER A WITH ACUTE" + u:entity="Aacute" + string="\('A" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Â" + u:name="LATIN CAPITAL LETTER A WITH CIRCUMFLEX" + u:entity="Acirc" + string="\(^A" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ã" + u:name="LATIN CAPITAL LETTER A WITH TILDE" + u:entity="Atilde" + string="\(~A" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ä" + u:name="LATIN CAPITAL LETTER A WITH DIAERESIS" + u:entity="Auml" + string="\(:A" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Å" + u:name="LATIN CAPITAL LETTER A WITH RING ABOVE" + u:entity="Aring" + string="\(oA" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Æ" + u:name="LATIN CAPITAL LETTER AE" + u:entity="AElig" + string="\(AE" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ç" + u:name="LATIN CAPITAL LETTER C WITH CEDILLA" + u:entity="Ccedil" + string="\(,C" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="È" + u:name="LATIN CAPITAL LETTER E WITH GRAVE" + u:entity="Egrave" + string="\(`E" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="É" + u:name="LATIN CAPITAL LETTER E WITH ACUTE" + u:entity="Eacute" + string="\('E" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ê" + u:name="LATIN CAPITAL LETTER E WITH CIRCUMFLEX" + u:entity="Ecirc" + string="\(^E" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ë" + u:name="LATIN CAPITAL LETTER E WITH DIAERESIS" + u:entity="Euml" + string="\(:E" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ì" + u:name="LATIN CAPITAL LETTER I WITH GRAVE" + u:entity="Igrave" + string="\(`I" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Í" + u:name="LATIN CAPITAL LETTER I WITH ACUTE" + u:entity="Iacute" + string="\('I" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Î" + u:name="LATIN CAPITAL LETTER I WITH CIRCUMFLEX" + u:entity="Icirc" + string="\(^I" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ï" + u:name="LATIN CAPITAL LETTER I WITH DIAERESIS" + u:entity="Iuml" + string="\(:I" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ð" + u:name="LATIN CAPITAL LETTER ETH" + u:entity="ETH" + string="\(-D" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ñ" + u:name="LATIN CAPITAL LETTER N WITH TILDE" + u:entity="Ntilde" + string="\(~N" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ò" + u:name="LATIN CAPITAL LETTER O WITH GRAVE" + u:entity="Ograve" + string="\(`O" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ó" + u:name="LATIN CAPITAL LETTER O WITH ACUTE" + u:entity="Oacute" + string="\('O" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ô" + u:name="LATIN CAPITAL LETTER O WITH CIRCUMFLEX" + u:entity="Ocirc" + string="\(^O" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Õ" + u:name="LATIN CAPITAL LETTER O WITH TILDE" + u:entity="Otilde" + string="\(~O" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ö" + u:name="LATIN CAPITAL LETTER O WITH DIAERESIS" + u:entity="Ouml" + string="\(:O" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="×" + u:name="MULTIPLICATION SIGN" + u:entity="times" + string="\(mu" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="Ø" + u:name="LATIN CAPITAL LETTER O WITH STROKE" + u:entity="Oslash" + string="\(/O" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ù" + u:name="LATIN CAPITAL LETTER U WITH GRAVE" + u:entity="Ugrave" + string="\(`U" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ú" + u:name="LATIN CAPITAL LETTER U WITH ACUTE" + u:entity="Uacute" + string="\('U" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Û" + u:name="LATIN CAPITAL LETTER U WITH CIRCUMFLEX" + u:entity="Ucirc" + string="\(^U" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ü" + u:name="LATIN CAPITAL LETTER U WITH DIAERESIS" + u:entity="Uuml" + string="\(:U" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Ý" + u:name="LATIN CAPITAL LETTER Y WITH ACUTE" + u:entity="Yacute" + string="\('Y" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="Þ" + u:name="LATIN CAPITAL LETTER THORN" + u:entity="THORN" + string="\(TP" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ß" + u:name="LATIN SMALL LETTER SHARP S" + u:entity="szlig" + string="\(ss" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="à" + u:name="LATIN SMALL LETTER A WITH GRAVE" + u:entity="agrave" + string="\(`a" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="á" + u:name="LATIN SMALL LETTER A WITH ACUTE" + u:entity="aacute" + string="\('a" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="â" + u:name="LATIN SMALL LETTER A WITH CIRCUMFLEX" + u:entity="acirc" + string="\(^a" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ã" + u:name="LATIN SMALL LETTER A WITH TILDE" + u:entity="atilde" + string="\(~a" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ä" + u:name="LATIN SMALL LETTER A WITH DIAERESIS" + u:entity="auml" + string="\(:a" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="å" + u:name="LATIN SMALL LETTER A WITH RING ABOVE" + u:entity="aring" + string="\(oa" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="æ" + u:name="LATIN SMALL LETTER AE" + u:entity="aelig" + string="\(ae" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ç" + u:name="LATIN SMALL LETTER C WITH CEDILLA" + u:entity="ccedil" + string="\(,c" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="è" + u:name="LATIN SMALL LETTER E WITH GRAVE" + u:entity="egrave" + string="\(`e" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="é" + u:name="LATIN SMALL LETTER E WITH ACUTE" + u:entity="eacute" + string="\('e" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ê" + u:name="LATIN SMALL LETTER E WITH CIRCUMFLEX" + u:entity="ecirc" + string="\(^e" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ë" + u:name="LATIN SMALL LETTER E WITH DIAERESIS" + u:entity="euml" + string="\(:e" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ì" + u:name="LATIN SMALL LETTER I WITH GRAVE" + u:entity="igrave" + string="\(`i" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="í" + u:name="LATIN SMALL LETTER I WITH ACUTE" + u:entity="iacute" + string="\('i" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="î" + u:name="LATIN SMALL LETTER I WITH CIRCUMFLEX" + u:entity="icirc" + string="\(^i" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ï" + u:name="LATIN SMALL LETTER I WITH DIAERESIS" + u:entity="iuml" + string="\(:i" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ð" + u:name="LATIN SMALL LETTER ETH" + u:entity="eth" + string="\(Sd" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ñ" + u:name="LATIN SMALL LETTER N WITH TILDE" + u:entity="ntilde" + string="\(~n" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ò" + u:name="LATIN SMALL LETTER O WITH GRAVE" + u:entity="ograve" + string="\(`o" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ó" + u:name="LATIN SMALL LETTER O WITH ACUTE" + u:entity="oacute" + string="\('o" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ô" + u:name="LATIN SMALL LETTER O WITH CIRCUMFLEX" + u:entity="ocirc" + string="\(^o" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="õ" + u:name="LATIN SMALL LETTER O WITH TILDE" + u:entity="otilde" + string="\(~o" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ö" + u:name="LATIN SMALL LETTER O WITH DIAERESIS" + u:entity="ouml" + string="\(:o" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="÷" + u:name="DIVISION SIGN" + u:entity="divide" + string="\(di" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="symbols" + /> + <xsl:output-character + character="ø" + u:name="LATIN SMALL LETTER O WITH STROKE" + u:entity="oslash" + string="\(/o" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ù" + u:name="LATIN SMALL LETTER U WITH GRAVE" + u:entity="ugrave" + string="\(`u" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ú" + u:name="LATIN SMALL LETTER U WITH ACUTE" + u:entity="uacute" + string="\('u" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="û" + u:name="LATIN SMALL LETTER U WITH CIRCUMFLEX" + u:entity="ucirc" + string="\(^u" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ü" + u:name="LATIN SMALL LETTER U WITH DIAERESIS" + u:entity="uuml" + string="\(:u" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ý" + u:name="LATIN SMALL LETTER Y WITH ACUTE" + u:entity="yacute" + string="\('y" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="þ" + u:name="LATIN SMALL LETTER THORN" + u:entity="thorn" + string="\(Tp" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <xsl:output-character + character="ÿ" + u:name="LATIN SMALL LETTER Y WITH DIAERESIS" + u:entity="yuml" + string="\(:y" + u:block="C1 Controls And Latin-1 Supplement (Latin-1 Supplement)" + u:class="letters" + /> + <!-- * **************************************************************** --> + <!-- * End: Latin-1/ISO-8859-1 --> + <!-- * **************************************************************** --> + + <!-- * **************************************************************** --> + <!-- * Begin: --> + <!-- * --> + <!-- * - x0100 to x017f (Latin Extended-A) --> + <!-- * - x0180 to x023f (Latin Extended-B) --> + <!-- * - x0250 to x02ad (IPA Extensions) --> + <!-- * - x02b0 to x02ee (Spacing Modifier Letters) --> + <!-- * - x0300 to x036f (Combining Diacritical Marks) --> + <!-- * --> + <!-- * Other than the following exceptions, characters in these --> + <!-- * blocks don't have any roff equivalents --> + <!-- * **************************************************************** --> + + <xsl:output-character + character="ı" + u:name="LATIN SMALL LETTER DOTLESS I" + u:entity="inodot" + string="\(.i" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="IJ" + u:name="LATIN CAPITAL LIGATURE IJ" + u:entity="IJlig" + string="\(IJ" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="ij" + u:name="LATIN SMALL LIGATURE IJ" + u:entity="ijlig" + string="\(ij" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="Ł" + u:name="LATIN CAPITAL LETTER L WITH STROKE" + u:entity="Lstrok" + string="\(/L" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="ł" + u:name="LATIN SMALL LETTER L WITH STROKE" + u:entity="lstrok" + string="\(/l" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="Œ" + u:name="LATIN CAPITAL LIGATURE OE" + u:entity="OElig" + string="\(OE" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="œ" + u:name="LATIN SMALL LIGATURE OE" + u:entity="oelig" + string="\(oe" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="Š" + u:name="LATIN CAPITAL LETTER S WITH CARON" + u:entity="Scaron" + string="\(vS" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="š" + u:name="LATIN SMALL LETTER S WITH CARON" + u:entity="scaron" + string="\(vs" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="Ž" + u:name="LATIN CAPITAL LETTER Z WITH CARON" + u:entity="Zcaron" + string="\(vZ" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="ž" + u:name="LATIN SMALL LETTER Z WITH CARON" + u:entity="zcaron" + string="\(vz" + u:block="Latin Extended-A" + /> + <xsl:output-character + character="ƒ" + u:name="LATIN SMALL LETTER F WITH HOOK" + u:entity="fnof" + string="\(Fn" + u:block="Latin Extended-B" + /> + <xsl:output-character + character="ˆ" + u:name="MODIFIER LETTER CIRCUMFLEX ACCENT" + u:entity="circ" + string="\(a^" + u:block="Spacing Modifier Letters" + /> + <xsl:output-character + character="ˇ" + u:name="CARON" + u:entity="caron" + string="\(ac" + u:block="Spacing Modifier Letters" + /> + <xsl:output-character + character="ˉ" + u:name="MODIFIER LETTER MACRON" + string="\(a-" + u:block="Spacing Modifier Letters" + /> + <xsl:output-character + character="˘" + u:name="BREVE" + u:entity="breve" + string="\(ab" + u:block="Spacing Modifier Letters" + /> +<!-- * there does not seem to by any roff equivalent for "dot above" --> +<!-- * <xsl:output-character --> +<!-- * character="˙" --> +<!-- * u:name="DOT ABOVE" --> +<!-- * u:entity="dot" --> +<!-- * /> --> + <xsl:output-character + character="˚" + u:name="RING ABOVE" + u:entity="ring" + string="\(ao" + u:block="Spacing Modifier Letters" + /> + <xsl:output-character + character="˛" + u:name="OGONEK" + u:entity="ogon" + string="\(ho" + u:block="Spacing Modifier Letters" + /> + <!-- groff_char(7) calls Unicode x02dd a "Hungarian umlaut" --> + <xsl:output-character + character="˝" + u:name="DOUBLE ACUTE ACCENT" + u:entity="dblac" + string='\(a"' + u:block="Spacing Modifier Letters" + /> + + <!-- * **************************************************************** --> + <!-- * End: --> + <!-- * - Latin Extended-A --> + <!-- * - Latin Extended-B --> + <!-- * - IPA Extensions --> + <!-- * - Spacing Modifier Letters --> + <!-- * - Combining Diacritical Marks --> + <!-- * **************************************************************** --> + + <!-- * **************************************************************** --> + <!-- * Begin: Greek and Coptic --> + <!-- * x0370 to x03ff --> + <!-- * **************************************************************** --> + + <xsl:output-character + character="Α" + u:name="GREEK CAPITAL LETTER ALPHA" + u:entity="Agr" + string="\(*A)" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Β" + u:name="GREEK CAPITAL LETTER BETA" + u:entity="Bgr" + string="\(*B" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Γ" + u:name="GREEK CAPITAL LETTER GAMMA" + u:entity="Gamma" + string="\(*G" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Δ" + u:name="GREEK CAPITAL LETTER DELTA" + u:entity="Delta" + string="\(*D" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ε" + u:name="GREEK CAPITAL LETTER EPSILON" + u:entity="Egr" + string="\(*E" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ζ" + u:name="GREEK CAPITAL LETTER ZETA" + u:entity="Zgr" + string="\(*Z" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Η" + u:name="GREEK CAPITAL LETTER ETA" + u:entity="EEgr" + string="\(*Y" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Θ" + u:name="GREEK CAPITAL LETTER THETA" + u:entity="THgr" + string="\(*H" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ι" + u:name="GREEK CAPITAL LETTER IOTA" + u:entity="Igr" + string="\(*I" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Κ" + u:name="GREEK CAPITAL LETTER KAPPA" + u:entity="Kgr" + string="\(*K" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Λ" + u:name="GREEK CAPITAL LETTER LAMDA" + u:entity="Lambda" + string="\(*L" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Μ" + u:name="GREEK CAPITAL LETTER MU" + u:entity="Mgr" + string="\(*M" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ν" + u:name="GREEK CAPITAL LETTER NU" + u:entity="Ngr" + string="\(*N" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ξ" + u:name="GREEK CAPITAL LETTER XI" + u:entity="Xgr" + string="\(*C" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ο" + u:name="GREEK CAPITAL LETTER OMICRON" + u:entity="Ogr" + string="\(*O" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Π" + u:name="GREEK CAPITAL LETTER PI" + u:entity="Pgr" + string="\(*P" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ρ" + u:name="GREEK CAPITAL LETTER RHO" + u:entity="Rgr" + string="\(*R" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Σ" + u:name="GREEK CAPITAL LETTER SIGMA" + u:entity="Sgr" + string="\(*S" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Τ" + u:name="GREEK CAPITAL LETTER TAU" + u:entity="Tgr" + string="\(*T" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Υ" + u:name="GREEK CAPITAL LETTER UPSILON" + u:entity="Ugr" + string="\(*U" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Φ" + u:name="GREEK CAPITAL LETTER PHI" + u:entity="PHgr" + string="\(*F" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Χ" + u:name="GREEK CAPITAL LETTER CHI" + u:entity="KHgr" + string="\(*X" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ψ" + u:name="GREEK CAPITAL LETTER PSI" + u:entity="PSgr" + string="\(*Q" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ω" + u:name="GREEK CAPITAL LETTER OMEGA" + u:entity="OHgr" + string="\(*W" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ϊ" + u:name="GREEK CAPITAL LETTER IOTA WITH DIALYTIKA" + u:entity="Idigr" + string="\(*I" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="Ϋ" + u:name="GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA" + u:entity="Udigr" + string="\(*U" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ά" + u:name="GREEK SMALL LETTER ALPHA WITH TONOS" + u:entity="aacgr" + string="\(*a" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="έ" + u:name="GREEK SMALL LETTER EPSILON WITH TONOS" + u:entity="eacgr" + string="\(*e" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ή" + u:name="GREEK SMALL LETTER ETA WITH TONOS" + u:entity="eeacgr" + string="\(*y" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ί" + u:name="GREEK SMALL LETTER IOTA WITH TONOS" + u:entity="iacgr" + string="\(*i" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ΰ" + u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS" + u:entity="udiagr" + string="\(*u" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="α" + u:name="GREEK SMALL LETTER ALPHA" + u:entity="agr" + string="\(*a" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="β" + u:name="GREEK SMALL LETTER BETA" + u:entity="beta" + string="\(*b" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="γ" + u:name="GREEK SMALL LETTER GAMMA" + u:entity="gamma" + string="\(*g" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="δ" + u:name="GREEK SMALL LETTER DELTA" + u:entity="delta" + string="\(*d" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ε" + u:name="GREEK SMALL LETTER EPSILON" + u:entity="epsi" + string="\(*e" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ζ" + u:name="GREEK SMALL LETTER ZETA" + u:entity="zeta" + string="\(*z" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="η" + u:name="GREEK SMALL LETTER ETA" + u:entity="eegr" + string="\(*y" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="θ" + u:name="GREEK SMALL LETTER THETA" + u:entity="thetas" + string="\(*h" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ι" + u:name="GREEK SMALL LETTER IOTA" + u:entity="igr" + string="\(*i" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="κ" + u:name="GREEK SMALL LETTER KAPPA" + u:entity="kappa" + string="\(*k" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="λ" + u:name="GREEK SMALL LETTER LAMDA" + u:entity="lambda" + string="\(*l" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="μ" + u:name="GREEK SMALL LETTER MU" + u:entity="mgr" + string="\(*m" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ν" + u:name="GREEK SMALL LETTER NU" + u:entity="ngr" + string="\(*n" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ξ" + u:name="GREEK SMALL LETTER XI" + u:entity="xgr" + string="\(*c" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ο" + u:name="GREEK SMALL LETTER OMICRON" + u:entity="ogr" + string="\(*o" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="π" + u:name="GREEK SMALL LETTER PI" + u:entity="pgr" + string="\(*p" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ρ" + u:name="GREEK SMALL LETTER RHO" + u:entity="rgr" + string="\(*r" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ς" + u:name="GREEK SMALL LETTER FINAL SIGMA" + u:entity="sfgr" + string="\(ts" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="σ" + u:name="GREEK SMALL LETTER SIGMA" + u:entity="sgr" + string="\(*s" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="τ" + u:name="GREEK SMALL LETTER TAU" + u:entity="tau" + string="\(*t" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="υ" + u:name="GREEK SMALL LETTER UPSILON" + u:entity="ugr" + string="\(*u" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="φ" + u:name="GREEK SMALL LETTER PHI" + u:entity="phgr" + string="\(*f" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="χ" + u:name="GREEK SMALL LETTER CHI" + u:entity="chi" + string="\(*x" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ψ" + u:name="GREEK SMALL LETTER PSI" + u:entity="psgr" + string="\(*q" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ω" + u:name="GREEK SMALL LETTER OMEGA" + u:entity="ohgr" + string="\(*w" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϊ" + u:name="GREEK SMALL LETTER IOTA WITH DIALYTIKA" + u:entity="idigr" + string="\(*i" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϋ" + u:name="GREEK SMALL LETTER UPSILON WITH DIALYTIKA" + u:entity="udigr" + string="\(*u" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ό" + u:name="GREEK SMALL LETTER OMICRON WITH TONOS" + u:entity="oacgr" + string="\(*o" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ύ" + u:name="GREEK SMALL LETTER UPSILON WITH TONOS" + u:entity="uacgr" + string="\(*u" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ώ" + u:name="GREEK SMALL LETTER OMEGA WITH TONOS" + u:entity="ohacgr" + string="\(*w" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϐ" + u:name="GREEK BETA SYMBOL" + string="\(*B" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϑ" + u:name="GREEK THETA SYMBOL" + u:entity="thetav" + string="\(+h" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϒ" + u:name="GREEK UPSILON WITH HOOK SYMBOL" + u:entity="Upsi" + string="\(*U" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϓ" + u:name="GREEK UPSILON WITH ACUTE AND HOOK SYMBOL" + string="\(*U" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϔ" + u:name="GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL" + string="\(*U" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϕ" + u:name="GREEK PHI SYMBOL" + u:entity="phis" + string="\(+f" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϖ" + u:name="GREEK PI SYMBOL" + u:entity="piv" + string="\(+p" + u:block="Greek and Coptic" + /> + <!-- no mappings for remaining chars x03d7 to x03ef --> + <xsl:output-character + character="ϰ" + u:name="GREEK KAPPA SYMBOL" + u:entity="kappav" + string="(*k" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϱ" + u:name="GREEK RHO SYMBOL" + u:entity="rhov" + string="\(*r" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϲ" + u:name="GREEK LUNATE SIGMA SYMBOL" + string="\(*s" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϴ" + u:name="GREEK CAPITAL THETA SYMBOL" + string="\(*H" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="ϵ" + u:name="GREEK LUNATE EPSILON SYMBOL" + string="\(*e" + u:block="Greek and Coptic" + /> + <xsl:output-character + character="϶" + u:name="GREEK REVERSED LUNATE EPSILON SYMBOL" + u:entity="bepsi" + string="\(*e" + u:block="Greek and Coptic" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Greek and Coptic --> + <!-- * ***************************************************************** --> + + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + <!-- * Cyrillic --> + <!-- * x0400 to x04ff --> + <!-- * - do nothing - --> + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + + <!-- * ***************************************************************** --> + <!-- * Begin: General Punctuation --> + <!-- * x2000 to x206f --> + <!-- * ***************************************************************** --> + + <!-- * first, spaces of various widths --> + + <!-- * Note: There does not seem to be either a real em space or en space --> + <!-- * in roff; to approximate them, this character map assumes that in --> + <!-- * most fonts, an en space is about the same as the width of a digit --> + <!-- * (in roff, "\0"), so an em space (which by definition is --> + <!-- * equal to the width of two en spaces) is about the same as the width --> + <!-- * of two digits (thus, in roff, "\0\0") --> + + <xsl:output-character + character=" " + u:name="EN QUAD" + string="\0" + u:block="General Punctuation" + u:class="spaces" + /> + <xsl:output-character + character=" " + u:name="EM QUAD" + string="\0\0" + u:block="General Punctuation" + u:class="spaces" + /> + <xsl:output-character + character=" " + u:name="EN SPACE" + u:entity="ensp" + string="\0" + u:block="General Punctuation" + u:class="spaces" + /> + <xsl:output-character + character=" " + u:name="EM SPACE" + u:entity="emsp" + string="\0\0" + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * roughly same width as a normal space --> + <xsl:output-character + character=" " + u:name="THREE-PER-EM SPACE" + u:entity="emsp13" + string=" " + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * roughly same width as a normal space --> + <xsl:output-character + character=" " + u:name="FOUR-PER-EM SPACE" + u:entity="emsp14" + string=" " + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * roughly same width as a normal space --> + <xsl:output-character + character=" " + u:name="SIX-PER-EM SPACE" + string=" " + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * same as roff "digit" space --> + <xsl:output-character + character=" " + u:name="FIGURE SPACE" + u:entity="numsp" + string="\0" + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * punctuation space in most fonts is actually closer to a normal --> + <!-- * space than it is to a thin space --> + <xsl:output-character + character=" " + u:name="PUNCTUATION SPACE" + u:entity="puncsp" + string=" " + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * Note: Not sure how best to deal with thin space, because the roff --> + <!-- * thin space, "\^", prints as a zero-width space in TTY --> + <!-- * output. However, it seems that, unlike a hair space, a thin space, --> + <!-- * at 1/12 of an em, is still recognizable to most people as a space, --> + <!-- * so treating it as zero-width seems wrong. So, for the sake of making --> + <!-- * TTY output look OK, just substitute with a normal space; but real --> + <!-- * roff escape is "\(\^" --> + <xsl:output-character + character=" " + u:name="THIN SPACE" + u:entity="thinsp" + string=" " + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * I don't think there's a standard definition of what a hair --> + <!-- * space is; some guides just say it's "less than 1/5 of an em" or --> + <!-- * that it's "narrower than a thin space"; seems like in practice, --> + <!-- * it's *a lot* narrower than a thin space, to the point where --> + <!-- * it's close to being a non-space, so here it's substituted with --> + <!-- * roff equivalent of a zero-width no-break space --> + <xsl:output-character + character=" " + u:name="HAIR SPACE" + u:entity="hairsp" + string="\&" + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * map to roff "zero-width break point" --> + <xsl:output-character + character="​" + u:name="ZERO WIDTH SPACE" + string="\:" + u:block="General Punctuation" + u:class="spaces" + /> + + <!-- * x200c and x200d have special purposes in some Indic languages (I --> + <!-- * think); for the "correct" zero-width space, according to Unicode docs, --> + <!-- * use x2060, not x200c or x200d --> + <!-- * <xsl:output-character --> + <!-- * character="‌" --> + <!-- * u:name="ZERO WIDTH NON-JOINER" --> + <!-- * string="\:" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‍" --> + <!-- * u:name="ZERO WIDTH JOINER" --> + <!-- * string="\&" --> + <!-- * /> --> + <!-- * non-visible --> + <!-- * <xsl:output-character --> + <!-- * character="‎" --> + <!-- * u:name="LEFT-TO-RIGHT MARK" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‏" --> + <!-- * u:name="RIGHT-TO-LEFT MARK" --> + <!-- * /> --> + + <!-- * .................................................... --> + <!-- * next, hyphens and various dashes, bars, underscores --> + <xsl:output-character + character="‐" + u:name="HYPHEN" + u:entity="hyphen" + string="\(hy" + u:block="General Punctuation" + u:class="dashes" + /> + <!-- * although the groff docs do not make it clear, testing --> + <!-- * indicates that the only reliable way to make a non-breaking --> + <!-- * hyphen is to put just a backslash in front of it. --> + <!-- * --> + <!-- * based on testing, it also appears that no character is needed --> + <!-- * after the hyphen in order to make it non-breaking --> + <xsl:output-character + character="‑" + u:name="NON-BREAKING HYPHEN" + string="\-" + u:block="General Punctuation" + u:class="dashes" + /> + <!-- * roughly same width as en dash --> + <xsl:output-character + character="‒" + u:name="FIGURE DASH" + string="\(en" + u:block="General Punctuation" + u:class="dashes" + /> + <xsl:output-character + character="–" + u:name="EN DASH" + u:entity="ndash" + string="\(en" + u:block="General Punctuation" + u:class="dashes" + /> + <xsl:output-character + character="—" + u:name="EM DASH" + u:entity="mdash" + string="\(em" + u:block="General Punctuation" + u:class="dashes" + /> + <!-- * seems roughly same width as em dash --> + <xsl:output-character + character="―" + u:name="HORIZONTAL BAR" + u:entity="horbar" + string="\(em" + u:block="General Punctuation" + u:class="dashes" + /> + <xsl:output-character + character="‖" + u:name="DOUBLE VERTICAL LINE" + u:entity="Verbar" + string="\(bv\(bv" + u:block="General Punctuation" + /> + <!-- * no double-underscore in roff; so just make it a single --> + <!-- * underscore --> + <xsl:output-character + character="‗" + u:name="DOUBLE LOW LINE" + string="_" + u:block="General Punctuation" + /> + + <!-- * .................................................... --> + <!-- * various quotation marks --> + <xsl:output-character + character="‘" + u:name="LEFT SINGLE QUOTATION MARK" + u:entity="lsquo" + string="\(oq" + u:block="General Punctuation" + u:class="quotes" + /> + <xsl:output-character + character="’" + u:name="RIGHT SINGLE QUOTATION MARK" + u:entity="rsquo" + string="\(cq" + u:block="General Punctuation" + u:class="quotes" + /> + <xsl:output-character + character="‚" + u:name="SINGLE LOW-9 QUOTATION MARK" + u:entity="lsquor" + string="\(bq" + u:block="General Punctuation" + u:class="quotes" + /> + <!-- * no roff equiv; treat same as lsquo --> + <xsl:output-character + character="‛" + u:name="SINGLE HIGH-REVERSED-9 QUOTATION MARK" + string="\(oq" + u:block="General Punctuation" + u:class="quotes" + /> + <xsl:output-character + character="“" + u:name="LEFT DOUBLE QUOTATION MARK" + u:entity="ldquo" + string="\(lq" + u:block="General Punctuation" + u:class="quotes" + /> + <xsl:output-character + character="”" + u:name="RIGHT DOUBLE QUOTATION MARK" + u:entity="rdquo" + string="\(rq" + u:block="General Punctuation" + u:class="quotes" + /> + <xsl:output-character + character="„" + u:name="DOUBLE LOW-9 QUOTATION MARK" + u:entity="ldquor" + string="\(Bq" + u:block="General Punctuation" + u:class="quotes" + /> + <!-- * no roff equiv; treat same as rdquo --> + <xsl:output-character + character="‟" + u:name="DOUBLE HIGH-REVERSED-9 QUOTATION MARK" + string="\(rq" + u:block="General Punctuation" + u:class="quotes" + /> + + <!-- * .................................................... --> + <!-- * various symbols --> + <xsl:output-character + character="†" + u:name="DAGGER" + u:entity="dagger" + string="\(dg" + u:block="General Punctuation_daggers" + /> + <xsl:output-character + character="‡" + u:name="DOUBLE DAGGER" + u:entity="Dagger" + string="\(dd" + u:block="General Punctuation_daggers" + /> + <xsl:output-character + character="•" + u:name="BULLET" + u:entity="bull" + string="\(bu" + u:block="General Punctuation" + u:class="bullets" + /> + <!-- * no roff equiv --> + <xsl:output-character + character="‣" + u:name="TRIANGULAR BULLET" + string=">\&" + u:block="General Punctuation" + u:class="bullets" + /> + <!-- * no roff equiv --> + <xsl:output-character + character="․" + u:name="ONE DOT LEADER" + string="\&." + u:block="General Punctuation_leaders" + /> + <!-- * no roff equiv --> + <xsl:output-character + character="‥" + u:name="TWO DOT LEADER" + u:entity="nldr" + string="\&.." + u:block="General Punctuation_leaders" + /> + <!-- * no roff equiv --> + <xsl:output-character + character="…" + u:name="HORIZONTAL ELLIPSIS" + u:entity="hellip" + string="\&..." + u:block="General Punctuation" + /> + <!-- what is "hyphenation point" used for? looks like middot to me... --> + <xsl:output-character + character="‧" + u:name="HYPHENATION POINT" + string="\(md" + u:block="General Punctuation" + /> + <!-- * Begin x2028 to x202e - no idea what to do with these --> + <!-- * <xsl:output-character --> + <!-- * character="
" --> + <!-- * u:name="LINE SEPARATOR" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="
" --> + <!-- * u:name="PARAGRAPH SEPARATOR" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‪" --> + <!-- * u:name="LEFT-TO-RIGHT EMBEDDING" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‫" --> + <!-- * u:name="RIGHT-TO-LEFT EMBEDDING" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‬" --> + <!-- * u:name="POP DIRECTIONAL FORMATTING" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‭" --> + <!-- * u:name="LEFT-TO-RIGHT OVERRIDE" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‮" --> + <!-- * u:name="RIGHT-TO-LEFT OVERRIDE" --> + <!-- * /> --> + <!-- * End x2028 to x202e - no idea what to do with these --> + + <!-- * seems like "narrow" nbsp is basically the same as a no-break --> + <!-- * space --> + <xsl:output-character + character=" " + u:name="NARROW NO-BREAK SPACE" + string="\ " + u:block="General Punctuation" + u:class="spaces" + /> + <xsl:output-character + character="‰" + u:name="PER MILLE SIGN" + u:entity="permil" + string="\(%0" + u:block="General Punctuation" + /> + <!-- * no roff equiv; no idea what to do with it --> + <!-- * <xsl:output-character --> + <!-- * character="‱" --> + <!-- * u:name="PER TEN THOUSAND SIGN" --> + <!-- * /> --> + <xsl:output-character + character="′" + u:name="PRIME" + u:entity="prime" + string="\(fm" + u:block="General Punctuation" + u:class="primes" + /> + <xsl:output-character + character="″" + u:name="DOUBLE PRIME" + u:entity="Prime" + string="\(sd" + u:block="General Punctuation" + u:class="primes" + /> + <xsl:output-character + character="‴" + u:name="TRIPLE PRIME" + u:entity="tprime" + string="\(sd\(fm" + u:block="General Punctuation" + u:class="primes" + /> + <!-- * no idea for these --> + <!-- * <xsl:output-character --> + <!-- * character="‵" --> + <!-- * u:name="REVERSED PRIME" --> + <!-- * u:entity="bprime" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‶" --> + <!-- * u:name="REVERSED DOUBLE PRIME" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="‷" --> + <!-- * u:name="REVERSED TRIPLE PRIME" --> + <!-- * /> --> + + <!-- * there is no low caret in roff --> + <xsl:output-character + character="‸" + u:name="CARET" + string="^" + u:block="General Punctuation" + /> + <xsl:output-character + character="‹" + u:name="SINGLE LEFT-POINTING ANGLE QUOTATION MARK" + string="\(fo" + u:block="General Punctuation" + u:class="quotes" + /> + <xsl:output-character + character="›" + u:name="SINGLE RIGHT-POINTING ANGLE QUOTATION MARK" + string="\(fc" + u:block="General Punctuation" + u:class="quotes" + /> + <!-- * not in roff --> + <xsl:output-character + character="※" + u:name="REFERENCE MARK" + string="*" + u:block="General Punctuation" + /> + <xsl:output-character + character="‼" + u:name="DOUBLE EXCLAMATION MARK" + string="!!" + u:block="General Punctuation" + /> + <xsl:output-character + character="‽" + u:name="INTERROBANG" + string="?!" + u:block="General Punctuation" + /> + <xsl:output-character + character="‾" + u:name="OVERLINE" + string="\(rn" + u:block="General Punctuation" + /> + <xsl:output-character + character="‿" + u:name="UNDERTIE" + string="\(ul" + u:block="General Punctuation" + /> + <!-- * not in roff --> + <xsl:output-character + character="⁀" + u:name="CHARACTER TIE" + string="\(rn" + u:block="General Punctuation" + /> + <!-- * not in roff --> + <xsl:output-character + character="⁁" + u:name="CARET INSERTION POINT" + u:entity="caret" + string="^" + u:block="General Punctuation" + /> + <!-- * not in roff --> + <xsl:output-character + character="⁂" + u:name="ASTERISM" + string="*" + u:block="General Punctuation" + /> + <!-- * not in roff; just make bold hyphen --> + <xsl:output-character + character="⁃" + u:name="HYPHEN BULLET" + u:entity="hybull" + string="\fB-\fR" + u:block="General Punctuation" + u:class="bullets" + /> + <xsl:output-character + character="⁄" + u:name="FRACTION SLASH" + string="\(sl" + u:block="General Punctuation" + /> + <!-- * not in roff --> + <xsl:output-character + character="⁅" + u:name="LEFT SQUARE BRACKET WITH QUILL" + string="[" + u:block="General Punctuation" + /> + <!-- * not in roff --> + <xsl:output-character + character="⁆" + u:name="RIGHT SQUARE BRACKET WITH QUILL" + string="]" + u:block="General Punctuation" + /> + <xsl:output-character + character="⁇" + u:name="DOUBLE QUESTION MARK" + string="??" + u:block="General Punctuation" + /> + <xsl:output-character + character="⁈" + u:name="QUESTION EXCLAMATION MARK" + string="?!" + u:block="General Punctuation" + /> + <xsl:output-character + character="⁉" + u:name="EXCLAMATION QUESTION MARK" + string="!?" + u:block="General Punctuation" + /> + <!-- * not in roff --> + <xsl:output-character + character="⁊" + u:name="TIRONIAN SIGN ET" + string="7" + u:block="General Punctuation" + /> + <!-- * not in roff; just replace with un-reversed pilcrow --> + <xsl:output-character + character="⁋" + u:name="REVERSED PILCROW SIGN" + string="\(ps" + u:block="General Punctuation" + /> + <!-- * not in roff; just make regular bullet --> + <xsl:output-character + character="⁌" + u:name="BLACK LEFTWARDS BULLET" + string="\(bu" + u:block="General Punctuation" + /> + <!-- * not in roff; just make regular bullet --> + <xsl:output-character + character="⁍" + u:name="BLACK RIGHTWARDS BULLET" + string="\(bu" + u:block="General Punctuation" + /> + <xsl:output-character + character="⁎" + u:name="LOW ASTERISK" + string="*" + u:block="General Punctuation" + /> + + <!-- * ............................................................... --> + <!-- * Remaining General Punctuation --> + <!-- * from x2050 to x206f --> + <!-- * only map a couple of these --> + <!-- * ............................................................... --> + + <!-- * basically same as a normal space --> + <xsl:output-character + character=" " + u:name="MEDIUM MATHEMATICAL SPACE" + string=" " + u:block="General Punctuation" + u:class="spaces" + /> + <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, --> + <!-- * Line Breaking Properties"[1] says: --> + <!-- * --> + <!-- * The word joiner character [x2060 a.k.a "WJ"] is the preferred --> + <!-- * choice for an invisible character to keep other characters --> + <!-- * together that would otherwise be split across the line at a direct --> + <!-- * break. The character FEFF has the same effect, but because it is --> + <!-- * also used in an unrelated way as a byte order mark, the use of the --> + <!-- * WJ as the preferred interword glue simplifies the handling of FEFF. --> + <!-- * --> + <!-- * [1] http://www.unicode.org/reports/tr14/ --> + <!-- * --> + <!-- * The groff docs seem ambiguous about whether \& is a joiner and --> + <!-- * prevents breaks, but, based on testing, seems like it does --> + <xsl:output-character + character="⁠" + u:name="WORD JOINER" + string="\&" + u:block="General Punctuation" + /> + + <!-- * ***************************************************************** --> + <!-- * End: General Punctuation --> + <!-- * ***************************************************************** --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Superscripts and Subscripts --> + <!-- * x2070 to x209f --> + <!-- * For superscripts, just do a^n thing --> + <!-- * For subscripts, just do a_n --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="⁰" + u:name="SUPERSCRIPT ZERO" + string="^0" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="ⁱ" + u:name="SUPERSCRIPT LATIN SMALL LETTER I" + string="^i" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁴" + u:name="SUPERSCRIPT FOUR" + string="^4" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁵" + u:name="SUPERSCRIPT FIVE" + string="^5" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁶" + u:name="SUPERSCRIPT SIX" + string="^6" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁷" + u:name="SUPERSCRIPT SEVEN" + string="^7" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁸" + u:name="SUPERSCRIPT EIGHT" + string="^8" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁹" + u:name="SUPERSCRIPT NINE" + string="^9" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁺" + u:name="SUPERSCRIPT PLUS SIGN" + string="^+" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁻" + u:name="SUPERSCRIPT MINUS" + string="^-" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁼" + u:name="SUPERSCRIPT EQUALS SIGN" + string="^=" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁽" + u:name="SUPERSCRIPT LEFT PARENTHESIS" + string="^(" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="⁾" + u:name="SUPERSCRIPT RIGHT PARENTHESIS" + string="^)" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="ⁿ" + u:name="SUPERSCRIPT LATIN SMALL LETTER N" + string="^n" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₀" + u:name="SUBSCRIPT ZERO" + string="_0" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₁" + u:name="SUBSCRIPT ONE" + string="_1" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₂" + u:name="SUBSCRIPT TWO" + string="_2" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₃" + u:name="SUBSCRIPT THREE" + string="_3" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₄" + u:name="SUBSCRIPT FOUR" + string="_4" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₅" + u:name="SUBSCRIPT FIVE" + string="_5" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₆" + u:name="SUBSCRIPT SIX" + string="_6" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₇" + u:name="SUBSCRIPT SEVEN" + string="_7" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₈" + u:name="SUBSCRIPT EIGHT" + string="_8" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₉" + u:name="SUBSCRIPT NINE" + string="_9" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₊" + u:name="SUBSCRIPT PLUS SIGN" + string="_+" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₋" + u:name="SUBSCRIPT MINUS" + string="_-" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₌" + u:name="SUBSCRIPT EQUALS SIGN" + string="_=" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₍" + u:name="SUBSCRIPT LEFT PARENTHESIS" + string="_(" + u:block="Superscripts and Subscripts" + /> + <xsl:output-character + character="₎" + u:name="SUBSCRIPT RIGHT PARENTHESIS" + string="_)" + u:block="Superscripts and Subscripts" + /> + <!-- * ***************************************************************** --> + <!-- * End: Superscripts and Subscripts --> + <!-- * x2070 to x209f --> + <!-- * ***************************************************************** --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Currency Symbols --> + <!-- * x20a0 to x20b1 --> + <!-- * No mappings for any of these; just spell out --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="₠" + u:name="EURO-CURRENCY SIGN" + string="EUR" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₡" + u:name="COLON SIGN" + string="COLON" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₢" + u:name="CRUZEIRO SIGN" + string="CRUZEIRO" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₣" + u:name="FRENCH FRANC SIGN" + string="FRANC" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₤" + u:name="LIRA SIGN" + string="LIRA" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₥" + u:name="MILL SIGN" + string="MILL" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₦" + u:name="NAIRA SIGN" + string="NAIRA" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₧" + u:name="PESETA SIGN" + string="PESETA" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₨" + u:name="RUPEE SIGN" + string="RUPEE" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₩" + u:name="WON SIGN" + string="WON" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₪" + u:name="NEW SHEQEL SIGN" + string="SHEQEL" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₫" + u:name="DONG SIGN" + string="DONG" + u:block="Currency Symbols" + /> + <xsl:output-character + character="€" + u:name="EURO SIGN" + string="EUR" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₭" + u:name="KIP SIGN" + string="KIP" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₮" + u:name="TUGRIK SIGN" + string="TUGRIK" + u:block="Currency Symbols" + /> + <xsl:output-character + character="₯" + u:name="DRACHMA SIGN" + string="DRACHMA" + u:block="Currency Symbols" + /> + <!-- <xsl:output-character --> + <!-- character="₰" --> + <!-- u:name="GERMAN PENNY SIGN" --> + <!-- string="?" --> + <!-- u:block="Currency Symbols" --> + <!-- /> --> + <xsl:output-character + character="₱" + u:name="PESO SIGN" + string="PESO" + u:block="Currency Symbols" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Currency Symbols --> + <!-- * x20a0 to x20b1 --> + <!-- * ***************************************************************** --> + + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + <!-- * Combining Diacritical Marks for Symbols --> + <!-- * x20d0 to x20ff --> + <!-- * - do nothing - --> + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Letterlike Symbols --> + <!-- * x2100 to x214b --> + <!-- * --> + <!-- * No mappings for any of these, and nothing appropriate for --> + <!-- * most of them; so, just spell out the ones that we can --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="℃" + u:name="DEGREE CELSIUS" + string="\(deC" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="℅" + u:name="CARE OF" + u:entity="incare" + string="c/o" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="℉" + u:name="DEGREE FAHRENHEIT" + string="\(deF" + u:block="Letterlike Symbols" + /> + <!-- roff Ifraktur --> + <xsl:output-character + character="ℑ" + u:name="BLACK-LETTER CAPITAL I" + string="\(Im" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="ℓ" + u:name="SCRIPT SMALL L" + u:entity="ell" + string="l" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="№" + u:name="NUMERO SIGN" + u:entity="numero" + string="No." + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="℘" + u:name="SCRIPT CAPITAL P" + u:entity="weierp" + string="\(wp" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="ℜ" + u:name="BLACK-LETTER CAPITAL R" + u:entity="real" + string="\(Re" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="℞" + u:name="PRESCRIPTION TAKE" + u:entity="rx" + string="Rx" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="℠" + u:name="SERVICE MARK" + string="(SM)" + u:block="Letterlike Symbols" + /> + <!-- * We don't do "\(tm" for ™ because for console output, groff --> + <!-- * just renders that as "tm", without any preceding space, parens, --> + <!-- * or anything. So it just gets run into the preceding word; i.e.: --> + <!-- * --> + <!-- * Product™ -> Producttm --> + <!-- * --> + <!-- * That it probably not what most people would want. So we just --> + <!-- * render it as (TM) instead, Thus: --> + <!-- * --> + <!-- * Product™ -> Product(TM) --> + <xsl:output-character + character="™" + u:name="TRADE MARK SIGN" + u:entity="trade" + string="(TM)" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="Ω" + u:name="OHM SIGN" + u:entity="ohm" + string="\(*W" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="K" + u:name="KELVIN SIGN" + string="K" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="Å" + u:name="ANGSTROM SIGN" + u:entity="angst" + string="\(oA" + u:block="Letterlike Symbols" + /> + <xsl:output-character + character="ℵ" + u:name="ALEF SYMBOL" + u:entity="aleph" + string="\(Ah" + u:block="Letterlike Symbols" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Letterlike Symbols --> + <!-- * x2100 to x214b --> + <!-- * ***************************************************************** --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Number Forms --> + <!-- * x2150 to x218f --> + <!-- * --> + <!-- * No mappings for any of these, and nothing appropriate for most --> + <!-- * of them; so, just spell out the ones that we can --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="⅓" + u:name="VULGAR FRACTION ONE THIRD" + u:entity="frac13" + string="1/3" + u:block="Number Forms" + /> + <xsl:output-character + character="⅔" + u:name="VULGAR FRACTION TWO THIRDS" + u:entity="frac23" + string="2/3" + u:block="Number Forms" + /> + <xsl:output-character + character="⅕" + u:name="VULGAR FRACTION ONE FIFTH" + u:entity="frac15" + string="1/5" + u:block="Number Forms" + /> + <xsl:output-character + character="⅖" + u:name="VULGAR FRACTION TWO FIFTHS" + u:entity="frac25" + string="2/5" + u:block="Number Forms" + /> + <xsl:output-character + character="⅗" + u:name="VULGAR FRACTION THREE FIFTHS" + u:entity="frac35" + string="3/5" + u:block="Number Forms" + /> + <xsl:output-character + character="⅘" + u:name="VULGAR FRACTION FOUR FIFTHS" + u:entity="frac45" + string="4/5" + u:block="Number Forms" + /> + <xsl:output-character + character="⅙" + u:name="VULGAR FRACTION ONE SIXTH" + u:entity="frac16" + string="1/6" + u:block="Number Forms" + /> + <xsl:output-character + character="⅚" + u:name="VULGAR FRACTION FIVE SIXTHS" + u:entity="frac56" + string="5/6" + u:block="Number Forms" + /> + <xsl:output-character + character="⅛" + u:name="VULGAR FRACTION ONE EIGHTH" + u:entity="frac18" + string="1/8" + u:block="Number Forms" + /> + <xsl:output-character + character="⅜" + u:name="VULGAR FRACTION THREE EIGHTHS" + u:entity="frac38" + string="3/8" + u:block="Number Forms" + /> + <xsl:output-character + character="⅝" + u:name="VULGAR FRACTION FIVE EIGHTHS" + u:entity="frac58" + string="5/8" + u:block="Number Forms" + /> + <xsl:output-character + character="⅞" + u:name="VULGAR FRACTION SEVEN EIGHTHS" + u:entity="frac78" + string="7/8" + u:block="Number Forms" + /> + <xsl:output-character + character="⅟" + u:name="FRACTION NUMERATOR ONE" + string="1/" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅰ" + u:name="ROMAN NUMERAL ONE" + string="I" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅱ" + u:name="ROMAN NUMERAL TWO" + string="II" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅲ" + u:name="ROMAN NUMERAL THREE" + string="III" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅳ" + u:name="ROMAN NUMERAL FOUR" + string="IV" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅴ" + u:name="ROMAN NUMERAL FIVE" + string="V" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅵ" + u:name="ROMAN NUMERAL SIX" + string="VI" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅶ" + u:name="ROMAN NUMERAL SEVEN" + string="VII" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅷ" + u:name="ROMAN NUMERAL EIGHT" + string="VIII" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅸ" + u:name="ROMAN NUMERAL NINE" + string="IX" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅹ" + u:name="ROMAN NUMERAL TEN" + string="X" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅺ" + u:name="ROMAN NUMERAL ELEVEN" + string="XI" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅻ" + u:name="ROMAN NUMERAL TWELVE" + string="XII" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅼ" + u:name="ROMAN NUMERAL FIFTY" + string="L" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅽ" + u:name="ROMAN NUMERAL ONE HUNDRED" + string="C" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅾ" + u:name="ROMAN NUMERAL FIVE HUNDRED" + string="D" + u:block="Number Forms" + /> + <xsl:output-character + character="Ⅿ" + u:name="ROMAN NUMERAL ONE THOUSAND" + string="M" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅰ" + u:name="SMALL ROMAN NUMERAL ONE" + string="i" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅱ" + u:name="SMALL ROMAN NUMERAL TWO" + string="ii" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅲ" + u:name="SMALL ROMAN NUMERAL THREE" + string="iii" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅳ" + u:name="SMALL ROMAN NUMERAL FOUR" + string="iv" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅴ" + u:name="SMALL ROMAN NUMERAL FIVE" + string="v" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅵ" + u:name="SMALL ROMAN NUMERAL SIX" + string="vi" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅶ" + u:name="SMALL ROMAN NUMERAL SEVEN" + string="vii" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅷ" + u:name="SMALL ROMAN NUMERAL EIGHT" + string="viii" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅸ" + u:name="SMALL ROMAN NUMERAL NINE" + string="ix" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅹ" + u:name="SMALL ROMAN NUMERAL TEN" + string="x" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅺ" + u:name="SMALL ROMAN NUMERAL ELEVEN" + string="xi" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅻ" + u:name="SMALL ROMAN NUMERAL TWELVE" + string="xii" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅼ" + u:name="SMALL ROMAN NUMERAL FIFTY" + string="l" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅽ" + u:name="SMALL ROMAN NUMERAL ONE HUNDRED" + string="c" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅾ" + u:name="SMALL ROMAN NUMERAL FIVE HUNDRED" + string="d" + u:block="Number Forms" + /> + <xsl:output-character + character="ⅿ" + u:name="SMALL ROMAN NUMERAL ONE THOUSAND" + string="m" + u:block="Number Forms" + /> + <xsl:output-character + character="ↀ" + u:name="ROMAN NUMERAL ONE THOUSAND C D" + string="CD" + u:block="Number Forms" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Number Forms --> + <!-- * x2150 to x218f --> + <!-- * ***************************************************************** --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Arrows --> + <!-- * x2190 to x21ff --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="←" + u:name="LEFTWARDS ARROW" + u:entity="larr" + string="\(<-" + u:block="Arrows" + /> + <xsl:output-character + character="↑" + u:name="UPWARDS ARROW" + u:entity="uarr" + string="\(ua" + u:block="Arrows" + /> + <xsl:output-character + character="→" + u:name="RIGHTWARDS ARROW" + u:entity="rarr" + string="\(->" + u:block="Arrows" + /> + <xsl:output-character + character="↓" + u:name="DOWNWARDS ARROW" + u:entity="darr" + string="\(da" + u:block="Arrows" + /> + <xsl:output-character + character="↔" + u:name="LEFT RIGHT ARROW" + u:entity="harr" + string="\(<>" + u:block="Arrows" + /> + <xsl:output-character + character="↕" + u:name="UP DOWN ARROW" + u:entity="varr" + string="\(va" + u:block="Arrows" + /> + <xsl:output-character + character="↵" + u:name="DOWNWARDS ARROW WITH CORNER LEFTWARDS" + u:entity="crarr" + string="\(CR" + u:block="Arrows" + /> + <xsl:output-character + character="⇐" + u:name="LEFTWARDS DOUBLE ARROW" + u:entity="lArr" + string="\(la" + u:block="Arrows" + /> + <xsl:output-character + character="⇑" + u:name="UPWARDS DOUBLE ARROW" + u:entity="uArr" + string="\(uA" + u:block="Arrows" + /> + <xsl:output-character + character="⇒" + u:name="RIGHTWARDS DOUBLE ARROW" + u:entity="rArr" + string="\(rA" + u:block="Arrows" + /> + <xsl:output-character + character="⇓" + u:name="DOWNWARDS DOUBLE ARROW" + u:entity="dArr" + string="\(dA" + u:block="Arrows" + /> + <xsl:output-character + character="⇔" + u:name="LEFT RIGHT DOUBLE ARROW" + u:entity="hArr" + string="\(hA" + u:block="Arrows" + /> + <!-- no roff equiv; render same as single arrow --> + <xsl:output-character + character="⇕" + u:name="UP DOWN DOUBLE ARROW" + u:entity="vArr" + string="\(va" + u:block="Arrows" + /> + + <!-- * ***************************************************************** --> + <!-- * Begin: Mathematical Operators --> + <!-- * x2200 to x22ff --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="∀" + u:name="FOR ALL" + u:entity="forall" + string="\(fa" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∁" + u:name="COMPLEMENT" + u:entity="comp" + string="C" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∂" + u:name="PARTIAL DIFFERENTIAL" + u:entity="part" + string="\(pd" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∃" + u:name="THERE EXISTS" + u:entity="exist" + string="\(te" + u:block="Mathematical Operators" + /> + <!-- * no roff equiv --> + <!-- * <xsl:output-character --> + <!-- * character="∄" --> + <!-- * u:name="THERE DOES NOT EXIST" --> + <!-- * u:entity="nexist" --> + <!-- * /> --> + <xsl:output-character + character="∅" + u:name="EMPTY SET" + u:entity="empty" + string="\(es" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∆" + u:name="INCREMENT" + string="\(*D" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∇" + u:name="NABLA" + u:entity="nabla" + string="\(gr" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∈" + u:name="ELEMENT OF" + u:entity="isin" + string="\(mo" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∉" + u:name="NOT AN ELEMENT OF" + u:entity="notin" + string="\(nm" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∊" + u:name="SMALL ELEMENT OF" + string="\(mo" + u:block="Mathematical Operators" + /> + + <xsl:output-character + character="∋" + u:name="CONTAINS AS MEMBER" + u:entity="ni" + string="\(st" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∌" --> + <!-- * u:name="DOES NOT CONTAIN AS MEMBER" --> + <!-- * /> --> + <xsl:output-character + character="∍" + u:name="SMALL CONTAINS AS MEMBER" + string="\(st" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∎" --> + <!-- * u:name="END OF PROOF" --> + <!-- * /> --> + <xsl:output-character + character="∏" + u:name="N-ARY PRODUCT" + u:entity="prod" + string="\(product" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∐" --> + <!-- * u:name="N-ARY COPRODUCT" --> + <!-- * u:entity="coprod" --> + <!-- * /> --> + <xsl:output-character + character="∑" + u:name="N-ARY SUMMATION" + u:entity="sum" + string="\(sum" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="−" + u:name="MINUS SIGN" + u:entity="minus" + string="\-" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∓" + u:name="MINUS-OR-PLUS SIGN" + u:entity="mnplus" + string="\(+-" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∔" --> + <!-- * u:name="DOT PLUS" --> + <!-- * u:entity="plusdo" --> + <!-- * /> --> + <xsl:output-character + character="∕" + u:name="DIVISION SLASH" + string="\(f/" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∖" + u:name="SET MINUS" + u:entity="setmn" + string="\e" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∗" + u:name="ASTERISK OPERATOR" + u:entity="lowast" + string="\(**" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∘" --> + <!-- * u:name="RING OPERATOR" --> + <!-- * u:entity="compfn" --> + <!-- * /> --> + <xsl:output-character + character="∙" + u:name="BULLET OPERATOR" + string="\(bu" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="√" + u:name="SQUARE ROOT" + u:entity="radic" + string="\(sr" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∛" --> + <!-- * u:name="CUBE ROOT" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="∜" --> + <!-- * u:name="FOURTH ROOT" --> + <!-- * /> --> + <xsl:output-character + character="∝" + u:name="PROPORTIONAL TO" + u:entity="prop" + string="\(pt" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∞" + u:name="INFINITY" + u:entity="infin" + string="\(if" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∟" --> + <!-- * u:name="RIGHT ANGLE" --> + <!-- * u:entity="ang90" --> + <!-- * /> --> + <xsl:output-character + character="∠" + u:name="ANGLE" + u:entity="ang" + string="\(/_" + u:block="Mathematical Operators" + /> + + <!-- * 0x2221 to 0x2226 not in roff; --> + <!-- * but fake a parallel sign with vert bars --> + + <xsl:output-character + character="∥" + u:name="PARALLEL TO" + u:entity="par" + string="\(bv\(bv" + u:block="Mathematical Operators" + /> + + <xsl:output-character + character="∧" + u:name="LOGICAL AND" + u:entity="and" + string="\(AN" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∨" + u:name="LOGICAL OR" + u:entity="or" + string="\(OR" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∩" + u:name="INTERSECTION" + u:entity="cap" + string="\(ca" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∪" + u:name="UNION" + u:entity="cup" + string="\(cu" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∫" + u:name="INTEGRAL" + u:entity="int" + string="\(is" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∬" + u:name="DOUBLE INTEGRAL" + string="\(is\(is" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∭" + u:name="TRIPLE INTEGRAL" + string="\(is\(is\(is" + u:block="Mathematical Operators" + /> + + <!-- * 0x222e to 0x2233 not in roff --> + + <xsl:output-character + character="∴" + u:name="THEREFORE" + u:entity="there4" + string="\(tf" + u:block="Mathematical Operators" + /> + + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="∵" --> + <!-- * u:name="BECAUSE" --> + <!-- * u:entity="becaus" --> + <!-- * /> --> + <xsl:output-character + character="∶" + u:name="RATIO" + string=":" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="∷" + u:name="PROPORTION" + string="::" + u:block="Mathematical Operators" + /> + + <!-- * 0x2238 to 0x223b not in roff --> + + <xsl:output-character + character="∼" + u:name="TILDE OPERATOR" + u:entity="sim" + string="\(ti" + u:block="Mathematical Operators" + /> + + <!-- * 0x223d to 0x224b not in roff --> + + <xsl:output-character + character="≅" + u:name="APPROXIMATELY EQUAL TO" + u:entity="cong" + string="\(=~" + u:block="Mathematical Operators" + /> + + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="≆" --> + <!-- * u:name="APPROXIMATELY BUT NOT ACTUALLY EQUAL TO" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="≇" --> + <!-- * u:name="NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO" --> + <!-- * u:entity="ncong" --> + <!-- * /> --> + + <xsl:output-character + character="≈" + u:name="ALMOST EQUAL TO" + u:entity="asymp" + string="\(~~" + u:block="Mathematical Operators" + /> + + <!-- * x2249 to x2253 not in roff --> + + <xsl:output-character + character="≔" + u:name="COLON EQUALS" + u:entity="colone" + string=":=" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="≕" + u:name="EQUALS COLON" + u:entity="ecolon" + string="=:" + u:block="Mathematical Operators" + /> + + <!-- * x2256 to x2255 not in roff --> + + <xsl:output-character + character="≟" + u:name="QUESTIONED EQUAL TO" + string="?=" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="≠" + u:name="NOT EQUAL TO" + u:entity="ne" + string="\(!=" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="≡" + u:name="IDENTICAL TO" + u:entity="equiv" + string="\(==" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="≢" --> + <!-- * u:name="NOT IDENTICAL TO" --> + <!-- * u:entity="nequiv" --> + <!-- * /> --> + <!-- * <xsl:output-character --> + <!-- * character="≣" --> + <!-- * u:name="STRICTLY EQUIVALENT TO" --> + <!-- * /> --> + <xsl:output-character + character="≤" + u:name="LESS-THAN OR EQUAL TO" + u:entity="le" + string="\(<=" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="≥" + u:name="GREATER-THAN OR EQUAL TO" + u:entity="ge" + string="\(>=" + u:block="Mathematical Operators" + /> + <!-- * x2266 to x2269 not in roff --> + + <xsl:output-character + character="≪" + u:name="MUCH LESS-THAN" + u:entity="Lt" + string="<<" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="≫" + u:name="MUCH GREATER-THAN" + u:entity="Gt" + string=">>" + u:block="Mathematical Operators" + /> + <!-- * x226c to x2281 not in roff --> + + <xsl:output-character + character="⊂" + u:name="SUBSET OF" + u:entity="sub" + string="\(sb" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⊃" + u:name="SUPERSET OF" + u:entity="sup" + string="\(sp" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⊄" + u:name="NOT A SUBSET OF" + u:entity="nsub" + string="\(nb" + u:block="Mathematical Operators" + /> + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="⊅" --> + <!-- * u:name="NOT A SUPERSET OF" --> + <!-- * u:entity="nsup" --> + <!-- * /> --> + <xsl:output-character + character="⊆" + u:name="SUBSET OF OR EQUAL TO" + u:entity="sube" + string="\(ib" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⊇" + u:name="SUPERSET OF OR EQUAL TO" + u:entity="supe" + string="\(ip" + u:block="Mathematical Operators" + /> + <!-- * x2288 to x2294 not in roff --> + + <xsl:output-character + character="⊕" + u:name="CIRCLED PLUS" + u:entity="oplus" + string="\(c+" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⊖" + u:name="CIRCLED MINUS" + u:entity="ominus" + string="\(c*" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⊗" + u:name="CIRCLED TIMES" + u:entity="otimes" + string="\(c*" + u:block="Mathematical Operators" + /> + + <!-- * x2298 to x22a4 not in roff --> + + <xsl:output-character + character="⊥" + u:name="UP TACK" + u:entity="bottom" + string="\(pp" + u:block="Mathematical Operators" + /> + + <!-- * x22a6 to x22bf not in roff --> + + <xsl:output-character + character="⋀" + u:name="N-ARY LOGICAL AND" + string="\(AN" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⋁" + u:name="N-ARY LOGICAL OR" + string="\(OR" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⋂" + u:name="N-ARY INTERSECTION" + string="\(ca" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⋃" + u:name="N-ARY UNION" + string="\(cu" + u:block="Mathematical Operators" + /> + + <!-- * not in roff --> + <!-- * <xsl:output-character --> + <!-- * character="⋄" --> + <!-- * u:name="DIAMOND OPERATOR" --> + <!-- * u:entity="diam" --> + <!-- * /> --> + <xsl:output-character + character="⋅" + u:name="DOT OPERATOR" + u:entity="sdot" + string="\(md" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⋆" + u:name="STAR OPERATOR" + u:entity="sstarf" + string="\(**" + u:block="Mathematical Operators" + /> + <!-- * x22c7 to x22cd not in roff --> + + <xsl:output-character + character="⋎" + u:name="CURLY LOGICAL OR" + u:entity="cuvee" + string="\(OR" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⋏" + u:name="CURLY LOGICAL AND" + u:entity="cuwed" + string="\(AN" + u:block="Mathematical Operators" + /> + + <!-- * x22d0 to x22d7 not in roff --> + + <xsl:output-character + character="⋘" + u:name="VERY MUCH LESS-THAN" + u:entity="Ll" + string="<<<" + u:block="Mathematical Operators" + /> + <xsl:output-character + character="⋙" + u:name="VERY MUCH GREATER-THAN" + u:entity="Gg" + string=">>>" + u:block="Mathematical Operators" + /> + + <!-- * x22da to x22ee not in roff --> + + <xsl:output-character + character="⋯" + u:name="MIDLINE HORIZONTAL ELLIPSIS" + string="\&..." + u:block="Mathematical Operators" + /> + + <!-- * x22fo to x22ff not in roff --> + + <!-- * ***************************************************************** --> + <!-- * End: Mathematical Operators --> + <!-- * ***************************************************************** --> + + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + <!-- * Miscellaneous Technical --> + <!-- * x2300 to x23ff --> + <!-- * - do nothing except for angle brackets - --> + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + + <xsl:output-character + character="〈" + u:name="LEFT-POINTING ANGLE BRACKET" + u:entity="lang" + string="\(la" + u:block="Miscellaneous Technical" + /> + <xsl:output-character + character="〉" + u:name="RIGHT-POINTING ANGLE BRACKET" + u:entity="rang" + string="\(ra" + u:block="Miscellaneous Technical" + /> + + <!-- * ***************************************************************** --> + <!-- * Begin: Control Pictures --> + <!-- * x2400 to x243f --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="␀" + u:name="SYMBOL FOR NULL" + string="NUL" + u:block="Control Pictures" + /> + <xsl:output-character + character="␁" + u:name="SYMBOL FOR START OF HEADING" + string="SOH" + u:block="Control Pictures" + /> + <xsl:output-character + character="␂" + u:name="SYMBOL FOR START OF TEXT" + string="STX" + u:block="Control Pictures" + /> + <xsl:output-character + character="␃" + u:name="SYMBOL FOR END OF TEXT" + string="ETX" + u:block="Control Pictures" + /> + <xsl:output-character + character="␄" + u:name="SYMBOL FOR END OF TRANSMISSION" + string="EOT" + u:block="Control Pictures" + /> + <xsl:output-character + character="␅" + u:name="SYMBOL FOR ENQUIRY" + string="ENQ" + u:block="Control Pictures" + /> + <xsl:output-character + character="␆" + u:name="SYMBOL FOR ACKNOWLEDGE" + string="ACK" + u:block="Control Pictures" + /> + <xsl:output-character + character="␇" + u:name="SYMBOL FOR BELL" + string="BEL" + u:block="Control Pictures" + /> + <xsl:output-character + character="␈" + u:name="SYMBOL FOR BACKSPACE" + string="BS" + u:block="Control Pictures" + /> + <xsl:output-character + character="␉" + u:name="SYMBOL FOR HORIZONTAL TABULATION" + string="HT" + u:block="Control Pictures" + /> + <xsl:output-character + character="␊" + u:name="SYMBOL FOR LINE FEED" + string="LF" + u:block="Control Pictures" + /> + <xsl:output-character + character="␋" + u:name="SYMBOL FOR VERTICAL TABULATION" + string="VT" + u:block="Control Pictures" + /> + <xsl:output-character + character="␌" + u:name="SYMBOL FOR FORM FEED" + string="FF" + u:block="Control Pictures" + /> + <xsl:output-character + character="␍" + u:name="SYMBOL FOR CARRIAGE RETURN" + string="CR" + u:block="Control Pictures" + /> + <xsl:output-character + character="␎" + u:name="SYMBOL FOR SHIFT OUT" + string="SO" + u:block="Control Pictures" + /> + <xsl:output-character + character="␏" + u:name="SYMBOL FOR SHIFT IN" + string="SI" + u:block="Control Pictures" + /> + <xsl:output-character + character="␐" + u:name="SYMBOL FOR DATA LINK ESCAPE" + string="DLE" + u:block="Control Pictures" + /> + <xsl:output-character + character="␑" + u:name="SYMBOL FOR DEVICE CONTROL ONE" + string="DC1" + u:block="Control Pictures" + /> + <xsl:output-character + character="␒" + u:name="SYMBOL FOR DEVICE CONTROL TWO" + string="DC2" + u:block="Control Pictures" + /> + <xsl:output-character + character="␓" + u:name="SYMBOL FOR DEVICE CONTROL THREE" + string="DC3" + u:block="Control Pictures" + /> + <xsl:output-character + character="␔" + u:name="SYMBOL FOR DEVICE CONTROL FOUR" + string="DC4" + u:block="Control Pictures" + /> + <xsl:output-character + character="␕" + u:name="SYMBOL FOR NEGATIVE ACKNOWLEDGE" + string="NAK" + u:block="Control Pictures" + /> + <xsl:output-character + character="␖" + u:name="SYMBOL FOR SYNCHRONOUS IDLE" + string="SYN" + u:block="Control Pictures" + /> + <xsl:output-character + character="␗" + u:name="SYMBOL FOR END OF TRANSMISSION BLOCK" + string="ETB" + u:block="Control Pictures" + /> + <xsl:output-character + character="␘" + u:name="SYMBOL FOR CANCEL" + string="CAN" + u:block="Control Pictures" + /> + <xsl:output-character + character="␙" + u:name="SYMBOL FOR END OF MEDIUM" + string="EM" + u:block="Control Pictures" + /> + <xsl:output-character + character="␚" + u:name="SYMBOL FOR SUBSTITUTE" + string="SUB" + u:block="Control Pictures" + /> + <xsl:output-character + character="␛" + u:name="SYMBOL FOR ESCAPE" + string="ESC" + u:block="Control Pictures" + /> + <xsl:output-character + character="␜" + u:name="SYMBOL FOR FILE SEPARATOR" + string="FS" + u:block="Control Pictures" + /> + <xsl:output-character + character="␝" + u:name="SYMBOL FOR GROUP SEPARATOR" + string="GS" + u:block="Control Pictures" + /> + <xsl:output-character + character="␞" + u:name="SYMBOL FOR RECORD SEPARATOR" + string="RS" + u:block="Control Pictures" + /> + <xsl:output-character + character="␟" + u:name="SYMBOL FOR UNIT SEPARATOR" + string="US" + u:block="Control Pictures" + /> + <xsl:output-character + character="␠" + u:name="SYMBOL FOR SPACE" + string="SP" + u:block="Control Pictures" + /> + <xsl:output-character + character="␡" + u:name="SYMBOL FOR DELETE" + string="DEL" + u:block="Control Pictures" + /> + <!-- * no roff equivs for x2422 and x2423 --> + <!-- * <xsl:output-character --> + <!-- * character="␢" --> + <!-- * u:name="BLANK SYMBOL" --> + <!-- * string="?" --> + <!-- * u:block="Control Pictures" --> + <!-- * /> --> + <!-- * I think there should be a roff equiv for ␣, but as far as I --> + <!-- * know, there is not... --> + <!-- * <xsl:output-character --> + <!-- * character="␣" --> + <!-- * u:name="OPEN BOX" --> + <!-- * u:entity="blank" --> + <!-- * string="?" --> + <!-- * u:block="Control Pictures" --> + <!-- * /> --> + <xsl:output-character + character="␤" + u:name="SYMBOL FOR NEWLINE" + string="NL" + u:block="Control Pictures" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Control Pictures --> + <!-- * ***************************************************************** --> + + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + <!-- * Optical Character Recognition --> + <!-- * x2440 to x24ff --> + <!-- * - do nothing - --> + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Enclosed Alphanumerics --> + <!-- * x2460 to x24ff --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="①" + u:name="CIRCLED DIGIT ONE" + string="1" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="②" + u:name="CIRCLED DIGIT TWO" + string="2" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="③" + u:name="CIRCLED DIGIT THREE" + string="3" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="④" + u:name="CIRCLED DIGIT FOUR" + string="4" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑤" + u:name="CIRCLED DIGIT FIVE" + string="5" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑥" + u:name="CIRCLED DIGIT SIX" + string="6" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑦" + u:name="CIRCLED DIGIT SEVEN" + string="7" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑧" + u:name="CIRCLED DIGIT EIGHT" + string="8" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑨" + u:name="CIRCLED DIGIT NINE" + string="9" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑩" + u:name="CIRCLED NUMBER TEN" + string="10" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑪" + u:name="CIRCLED NUMBER ELEVEN" + string="11" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑫" + u:name="CIRCLED NUMBER TWELVE" + string="12" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑬" + u:name="CIRCLED NUMBER THIRTEEN" + string="13" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑭" + u:name="CIRCLED NUMBER FOURTEEN" + string="14" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑮" + u:name="CIRCLED NUMBER FIFTEEN" + string="15" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑯" + u:name="CIRCLED NUMBER SIXTEEN" + string="16" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑰" + u:name="CIRCLED NUMBER SEVENTEEN" + string="17" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑱" + u:name="CIRCLED NUMBER EIGHTEEN" + string="18" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑲" + u:name="CIRCLED NUMBER NINETEEN" + string="19" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑳" + u:name="CIRCLED NUMBER TWENTY" + string="20" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑴" + u:name="PARENTHESIZED DIGIT ONE" + string="(1)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑵" + u:name="PARENTHESIZED DIGIT TWO" + string="(2)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑶" + u:name="PARENTHESIZED DIGIT THREE" + string="(3)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑷" + u:name="PARENTHESIZED DIGIT FOUR" + string="(4)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑸" + u:name="PARENTHESIZED DIGIT FIVE" + string="(5)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑹" + u:name="PARENTHESIZED DIGIT SIX" + string="(6)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑺" + u:name="PARENTHESIZED DIGIT SEVEN" + string="(7)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑻" + u:name="PARENTHESIZED DIGIT EIGHT" + string="(8)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑼" + u:name="PARENTHESIZED DIGIT NINE" + string="(9)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑽" + u:name="PARENTHESIZED NUMBER TEN" + string="(10)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑾" + u:name="PARENTHESIZED NUMBER ELEVEN" + string="(11)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⑿" + u:name="PARENTHESIZED NUMBER TWELVE" + string="(12)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒀" + u:name="PARENTHESIZED NUMBER THIRTEEN" + string="(13)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒁" + u:name="PARENTHESIZED NUMBER FOURTEEN" + string="(14)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒂" + u:name="PARENTHESIZED NUMBER FIFTEEN" + string="(15)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒃" + u:name="PARENTHESIZED NUMBER SIXTEEN" + string="(16)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒄" + u:name="PARENTHESIZED NUMBER SEVENTEEN" + string="(17)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒅" + u:name="PARENTHESIZED NUMBER EIGHTEEN" + string="(18)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒆" + u:name="PARENTHESIZED NUMBER NINETEEN" + string="(19)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒇" + u:name="PARENTHESIZED NUMBER TWENTY" + string="(20)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒈" + u:name="DIGIT ONE FULL STOP" + string="1." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒉" + u:name="DIGIT TWO FULL STOP" + string="2." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒊" + u:name="DIGIT THREE FULL STOP" + string="3." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒋" + u:name="DIGIT FOUR FULL STOP" + string="4." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒌" + u:name="DIGIT FIVE FULL STOP" + string="5." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒍" + u:name="DIGIT SIX FULL STOP" + string="6." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒎" + u:name="DIGIT SEVEN FULL STOP" + string="7." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒏" + u:name="DIGIT EIGHT FULL STOP" + string="8." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒐" + u:name="DIGIT NINE FULL STOP" + string="9." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒑" + u:name="NUMBER TEN FULL STOP" + string="10." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒒" + u:name="NUMBER ELEVEN FULL STOP" + string="11." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒓" + u:name="NUMBER TWELVE FULL STOP" + string="12." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒔" + u:name="NUMBER THIRTEEN FULL STOP" + string="13." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒕" + u:name="NUMBER FOURTEEN FULL STOP" + string="14." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒖" + u:name="NUMBER FIFTEEN FULL STOP" + string="15." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒗" + u:name="NUMBER SIXTEEN FULL STOP" + string="16." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒘" + u:name="NUMBER SEVENTEEN FULL STOP" + string="17." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒙" + u:name="NUMBER EIGHTEEN FULL STOP" + string="18." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒚" + u:name="NUMBER NINETEEN FULL STOP" + string="19." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒛" + u:name="NUMBER TWENTY FULL STOP" + string="20." + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒜" + u:name="PARENTHESIZED LATIN SMALL LETTER A" + string="(a)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒝" + u:name="PARENTHESIZED LATIN SMALL LETTER B" + string="(b)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒞" + u:name="PARENTHESIZED LATIN SMALL LETTER C" + string="(c)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒟" + u:name="PARENTHESIZED LATIN SMALL LETTER D" + string="(d)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒠" + u:name="PARENTHESIZED LATIN SMALL LETTER E" + string="(e)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒡" + u:name="PARENTHESIZED LATIN SMALL LETTER F" + string="(f)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒢" + u:name="PARENTHESIZED LATIN SMALL LETTER G" + string="(g)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒣" + u:name="PARENTHESIZED LATIN SMALL LETTER H" + string="(h)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒤" + u:name="PARENTHESIZED LATIN SMALL LETTER I" + string="(i)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒥" + u:name="PARENTHESIZED LATIN SMALL LETTER J" + string="(j)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒦" + u:name="PARENTHESIZED LATIN SMALL LETTER K" + string="(k)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒧" + u:name="PARENTHESIZED LATIN SMALL LETTER L" + string="(l)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒨" + u:name="PARENTHESIZED LATIN SMALL LETTER M" + string="(m)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒩" + u:name="PARENTHESIZED LATIN SMALL LETTER N" + string="(n)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒪" + u:name="PARENTHESIZED LATIN SMALL LETTER O" + string="(o)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒫" + u:name="PARENTHESIZED LATIN SMALL LETTER P" + string="(p)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒬" + u:name="PARENTHESIZED LATIN SMALL LETTER Q" + string="(q)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒭" + u:name="PARENTHESIZED LATIN SMALL LETTER R" + string="(r)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒮" + u:name="PARENTHESIZED LATIN SMALL LETTER S" + string="(s)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒯" + u:name="PARENTHESIZED LATIN SMALL LETTER T" + string="(t)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒰" + u:name="PARENTHESIZED LATIN SMALL LETTER U" + string="(u)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒱" + u:name="PARENTHESIZED LATIN SMALL LETTER V" + string="(v)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒲" + u:name="PARENTHESIZED LATIN SMALL LETTER W" + string="(w)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒳" + u:name="PARENTHESIZED LATIN SMALL LETTER X" + string="(x)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒴" + u:name="PARENTHESIZED LATIN SMALL LETTER Y" + string="(y)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⒵" + u:name="PARENTHESIZED LATIN SMALL LETTER Z" + string="(z)" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓐ" + u:name="CIRCLED LATIN CAPITAL LETTER A" + string="A" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓑ" + u:name="CIRCLED LATIN CAPITAL LETTER B" + string="B" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓒ" + u:name="CIRCLED LATIN CAPITAL LETTER C" + string="C" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓓ" + u:name="CIRCLED LATIN CAPITAL LETTER D" + string="D" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓔ" + u:name="CIRCLED LATIN CAPITAL LETTER E" + string="E" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓕ" + u:name="CIRCLED LATIN CAPITAL LETTER F" + string="F" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓖ" + u:name="CIRCLED LATIN CAPITAL LETTER G" + string="G" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓗ" + u:name="CIRCLED LATIN CAPITAL LETTER H" + string="H" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓘ" + u:name="CIRCLED LATIN CAPITAL LETTER I" + string="I" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓙ" + u:name="CIRCLED LATIN CAPITAL LETTER J" + string="J" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓚ" + u:name="CIRCLED LATIN CAPITAL LETTER K" + string="K" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓛ" + u:name="CIRCLED LATIN CAPITAL LETTER L" + string="L" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓜ" + u:name="CIRCLED LATIN CAPITAL LETTER M" + string="M" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓝ" + u:name="CIRCLED LATIN CAPITAL LETTER N" + string="N" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓞ" + u:name="CIRCLED LATIN CAPITAL LETTER O" + string="O" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓟ" + u:name="CIRCLED LATIN CAPITAL LETTER P" + string="P" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓠ" + u:name="CIRCLED LATIN CAPITAL LETTER Q" + string="Q" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓡ" + u:name="CIRCLED LATIN CAPITAL LETTER R" + string="R" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓢ" + u:name="CIRCLED LATIN CAPITAL LETTER S" + u:entity="oS" + string="S" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓣ" + u:name="CIRCLED LATIN CAPITAL LETTER T" + string="T" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓤ" + u:name="CIRCLED LATIN CAPITAL LETTER U" + string="U" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓥ" + u:name="CIRCLED LATIN CAPITAL LETTER V" + string="V" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓦ" + u:name="CIRCLED LATIN CAPITAL LETTER W" + string="W" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓧ" + u:name="CIRCLED LATIN CAPITAL LETTER X" + string="X" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓨ" + u:name="CIRCLED LATIN CAPITAL LETTER Y" + string="Y" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="Ⓩ" + u:name="CIRCLED LATIN CAPITAL LETTER Z" + string="Z" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓐ" + u:name="CIRCLED LATIN SMALL LETTER A" + string="a" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓑ" + u:name="CIRCLED LATIN SMALL LETTER B" + string="b" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓒ" + u:name="CIRCLED LATIN SMALL LETTER C" + string="c" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓓ" + u:name="CIRCLED LATIN SMALL LETTER D" + string="d" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓔ" + u:name="CIRCLED LATIN SMALL LETTER E" + string="e" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓕ" + u:name="CIRCLED LATIN SMALL LETTER F" + string="f" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓖ" + u:name="CIRCLED LATIN SMALL LETTER G" + string="g" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓗ" + u:name="CIRCLED LATIN SMALL LETTER H" + string="h" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓘ" + u:name="CIRCLED LATIN SMALL LETTER I" + string="i" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓙ" + u:name="CIRCLED LATIN SMALL LETTER J" + string="j" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓚ" + u:name="CIRCLED LATIN SMALL LETTER K" + string="k" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓛ" + u:name="CIRCLED LATIN SMALL LETTER L" + string="l" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓜ" + u:name="CIRCLED LATIN SMALL LETTER M" + string="m" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓝ" + u:name="CIRCLED LATIN SMALL LETTER N" + string="n" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓞ" + u:name="CIRCLED LATIN SMALL LETTER O" + string="o" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓟ" + u:name="CIRCLED LATIN SMALL LETTER P" + string="p" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓠ" + u:name="CIRCLED LATIN SMALL LETTER Q" + string="q" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓡ" + u:name="CIRCLED LATIN SMALL LETTER R" + string="r" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓢ" + u:name="CIRCLED LATIN SMALL LETTER S" + string="s" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓣ" + u:name="CIRCLED LATIN SMALL LETTER T" + string="t" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓤ" + u:name="CIRCLED LATIN SMALL LETTER U" + string="u" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓥ" + u:name="CIRCLED LATIN SMALL LETTER V" + string="b" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓦ" + u:name="CIRCLED LATIN SMALL LETTER W" + string="w" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓧ" + u:name="CIRCLED LATIN SMALL LETTER X" + string="x" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓨ" + u:name="CIRCLED LATIN SMALL LETTER Y" + string="y" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="ⓩ" + u:name="CIRCLED LATIN SMALL LETTER Z" + string="z" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓪" + u:name="CIRCLED DIGIT ZERO" + string="0" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓫" + u:name="NEGATIVE CIRCLED NUMBER ELEVEN" + string="11" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓬" + u:name="NEGATIVE CIRCLED NUMBER TWELVE" + string="12" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓭" + u:name="NEGATIVE CIRCLED NUMBER THIRTEEN" + string="13" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓮" + u:name="NEGATIVE CIRCLED NUMBER FOURTEEN" + string="14" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓯" + u:name="NEGATIVE CIRCLED NUMBER FIFTEEN" + string="15" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓰" + u:name="NEGATIVE CIRCLED NUMBER SIXTEEN" + string="16" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓱" + u:name="NEGATIVE CIRCLED NUMBER SEVENTEEN" + string="17" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓲" + u:name="NEGATIVE CIRCLED NUMBER EIGHTEEN" + string="18" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓳" + u:name="NEGATIVE CIRCLED NUMBER NINETEEN" + string="19" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓴" + u:name="NEGATIVE CIRCLED NUMBER TWENTY" + string="20" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓵" + u:name="DOUBLE CIRCLED DIGIT ONE" + string="1" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓶" + u:name="DOUBLE CIRCLED DIGIT TWO" + string="2" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓷" + u:name="DOUBLE CIRCLED DIGIT THREE" + string="3" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓸" + u:name="DOUBLE CIRCLED DIGIT FOUR" + string="4" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓹" + u:name="DOUBLE CIRCLED DIGIT FIVE" + string="5" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓺" + u:name="DOUBLE CIRCLED DIGIT SIX" + string="6" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓻" + u:name="DOUBLE CIRCLED DIGIT SEVEN" + string="7" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓼" + u:name="DOUBLE CIRCLED DIGIT EIGHT" + string="8" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓽" + u:name="DOUBLE CIRCLED DIGIT NINE" + string="9" + u:block="Enclosed Alphanumerics" + /> + <xsl:output-character + character="⓾" + u:name="DOUBLE CIRCLED NUMBER TEN" + string="10" + u:block="Enclosed Alphanumerics" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Enclosed Alphanumerics --> + <!-- * ***************************************************************** --> + + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + <!-- * Box Drawing --> + <!-- * x2500 to x257f --> + <!-- * Block Elements --> + <!-- * x2580 to x259f --> + <!-- * - do nothing - --> + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Geometric Shapes --> + <!-- * x25a0 to x25f7 --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="□" + u:name="WHITE SQUARE" + u:entity="squ" + string="\(sq" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="▢" + u:name="WHITE SQUARE WITH ROUNDED CORNERS" + string="\(sq" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="▫" + u:name="WHITE SMALL SQUARE" + string="\(sq" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="►" + u:name="BLACK RIGHT-POINTING POINTER" + string="\fB>\fR" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="▻" + u:name="WHITE RIGHT-POINTING POINTER" + string=">" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="▼" + u:name="BLACK DOWN-POINTING TRIANGLE" + string="\fBv\fR" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="▽" + u:name="WHITE DOWN-POINTING TRIANGLE" + u:entity="xdtri" + string="v" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="◄" + u:name="BLACK LEFT-POINTING POINTER" + string="\fB<\fR" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="◅" + u:name="WHITE LEFT-POINTING POINTER" + string="<" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="◆" + u:name="BLACK DIAMOND" + string="\(DI" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="◇" + u:name="WHITE DIAMOND" + string="\(lz" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="◊" + u:name="LOZENGE" + u:entity="loz" + string="\(lz" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="○" + u:name="WHITE CIRCLE" + u:entity="cir" + string="\(ci" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="●" + u:name="BLACK CIRCLE" + string="\(bu" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="◦" + u:name="WHITE BULLET" + string="\(ci" + u:block="Geometric Shapes" + /> + <xsl:output-character + character="◯" + u:name="LARGE CIRCLE" + u:entity="xcirc" + string="\(ci" + u:block="Geometric Shapes" + /> + <!-- * ***************************************************************** --> + <!-- * End: Geometric Shapes --> + <!-- * x25a0 to x25f7 --> + <!-- * ***************************************************************** --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Miscellaneous Symbols --> + <!-- * x2600 to x26ff --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="☚" + u:name="BLACK LEFT POINTING INDEX" + string="\(lh" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="☛" + u:name="BLACK RIGHT POINTING INDEX" + string="\(rh)" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="☜" + u:name="WHITE LEFT POINTING INDEX" + string="\(lh" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="☞" + u:name="WHITE RIGHT POINTING INDEX" + string="\(rh)" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♠" + u:name="BLACK SPADE SUIT" + u:entity="spades" + string="\(SP" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♡" + u:name="WHITE HEART SUIT" + string="\(HE" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♢" + u:name="WHITE DIAMOND SUIT" + string="\(DI" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♣" + u:name="BLACK CLUB SUIT" + u:entity="clubs" + string="\(CL" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♤" + u:name="WHITE SPADE SUIT" + string="\(SP" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♥" + u:name="BLACK HEART SUIT" + u:entity="hearts" + string="\(HE" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♦" + u:name="BLACK DIAMOND SUIT" + u:entity="diams" + string="\(DI" + u:block="Miscellaneous Symbols" + /> + <xsl:output-character + character="♧" + u:name="WHITE CLUB SUIT" + string="\(CL" + u:block="Miscellaneous Symbols" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Miscellaneous Symbols --> + <!-- * ***************************************************************** --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Dingbats --> + <!-- * x2700 to x27be --> + <!-- * No roff equiv for most of these; just map to something close --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="✓" + u:name="CHECK MARK" + u:entity="check" + string="\(OK" + u:block="Dingbats" + /> + <xsl:output-character + character="✔" + u:name="HEAVY CHECK MARK" + string="\fB\(OK\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✕" + u:name="MULTIPLICATION X" + string="\(mu" + u:block="Dingbats" + /> + <xsl:output-character + character="✖" + u:name="HEAVY MULTIPLICATION X" + string="\fB\(mu\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✗" + u:name="BALLOT X" + u:entity="cross" + string="\(mu" + u:block="Dingbats" + /> + <xsl:output-character + character="✘" + u:name="HEAVY BALLOT X" + string="\fB\(mu\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✙" + u:name="OUTLINED GREEK CROSS" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✚" + u:name="HEAVY GREEK CROSS" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✛" + u:name="OPEN CENTRE CROSS" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✜" + u:name="HEAVY OPEN CENTRE CROSS" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✝" + u:name="LATIN CROSS" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✞" + u:name="SHADOWED WHITE LATIN CROSS" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✟" + u:name="OUTLINED LATIN CROSS" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✠" + u:name="MALTESE CROSS" + u:entity="malt" + string="\fB+\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="✡" + u:name="STAR OF DAVID" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✢" + u:name="FOUR TEARDROP-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✣" + u:name="FOUR BALLOON-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✤" + u:name="HEAVY FOUR BALLOON-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✥" + u:name="FOUR CLUB-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✦" + u:name="BLACK FOUR POINTED STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✧" + u:name="WHITE FOUR POINTED STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✩" + u:name="STRESS OUTLINED WHITE STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✪" + u:name="CIRCLED WHITE STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✫" + u:name="OPEN CENTRE BLACK STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✬" + u:name="BLACK CENTRE WHITE STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✭" + u:name="OUTLINED BLACK STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✮" + u:name="HEAVY OUTLINED BLACK STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✯" + u:name="PINWHEEL STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✰" + u:name="SHADOWED WHITE STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✱" + u:name="HEAVY ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✲" + u:name="OPEN CENTRE ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✳" + u:name="EIGHT SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✴" + u:name="EIGHT POINTED BLACK STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✵" + u:name="EIGHT POINTED PINWHEEL STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✶" + u:name="SIX POINTED BLACK STAR" + u:entity="sext" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✷" + u:name="EIGHT POINTED RECTILINEAR BLACK STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✸" + u:name="HEAVY EIGHT POINTED RECTILINEAR BLACK STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✹" + u:name="TWELVE POINTED BLACK STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✺" + u:name="SIXTEEN POINTED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✻" + u:name="TEARDROP-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✼" + u:name="OPEN CENTRE TEARDROP-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✽" + u:name="HEAVY TEARDROP-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✾" + u:name="SIX PETALLED BLACK AND WHITE FLORETTE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="✿" + u:name="BLACK FLORETTE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❀" + u:name="WHITE FLORETTE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❁" + u:name="EIGHT PETALLED OUTLINED BLACK FLORETTE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❂" + u:name="CIRCLED OPEN CENTRE EIGHT POINTED STAR" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❃" + u:name="HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❄" + u:name="SNOWFLAKE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❅" + u:name="TIGHT TRIFOLIATE SNOWFLAKE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❆" + u:name="HEAVY CHEVRON SNOWFLAKE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❇" + u:name="SPARKLE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❈" + u:name="HEAVY SPARKLE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❉" + u:name="BALLOON-SPOKED ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❊" + u:name="EIGHT TEARDROP-SPOKED PROPELLER ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❋" + u:name="HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❍" + u:name="SHADOWED WHITE CIRCLE" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❏" + u:name="LOWER RIGHT DROP-SHADOWED WHITE SQUARE" + string="\(sq" + u:block="Dingbats" + /> + <xsl:output-character + character="❐" + u:name="UPPER RIGHT DROP-SHADOWED WHITE SQUARE" + string="\(sq" + u:block="Dingbats" + /> + <xsl:output-character + character="❑" + u:name="LOWER RIGHT SHADOWED WHITE SQUARE" + string="\(sq" + u:block="Dingbats" + /> + <xsl:output-character + character="❒" + u:name="UPPER RIGHT SHADOWED WHITE SQUARE" + string="\(sq" + u:block="Dingbats" + /> + <xsl:output-character + character="❖" + u:name="BLACK DIAMOND MINUS WHITE X" + string="*" + u:block="Dingbats" + /> + <xsl:output-character + character="❘" + u:name="LIGHT VERTICAL BAR" + string="\(bv" + u:block="Dingbats" + /> + <xsl:output-character + character="❙" + u:name="MEDIUM VERTICAL BAR" + string="\fB\(bv\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❚" + u:name="HEAVY VERTICAL BAR" + string="\fB\(bv\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❛" + u:name="HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT" + string="\fB\(oq\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❜" + u:name="HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT" + string="\fB\(cq\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❝" + u:name="HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT" + string="\fB\(lq\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❞" + u:name="HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT" + string="\fB\(rq\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❡" + u:name="CURVED STEM PARAGRAPH SIGN ORNAMENT" + string="\(ps" + u:block="Dingbats" + /> + <xsl:output-character + character="❢" + u:name="HEAVY EXCLAMATION MARK ORNAMENT" + string="\fB!\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❣" + u:name="HEAVY HEART EXCLAMATION MARK ORNAMENT" + string="\fB!\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❤" + u:name="HEAVY BLACK HEART" + string="\fB\(HE\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❥" + u:name="ROTATED HEAVY BLACK HEART BULLET" + string="\fB\(HE\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❦" + u:name="FLORAL HEART" + string="\fB\(HE\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❧" + u:name="ROTATED FLORAL HEART BULLET" + string="\fB\(HE\fR" + u:block="Dingbats" + /> + <xsl:output-character + character="❶" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT ONE" + string="1" + u:block="Dingbats" + /> + <xsl:output-character + character="❷" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT TWO" + string="2" + u:block="Dingbats" + /> + <xsl:output-character + character="❸" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT THREE" + string="3" + u:block="Dingbats" + /> + <xsl:output-character + character="❹" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT FOUR" + string="4" + u:block="Dingbats" + /> + <xsl:output-character + character="❺" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT FIVE" + string="5" + u:block="Dingbats" + /> + <xsl:output-character + character="❻" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT SIX" + string="6" + u:block="Dingbats" + /> + <xsl:output-character + character="❼" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT SEVEN" + string="7" + u:block="Dingbats" + /> + <xsl:output-character + character="❽" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT EIGHT" + string="8" + u:block="Dingbats" + /> + <xsl:output-character + character="❾" + u:name="DINGBAT NEGATIVE CIRCLED DIGIT NINE" + string="9" + u:block="Dingbats" + /> + <xsl:output-character + character="❿" + u:name="DINGBAT NEGATIVE CIRCLED NUMBER TEN" + string="10" + u:block="Dingbats" + /> + <xsl:output-character + character="➀" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT ONE" + string="1" + u:block="Dingbats" + /> + <xsl:output-character + character="➁" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT TWO" + string="2" + u:block="Dingbats" + /> + <xsl:output-character + character="➂" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT THREE" + string="3" + u:block="Dingbats" + /> + <xsl:output-character + character="➃" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FOUR" + string="4" + u:block="Dingbats" + /> + <xsl:output-character + character="➄" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT FIVE" + string="5" + u:block="Dingbats" + /> + <xsl:output-character + character="➅" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SIX" + string="6" + u:block="Dingbats" + /> + <xsl:output-character + character="➆" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN" + string="7" + u:block="Dingbats" + /> + <xsl:output-character + character="➇" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT" + string="8" + u:block="Dingbats" + /> + <xsl:output-character + character="➈" + u:name="DINGBAT CIRCLED SANS-SERIF DIGIT NINE" + string="9" + u:block="Dingbats" + /> + <xsl:output-character + character="➉" + u:name="DINGBAT CIRCLED SANS-SERIF NUMBER TEN" + string="10" + u:block="Dingbats" + /> + <xsl:output-character + character="➊" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE" + string="1" + u:block="Dingbats" + /> + <xsl:output-character + character="➋" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO" + string="2" + u:block="Dingbats" + /> + <xsl:output-character + character="➌" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE" + string="3" + u:block="Dingbats" + /> + <xsl:output-character + character="➍" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR" + string="4" + u:block="Dingbats" + /> + <xsl:output-character + character="➎" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE" + string="5" + u:block="Dingbats" + /> + <xsl:output-character + character="➏" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX" + string="6" + u:block="Dingbats" + /> + <xsl:output-character + character="➐" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN" + string="7" + u:block="Dingbats" + /> + <xsl:output-character + character="➑" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT" + string="8" + u:block="Dingbats" + /> + <xsl:output-character + character="➒" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE" + string="9" + u:block="Dingbats" + /> + <xsl:output-character + character="➓" + u:name="DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN" + string="10" + u:block="Dingbats" + /> + <xsl:output-character + character="➔" + u:name="HEAVY WIDE-HEADED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➙" + u:name="HEAVY RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➛" + u:name="DRAFTING POINT RIGHTWARDS ARROW" + string="\(->" + u:block="Dingbats" + /> + <xsl:output-character + character="➜" + u:name="HEAVY ROUND-TIPPED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➝" + u:name="TRIANGLE-HEADED RIGHTWARDS ARROW" + string="\(->" + u:block="Dingbats" + /> + <xsl:output-character + character="➞" + u:name="HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➟" + u:name="DASHED TRIANGLE-HEADED RIGHTWARDS ARROW" + string="\(->" + u:block="Dingbats" + /> + <xsl:output-character + character="➠" + u:name="HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➡" + u:name="BLACK RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➢" + u:name="THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD" + string="\(->" + u:block="Dingbats" + /> + <xsl:output-character + character="➣" + u:name="THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD" + string="\(->" + u:block="Dingbats" + /> + <xsl:output-character + character="➤" + u:name="BLACK RIGHTWARDS ARROWHEAD" + string="\(->" + u:block="Dingbats" + /> + <xsl:output-character + character="➧" + u:name="SQUAT BLACK RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➨" + u:name="HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➩" + u:name="RIGHT-SHADED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➪" + u:name="LEFT-SHADED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➫" + u:name="BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➬" + u:name="FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➭" + u:name="HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➮" + u:name="HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➯" + u:name="NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➱" + u:name="NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➲" + u:name="CIRCLED HEAVY WHITE RIGHTWARDS ARROW" + string="\(rA" + u:block="Dingbats" + /> + <xsl:output-character + character="➳" + u:name="WHITE-FEATHERED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➴" + u:name="BLACK-FEATHERED SOUTH EAST ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➵" + u:name="BLACK-FEATHERED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➶" + u:name="BLACK-FEATHERED NORTH EAST ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➷" + u:name="HEAVY BLACK-FEATHERED SOUTH EAST ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➸" + u:name="HEAVY BLACK-FEATHERED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➹" + u:name="HEAVY BLACK-FEATHERED NORTH EAST ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➺" + u:name="TEARDROP-BARBED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➻" + u:name="HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➼" + u:name="WEDGE-TAILED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➽" + u:name="HEAVY WEDGE-TAILED RIGHTWARDS ARROW" + string="\fR\(->\fB" + u:block="Dingbats" + /> + <xsl:output-character + character="➾" + u:name="OPEN-OUTLINED RIGHTWARDS ARROW" + string="\fR\(rA\fB" + u:block="Dingbats" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Dingbats --> + <!-- * ***************************************************************** --> + + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + <!-- * Miscellaneous Mathematical Symbols --> + <!-- * x27c0 to x27ef --> + <!-- * Supplemental Arrows --> + <!-- * x27f0 to x297f --> + <!-- * Miscellaneous Mathematical Symbols --> + <!-- * x2980 to x29ff --> + <!-- * Supplemental Mathematical Operators --> + <!-- * x2a00 to x2aff --> + <!-- * - no nothing - --> + <!-- * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> + + <!-- * ***************************************************************** --> + <!-- * Begin: Alphabetic Presentation Forms --> + <!-- * xfb00 to xfb04 --> + <!-- * ***************************************************************** --> + + <xsl:output-character + character="ff" + u:name="LATIN SMALL LIGATURE FF" + u:entity="fflig" + string="\(ff" + u:block="Alphabetic Presentation Forms" + /> + <xsl:output-character + character="fi" + u:name="LATIN SMALL LIGATURE FI" + u:entity="filig" + string="\(fi" + u:block="Alphabetic Presentation Forms" + /> + <xsl:output-character + character="fl" + u:name="LATIN SMALL LIGATURE FL" + u:entity="fllig" + string="\(fl" + u:block="Alphabetic Presentation Forms" + /> + <xsl:output-character + character="ffi" + u:name="LATIN SMALL LIGATURE FFI" + u:entity="ffilig" + string="\(Fi" + u:block="Alphabetic Presentation Forms" + /> + <xsl:output-character + character="ffl" + u:name="LATIN SMALL LIGATURE FFL" + u:entity="ffllig" + string="\(Fl" + u:block="Alphabetic Presentation Forms" + /> + + <!-- * ***************************************************************** --> + <!-- * End: Alphabetic Presentation Forms --> + <!-- * ***************************************************************** --> + + <!-- * ================================================================= --> + + <!-- * Regarding x2060 vs. xFEFF, the document "Unicode Standard Annex #14, --> + <!-- * Line Breaking Properties"[1] says: --> + <!-- * --> + <!-- * The word joiner character [x2060 a.k.a "WJ"] is the preferred --> + <!-- * choice for an invisible character to keep other characters --> + <!-- * together that would otherwise be split across the line at a direct --> + <!-- * break. The character FEFF has the same effect, but because it is --> + <!-- * also used in an unrelated way as a byte order mark, the use of the --> + <!-- * WJ as the preferred interword glue simplifies the handling of FEFF. --> + <!-- * --> + <!-- * [1] http://www.unicode.org/reports/tr14/ --> + <!-- * --> + <!-- * We include it here anyway & map to the roff zero-width no-break --> + <xsl:output-character + character="" + u:name="ZERO WIDTH NO-BREAK SPACE" + string="\&" + u:block="Arabic Presentation Forms-B" + /> +</xsl:character-map> +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl new file mode 100644 index 0000000..a0a4251 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl @@ -0,0 +1,311 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + exclude-result-prefixes="exsl" + version='1.0'> + + <xsl:import href="../html/docbook.xsl"/> + <xsl:import href="../html/manifest.xsl"/> + <!-- * html-synop.xsl file is generated by build --> + <xsl:import href="html-synop.xsl"/> + <xsl:output method="text" + encoding="UTF-8" + indent="no"/> + <!-- ******************************************************************** + $Id: docbook.xsl 8841 2010-08-14 07:21:25Z mzjn $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + + <!-- ==================================================================== --> + + <xsl:include href="../common/refentry.xsl"/> + <xsl:include href="../common/charmap.xsl"/> + <xsl:include href="param.xsl"/> + <xsl:include href="utility.xsl"/> + <xsl:include href="info.xsl"/> + <xsl:include href="other.xsl"/> + <xsl:include href="refentry.xsl"/> + <xsl:include href="block.xsl"/> + <xsl:include href="inline.xsl"/> + <xsl:include href="synop.xsl"/> + <xsl:include href="lists.xsl"/> + <xsl:include href="endnotes.xsl"/> + <xsl:include href="table.xsl"/> + <xsl:include href="pi.xsl"/> + + <!-- * we rename the following just to avoid using params with "man" --> + <!-- * prefixes in the table.xsl stylesheet (because that stylesheet --> + <!-- * can potentially be reused for more than just man output) --> + <xsl:param name="tbl.font.headings" select="$man.font.table.headings"/> + <xsl:param name="tbl.font.title" select="$man.font.table.title"/> + + <xsl:param name="stylesheet.result.type" select="'manpages'"/> + + <!-- ==================================================================== --> + + <xsl:template match="/"> + <!-- * Get a title for current doc so that we let the user --> + <!-- * know what document we are processing at this point. --> + <xsl:variable name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:variable> + <xsl:choose> + <!-- * when we find a namespaced document, strip the --> + <!-- * namespace and then continue processing it. --> + <xsl:when test="//self::db:*"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>stripped namespace before processing</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:variable name="stripns"> + <xsl:apply-templates mode="stripNS"/> + </xsl:variable> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>processing stripped document</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates select="exsl:node-set($stripns)"/> + </xsl:when> + <xsl:when test="//*[local-name() = 'refentry']"> + <!-- * Check to see if we have any refentry children in this --> + <!-- * document; if so, process them. The reason we use --> + <!-- * local-name()=refentry (instead of just //refentry) to to --> + <!-- * check for refentry children is because this stylsheet is --> + <!-- * also post-processed by the stylesheet build to create the --> + <!-- * manpages/profile-docbook.xsl, and the refentry child check --> + <!-- * in the profile-docbook.xsl stylesheet won't work if we do --> + <!-- * a simple //refentry check. --> + <xsl:apply-templates select="//refentry"/> + <!-- * if $man.output.manifest.enabled is non-zero, --> + <!-- * generate a manifest file --> + <xsl:if test="not($man.output.manifest.enabled = 0)"> + <xsl:call-template name="generate.manifest"> + <xsl:with-param name="filename"> + <xsl:choose> + <xsl:when test="not($man.output.manifest.filename = '')"> + <!-- * If a name for the manifest file is specified, --> + <!-- * use that name. --> + <xsl:value-of select="$man.output.manifest.filename"/> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise, if user has unset --> + <!-- * $man.output.manifest.filename, default to --> + <!-- * using "MAN.MANIFEST" as the filename. Because --> + <!-- * $man.output.manifest.enabled is non-zero and --> + <!-- * so we must have a filename in order to --> + <!-- * generate the manifest. --> + <xsl:text>MAN.MANIFEST</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise, the document does not contain any --> + <!-- * refentry elements, so log/emit message and stop. --> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Erro</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text> no refentry</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>No refentry elements found</xsl:text> + <xsl:if test="$doc.title != ''"> + <xsl:text> in "</xsl:text> + <xsl:choose> + <xsl:when test="string-length($doc.title) > 30"> + <xsl:value-of select="substring($doc.title,1,30)"/> + <xsl:text>...</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$doc.title"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>"</xsl:text> + </xsl:if> + <xsl:text>.</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- ============================================================== --> + + <xsl:template match="refentry"> + <xsl:param name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:param> + <!-- * Just use the first refname found as the "name" of the man --> + <!-- * page (which may different from the "title"...) --> + <xsl:variable name="first.refname" select="refnamediv[1]/refname[1]"/> + + <xsl:call-template name="root.messages"> + <xsl:with-param name="refname" select="$first.refname"/> + </xsl:call-template> + + <!-- * Because there are several times when we need to check *info of --> + <!-- * each refentry and its ancestors, we get those and store the --> + <!-- * data from them as a node-set in memory. --> + + <!-- * Make a node-set with contents of *info --> + <xsl:variable name="get.info" + select="ancestor-or-self::*/*[substring(local-name(), + string-length(local-name()) - 3) = 'info']" + /> + <xsl:variable name="info" select="exsl:node-set($get.info)"/> + + <!-- * The get.refentry.metadata template is in --> + <!-- * ../common/refentry.xsl. It looks for metadata in $info --> + <!-- * and in various other places and then puts it into a form --> + <!-- * that's easier for us to digest. --> + <xsl:variable name="get.refentry.metadata"> + <xsl:call-template name="get.refentry.metadata"> + <xsl:with-param name="refname" select="$first.refname"/> + <xsl:with-param name="info" select="$info"/> + <xsl:with-param name="prefs" select="$refentry.metadata.prefs"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="refentry.metadata" select="exsl:node-set($get.refentry.metadata)"/> + + <!-- * Assemble the various parts into a complete page, then store into --> + <!-- * $manpage.contents so that we can manipluate them further. --> + <xsl:variable name="manpage.contents"> + <!-- * preprocessor invocation (need for legacy AT&T troff use) --> + <!-- * this tells troff to pre-process the page through tbl(1) --> + <!-- * (groff can figure it out automatically, but AT&T troff can't) --> + <xsl:text>'\" t </xsl:text> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * top.comment = commented-out section at top of roff source --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="top.comment"> + <xsl:with-param name="info" select="$info"/> + <xsl:with-param name="date" select="$refentry.metadata/date"/> + <xsl:with-param name="title" select="$refentry.metadata/title"/> + <xsl:with-param name="manual" select="$refentry.metadata/manual"/> + <xsl:with-param name="source" select="$refentry.metadata/source"/> + <xsl:with-param name="refname" select="$first.refname"/> + </xsl:call-template> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * TH.title.line = title line in header/footer of man page --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="TH.title.line"> + <!-- * .TH TITLE section extra1 extra2 extra3 --> + <!-- * --> + <!-- * According to the man(7) man page: --> + <!-- * --> + <!-- * extra1 = date, "the date of the last revision" --> + <!-- * extra2 = source, "the source of the command" --> + <!-- * extra3 = manual, "the title of the manual --> + <!-- * (e.g., Linux Programmer's Manual)" --> + <!-- * --> + <!-- * So, we end up with: --> + <!-- * --> + <!-- * .TH TITLE section date source manual --> + <!-- * --> + <xsl:with-param name="title" select="$refentry.metadata/title"/> + <xsl:with-param name="section" select="$refentry.metadata/section"/> + <xsl:with-param name="extra1" select="$refentry.metadata/date"/> + <xsl:with-param name="extra2" select="$refentry.metadata/source"/> + <xsl:with-param name="extra3" select="$refentry.metadata/manual"/> + </xsl:call-template> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * (re)define some macros --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="define.portability.macros"/> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:call-template name="define.macros"/> + </xsl:if> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * Set default hyphenation, justification, indentation, and --> + <!-- * line-breaking --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="set.default.formatting"/> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * Main body of man page --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:text>.\" * MAIN CONTENT STARTS HERE * </xsl:text> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:apply-templates/> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * AUTHOR section --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:if test="not($man.authors.section.enabled = 0)"> + <xsl:call-template name="author.section"> + <xsl:with-param name="info" select="$info"/> + </xsl:call-template> + </xsl:if> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * COPYRIGHT section --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:if test="not($man.copyright.section.enabled = 0)"> + <xsl:call-template name="copyright.section"> + <xsl:with-param name="info" select="$info"/> + </xsl:call-template> + </xsl:if> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * NOTES list (only if user wants endnotes numbered and/or listed) --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:if test="$man.endnotes.list.enabled != 0 or + $man.endnotes.are.numbered != 0"> + <xsl:call-template name="endnotes.list"/> + </xsl:if> + </xsl:variable> <!-- * end of manpage.contents --> + + <!-- * Prepare the page contents for final output, then store in --> + <!-- * $manpage.contents.prepared so the we can pass it on to the --> + <!-- * write.text.chunk() function --> + <xsl:variable name="manpage.contents.prepared"> + <!-- * "Preparing" the page contents involves, at a minimum, --> + <!-- * doubling any backslashes found (so they aren't interpreted --> + <!-- * as roff escapes). --> + <!-- * --> + <!-- * If $charmap.enabled is true, "preparing" the page contents also --> + <!-- * involves applying a character map to convert Unicode symbols and --> + <!-- * special characters into corresponding roff escape sequences. --> + <xsl:call-template name="prepare.manpage.contents"> + <xsl:with-param name="content" select="$manpage.contents"/> + </xsl:call-template> + </xsl:variable> + + <!-- * Write the prepared page contents to disk to create --> + <!-- * the final man page. --> + <xsl:call-template name="write.man.file"> + <xsl:with-param name="name" select="$first.refname"/> + <xsl:with-param name="section" select="$refentry.metadata/section"/> + <xsl:with-param name="lang" select="$lang"/> + <xsl:with-param name="content" select="$manpage.contents.prepared"/> + </xsl:call-template> + + <!-- * Generate "stub" (alias) pages (if any needed) --> + <xsl:call-template name="write.stubs"> + <xsl:with-param name="first.refname" select="$first.refname"/> + <xsl:with-param name="section" select="$refentry.metadata/section"/> + <xsl:with-param name="lang" select="$lang"/> + </xsl:call-template> + + </xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl new file mode 100644 index 0000000..8e52e01 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl @@ -0,0 +1,586 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" + exclude-result-prefixes="db ng exsl xlink" + version='1.0'> + +<!-- ******************************************************************** + $Id: endnotes.xsl 8703 2010-07-06 20:57:06Z nwalsh $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- * --> +<!-- * The templates in this file handle elements whose contents can't --> +<!-- * be displayed completely within the main text flow in output, but --> +<!-- * instead need to be displayed "out of line". Those elements are: --> +<!-- * --> +<!-- * - elements providing annotative text (annotation|alt|footnote) --> +<!-- * - elements pointing at external resources (ulink, link, and --> +<!-- * any elements with xlink:href attributes; and imagedata, --> +<!-- * audiodata, and videodata - which (using their fileref --> +<!-- * attribute) reference external files --> +<!-- * --> +<!-- * Within this stylesheet, the above are collectively referred to as --> +<!-- * a "notesources". This stylesheet handles those notesources in --> +<!-- * this way: --> +<!-- * --> +<!-- * 1. Constructs a numbered in-memory index of all unique "earmarks“ --> +<!-- * of all notesources in the document. For each link, the --> +<!-- * earmark is the value of its url or xlink:href attribute; for --> +<!-- * each imagedata|audiodata|videodata: the value of its fileref --> +<!-- * attribute; for each annotative element: its content. --> +<!-- * --> +<!-- * Notesources with the same earmark are assigned the same --> +<!-- * number. --> +<!-- * --> +<!-- * By design, that index excludes any element whose string value --> +<!-- * is identical to the value of its url xlink:href attribute). --> +<!-- * --> +<!-- * 2. Puts a numbered marker inline to mark the place where the --> +<!-- * notesource occurs in the main text flow. --> +<!-- * --> +<!-- * 3. Generates a numbered endnotes list (titled NOTES in English) --> +<!-- * at the end of the man page, with the contents of each --> +<!-- * notesource. --> +<!-- * --> +<!-- * Note that table footnotes are not listed in the endnotes list, --> +<!-- * and are not handled by this stylesheet (they are instead handled --> +<!-- * by the table.xsl stylesheet). --> +<!-- * --> +<!-- * Also, we don't get notesources in *info sections or Refmeta or --> +<!-- * Refnamediv or Indexterm, because, in manpages output, contents of --> +<!-- * those are either suppressed or are displayed out of document --> +<!-- * order - for example, the Info/Author content gets moved to the --> +<!-- * end of the page. So, if we were to number notesources in the --> +<!-- * Author content, it would "throw off" the numbering at the --> +<!-- * beginning of the main text flow. --> +<!-- * --> +<!-- * And for the record, one reason we don't use xsl:key to index the --> +<!-- * earmarks is that we need to get and check the sets of --> +<!-- * earmarks for uniqueness per-Refentry (not per-document). --> +<!-- * --> +<!-- * FIXME: --> +<!-- * as with "repeat" URLS, alt instances that have the same string value --> +<!-- * as preceding ones (likely to occur for repeat acroynyms and --> +<!-- * abbreviations) should be listed only once in the endnotes list, --> +<!-- * and numbered accordingly inline; split man.indent.width into --> +<!-- * man.indent.width.value (default 4) and man.indent.width.units --> +<!-- * (default n); also, if the first child of notesource is some block --> +<!-- * content other than a (non-formal) paragraph, the current code --> +<!-- * will probably end up generating a blank line after the --> +<!-- * corresponding number in the endnotes list... we should probably --> +<!-- * try to instead display the title of that block content there (if --> +<!-- * there is one: e.g., the list title, admonition title, etc.) --> + +<!-- ==================================================================== --> + +<xsl:template name="get.all.earmark.indexes.in.current.document"> + <!-- * Here we create a tree to hold indexes of all earmarks in --> + <!-- * the current document. If the current document contains --> + <!-- * multiple refentry instances, then this tree will contain --> + <!-- * multiple indexes. --> + <xsl:if test="$man.endnotes.are.numbered != 0"> + <!-- * Only create earmark indexes if user wants numbered endnotes --> + <xsl:for-each select="//refentry"> + <earmark.index> + <xsl:attribute name="idref"> + <xsl:value-of select="generate-id()"/> + </xsl:attribute> + <xsl:for-each + select=".//*[self::*[@xlink:href] + or self::ulink + or self::imagedata + or self::audiodata + or self::videodata + or self::footnote[not(ancestor::table)] + or self::annotation + or self::alt] + [(node() + or self::imagedata + or self::audiodata + or self::videodata + ) + and not(ancestor::refentryinfo) + and not(ancestor::info) + and not(ancestor::docinfo) + and not(ancestor::refmeta) + and not(ancestor::refnamediv) + and not(ancestor::indexterm) + and not(. = @url) + and not(. = @xlink:href) + and not(@url = + preceding::ulink[node() + and not(ancestor::refentryinfo) + and not(ancestor::info) + and not(ancestor::docinfo) + and not(ancestor::refmeta) + and not(ancestor::refnamediv) + and not(ancestor::indexterm) + and (generate-id(ancestor::refentry) + = generate-id(current()))]/@url) + and not(@xlink:href = + preceding::*[@xlink:href][node() + and not(ancestor::refentryinfo) + and not(ancestor::info) + and not(ancestor::docinfo) + and not(ancestor::refmeta) + and not(ancestor::refnamediv) + and not(ancestor::indexterm) + and (generate-id(ancestor::refentry) + = generate-id(current()))]/@xlink:href) + and not(@fileref = + preceding::*[@fileref][ + not(ancestor::refentryinfo) + and not(ancestor::info) + and not(ancestor::docinfo) + and not(ancestor::refmeta) + and not(ancestor::refnamediv) + and not(ancestor::indexterm) + and (generate-id(ancestor::refentry) + = generate-id(current()))]/@fileref)]"> + <earmark> + <xsl:attribute name="id"> + <xsl:value-of select="generate-id()"/> + </xsl:attribute> + <xsl:attribute name="number"> + <xsl:value-of select="position()"/> + </xsl:attribute> + <xsl:if test="@url|@xlink:href|@fileref"> + <!-- * Only add a uri attribute if the notesource is --> + <!-- * a link or an element that references an external --> + <!-- * (an imagedata, audiodata, or videodata element) --> + <xsl:attribute name="uri"> + <xsl:value-of select="@url|@xlink:href|@fileref"/> + </xsl:attribute> + </xsl:if> + <xsl:copy> + <xsl:copy-of select="node()"/> + </xsl:copy> + </earmark> + </xsl:for-each> + </earmark.index> + </xsl:for-each> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*[@xlink:href]|ulink + |imagedata|audiodata|videodata + |footnote[not(ancestor::table)] + |annotation|alt"> + <xsl:variable name="refname" select="ancestor::refentry/refnamediv[1]/refname[1]"/> + <xsl:variable name="all.earmark.indexes.in.current.document.rtf"> + <xsl:call-template name="get.all.earmark.indexes.in.current.document"/> + </xsl:variable> + <xsl:variable name="all.earmark.indexes.in.current.document" + select="exsl:node-set($all.earmark.indexes.in.current.document.rtf)"/> + <xsl:variable name="all.earmarks.in.current.refentry.rtf"> + <!-- * get the set of all earmarks for the ancestor Refentry of --> + <!-- * this notesource --> + <xsl:copy-of + select="$all.earmark.indexes.in.current.document/earmark.index + [@idref = + generate-id(current()/ancestor::refentry)]/earmark"/> + </xsl:variable> + <xsl:variable name="all.earmarks.in.current.refentry" + select="exsl:node-set($all.earmarks.in.current.refentry.rtf)"/> + + <!-- * identify the earmark for the current element --> + <xsl:variable name="earmark"> + <xsl:choose> + <xsl:when test="@url|@xlink:href"> + <xsl:value-of select="@url|@xlink:href"/> + </xsl:when> + <xsl:when test="@fileref"> + <xsl:value-of select="@fileref"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="generate-id()"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="notesource.number"> + <!-- * Get the number for this notesource --> + <!-- * --> + <!-- * If this is an imagedata, audiodata, or videodata element --> + <!-- * OR if it's a non-empty element AND its string value is not --> + <!-- * equal to the value of its url or xlink:href attribute (if --> + <!-- * it has one) AND user wants endnotes numbered, only then --> + <!-- * do we output a number for it --> + <xsl:if test="(self::imagedata or + self::audiodata or + self::videodata or + (node() + and not(. = @url) + and not(. = @xlink:href)) + ) + and $man.endnotes.are.numbered != 0"> + <!-- * To select the number for this notesource, we --> + <!-- * check the index of all earmarks for the current refentry --> + <!-- * and find the number of the indexed earmark which matches --> + <!-- * this notesource's earmark. --> + <!-- * Note that multiple notesources may share the same --> + <!-- * numbered earmark; in that case, they get the same number. --> + <!-- * --> + <xsl:choose> + <xsl:when test="self::ulink or + self::*[@xlink:href] or + self::imagedata or + self::audiodata or + self::videodata"> + <xsl:value-of select="$all.earmarks.in.current.refentry/earmark[@uri = $earmark]/@number"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$all.earmarks.in.current.refentry/earmark[@id = $earmark]/@number"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:variable> + + <xsl:variable name="notesource.contents"> + <xsl:choose> + <!-- * check to see if the element is empty or not --> + <xsl:when test="node()"> + <!-- * this is a non-empty node, so process its contents --> + <xsl:apply-templates/> + <xsl:if test="../footnote or ../annotation"> + <!-- * if this element is a footnote or annotation, we need to --> + <!-- * do some further checking on it, so we can emit warnings --> + <!-- * about potential problems --> + <xsl:for-each select="node()"> + <xsl:if test="local-name() != 'para' and + local-name() != 'simpara' and + local-name() !=''"> + <!-- * for each node we find as a child of a footnote or --> + <!-- * annotation, if it's not a para or a text node, emit a --> + <!-- * warning... because in manpages output, we can't render --> + <!-- * block-level child content of an endnote properly unless --> + <!-- * it's wrapped in a para that has some "prefatory" text --> + <xsl:variable name="parent-name" select="local-name(..)"/> + <xsl:variable name="endnote-number"> + <xsl:call-template name="pad-string"> + <!-- * endnote number may be 2 digits, so pad it with a space --> + <!-- * if we have only 1 digit --> + <xsl:with-param name="padVar" select="concat('#',$notesource.number)"/> + <xsl:with-param name="length" select="3"/> + </xsl:call-template> + </xsl:variable> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Warn</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc"> + <xsl:text>endnote </xsl:text> + <xsl:value-of select="$endnote-number"/> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>Bad: </xsl:text> + <xsl:value-of select="$parent-name"/> + <!-- * figure out which occurance of this element type this --> + <!-- * instance is and output a number in square brackets so --> + <!-- * that end-user can know which element to fix --> + <xsl:text>[</xsl:text> + <xsl:value-of select="count(preceding::*[local-name() = $parent-name]) + 1"/> + <xsl:text>]</xsl:text> + <xsl:text> in source</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc"> + <xsl:text>endnote </xsl:text> + <xsl:value-of select="$endnote-number"/> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>Has: </xsl:text> + <xsl:value-of select="$parent-name"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="local-name(.)"/> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc"> + <xsl:text>endnote </xsl:text> + <xsl:value-of select="$endnote-number"/> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>Fix: </xsl:text> + <xsl:value-of select="$parent-name"/> + <xsl:text>/</xsl:text> + <xsl:text>para/</xsl:text> + <xsl:value-of select="local-name(.)"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:for-each> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise this is an empty link or an empty imagedata, --> + <!-- * audiodata, or videodata element, so we just get the --> + <!-- * value of its url, xlink:href, or fileref attribute. --> + <xsl:if test="$man.hyphenate.urls = 0 + and $man.break.after.slash = 0"> + <!-- * Add hyphenation suppression in URL output only if --> + <!-- * break.after.slash is also non-zero --> + <xsl:call-template name="suppress.hyphenation"/> + <xsl:text>\%</xsl:text> + </xsl:if> + <xsl:value-of select="$earmark"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:if test="self::ulink or self::*[@xlink:href]"> + <xsl:variable name="link.wrapper"> + <xsl:value-of select="normalize-space($notesource.contents)"/> + </xsl:variable> + <xsl:text>\m[blue]</xsl:text> + <!-- * This is a hyperlink, so we need to determine if the user wants --> + <!-- * font formatting applied to it, and if so, what font --> + <xsl:choose> + <xsl:when test="$man.font.links = 'B'"> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="exsl:node-set($link.wrapper)"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$man.font.links = 'I'"> + <xsl:call-template name="italic"> + <xsl:with-param name="node" select="exsl:node-set($link.wrapper)"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$man.font.links = ''"> + <!-- * if man.font.links is empty, user doesn't want links --> + <!-- * underlined, so just display content --> + <xsl:value-of select="$notesource.contents"/> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise the user has specified an unsupported value for --> + <!-- * man.font.links, so emit a warning and don't apply any font --> + <!-- * formatting --> + <xsl:message> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Warn</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc"> + <xsl:text>link font</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>invalid $man.font.links value: </xsl:text> + <xsl:text>'</xsl:text> + <xsl:value-of select="$man.font.links"/> + <xsl:text>'</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:message> + <xsl:value-of select="$notesource.contents"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>\m[]</xsl:text> + </xsl:if> + + <xsl:if test="$notesource.number != ''"> + <!-- * Format the number by placing it in square brackets. --> + <!-- * Also, set the number in font-size -2, and superscripted (\u --> + <!-- * means to move up half a line vertically) --> + <xsl:text>\&\s-2\u[</xsl:text> + <xsl:value-of select="$notesource.number"/> + <xsl:text>]\d\s+2</xsl:text> + <!-- * Revert superscripting (\d means to move down half a line), and --> + <!-- * move the font-size back to what it was before. --> + <!-- * Note that the reason for the \& before the opening bracket --> + <!-- * is to prevent any possible linebreak from being introduced --> + <!-- * between the opening bracket and the following text. --> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="endnotes.list"> + <!-- We have stored earmark indexes for all refentry instances in the --> + <!-- current document, with the ID for each index being the same ID as --> + <!-- its corresponding refentry; so we now need to get the ID for the --> + <!-- current refentry so we can grab its corresponding earmark index --> + <xsl:variable name="current.refentry.id"> + <xsl:value-of select="generate-id(.)"/> + </xsl:variable> + + <xsl:variable name="endnotes.rtf"> + <xsl:variable name="all.earmark.indexes.in.current.document.rtf"> + <xsl:call-template name="get.all.earmark.indexes.in.current.document"/> + </xsl:variable> + <xsl:variable name="all.earmark.indexes.in.current.document" + select="exsl:node-set($all.earmark.indexes.in.current.document.rtf)"/> + <xsl:copy-of + select="$all.earmark.indexes.in.current.document/earmark.index + [@idref = $current.refentry.id]/earmark"/> + </xsl:variable> + + <xsl:variable name="endnotes" select="exsl:node-set($endnotes.rtf)"/> + + <!-- * check to see if we have actually found any content to use as --> + <!-- * endnotes; if we have, we generate the endnotes list, if not, --> + <!-- * we do nothing --> + <xsl:if test="$endnotes/node()"> + <xsl:call-template name="format.endnotes.list"> + <xsl:with-param name="endnotes" select="$endnotes"/> + </xsl:call-template> + </xsl:if> + +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="format.endnotes.list"> + <xsl:param name="endnotes"/> + + <!-- * ======= make the endnotes-list section heading ============= --> + <xsl:call-template name="make.subheading"> + <xsl:with-param name="title"> + <xsl:choose> + <!-- * if user has specified a heading, use that --> + <xsl:when test="$man.endnotes.list.heading != ''"> + <xsl:value-of select="$man.endnotes.list.heading"/> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise, get localized heading from gentext --> + <!-- * (in English, NOTES) --> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Notes'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + + <!-- * ================ process each earmark ====================== --> + <xsl:for-each select="$endnotes/earmark"> + <!-- * make paragraph with hanging indent, and starting with a --> + <!-- * number in the form " 1." (padded to $man.indent.width - 1) --> + <xsl:text>.IP</xsl:text> + <xsl:text> "</xsl:text> + <xsl:variable name="endnote.number"> + <xsl:value-of select="@number"/> + <xsl:text>.</xsl:text> + </xsl:variable> + <xsl:call-template name="pad-string"> + <xsl:with-param name="padVar" select="$endnote.number"/> + <!-- FIXME: the following assumes that $man.indent.width is in --> + <!-- en's; also, this should probably use $list.indent instead --> + <xsl:with-param name="length" select="$man.indent.width - 1"/> + </xsl:call-template> + <xsl:text>"</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + + <!-- * ========================================================= --> + <!-- * print the notesource/endnote contents --> + <!-- * ========================================================= --> + <xsl:choose> + <xsl:when test="*/node()"> + <!-- * if the earmark has non-empty child content, then --> + <!-- * its corresponding notesource is either a link or --> + <!-- * an instance of annotative text, so we want to --> + <!-- * display that content --> + <xsl:choose> + <xsl:when test="*/node()[name(.)!='']"> + <!-- * if node is not text only, then process it as-is --> + <xsl:apply-templates select="*/node()"/> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise node is text-only, so normalize it --> + <xsl:value-of select="normalize-space(*/node())"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise, this earmark has empty content, --> + <!-- * which means its corresponding notesource is an --> + <!-- * imagedata, audiodata, or videodata instance; in --> + <!-- * that case, we use the value of the notesource's --> + <!-- * @fileref attribute (which is stored in the --> + <!-- * earmark uri attribute) as the "contents" for --> + <!-- * this endnote/notesource --> + <xsl:call-template name="display.uri"> + <xsl:with-param name="uri" select="@uri"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + <xsl:text> </xsl:text> + + <!-- * ========================================================= --> + <!-- * print the URL for links --> + <!-- * ========================================================= --> + <!-- * In addition to the notesource contents, if the --> + <!-- * notesource is a link, we display the URL for the link. --> + <!-- * But for notesources that are imagedata, audiodata, or --> + <!-- * videodata instances, we don't want to (re)display the --> + <!-- * URL for those here, because for those elements, the --> + <!-- * notesource contents are the URL (the value of the --> + <!-- * @fileref attribute), and we have already rendered them. --> + <!-- * --> + <!-- * We know an earmark is a link if it has non-empty child --> + <!-- * content and a uri attribute; so we check for that --> + <!-- * condition here. --> + <xsl:if test="*/node() and @uri"> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <!-- * Add hyphenation suppression in URL output only if --> + <!-- * $break.after.slash is also non-zero --> + <xsl:if test="$man.hyphenate.urls = 0 + and $man.break.after.slash = 0"> + <xsl:call-template name="suppress.hyphenation"/> + <xsl:text>\%</xsl:text> + </xsl:if> + <xsl:call-template name="display.uri"> + <xsl:with-param name="uri" select="@uri"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:text>.RE</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + + </xsl:for-each> +</xsl:template> + +<xsl:template name="display.uri"> + <xsl:param name="uri"/> + <xsl:choose> + <xsl:when test="contains($uri, ':')"> + <!-- * if this URI contains a colon character, it’s probably --> + <!-- * an absolute URI with a scheme, so we output it as-is --> + <xsl:value-of select="$uri"/> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise this is probably not an absolute URI, so we --> + <!-- * need to prepend $man.base.url.for.relative.links to --> + <!-- * give the URI some "context" in man-page output --> + <xsl:value-of + select="concat($man.base.url.for.relative.links, $uri)"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl new file mode 100644 index 0000000..06c3eb2 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl @@ -0,0 +1,1567 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<!-- ******************************************************************** + $Id: synop.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- synopsis is in verbatim --> + +<!-- ==================================================================== --> + +<xsl:template match="cmdsynopsis"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <p> + <xsl:if test="..//processing-instruction('dbcmdlist')"> + <!-- * Placing a dbcmdlist PI as a child of a particular element --> + <!-- * creates a hyperlinked list of all cmdsynopsis instances --> + <!-- * that are descendants of that element; so for any --> + <!-- * cmdsynopsis that is a descendant of an element containing --> + <!-- * a dbcmdlist PI, we need to output an a@id instance so that --> + <!-- * we will have something to link to --> + <xsl:call-template name="anchor"> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates/> + </p> + </div> +</xsl:template> + +<xsl:template match="cmdsynopsis/command"> + <xsl:text> +. +</xsl:text> + <xsl:call-template name="inline.monoseq"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="cmdsynopsis/command[1]" priority="2"> + <xsl:call-template name="inline.monoseq"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="group|arg" name="group-or-arg"> + <xsl:variable name="choice" select="@choice"/> + <xsl:variable name="rep" select="@rep"/> + <xsl:variable name="sepchar"> + <xsl:choose> + <xsl:when test="ancestor-or-self::*/@sepchar"> + <xsl:value-of select="ancestor-or-self::*/@sepchar"/> + </xsl:when> + <xsl:otherwise> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:if test="preceding-sibling::*"> + <xsl:value-of select="$sepchar"/> + </xsl:if> + <xsl:choose> + <xsl:when test="$choice='plain'"> + <xsl:value-of select="$arg.choice.plain.open.str"/> + </xsl:when> + <xsl:when test="$choice='req'"> + <xsl:value-of select="$arg.choice.req.open.str"/> + </xsl:when> + <xsl:when test="$choice='opt'"> + <xsl:value-of select="$arg.choice.opt.open.str"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$arg.choice.def.open.str"/> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates/> + <xsl:choose> + <xsl:when test="$rep='repeat'"> + <xsl:value-of select="$arg.rep.repeat.str"/> + </xsl:when> + <xsl:when test="$rep='norepeat'"> + <xsl:value-of select="$arg.rep.norepeat.str"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$arg.rep.def.str"/> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="$choice='plain'"> + <xsl:value-of select="$arg.choice.plain.close.str"/> + </xsl:when> + <xsl:when test="$choice='req'"> + <xsl:value-of select="$arg.choice.req.close.str"/> + </xsl:when> + <xsl:when test="$choice='opt'"> + <xsl:value-of select="$arg.choice.opt.close.str"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$arg.choice.def.close.str"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="group/arg"> + <xsl:variable name="choice" select="@choice"/> + <xsl:variable name="rep" select="@rep"/> + <xsl:if test="preceding-sibling::*"> + <xsl:value-of select="$arg.or.sep"/> + </xsl:if> + <xsl:call-template name="group-or-arg"/> +</xsl:template> + +<xsl:template match="sbr"> + <xsl:text> +. +</xsl:text> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="synopfragmentref"> + <xsl:variable name="target" select="key('id',@linkend)"/> + <xsl:variable name="snum"> + <xsl:apply-templates select="$target" mode="synopfragment.number"/> + </xsl:variable> + <i> + <a href="#{@linkend}"> + <xsl:text>(</xsl:text> + <xsl:value-of select="$snum"/> + <xsl:text>)</xsl:text> + </a> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + </i> +</xsl:template> + +<xsl:template match="synopfragment" mode="synopfragment.number"> + <xsl:number format="1"/> +</xsl:template> + +<xsl:template match="synopfragment"> + <xsl:variable name="snum"> + <xsl:apply-templates select="." mode="synopfragment.number"/> + </xsl:variable> + <!-- You can't introduce another <p> here, because you're + already in a <p> from cmdsynopsis--> + <span> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <a name="{$id}"> + <xsl:text>(</xsl:text> + <xsl:value-of select="$snum"/> + <xsl:text>)</xsl:text> + </a> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + </span> +</xsl:template> + +<xsl:template match="funcsynopsis"> + <xsl:if test="..//processing-instruction('dbfunclist')"> + <!-- * Placing a dbfunclist PI as a child of a particular element --> + <!-- * creates a hyperlinked list of all funcsynopsis instances that --> + <!-- * are descendants of that element; so for any funcsynopsis that is --> + <!-- * a descendant of an element containing a dbfunclist PI, we need --> + <!-- * to output an a@id instance so that we will have something to --> + <!-- * link to --> + <xsl:call-template name="anchor"> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + </xsl:if> + <xsl:call-template name="informal.object"/> +</xsl:template> + +<xsl:template match="funcsynopsisinfo"> + <xsl:text>.sp +</xsl:text><xsl:text>.nf +</xsl:text><pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </pre><xsl:text/><xsl:text>.fi +</xsl:text> +</xsl:template> + +<!-- ====================================================================== --> +<!-- funcprototype --> +<!-- + +funcprototype ::= (funcdef, + (void|varargs|paramdef+)) + +funcdef ::= (#PCDATA|type|replaceable|function)* + +paramdef ::= (#PCDATA|type|replaceable|parameter|funcparams)* +--> + +<xsl:template match="funcprototype"> + <xsl:variable name="html-style"> + <xsl:call-template name="pi.dbhtml_funcsynopsis-style"> + <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="style"> + <xsl:choose> + <xsl:when test="$html-style != ''"> + <xsl:value-of select="$html-style"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$funcsynopsis.style"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + +<!-- * 2008-02-17. the code no longer relies on the funcsynopsis.tabular.threshold --> +<!-- * param at all (the stuff below has been commented out since mid --> +<!-- * 2006), so I completely removed the funcsynopsis.tabular.threshold param --> +<!-- * .. MikeSmith --> +<!-- + <xsl:variable name="tabular-p" + select="$funcsynopsis.tabular.threshold > 0 + and string-length(.) > $funcsynopsis.tabular.threshold"/> +--> + + <xsl:variable name="tabular-p" select="true()"/> + + <xsl:choose> + <xsl:when test="$style = 'kr' and $tabular-p"> + <xsl:apply-templates select="." mode="kr-tabular"/> + </xsl:when> + <xsl:when test="$style = 'kr'"> + <xsl:apply-templates select="." mode="kr-nontabular"/> + </xsl:when> + <xsl:when test="$style = 'ansi' and $tabular-p"> + <xsl:apply-templates select="." mode="ansi-tabular"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="ansi-nontabular"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ====================================================================== --> +<!-- funcprototype: kr, non-tabular --> + +<xsl:template match="funcprototype" mode="kr-nontabular"> + <p> + <xsl:apply-templates mode="kr-nontabular"/> + <xsl:if test="paramdef"> + <xsl:text> +. +</xsl:text> + <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/> + </xsl:if> + </p> +</xsl:template> + +<xsl:template match="funcdef" mode="kr-nontabular"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="kr-nontabular"/> + <xsl:text>(</xsl:text> + </code> +</xsl:template> + +<xsl:template match="funcdef/function" mode="kr-nontabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="kr-nontabular"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="void" mode="kr-nontabular"> + <code>)</code> + <xsl:text>;</xsl:text> +</xsl:template> + +<xsl:template match="varargs" mode="kr-nontabular"> + <xsl:text>...</xsl:text> + <code>)</code> + <xsl:text>;</xsl:text> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-nontabular"> + <xsl:apply-templates select="parameter" mode="kr-nontabular"/> + <xsl:choose> + <xsl:when test="following-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:when> + <xsl:otherwise> + <code>)</code> + <xsl:text>;</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef/parameter" mode="kr-nontabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <var class="pdparam"> + <xsl:apply-templates mode="kr-nontabular"/> + </var> + </xsl:when> + <xsl:otherwise> + <code> + <xsl:apply-templates mode="kr-nontabular"/> + </code> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-funcsynopsis-mode"> + <xsl:if test="preceding-sibling::paramdef"><xsl:text> +. +</xsl:text></xsl:if> + <code> + <xsl:apply-templates mode="kr-funcsynopsis-mode"/> + </code> + <xsl:text>;</xsl:text> +</xsl:template> + +<xsl:template match="paramdef/parameter" mode="kr-funcsynopsis-mode"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <var class="pdparam"> + <xsl:apply-templates mode="kr-funcsynopsis-mode"/> + </var> + </xsl:when> + <xsl:otherwise> + <code> + <xsl:apply-templates mode="kr-funcsynopsis-mode"/> + </code> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="funcparams" mode="kr-funcsynopsis-mode"> + <code>(</code> + <xsl:apply-templates mode="kr-funcsynopsis-mode"/> + <code>)</code> +</xsl:template> + +<!-- ====================================================================== --> +<!-- funcprototype: kr, tabular --> + +<xsl:template match="funcprototype" mode="kr-tabular"> + <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"> + <tr> + <td> + <xsl:apply-templates select="funcdef" mode="kr-tabular"/> + </td> + <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="kr-tabular"/> + </tr> + <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]"> + <tr> + <td> </td> + <xsl:apply-templates select="." mode="kr-tabular"/> + </tr> + </xsl:for-each> + </table> + <xsl:if test="paramdef"> + <div class="paramdef-list"> + <xsl:apply-templates select="paramdef" mode="kr-funcsynopsis-mode"/> + </div> + </xsl:if> + <div class="funcprototype-spacer"> </div> <!-- hACk: blank div for vertical spacing --> +</xsl:template> + +<xsl:template match="funcdef" mode="kr-tabular"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="kr-tabular"/> + <xsl:text>(</xsl:text> + </code> +</xsl:template> + +<xsl:template match="funcdef/function" mode="kr-tabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <b class="fsfunc"><xsl:apply-templates mode="kr-nontabular"/></b> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="kr-tabular"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="void" mode="kr-tabular"> + <td> + <code>)</code> + <xsl:text>;</xsl:text> + </td> + <td> </td> +</xsl:template> + +<xsl:template match="varargs" mode="kr-tabular"> + <td> + <xsl:text>...</xsl:text> + <code>)</code> + <xsl:text>;</xsl:text> + </td> + <td> </td> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-tabular"> + <td> + <xsl:apply-templates select="parameter" mode="kr-tabular"/> + <xsl:choose> + <xsl:when test="following-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:when> + <xsl:otherwise> + <code>)</code> + <xsl:text>;</xsl:text> + </xsl:otherwise> + </xsl:choose> + </td> + <td> </td> +</xsl:template> + +<xsl:template match="paramdef/parameter" mode="kr-tabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <var class="pdparam"> + <xsl:apply-templates mode="kr-tabular"/> + </var> + </xsl:when> + <xsl:otherwise> + <code> + <xsl:apply-templates mode="kr-tabular"/> + </code> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-tabular-funcsynopsis-mode"> + <xsl:variable name="type"> + <xsl:choose> + <xsl:when test="type"> + <xsl:apply-templates select="type" mode="kr-tabular-funcsynopsis-mode"/> + </xsl:when> + <xsl:when test="normalize-space(parameter/preceding-sibling::node()[not(self::parameter)]) != ''"> + <xsl:copy-of select="parameter/preceding-sibling::node()[not(self::parameter)]"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <tr> + <xsl:choose> + <xsl:when test="$type != '' and funcparams"> + <td> + <code> + <xsl:copy-of select="$type"/> + </code> + <xsl:text> </xsl:text> + </td> + <td> + <code> + <xsl:choose> + <xsl:when test="type"> + <xsl:apply-templates select="type/following-sibling::*" mode="kr-tabular-funcsynopsis-mode"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*" mode="kr-tabular-funcsynopsis-mode"/> + </xsl:otherwise> + </xsl:choose> + </code> + </td> + </xsl:when> + + <xsl:when test="funcparams"> + <td colspan="2"> + <code> + <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/> + </code> + </td> + </xsl:when> + + <xsl:otherwise> + <td> + <code> + <xsl:apply-templates select="parameter/preceding-sibling::node()[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/> + </code> + <xsl:text> </xsl:text> + </td> + <td> + <code> + <xsl:apply-templates select="parameter" mode="kr-tabular"/> + <xsl:apply-templates select="parameter/following-sibling::*[not(self::parameter)]" mode="kr-tabular-funcsynopsis-mode"/> + <xsl:text>;</xsl:text> + </code> + </td> + </xsl:otherwise> + </xsl:choose> + </tr> +</xsl:template> + +<xsl:template match="paramdef/parameter" mode="kr-tabular-funcsynopsis-mode"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <var class="pdparam"> + <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/> + </var> + </xsl:when> + <xsl:otherwise> + <code> + <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/> + </code> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="funcparams" mode="kr-tabular-funcsynopsis-mode"> + <code>(</code> + <xsl:apply-templates mode="kr-tabular-funcsynopsis-mode"/> + <code>)</code> + <xsl:text>;</xsl:text> +</xsl:template> + +<!-- ====================================================================== --> +<!-- funcprototype: ansi, non-tabular --> + +<xsl:template match="funcprototype" mode="ansi-nontabular"> + <p> + <xsl:apply-templates mode="ansi-nontabular"/> + </p> +</xsl:template> + +<xsl:template match="funcdef" mode="ansi-nontabular"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="ansi-nontabular"/> + <xsl:text>(</xsl:text> + </code> +</xsl:template> + +<xsl:template match="funcdef/function" mode="ansi-nontabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="ansi-nontabular"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="void" mode="ansi-nontabular"> + <code>void)</code> + <xsl:text>;</xsl:text> +</xsl:template> + +<xsl:template match="varargs" mode="ansi-nontabular"> + <xsl:text>...</xsl:text> + <code>)</code> + <xsl:text>;</xsl:text> +</xsl:template> + +<xsl:template match="paramdef" mode="ansi-nontabular"> + <xsl:apply-templates mode="ansi-nontabular"/> + <xsl:choose> + <xsl:when test="following-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:when> + <xsl:otherwise> + <code>)</code> + <xsl:text>;</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef/parameter" mode="ansi-nontabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <var class="pdparam"> + <xsl:apply-templates mode="ansi-nontabular"/> + </var> + </xsl:when> + <xsl:otherwise> + <code> + <xsl:apply-templates mode="ansi-nontabular"/> + </code> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="funcparams" mode="ansi-nontabular"> + <code>(</code> + <xsl:apply-templates mode="ansi-nontabular"/> + <code>)</code> +</xsl:template> + +<!-- ====================================================================== --> +<!-- funcprototype: ansi, tabular --> + +<xsl:template match="funcprototype" mode="ansi-tabular"> + <table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"> + <tr> + <td> + <xsl:apply-templates select="funcdef" mode="ansi-tabular"/> + </td> + <xsl:apply-templates select="(void|varargs|paramdef)[1]" mode="ansi-tabular"/> + </tr> + <xsl:for-each select="(void|varargs|paramdef)[preceding-sibling::*[not(self::funcdef)]]"> + <tr> + <td> </td> + <xsl:apply-templates select="." mode="ansi-tabular"/> + </tr> + </xsl:for-each> + </table> + <div class="funcprototype-spacer"> </div> <!-- hACk: blank div for vertical spacing --> +</xsl:template> + +<xsl:template match="funcdef" mode="ansi-tabular"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="ansi-tabular"/> + <xsl:text>(</xsl:text> + </code> +</xsl:template> + +<xsl:template match="funcdef/function" mode="ansi-tabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <b class="fsfunc"><xsl:apply-templates mode="ansi-nontabular"/></b> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="kr-tabular"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="void" mode="ansi-tabular"> + <td> + <code>void)</code> + <xsl:text>;</xsl:text> + </td> + <td> </td> +</xsl:template> + +<xsl:template match="varargs" mode="ansi-tabular"> + <td> + <xsl:text>...</xsl:text> + <code>)</code> + <xsl:text>;</xsl:text> + </td> + <td> </td> +</xsl:template> + +<xsl:template match="paramdef" mode="ansi-tabular"> + <td> + <xsl:apply-templates mode="ansi-tabular"/> + <xsl:choose> + <xsl:when test="following-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:when> + <xsl:otherwise> + <code>)</code> + <xsl:text>;</xsl:text> + </xsl:otherwise> + </xsl:choose> + </td> +</xsl:template> + +<xsl:template match="paramdef/parameter" mode="ansi-tabular"> + <xsl:choose> + <xsl:when test="$funcsynopsis.decoration != 0"> + <var class="pdparam"> + <xsl:apply-templates mode="ansi-tabular"/> + </var> + </xsl:when> + <xsl:otherwise> + <code> + <xsl:apply-templates mode="ansi-tabular"/> + </code> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="funcparams" mode="ansi-tabular"> + <code>(</code> + <xsl:apply-templates/> + <code>)</code> +</xsl:template> + +<!-- ====================================================================== --> + +<xsl:variable name="default-classsynopsis-language">java</xsl:variable> + +<xsl:template match="classsynopsis |fieldsynopsis |methodsynopsis |constructorsynopsis |destructorsynopsis"> + <xsl:param name="language"> + <xsl:choose> + <xsl:when test="@language"> + <xsl:value-of select="@language"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default-classsynopsis-language"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:choose> + <xsl:when test="$language='java' or $language='Java'"> + <xsl:apply-templates select="." mode="java"/> + </xsl:when> + <xsl:when test="$language='perl' or $language='Perl'"> + <xsl:apply-templates select="." mode="perl"/> + </xsl:when> + <xsl:when test="$language='idl' or $language='IDL'"> + <xsl:apply-templates select="." mode="idl"/> + </xsl:when> + <xsl:when test="$language='cpp' or $language='c++' or $language='C++'"> + <xsl:apply-templates select="." mode="cpp"/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Unrecognized language on </xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text>: </xsl:text> + <xsl:value-of select="$language"/> + </xsl:message> + <xsl:apply-templates select="."> + <xsl:with-param name="language" select="$default-classsynopsis-language"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="synop-break"> + <xsl:if test="parent::classsynopsis or (following-sibling::fieldsynopsis |following-sibling::methodsynopsis |following-sibling::constructorsynopsis |following-sibling::destructorsynopsis)"> + <xsl:text> +. +</xsl:text> + </xsl:if> +</xsl:template> + + +<!-- ===== Java ======================================================== --> + +<xsl:template match="classsynopsis" mode="java"> + <xsl:text>.sp +</xsl:text><xsl:text>.nf +</xsl:text><pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="ooclass[1]" mode="java"/> + <xsl:if test="ooclass[preceding-sibling::*]"> + <xsl:text> extends</xsl:text> + <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="java"/> + <xsl:if test="oointerface|ooexception"> + <xsl:text> +. +</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + <xsl:if test="oointerface"> + <xsl:text>implements</xsl:text> + <xsl:apply-templates select="oointerface" mode="java"/> + <xsl:if test="ooexception"> + <xsl:text> +. +</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + <xsl:if test="ooexception"> + <xsl:text>throws</xsl:text> + <xsl:apply-templates select="ooexception" mode="java"/> + </xsl:if> + <xsl:text> {</xsl:text> + <xsl:text> +. +</xsl:text> + <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="java"/> + <xsl:text>}</xsl:text> + </pre><xsl:text/><xsl:text>.fi +</xsl:text> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="java"> + <xsl:apply-templates mode="java"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="java"> + <xsl:choose> + <xsl:when test="preceding-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template match="modifier|package" mode="java"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + <xsl:if test="following-sibling::*"> + <xsl:text> </xsl:text> + </xsl:if> + </span> +</xsl:template> + +<xsl:template match="classname" mode="java"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template match="interfacename" mode="java"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template match="exceptionname" mode="java"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="java"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="parent::classsynopsis"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates mode="java"/> + <xsl:text>;</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="java"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="varname" mode="java"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="initializer" mode="java"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>= </xsl:text> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template match="void" mode="java"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>void </xsl:text> + </span> +</xsl:template> + +<xsl:template match="methodname" mode="java"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template match="methodparam" mode="java"> + <xsl:param name="indent">0</xsl:param> + <xsl:if test="preceding-sibling::methodparam"> + <xsl:text>,</xsl:text> + <xsl:text> +. +</xsl:text> + <xsl:if test="$indent > 0"> + <xsl:call-template name="copy-string"> + <xsl:with-param name="string"> </xsl:with-param> + <xsl:with-param name="count" select="$indent + 1"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template match="parameter" mode="java"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="java"/> + </span> +</xsl:template> + +<xsl:template mode="java" match="constructorsynopsis|destructorsynopsis|methodsynopsis"> + <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> + <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> + <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + <xsl:variable name="decl"> + <xsl:if test="parent::classsynopsis"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates select="$start-modifiers" mode="java"/> + + <!-- type --> + <xsl:if test="local-name($notmod[1]) != 'methodname'"> + <xsl:apply-templates select="$notmod[1]" mode="java"/> + </xsl:if> + + <xsl:apply-templates select="methodname" mode="java"/> + </xsl:variable> + + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:copy-of select="$decl"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="methodparam" mode="java"> + <xsl:with-param name="indent" select="string-length($decl)"/> + </xsl:apply-templates> + <xsl:text>)</xsl:text> + <xsl:if test="exceptionname"> + <xsl:text> +. +</xsl:text> + <xsl:text> throws </xsl:text> + <xsl:apply-templates select="exceptionname" mode="java"/> + </xsl:if> + <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> + <xsl:text> </xsl:text> + <xsl:apply-templates select="$end-modifiers" mode="java"/> + </xsl:if> + <xsl:text>;</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== C++ ========================================================= --> + +<xsl:template match="classsynopsis" mode="cpp"> + <xsl:text>.sp +</xsl:text><xsl:text>.nf +</xsl:text><pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="ooclass[1]" mode="cpp"/> + <xsl:if test="ooclass[preceding-sibling::*]"> + <xsl:text>: </xsl:text> + <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="cpp"/> + <xsl:if test="oointerface|ooexception"> + <xsl:text> +. +</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + <xsl:if test="oointerface"> + <xsl:text> implements</xsl:text> + <xsl:apply-templates select="oointerface" mode="cpp"/> + <xsl:if test="ooexception"> + <xsl:text> +. +</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + <xsl:if test="ooexception"> + <xsl:text> throws</xsl:text> + <xsl:apply-templates select="ooexception" mode="cpp"/> + </xsl:if> + <xsl:text> {</xsl:text> + <xsl:text> +. +</xsl:text> + <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="cpp"/> + <xsl:text>}</xsl:text> + </pre><xsl:text/><xsl:text>.fi +</xsl:text> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="cpp"> + <xsl:apply-templates mode="cpp"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="cpp"> + <xsl:if test="preceding-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template match="modifier|package" mode="cpp"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + <xsl:if test="following-sibling::*"> + <xsl:text> </xsl:text> + </xsl:if> + </span> +</xsl:template> + +<xsl:template match="classname" mode="cpp"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template match="interfacename" mode="cpp"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template match="exceptionname" mode="cpp"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="cpp"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="parent::classsynopsis"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates mode="cpp"/> + <xsl:text>;</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="cpp"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="varname" mode="cpp"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="initializer" mode="cpp"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>= </xsl:text> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template match="void" mode="cpp"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>void </xsl:text> + </span> +</xsl:template> + +<xsl:template match="methodname" mode="cpp"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template match="methodparam" mode="cpp"> + <xsl:if test="preceding-sibling::methodparam"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template match="parameter" mode="cpp"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="cpp"/> + </span> +</xsl:template> + +<xsl:template mode="cpp" match="constructorsynopsis|destructorsynopsis|methodsynopsis"> + <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> + <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> + <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="parent::classsynopsis"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates select="$start-modifiers" mode="cpp"/> + + <!-- type --> + <xsl:if test="local-name($notmod[1]) != 'methodname'"> + <xsl:apply-templates select="$notmod[1]" mode="cpp"/> + </xsl:if> + + <xsl:apply-templates select="methodname" mode="cpp"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="methodparam" mode="cpp"/> + <xsl:text>)</xsl:text> + <xsl:if test="exceptionname"> + <xsl:text> +. +</xsl:text> + <xsl:text> throws </xsl:text> + <xsl:apply-templates select="exceptionname" mode="cpp"/> + </xsl:if> + <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> + <xsl:text> </xsl:text> + <xsl:apply-templates select="$end-modifiers" mode="cpp"/> + </xsl:if> + <xsl:text>;</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== IDL ========================================================= --> + +<xsl:template match="classsynopsis" mode="idl"> + <xsl:text>.sp +</xsl:text><xsl:text>.nf +</xsl:text><pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>interface </xsl:text> + <xsl:apply-templates select="ooclass[1]" mode="idl"/> + <xsl:if test="ooclass[preceding-sibling::*]"> + <xsl:text>: </xsl:text> + <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="idl"/> + <xsl:if test="oointerface|ooexception"> + <xsl:text> +. +</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + <xsl:if test="oointerface"> + <xsl:text> implements</xsl:text> + <xsl:apply-templates select="oointerface" mode="idl"/> + <xsl:if test="ooexception"> + <xsl:text> +. +</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + <xsl:if test="ooexception"> + <xsl:text> throws</xsl:text> + <xsl:apply-templates select="ooexception" mode="idl"/> + </xsl:if> + <xsl:text> {</xsl:text> + <xsl:text> +. +</xsl:text> + <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="idl"/> + <xsl:text>}</xsl:text> + </pre><xsl:text/><xsl:text>.fi +</xsl:text> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="idl"> + <xsl:apply-templates mode="idl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="idl"> + <xsl:if test="preceding-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template match="modifier|package" mode="idl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + <xsl:if test="following-sibling::*"> + <xsl:text> </xsl:text> + </xsl:if> + </span> +</xsl:template> + +<xsl:template match="classname" mode="idl"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template match="interfacename" mode="idl"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template match="exceptionname" mode="idl"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="idl"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="parent::classsynopsis"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates mode="idl"/> + <xsl:text>;</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="idl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="varname" mode="idl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="initializer" mode="idl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>= </xsl:text> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template match="void" mode="idl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>void </xsl:text> + </span> +</xsl:template> + +<xsl:template match="methodname" mode="idl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template match="methodparam" mode="idl"> + <xsl:if test="preceding-sibling::methodparam"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template match="parameter" mode="idl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="idl"/> + </span> +</xsl:template> + +<xsl:template mode="idl" match="constructorsynopsis|destructorsynopsis|methodsynopsis"> + <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> + <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> + <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="parent::classsynopsis"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates select="$start-modifiers" mode="idl"/> + + <!-- type --> + <xsl:if test="local-name($notmod[1]) != 'methodname'"> + <xsl:apply-templates select="$notmod[1]" mode="idl"/> + </xsl:if> + + <xsl:apply-templates select="methodname" mode="idl"/> + <xsl:text>(</xsl:text> + <xsl:apply-templates select="methodparam" mode="idl"/> + <xsl:text>)</xsl:text> + <xsl:if test="exceptionname"> + <xsl:text> +. +</xsl:text> + <xsl:text> raises(</xsl:text> + <xsl:apply-templates select="exceptionname" mode="idl"/> + <xsl:text>)</xsl:text> + </xsl:if> + <xsl:if test="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"> + <xsl:text> </xsl:text> + <xsl:apply-templates select="$end-modifiers" mode="idl"/> + </xsl:if> + <xsl:text>;</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- ===== Perl ======================================================== --> + +<xsl:template match="classsynopsis" mode="perl"> + <xsl:text>.sp +</xsl:text><xsl:text>.nf +</xsl:text><pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>package </xsl:text> + <xsl:apply-templates select="ooclass[1]" mode="perl"/> + <xsl:text>;</xsl:text> + <xsl:text> +. +</xsl:text> + + <xsl:if test="ooclass[preceding-sibling::*]"> + <xsl:text>@ISA = (</xsl:text> + <xsl:apply-templates select="ooclass[preceding-sibling::*]" mode="perl"/> + <xsl:text>);</xsl:text> + <xsl:text> +. +</xsl:text> + </xsl:if> + + <xsl:apply-templates select="constructorsynopsis |destructorsynopsis |fieldsynopsis |methodsynopsis |classsynopsisinfo" mode="perl"/> + </pre><xsl:text/><xsl:text>.fi +</xsl:text> +</xsl:template> + +<xsl:template match="classsynopsisinfo" mode="perl"> + <xsl:apply-templates mode="perl"/> +</xsl:template> + +<xsl:template match="ooclass|oointerface|ooexception" mode="perl"> + <xsl:if test="preceding-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template match="modifier|package" mode="perl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + <xsl:if test="following-sibling::*"> + <xsl:text> </xsl:text> + </xsl:if> + </span> +</xsl:template> + +<xsl:template match="classname" mode="perl"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'classname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template match="interfacename" mode="perl"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'interfacename'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template match="exceptionname" mode="perl"> + <xsl:if test="local-name(preceding-sibling::*[1]) = 'exceptionname'"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template match="fieldsynopsis" mode="perl"> + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="parent::classsynopsis"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates mode="perl"/> + <xsl:text>;</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<xsl:template match="type" mode="perl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="varname" mode="perl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + <xsl:text> </xsl:text> + </span> +</xsl:template> + +<xsl:template match="initializer" mode="perl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>= </xsl:text> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template match="void" mode="perl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>void </xsl:text> + </span> +</xsl:template> + +<xsl:template match="methodname" mode="perl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template match="methodparam" mode="perl"> + <xsl:if test="preceding-sibling::methodparam"> + <xsl:text>, </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template match="parameter" mode="perl"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="perl"/> + </span> +</xsl:template> + +<xsl:template mode="perl" match="constructorsynopsis|destructorsynopsis|methodsynopsis"> + <xsl:variable name="start-modifiers" select="modifier[following-sibling::*[local-name(.) != 'modifier']]"/> + <xsl:variable name="notmod" select="*[local-name(.) != 'modifier']"/> + <xsl:variable name="end-modifiers" select="modifier[preceding-sibling::*[local-name(.) != 'modifier']]"/> + + <code> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>sub </xsl:text> + + <xsl:apply-templates select="methodname" mode="perl"/> + <xsl:text> { ... };</xsl:text> + </code> + <xsl:call-template name="synop-break"/> +</xsl:template> + +<!-- Used when not occurring as a child of classsynopsis --> +<xsl:template match="ooclass|oointerface|ooexception"> + <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * DocBook 5 allows linking elements (link, olink, and xref) --> +<!-- * within the OO *synopsis elements (classsynopsis, fieldsynopsis, --> +<!-- * methodsynopsis, constructorsynopsis, destructorsynopsis) and --> +<!-- * their children. So we need to have mode="java|cpp|idl|perl" --> +<!-- * per-mode matches for those linking elements in order for them --> +<!-- * to be processed as expected. --> + +<xsl:template match="link|olink|xref" mode="java"> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="link|olink|xref" mode="cpp"> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="link|olink|xref" mode="idl"> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="link|olink|xref" mode="perl"> + <xsl:apply-templates select="."/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl new file mode 100644 index 0000000..6698fb9 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl @@ -0,0 +1,800 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:date="http://exslt.org/dates-and-times" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="date exsl" + version='1.0'> + +<!-- ******************************************************************** + $Id: info.xsl 7883 2008-03-08 17:59:39Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + + <xsl:variable name="blurb-indent"> + <xsl:choose> + <xsl:when test="not($man.indent.blurbs = 0)"> + <xsl:value-of select="$man.indent.width"/> + </xsl:when> + <xsl:when test="not($man.indent.refsect = 0)"> + <!-- * "zq" is the name of a register we set for --> + <!-- * preserving the original default indent value --> + <!-- * when $man.indent.refsect is non-zero; --> + <!-- * "u" is a roff unit specifier --> + <xsl:text>\n(zqu</xsl:text> + </xsl:when> + <xsl:otherwise/> <!-- * otherwise, just leave it empty --> + </xsl:choose> + </xsl:variable> + + <!-- ================================================================== --> + <!-- * About the $info param used in this stylesheet --> + <!-- * --> + <!-- * The $info param is a "master info" node set that contains --> + <!-- * the entire contents of the *info child of the current --> + <!-- * Refentry, plus the entire contents of the *info children of --> + <!-- * all ancestors of the current Refentry, in document order. --> + <!-- * --> + <!-- * We try to find a "best match" for selecting content from --> + <!-- * $infor; we look through it in reverse document order until we --> + <!-- * can find something usable. --> + <!-- * --> + <!-- * Specifically what the basic metadata-gathering XPath expression --> + <!-- * in this stylesheet does is: --> + <!-- * --> + <!-- * 1. Look through the entire "master info" node set.--> + <!-- * 2. Get the last node in the set that contains, for --> + <!-- * example, an Author element. That amounts to being the --> + <!-- * closest *info node to the Refentry - either its *info --> + <!-- * child, or the *info node of its closest ancestor that --> + <!-- * contains an Author. --> + + <!-- ================================================================== --> + <!-- * Get user "refentry metadata" preferences --> + <!-- ================================================================== --> + <!-- * The DocBook XSL stylesheets include several user-configurable --> + <!-- * global stylesheet parameters for controlling refentry metadata --> + <!-- * gathering. Those parameters are not read directly by the other --> + <!-- * refentry metadata-gathering templates. Instead, they are read --> + <!-- * only by the get.refentry.metadata.prefs template, which --> + <!-- * assembles them into a structure that is then passed to the --> + <!-- * other refentry metadata-gathering template. --> + + <xsl:variable name="get.refentry.metadata.prefs"> + <!-- * get.refentry.metadata.prefs is in common/refentry.xsl --> + <xsl:call-template name="get.refentry.metadata.prefs"/> + </xsl:variable> + + <xsl:variable name="refentry.metadata.prefs" + select="exsl:node-set($get.refentry.metadata.prefs)"/> + + <!-- * ============================================================== --> + <!-- * Get content for Author metadata field. --> + <!-- * ============================================================== --> + + <!-- * The make.roff.metatada.author template and metadata.author --> + <!-- * mode are used only for populating the Author field in the --> + <!-- * metadata "top comment" we embed in roff source of each page. --> + <xsl:template name="make.roff.metadata.author"> + <xsl:param name="info"/> + <xsl:param name="refname"/> + <xsl:choose> + <xsl:when test="$info//author"> + <xsl:apply-templates + select="(($info[//author])[last()]//author)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:when test="$info//corpauthor"> + <xsl:apply-templates + select="(($info[//corpauthor])[last()]//corpauthor)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:when test="$info//editor"> + <xsl:apply-templates + select="(($info[//editor])[last()]//editor)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:when test="$info//corpcredit"> + <xsl:apply-templates + select="(($info[//corpcredit])[last()]//corpcredit)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:when test="$info//othercredit"> + <xsl:apply-templates + select="(($info[//othercredit])[last()]//othercredit)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:when test="$info//collab"> + <xsl:apply-templates + select="(($info[//collab])[last()]//collab)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:when test="$info//orgname"> + <xsl:apply-templates + select="(($info[//orgname])[last()]//orgname)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:when test="$info//publishername"> + <xsl:apply-templates + select="(($info[//publishername])[last()]//publishername)[1]" + mode="metadata.author"/> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise, we need to check to see if we have an "Author" --> + <!-- * or "Authors" section in the refentry --> + <xsl:variable name="gentext.author"> + <xsl:text>"</xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Author'"/> + </xsl:call-template> + <xsl:text>"</xsl:text> + </xsl:variable> + <xsl:variable name="gentext.AUTHOR"> + <xsl:if test="not($gentext.author = '')"> + <xsl:call-template name="string.upper"> + <xsl:with-param name="string" select="$gentext.author"/> + </xsl:call-template> + </xsl:if> + </xsl:variable> + <xsl:variable name="gentext.authors"> + <xsl:text>"</xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Authors'"/> + </xsl:call-template> + <xsl:text>"</xsl:text> + </xsl:variable> + <xsl:variable name="gentext.AUTHORS"> + <xsl:if test="not($gentext.authors = '')"> + <xsl:call-template name="string.upper"> + <xsl:with-param name="string" select="$gentext.authors"/> + </xsl:call-template> + </xsl:if> + </xsl:variable> + <!-- * get all refentry/refsect1/title & refentry/refsection/title --> + <!-- * instances, delimit each with double quotes, and put them --> + <!-- * into a single refsect1.titles string --> + <xsl:variable name="refsect1.titles"> + <xsl:for-each select="refsect1/title"> + <xsl:text>"</xsl:text> + <xsl:value-of select="normalize-space(.)"/> + <xsl:text>"</xsl:text> + <xsl:text> </xsl:text> + </xsl:for-each> + <xsl:for-each select="refsection/title"> + <xsl:text>"</xsl:text> + <xsl:value-of select="normalize-space(.)"/> + <xsl:text>"</xsl:text> + <xsl:text> </xsl:text> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="author.section.title"> + <xsl:choose> + <xsl:when test="not($gentext.authors = '') and + contains($refsect1.titles,$gentext.authors)"> + <xsl:value-of select="$gentext.authors"/> + </xsl:when> + <xsl:when test="not($gentext.AUTHORS = '') and + contains($refsect1.titles,$gentext.AUTHORS)"> + <xsl:value-of select="$gentext.AUTHORS"/> + </xsl:when> + <xsl:when test="not($gentext.author = '') and + contains($refsect1.titles,$gentext.author)"> + <xsl:value-of select="$gentext.author"/> + </xsl:when> + <xsl:when test="not($gentext.AUTHOR = '') and + contains($refsect1.titles,$gentext.AUTHOR)"> + <xsl:value-of select="$gentext.AUTHOR"/> + </xsl:when> + <!-- * git docs (for one) use "DOCUMENTATION" for their authors section --> + <xsl:when test="contains($refsect1.titles,'Documentation')"> + <xsl:text>Documentation</xsl:text> + </xsl:when> + <xsl:when test="contains($refsect1.titles,'DOCUMENTATION')"> + <xsl:text>DOCUMENTATION</xsl:text> + </xsl:when> + <xsl:otherwise/> <!-- * otherwise, leave empty --> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="not($author.section.title = '')"> + <!-- * if we have a non-empty $author.section.title value, --> + <!-- * then reference that title (instead of putting a --> + <!-- * specific author name) --> + <xsl:text>[see the </xsl:text> + <xsl:value-of select="$author.section.title"/> + <xsl:text> section]</xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise we have no info/author content and no Author --> + <!-- * or Authors section, so we insert a fixme and report --> + <!-- * the problem to the user --> + <xsl:text>[FIXME: author] [see http://docbook.sf.net/el/author]</xsl:text> + <xsl:if test="$refentry.meta.get.quietly = 0"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Warn</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc">meta author</xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>no refentry/info/author</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc">meta author</xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>see http://docbook.sf.net/el/author</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Warn</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc">meta author</xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>no author data, so inserted a fixme</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="author|editor|othercredit|collab" mode="metadata.author"> + <xsl:choose> + <xsl:when test="collabname"> + <!-- * If this node is a Collab, then it should have a --> + <!-- * Collabname child, so get that. --> + <xsl:variable name="contents"> + <xsl:apply-templates select="collabname"/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise, this node is not a Collab, but instead --> + <!-- * an author|editor|othercredit, which must have a name --> + <!-- * of some kind; so get that name --> + <xsl:call-template name="person.name.normalized"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test=".//email|address/otheraddr/ulink"> + <xsl:text> </xsl:text> + <!-- * For each attribution found, use only the first e-mail --> + <!-- * address or ulink value found --> + <xsl:apply-templates select="(.//email|address/otheraddr/ulink)[1]" + mode="metadata.author"/> + </xsl:if> + </xsl:template> + + <xsl:template match="email|address/otheraddr/ulink" mode="metadata.author"> + <xsl:text><</xsl:text> + <xsl:choose> + <xsl:when test="self::email"> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + </xsl:when> + <xsl:when test="self::ulink"> + <xsl:variable name="contents"> + <xsl:apply-templates select="."/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + </xsl:when> + </xsl:choose> + <xsl:text>></xsl:text> + </xsl:template> + + <xsl:template match="corpauthor|corpcredit|orgname|publishername" mode="metadata.author"> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + </xsl:template> + + <!-- * ============================================================== --> + <!-- * Assemble the AUTHOR/AUTHORS section --> + <!-- * ============================================================== --> + + <xsl:template name="author.section"> + <xsl:param name="info"/> + <!-- * The $info param is a "master info" node set that contains --> + <!-- * the entires contents of the *info child of the current --> + <!-- * Refentry, plus the entire contents of the *info children of --> + <!-- * all ancestors of the current Refentry, in document order. --> + <xsl:choose> + <xsl:when test="$info//author|$info//editor|$info//collab| + $info//corpauthor|$info//corpcredit| + $info//othercredit|$info/orgname| + $info/publishername|$info/publisher"> + <xsl:variable name="authorcount"> + <xsl:value-of + select="count( + $info//author|$info//editor|$info//collab| + $info//corpauthor|$info//corpcredit| + $info//othercredit)"> + </xsl:value-of> + </xsl:variable> + <xsl:call-template name="make.subheading"> + <xsl:with-param name="title"> + <xsl:call-template name="make.authorsecttitle"> + <xsl:with-param name="authorcount" select="$authorcount"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + <!-- * Now output all the actual author, editor, etc. content --> + <xsl:for-each + select="$info//author|$info//editor|$info//collab| + $info//corpauthor|$info//corpcredit| + $info//othercredit|$info/orgname| + $info/publishername|$info/publisher"> + <xsl:apply-templates select="." mode="authorsect"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise/> <!-- * do nothing, no author info found --> + </xsl:choose> + </xsl:template> + + <xsl:template name="make.authorsecttitle"> + <!-- * If we have exactly one attributable person/entity, then output --> + <!-- * localized gentext for 'Author'; otherwise, output 'Authors'. --> + <xsl:param name="authorcount"/> + <xsl:param name="authorsecttitle"> + <xsl:choose> + <xsl:when test="$authorcount = 1"> + <xsl:text>Author</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>Authors</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="$authorsecttitle"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="author|editor|othercredit" mode="authorsect"> + <xsl:variable name="person-name"> + <xsl:call-template name="person.name.normalized"/> + </xsl:variable> + <!-- * If we have a person-name or email or ulink content, then --> + <!-- * output name and email or ulink content on the same line --> + <xsl:choose> + <xsl:when test="not($person-name = '') or .//email or address/otheraddr/ulink"> + <xsl:text>.PP </xsl:text> + <!-- * Display person name in bold --> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="exsl:node-set($person-name)"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <!-- * Display e-mail address(es) and ulink(s) on same line as name --> + <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>.br </xsl:text> + </xsl:otherwise> + </xsl:choose> + <!-- * Display affiliation(s) on separate lines --> + <xsl:apply-templates select="affiliation" mode="authorsect"/> + <!-- * Display direct-child addresses on separate lines --> + <xsl:apply-templates select="address" mode="authorsect"/> + <!-- * Call template for handling various attribution possibilities --> + <xsl:call-template name="attribution"> + <xsl:with-param name="person-name" select="$person-name"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="collab" mode="authorsect"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="collabname"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <!-- * Display e-mail address(es) and ulink(s) on same line as name --> + <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/> + <xsl:text> </xsl:text> + <!-- * Display affilition(s) on separate lines --> + <xsl:apply-templates select="affiliation" mode="authorsect"/> + </xsl:template> + + <xsl:template match="corpauthor|corpcredit|orgname|publishername" mode="authorsect"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:if test="self::publishername"> + <!-- * Display localized "Publisher" gentext --> + <xsl:call-template name="publisher.attribution"/> + </xsl:if> + </xsl:template> + + <xsl:template match="publisher" mode="authorsect"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="publishername"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <!-- * Display e-mail address(es) and ulink(s) on same line as name --> + <xsl:apply-templates select=".//email|address/otheraddr/ulink" mode="authorsect"/> + <!-- * Display addresses on separate lines --> + <xsl:apply-templates select="address" mode="authorsect"/> + <!-- * Display localized "Publisher" literal --> + <xsl:call-template name="publisher.attribution"/> + </xsl:template> + + <xsl:template name="publisher.attribution"> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($blurb-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$blurb-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Publisher'"/> + </xsl:call-template> + <xsl:text>. </xsl:text> + <xsl:text>.RE </xsl:text> + </xsl:template> + + <xsl:template match="email|address/otheraddr/ulink" mode="authorsect"> + <xsl:choose> + <xsl:when test="preceding-sibling::*[descendant-or-self::email] + or preceding-sibling::address/otheraddr/ulink + or ancestor::address[preceding-sibling::*[descendant-or-self::email]] + or ancestor::address[preceding-sibling::address/otheraddr/ulink]"> + <!-- * This is not the first instance, so do nothing. --> + </xsl:when> + <xsl:otherwise> + <!-- * This is first instances of an e-mail address or ulink, --> + <!-- * so put a space before it. --> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + <!-- * Note that the reason for the \& character after the opening --> + <!-- * angle bracket and before the closing angle bracket is to --> + <!-- * prevent groff from inserting a linebreak at those points and --> + <!-- * outputting a hyphen character where the break occurs --> + <xsl:text><\&</xsl:text> + <xsl:choose> + <xsl:when test="self::email"> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + </xsl:when> + <xsl:when test="self::ulink"> + <xsl:variable name="contents"> + <xsl:apply-templates select="."/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + </xsl:when> + </xsl:choose> + <xsl:text>\&></xsl:text> + <xsl:choose> + <xsl:when test="not(following-sibling::*[descendant-or-self::email] + or following-sibling::address/otheraddr/ulink + or ancestor::address[following-sibling::*[descendant-or-self::email]] + or ancestor::address[following-sibling::address/otheraddr/ulink])"> + <!-- * This is the final instance, so do nothing. --> + </xsl:when> + <xsl:otherwise> + <!-- * Separate multiple e-mail addresses or ulinks with a comma --> + <xsl:text>, </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="affiliation" mode="authorsect"> + <!-- * Get the string value of the contents of this Affiliation. If the --> + <!-- * affiliation only contains an Address child whose only content is --> + <!-- * an email address or ulink, then these contents will end up empty. --> + <xsl:variable name="contents"> + <xsl:apply-templates mode="authorsect"/> + </xsl:variable> + <!-- * If contents are actually empty except for an email address --> + <!-- * or ulink, then output nothing. --> + <xsl:if test="$contents != ''"> + <xsl:text>.br </xsl:text> + <xsl:for-each select="shortaffil|jobtitle|orgname|orgdiv|address"> + <!-- * only display output of nodes other than email or ulink --> + <xsl:apply-templates select="node()[not(self::email) and not(self::otheraddr/ulink)]"/> + <xsl:choose> + <xsl:when test="position() = last()"/> <!-- do nothing --> + <xsl:otherwise> + <!-- * only add comma if the node has a child node other than --> + <!-- * an email address or ulink --> + <xsl:if test="child::node()[not(self::email) and not(self::otheraddr/ulink)]"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:text> </xsl:text> + <xsl:choose> + <xsl:when test="position() = last()"/> <!-- do nothing --> + <xsl:otherwise> + <!-- * put a line break after every Affiliation instance except --> + <!-- * the last one in the set --> + <xsl:text>.br </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + <xsl:template match="address" mode="authorsect"> + <xsl:variable name="contents" + select="normalize-space(node()[not(self::email) + and not(self::otheraddr/ulink)])"/> + <!-- * If this contents of this Address do not contain anything except --> + <!-- * an email address or ulink, then output nothing. --> + <xsl:if test="$contents != ''"> + <xsl:text> </xsl:text> + <xsl:text>.br </xsl:text> + <!--* Skip email and ulink descendants of Address (rendered elsewhere) --> + <xsl:apply-templates select="node()[not(self::email) and not(self::otheraddr/ulink)]"/> + </xsl:if> + </xsl:template> + + <xsl:template name="attribution"> + <xsl:param name="person-name"/> + <xsl:param name="refname" select="ancestor::refentry/refnamediv[1]/refname[1]"/> + <!-- * Determine appropriate attribution for a particular person's role. --> + <xsl:choose> + <!-- * if we have a *blurb or contrib, just use that --> + <xsl:when test="contrib|personblurb|authorblurb"> + <xsl:apply-templates select="contrib|personblurb|authorblurb" mode="authorsect"/> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise we have no attribution information to use... --> + <xsl:if test="not($person-name = '')"> + <!-- * if we have a person name or organization name --> + <!-- * ($person-name can actually be an orgname, not just a --> + <!-- * person name), then report to the user that we are --> + <!-- * lacking attribution information for that person --> + <xsl:if test="$refentry.meta.get.quietly = 0"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Warn</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc">AUTHOR sect.</xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>no personblurb|contrib for </xsl:text> + <xsl:value-of select="$person-name"/> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc">AUTHOR sect.</xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>see see http://docbook.sf.net/el/contrib</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc">AUTHOR sect.</xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>see see http://docbook.sf.net/el/personblurb</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:if> + <xsl:choose> + <!-- * If we have no *blurb or contrib, but this is an Author or --> + <!-- * Editor, then render the corresponding localized gentext --> + <xsl:when test="self::author"> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($blurb-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$blurb-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Author'"/> + </xsl:call-template> + <xsl:text>. </xsl:text> + <xsl:text>.RE </xsl:text> + </xsl:when> + <xsl:when test="self::editor"> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($blurb-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$blurb-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Editor'"/> + </xsl:call-template> + <xsl:text>. </xsl:text> + <xsl:text>.RE </xsl:text> + </xsl:when> + <!-- * If we have no *blurb or contrib, but this is an Othercredit, --> + <!-- * check value of Class attribute and use corresponding gentext. --> + <xsl:when test="self::othercredit"> + <xsl:choose> + <xsl:when test="@class and @class != 'other'"> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($blurb-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$blurb-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="@class"/> + </xsl:call-template> + <xsl:text>. </xsl:text> + <xsl:text>.RE </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * We have an Othercredit, but no usable value for the Class --> + <!-- * attribute, so nothing to show, do nothing --> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <!-- * We have no *blurb or contrib or anything else we can use to --> + <!-- * display appropriate attribution for this person, so do nothing --> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="personblurb|authorblurb" mode="authorsect"> + <xsl:call-template name="mark.up.blurb.or.contrib"/> + <!-- * yeah, it's possible for a *blurb to have a "title" --> + <xsl:apply-templates select="title"/> + <xsl:apply-templates select="*[not(self::title)]"/> + <!-- * If this *blurb has a sibling "name" element of some kind, then --> + <!-- * the mark.up.blurb.or.contrib template will generated an "RS" --> + <!-- * call that will cause it to be indented; so we need to call --> + <!-- * "RE" to restore the previous indent level --> + <xsl:if test="../personname|../surname|../firstname + |../othername|../lineage|../honorific + |../affiliation|../email|../address"> + <xsl:text>.RE </xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template match="personblurb/title|authorblurb/title"> + <!-- * always render period after title --> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + <xsl:text>.</xsl:text> + <!-- * render space after Title+period if the title is followed --> + <!-- * by something element content --> + <xsl:if test="following-sibling::*[name() != '']"> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template match="contrib" mode="authorsect"> + <xsl:call-template name="mark.up.blurb.or.contrib"/> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + <xsl:text> </xsl:text> + <xsl:if test="../personname|../surname|../firstname + |../othername|../lineage|../honorific + |../affiliation|../email|../address"> + <xsl:text>.RE </xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template name="mark.up.blurb.or.contrib"> + <xsl:choose> + <!-- * If this *blurb has a sibling "name" element of some kind, then --> + <!-- * we are already outputting the name content, and we need to --> + <!-- * indent the *blurb content after that. --> + <xsl:when + test="../personname|../surname|../firstname + |../othername|../lineage|../honorific + |../affiliation|../email|../address"> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($blurb-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$blurb-indent"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise, we have no "name" content, so don't indent; --> + <!-- * instead, decide if we need a .PP or just a .br --> + <xsl:choose> + <xsl:when test="not(preceding-sibling::*)"> + <!-- * if this *blurb or contrib has no preceding --> + <!-- * siblings, then we need to start a new paragraph --> + <xsl:text>.PP</xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise, this has no preceding siblings, so --> + <!-- * just put a linebreak --> + <xsl:text>.br</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + <xsl:text> </xsl:text> + </xsl:template> + + <!-- * ============================================================== --> + <!-- * Assemble the COPYRIGHT section --> + <!-- * ============================================================== --> + <!-- * The COPYRIGHT section is output only if a copyright or --> + <!-- * legalnotice is found. It contains the copyright contents --> + <!-- * followed by the legalnotice contents. --> + <xsl:template name="copyright.section"> + <xsl:param name="info"/> + <xsl:choose> + <xsl:when test="$info//copyright|$info//legalnotice"> + <xsl:call-template name="make.subheading"> + <xsl:with-param name="title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">Copyright</xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + <xsl:text>.br </xsl:text> + <!-- * the copyright mode="titlepage.mode" template is --> + <!-- * imported from the HTML stylesheets --> + <xsl:for-each select=" + (($info[//copyright])[last()]//copyright) + | (($info[//legalnotice])[last()]//legalnotice)"> + <xsl:choose> + <xsl:when test="local-name(.) = 'copyright'"> + <xsl:variable name="contents"> + <xsl:apply-templates select="." mode="titlepage.mode"/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + <xsl:text> </xsl:text> + <xsl:text>.br </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="titlepage.mode"/> + <xsl:text> </xsl:text> + <xsl:text>.sp </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:when> + <xsl:otherwise/> <!-- * do nothing, no copyright or legalnotice found --> + </xsl:choose> + </xsl:template> + + <xsl:template match="legalnotice"> + <xsl:apply-templates/> + </xsl:template> + + <!-- * ============================================================== --> + + <!-- * suppress refmeta and all *info (we grab what we need from them --> + <!-- * elsewhere) --> + + <xsl:template match="refmeta"/> + + <xsl:template match="info|refentryinfo|referenceinfo|refsynopsisdivinfo + |refsectioninfo|refsect1info|refsect2info|refsect3info + |setinfo|bookinfo|articleinfo|chapterinfo|sectioninfo + |sect1info|sect2info|sect3info|sect4info|sect5info + |partinfo|prefaceinfo|appendixinfo|docinfo"/> + + <!-- ============================================================== --> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl new file mode 100644 index 0000000..56ca4c5 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl @@ -0,0 +1,219 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + version='1.0'> + +<!-- ******************************************************************** + $Id: inline.xsl 7897 2008-03-10 15:46:03Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="replaceable|varname|structfield"> + <xsl:if test="$man.hyphenate.computer.inlines = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <xsl:call-template name="italic"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="option|userinput|envar|errorcode|constant|markup"> + <xsl:if test="$man.hyphenate.computer.inlines = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="classname"> + <xsl:if test="$man.hyphenate.computer.inlines = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="command"> + <xsl:if test="$man.hyphenate.computer.inlines = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="type[not(ancestor::cmdsynopsis) and + not(ancestor::funcsynopsis)]"> + <xsl:if test="$man.hyphenate.computer.inlines = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="function[not(ancestor::cmdsynopsis) and + not(ancestor::funcsynopsis)]"> + <xsl:if test="$man.hyphenate.computer.inlines = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="parameter[not(ancestor::cmdsynopsis) and + not(ancestor::funcsynopsis)]"> + <xsl:if test="$man.hyphenate.computer.inlines = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <xsl:call-template name="italic"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="filename"> + <!-- * add hyphenation suppression in Filename output only if --> + <!-- * break.after.slash is also non-zero --> + <xsl:if test="$man.hyphenate.filenames = 0 and + $man.break.after.slash = 0"> + <xsl:call-template name="suppress.hyphenation"/> + </xsl:if> + <!-- * part of the old man(7) man page, now man-pages(7), says, --> + <!-- * "Filenames (whether pathnames, or references to files in the --> + <!-- * /usr/include directory) are always in italics". But that's dumb, --> + <!-- * and looks like crap in PS/printed/PDF output, and there's no --> + <!-- * sound rationale for it, so we don't do it. --> + <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="emphasis"> + <xsl:choose> + <xsl:when test=" + @role = 'bold' or + @role = 'strong' or + @remap = 'B'"> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="italic"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="optional"> + <xsl:value-of select="$arg.choice.opt.open.str"/> + <xsl:apply-templates/> + <xsl:value-of select="$arg.choice.opt.close.str"/> +</xsl:template> + +<xsl:template name="do-citerefentry"> + <xsl:param name="refentrytitle" select="''"/> + <xsl:param name="manvolnum" select="''"/> + <xsl:variable name="title"> + <xsl:value-of select="$refentrytitle"/> + </xsl:variable> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="exsl:node-set($title)"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text>(</xsl:text> + <xsl:value-of select="$manvolnum"/> + <xsl:text>)</xsl:text> +</xsl:template> + +<xsl:template match="citerefentry"> + <xsl:call-template name="do-citerefentry"> + <xsl:with-param name="refentrytitle" select="refentrytitle"/> + <xsl:with-param name="manvolnum" select="manvolnum"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="trademark|productname"> + <xsl:apply-templates/> + <xsl:choose> + <!-- * Just use true Unicode chars for copyright, trademark, etc., --> + <!-- * symbols (by default, we later automatically translate them --> + <!-- * with the apply-string-subst-map template, or with the --> + <!-- * default character map, if man.charmap.enabled is true). --> + <xsl:when test="@class = 'copyright'"> + <xsl:text>©</xsl:text> + </xsl:when> + <xsl:when test="@class = 'registered'"> + <xsl:text>®</xsl:text> + </xsl:when> + <xsl:when test="@class = 'service'"> + <xsl:text>℠</xsl:text> + </xsl:when> + <xsl:when test="@class = 'trade'"> + <xsl:text>™</xsl:text> + </xsl:when> + <!-- * for Trademark element, render a trademark symbol by default --> + <!-- * even if no "class" value is specified --> + <xsl:when test="self::trademark" > + <xsl:text>™</xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise we have a Productname with no value for the --> + <!-- * "class" attribute, so don't render any symbol by default --> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- * span seems to sneak through into output sometimes, possibly due --> +<!-- * to failed Olink processing; so we need to catch it --> +<xsl:template match="span"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="inlinemediaobject"> + <xsl:apply-templates/> +</xsl:template> + +<!-- * indexterm instances produce groff comments like this: --> +<!-- * .\" primary: secondary: tertiary --> +<xsl:template match="indexterm"> + <xsl:text>.\" </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="primary"> + <xsl:value-of select="normalize-space(.)"/> +</xsl:template> + +<xsl:template match="secondary|tertiary"> + <xsl:text>: </xsl:text> + <xsl:value-of select="normalize-space(.)"/> +</xsl:template> + +<!-- * non-empty remark instances produce groff comments --> +<xsl:template match="remark"> + <xsl:variable name="content" select="normalize-space(.)"/> + <xsl:if test="not($content = '')"> + <xsl:text>.\" </xsl:text> + <xsl:value-of select="$content"/> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl new file mode 100644 index 0000000..dd90174 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl @@ -0,0 +1,604 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: lists.xsl 8530 2009-11-02 02:38:47Z dleidert $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<xsl:variable name="list-indent"> + <xsl:choose> + <xsl:when test="not($man.indent.lists = 0)"> + <xsl:value-of select="$man.indent.width"/> + </xsl:when> + <xsl:when test="not($man.indent.refsect = 0)"> + <!-- * "zq" is the name of a register we set for --> + <!-- * preserving the original default indent value --> + <!-- * when $man.indent.refsect is non-zero; --> + <!-- * "u" is a roff unit specifier --> + <xsl:text>\n(zqu</xsl:text> + </xsl:when> + <xsl:otherwise/> <!-- * otherwise, just leave it empty --> + </xsl:choose> +</xsl:variable> + +<!-- ================================================================== --> + +<xsl:template match="para[ancestor::listitem or ancestor::step or ancestor::glossdef]| + simpara[ancestor::listitem or ancestor::step or ancestor::glossdef]| + remark[ancestor::listitem or ancestor::step or ancestor::glossdef]"> + <xsl:call-template name="mixed-block"/> + <xsl:text> </xsl:text> + <xsl:if test="following-sibling::*[1][ + self::para or + self::simpara or + self::remark + ]"> + <!-- * Make sure multiple paragraphs within a list item don't --> + <!-- * merge together. --> + <xsl:text>.sp </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="bibliolist"> + <xsl:apply-templates/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="variablelist|glosslist"> + <xsl:if test="title"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="title"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="varlistentry|glossentry"> + <xsl:text>.PP </xsl:text> + <xsl:for-each select="term|glossterm"> + <xsl:variable name="content"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($content)"/> + <xsl:choose> + <xsl:when test="position() = last()"/> <!-- do nothing --> + <xsl:otherwise> + <!-- * if we have multiple terms in the same varlistentry, generate --> + <!-- * a separator (", " by default) and/or an additional line --> + <!-- * break after each one except the last --> + <!-- * --> + <!-- * note that it is not valid to have multiple glossterms --> + <!-- * within a glossentry, so this logic never gets exercised --> + <!-- * for glossterms (every glossterm is always the last in --> + <!-- * its parent glossentry) --> + <xsl:value-of select="$variablelist.term.separator"/> + <xsl:if test="not($variablelist.term.break.after = '0')"> + <xsl:text> </xsl:text> + <xsl:text>.br </xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + <xsl:text>.RE </xsl:text> +</xsl:template> + +<xsl:template match="varlistentry/term"/> +<xsl:template match="glossentry/glossterm"/> + +<xsl:template match="variablelist[ancestor::listitem or ancestor::step or ancestor::glossdef]| + glosslist[ancestor::listitem or ancestor::step or ancestor::glossdef]"> + <xsl:apply-templates/> + <xsl:if test="following-sibling::node() or + parent::para[following-sibling::node()] or + parent::simpara[following-sibling::node()] or + parent::remark[following-sibling::node()]"> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="varlistentry/listitem|glossentry/glossdef"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="itemizedlist/listitem"> + <!-- * We output a real bullet here (rather than, "\(bu", --> + <!-- * the roff bullet) because, when we do character-map --> + <!-- * processing before final output, the character-map will --> + <!-- * handle conversion of the • to "\(bu" for us --> + <xsl:text> </xsl:text> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <!-- * if "n" then we are using "nroff", which means the output is for --> + <!-- * TTY; so we do some fixed-width-font hackery with \h to make a --> + <!-- * hanging indent (instead of using .IP, which has some --> + <!-- * undesirable side effects under certain circumstances) --> + <xsl:call-template name="roff-if-else-start"/> + <xsl:text>\h'-</xsl:text> + <xsl:choose> + <xsl:when test="not($list-indent = '')"> + <xsl:text>0</xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>\n(INu</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>'</xsl:text> + <xsl:text>•</xsl:text> + <xsl:text>\h'+</xsl:text> + <xsl:choose> + <xsl:when test="not($list-indent = '')"> + <xsl:text>0</xsl:text> + <xsl:value-of select="$list-indent - 1"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>\n(INu-1</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>'\c </xsl:text> + <!-- * else, we are not using for "nroff", but instead "troff" - which --> + <!-- * means not for TTY, but for PS or whatever; so we’re not using a --> + <!-- * fixed-width font, so use a real .IP instead --> + <xsl:call-template name="roff-else"/> + <!-- * .IP generates a blank like of space, so let’s go backwards one --> + <!-- * line up to compensate for that --> + <xsl:text>.sp -1 </xsl:text> + <xsl:text>.IP \(bu 2.3 </xsl:text> + <!-- * The value 2.3 is the amount of indentation; we use 2.3 instead --> + <!-- * of 2 because when the font family is New Century Schoolbook it --> + <!-- * seems to require the extra space. --> + <xsl:call-template name="roff-if-end"/> + <xsl:apply-templates/> + <xsl:text>.RE </xsl:text> +</xsl:template> + +<xsl:template match="orderedlist/listitem|procedure/step"> + <xsl:text> </xsl:text> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <!-- * if "n" then we are using "nroff", which means the output is for --> + <!-- * TTY; so we do some fixed-width-font hackery with \h to make a --> + <!-- * hanging indents (instead of using .IP, which has some --> + <!-- * undesirable side effects under certain circumstances) --> + <xsl:call-template name="roff-if-else-start"/> + <xsl:text>\h'-</xsl:text> + <xsl:choose> + <xsl:when test="not($list-indent = '')"> + <xsl:text>0</xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>\n(INu+3n</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>'</xsl:text> + <xsl:if test="count(preceding-sibling::listitem) < 9"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:number format="1."/> + <xsl:text>\h'+</xsl:text> + <xsl:choose> + <xsl:when test="not($list-indent = '')"> + <xsl:text>0</xsl:text> + <xsl:value-of select="$list-indent - 3"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>1n</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:text>'\c </xsl:text> + <!-- * else, we are not using for "nroff", but instead "troff" - which --> + <!-- * means not for TTY, but for PS or whatever; so we’re not using a --> + <!-- * fixed-width font, so use a real .IP instead --> + <xsl:call-template name="roff-else"/> + <!-- * .IP generates a blank line of space, so let’s go backwards one --> + <!-- * line up to compensate for that --> + <xsl:text>.sp -1 </xsl:text> + <xsl:text>.IP "</xsl:text> + <xsl:if test="count(preceding-sibling::listitem) < 9"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:number format="1."/> + <xsl:text>" 4.2 </xsl:text> + <!-- * The value 4.2 is the amount of indentation; we use 4.2 instead --> + <!-- * of 4 because when the font family is Bookman it seems to require --> + <!-- * the extra space. --> + <xsl:call-template name="roff-if-end"/> + <xsl:apply-templates/> + <xsl:text>.RE </xsl:text> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="itemizedlist|orderedlist|procedure"> + <xsl:if test="title"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="title"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> + <!-- * DocBook allows just about any block content to appear in --> + <!-- * lists before the actual list items, so we need to get that --> + <!-- * content (if any) before getting the list items --> + <xsl:apply-templates + select="*[not(self::listitem) and not(self::title)]"/> + <xsl:apply-templates select="listitem"/> + <!-- * If this list is a child of para and has content following --> + <!-- * it, within the same para, then add a blank line and move --> + <!-- * the left margin back to where it was --> + <xsl:if test="parent::para and following-sibling::node()"> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="itemizedlist[ancestor::listitem or ancestor::step or ancestor::glossdef]| + orderedlist[ancestor::listitem or ancestor::step or ancestor::glossdef]| + procedure[ancestor::listitem or ancestor::step or ancestor::glossdef]"> + <xsl:if test="title"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="title"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates/> + <xsl:if test="following-sibling::node() or + parent::para[following-sibling::node()] or + parent::simpara[following-sibling::node()] or + parent::remark[following-sibling::node()]"> + <xsl:text>.sp</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + +<!-- ================================================================== --> + +<!-- * for simplelist type="inline", render it as a comma-separated list --> +<xsl:template match="simplelist[@type='inline']"> + <!-- * if dbchoice PI exists, use that to determine the choice separator --> + <!-- * (that is, equivalent of "and" or "or" in current locale), or literal --> + <!-- * value of "choice" otherwise --> + <xsl:variable name="localized-choice-separator"> + <xsl:choose> + <xsl:when test="processing-instruction('dbchoice')"> + <xsl:call-template name="select.choice.separator"/> + </xsl:when> + <xsl:otherwise> + <!-- * empty --> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:for-each select="member"> + <xsl:apply-templates/> + <xsl:choose> + <xsl:when test="position() = last()"/> <!-- do nothing --> + <xsl:otherwise> + <xsl:text>, </xsl:text> + <xsl:if test="position() = last() - 1"> + <xsl:if test="$localized-choice-separator != ''"> + <xsl:value-of select="$localized-choice-separator"/> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:text> </xsl:text> +</xsl:template> + +<!-- * if simplelist type is not inline, render it as a one-column vertical --> +<!-- * list (ignoring the values of the type and columns attributes) --> +<xsl:template match="simplelist"> + <xsl:for-each select="member"> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + <xsl:text>.RE </xsl:text> + </xsl:for-each> +</xsl:template> + +<!-- ================================================================== --> + +<!-- * We output Segmentedlist as a table, using tbl(1) markup. There --> +<!-- * is no option for outputting it in manpages in "list" form. --> +<xsl:template match="segmentedlist"> + <xsl:if test="title"> + <xsl:text>.PP </xsl:text> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="title"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:text>.\" line length increase to cope w/ tbl weirdness </xsl:text> + <xsl:text>.ll +(\n(LLu * 62u / 100u) </xsl:text> + <!-- * .TS = "Table Start" --> + <xsl:text>.TS </xsl:text> + <!-- * first output the table "format" spec, which tells tbl(1) how --> + <!-- * how to format each row and column. --> + <xsl:for-each select=".//segtitle"> + <!-- * l = "left", which hard-codes left-alignment for tabular --> + <!-- * output of all segmentedlist content --> + <xsl:text>l</xsl:text> + </xsl:for-each> + <!-- * last line of table format section must end with a dot --> + <xsl:text>. </xsl:text> + <!-- * optionally suppress output of segtitle --> + <xsl:choose> + <xsl:when test="$man.segtitle.suppress != 0"> + <!-- * non-zero = "suppress", so do nothing --> + </xsl:when> + <xsl:otherwise> + <!-- * "0" = "do not suppress", so output the segtitle(s) --> + <xsl:apply-templates select=".//segtitle" mode="table-title"/> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates/> + <!-- * .TE = "Table End" --> + <xsl:text>.TE </xsl:text> + <xsl:text>.\" line length decrease back to previous value </xsl:text> + <xsl:text>.ll -(\n(LLu * 62u / 100u) </xsl:text> + <!-- * put a blank line of space below the table --> + <xsl:text>.sp </xsl:text> +</xsl:template> + +<xsl:template match="segmentedlist/segtitle" mode="table-title"> + <xsl:call-template name="italic"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:choose> + <xsl:when test="position() = last()"/> <!-- do nothing --> + <xsl:otherwise> + <!-- * tbl(1) treats tab characters as delimiters between --> + <!-- * cells; so we need to output a tab after each --> + <!-- * segtitle except the last one --> + <xsl:text>	</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="segmentedlist/seglistitem"> + <xsl:apply-templates/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="segmentedlist/seglistitem/seg"> + <!-- * the T{ and T} stuff are delimiters to tell tbl(1) that --> + <!-- * the delimited contents are "text blocks" that groff(1) --> + <!-- * needs to process --> + <xsl:text>T{ </xsl:text> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + <xsl:text> T}</xsl:text> + <xsl:choose> + <xsl:when test="position() = last()"/> <!-- do nothing --> + <xsl:otherwise> + <!-- * tbl(1) treats tab characters as delimiters between --> + <!-- * cells; so we need to output a tab after each --> + <!-- * segtitle except the last one --> + <xsl:text>	</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="calloutlist"> + <xsl:if test="title|info/title"> + <xsl:call-template name="formal.object.heading"/> + </xsl:if> + <!-- * This template was originally copied over from the HTML --> + <!-- * calloutlist template, which precedes the following --> + <!-- * apply-templates with the comment "Preserve order of PIs and --> + <!-- * comments"; I'm not certain that it will actually have that --> + <!-- * effect for all cases, and it seems like there is probably a --> + <!-- * better way to do it, but anyway, I’m preserving it here for --> + <!-- * consistency. --> + <xsl:apply-templates + select="*[not(self::callout or self::title or self::titleabbrev)] + |comment()[not(preceding-sibling::callout)] + |processing-instruction()[not(preceding-sibling::callout)]"/> + <!-- * put callout list into a table --> + <xsl:text>.TS </xsl:text> + <xsl:text>tab(:); </xsl:text> + <!-- * the following defines the row layout for the table: two columns, --> + <!-- * with the first cell in each row right-aligned, and the second --> + <!-- * cell left aligned with a width of 75% of the line length --> + <xsl:text>r lw(\n(.lu*75u/100u). </xsl:text> + <xsl:apply-templates select="callout + |comment()[preceding-sibling::callout] + |processing-instruction()[preceding-sibling::callout]"/> + <xsl:text>.TE </xsl:text> +</xsl:template> + +<xsl:template match="calloutlist/title"/> + +<xsl:template match="callout"> + <!-- * first cell of each row is the set of callout numbers for this --> + <!-- * particular callout --> + <xsl:call-template name="callout.arearefs"> + <xsl:with-param name="arearefs" select="@arearefs"/> + </xsl:call-template> + <!-- * end of the first cell in the row; the \h hackery is to correct --> + <!-- * for the excessive horizontal whitespace that tbl(1) adds between --> + <!-- * cells in the same row --> + <xsl:text>\h'-2n':</xsl:text> + <!-- * start the next cell in the row, which has the prose contents --> + <!-- * (description/explanation) for the callout --> + <xsl:text>T{ </xsl:text> + <xsl:apply-templates/> + <xsl:text>T} </xsl:text> + <!-- * end of the last cell and end of the row --> +</xsl:template> + +<xsl:template name="callout.arearefs"> + <xsl:param name="arearefs"></xsl:param> + <!-- * callout can have multiple values in its arearefs attribute, so --> + <!-- * we use the position param to track the postion of each value --> + <xsl:param name="position">1</xsl:param> + <xsl:if test="$arearefs!=''"> + <xsl:choose> + <xsl:when test="substring-before($arearefs,' ')=''"> + <xsl:call-template name="callout.arearef"> + <xsl:with-param name="arearef" select="$arearefs"/> + <xsl:with-param name="position" select="$position"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="callout.arearef"> + <xsl:with-param name="arearef" + select="substring-before($arearefs,' ')"/> + <xsl:with-param name="position" select="$position"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + <xsl:call-template name="callout.arearefs"> + <xsl:with-param name="arearefs" + select="substring-after($arearefs,' ')"/> + <xsl:with-param name="position" select="$position + 1"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<xsl:template name="callout.arearef"> + <xsl:param name="arearef"></xsl:param> + <!-- * callout can have multiple values in its arearefs attribute, so --> + <!-- * we use the position param to track the postion of each value --> + <xsl:param name="position"></xsl:param> + <xsl:variable name="targets" select="key('id',$arearef)"/> + <xsl:variable name="target" select="$targets[1]"/> + + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="$arearef"/> + </xsl:call-template> + + <xsl:choose> + <xsl:when test="count($target)=0"> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:when test="local-name($target)='co'"> + <!-- * if this is not the first value in the set of values in the --> + <!-- * arearef attribute for this callout, then we prepend a groff --> + <!-- * non-breaking space to it, to prevent groff from injecting --> + <!-- * linebreaks into the output. For callout instances with --> + <!-- * multiple values in their arearefs attributes, that results --> + <!-- * in all of callout numbers beings listed on the same line. --> + <xsl:if test="not($position = 1)"> + <xsl:text>\ </xsl:text> + </xsl:if> + <xsl:apply-templates select="$target" + mode="calloutlist-callout-number"/> + </xsl:when> + <!-- * the manpages stylesheet does not really support areaset and --> + <!-- * area (because we can't/don't actually render the callout bugs --> + <!-- * at the specified coordinates); however, the following (for --> + <!-- * what it's worth) might cause the callout numbers in the --> + <!-- * calloutlist to be render at least (then again, maybe it won't; --> + <!-- * it's not actually been tested... --> + <xsl:when test="local-name($target)='areaset'"> + <xsl:call-template name="callout-bug"> + <xsl:with-param name="conum"> + <xsl:apply-templates select="$target" mode="conumber"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="local-name($target)='area'"> + <xsl:choose> + <xsl:when test="$target/parent::areaset"> + <xsl:call-template name="callout-bug"> + <xsl:with-param name="conum"> + <xsl:apply-templates + select="$target/parent::areaset" mode="conumber"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="callout-bug"> + <xsl:with-param name="conum"> + <xsl:apply-templates select="$target" + mode="conumber"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- * we bold the actual callout bugs and put --> +<!-- * parenthesis around them --> +<xsl:template name="callout-bug"> + <xsl:param name="conum" select='1'/> + <xsl:text>\fB(</xsl:text> + <xsl:value-of select="$conum"/> + <xsl:text>)\fR</xsl:text> +</xsl:template> + +<!-- * we bold the callout numbers and follow each --> +<!-- * with a period --> +<xsl:template name="calloutlist-callout-number"> + <xsl:param name="conum" select='1'/> + <xsl:text>\fB</xsl:text> + <xsl:value-of select="$conum"/> + <xsl:text>.\fR</xsl:text> +</xsl:template> + +<xsl:template match="co" mode="calloutlist-callout-number"> + <xsl:call-template name="calloutlist-callout-number"> + <xsl:with-param name="conum"> + <xsl:number count="co" + level="any" + from="programlisting|screen|literallayout|synopsis" + format="1"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl new file mode 100644 index 0000000..5431925 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl @@ -0,0 +1,888 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" + exclude-result-prefixes="exsl" + version='1.0'> + +<!-- ******************************************************************** + $Id: other.xsl 8865 2010-08-20 18:22:06Z mzjn $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- * This file contains named templates related to things other than --> +<!-- * just assembling the actual text of the main text flow of each man --> +<!-- * page. This "other" stuff currently amounts to these steps: --> +<!-- * --> +<!-- * - get contents of the "map" used to convert special characters --> +<!-- * - output boilerplate messages --> +<!-- * - escape backslash, dot, dash, and apostrophe characters --> +<!-- * - convert non-breaking spaces --> +<!-- * - add a comment to top part of roff source of each page --> +<!-- * - make a .TH title line (for controlling page header/footer) --> +<!-- * - set hyphenation, alignment, indent & line-breaking defaults --> +<!-- * - "prepare" the complete man page contents for final output --> +<!-- * - write the actual man file to the filesystem --> +<!-- * - write any "stub" pages to the filesystem --> +<!-- * --> +<!-- * The templates in this file are actually called only once per --> +<!-- * each Refentry; they are just in a separate file for the purpose --> +<!-- * of keeping things modular. --> + +<!-- ==================================================================== --> + +<xsl:preserve-space elements="*"/> + +<xsl:strip-space elements=" +abstract affiliation anchor answer appendix area areaset areaspec +artheader article audiodata audioobject author authorblurb authorgroup +beginpage bibliodiv biblioentry bibliography biblioset blockquote book +bookbiblio bookinfo callout calloutlist caption caution chapter +citerefentry cmdsynopsis co collab colophon colspec confgroup +copyright dedication docinfo editor entrytbl epigraph equation +example figure footnote footnoteref formalpara funcprototype +funcsynopsis glossary glossdef glossdiv glossentry glosslist graphicco +group highlights imagedata imageobject imageobjectco important index +indexdiv indexentry indexterm informalequation informalexample +informalfigure informaltable inlineequation inlinemediaobject +itemizedlist itermset keycombo keywordset legalnotice listitem lot +mediaobject mediaobjectco menuchoice msg msgentry msgexplan msginfo +msgmain msgrel msgset msgsub msgtext note objectinfo +orderedlist othercredit part partintro preface printhistory procedure +programlistingco publisher qandadiv qandaentry qandaset question +refentry reference refmeta refnamediv refsection refsect1 refsect1info refsect2 +refsect2info refsect3 refsect3info refsynopsisdiv refsynopsisdivinfo +revhistory revision row sbr screenco screenshot sect1 sect1info sect2 +sect2info sect3 sect3info sect4 sect4info sect5 sect5info section +sectioninfo seglistitem segmentedlist seriesinfo set setindex setinfo +shortcut sidebar simplelist simplesect spanspec step subject +subjectset substeps synopfragment table tbody textobject tfoot tgroup +thead tip toc tocchap toclevel1 toclevel2 toclevel3 toclevel4 +toclevel5 tocpart varargs variablelist varlistentry videodata +videoobject void warning subjectset + +classsynopsis +constructorsynopsis +destructorsynopsis +fieldsynopsis +methodparam +methodsynopsis +ooclass +ooexception +oointerface +simplemsgentry +manvolnum +"/> + +<!-- ==================================================================== --> +<!-- * Get character map contents --> +<!-- ==================================================================== --> + + <xsl:variable name="man.charmap.contents"> + <xsl:if test="$man.charmap.enabled != 0"> + <xsl:variable name="lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="target" select="//refentry[1]"/> + </xsl:call-template> + </xsl:variable> + <xsl:call-template name="read-character-map"> + <xsl:with-param name="use.subset" select="$man.charmap.use.subset"/> + <xsl:with-param name="subset.profile"> + <xsl:choose> + <xsl:when test="$lang = 'en'"> + <xsl:value-of select="$man.charmap.subset.profile.english"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$man.charmap.subset.profile"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="uri"> + <xsl:choose> + <xsl:when test="$man.charmap.uri != ''"> + <xsl:value-of select="$man.charmap.uri"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="'../manpages/charmap.groff.xsl'"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:variable> + +<!-- ==================================================================== --> + +<xsl:template name="root.messages"> + <xsl:param name="refname"/> + <!-- redefine this any way you'd like to output messages --> + <!-- DO NOT OUTPUT ANYTHING FROM THIS TEMPLATE --> + <!-- Example: + <xsl:if test="//foo"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Warn</xsl:with-param> + <xsl:with-param name="source" select="$refname"/> + <xsl:with-param name="context-desc"> + <xsl:text>limitation</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>Output for foo element is not yet supported.</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + --> +</xsl:template> + +<!-- ==================================================================== --> +<!-- * Escape roff special chars --> +<!-- ==================================================================== --> + +<!-- ******************************************************************** --> +<!-- * --> +<!-- * The backslash, dot, dash, and apostrophe (\, ., -, ') characters --> +<!-- * have special meaning for roff, so before we do any other --> +<!-- * processing, we must escape those characters where they appear in --> +<!-- * the source content. --> +<!-- * --> +<!-- * Here we also deal with replacing U+00a0 (non-breaking space) with --> +<!-- * its roff equivalent --> +<!-- * --> +<!-- ******************************************************************** --> + +<xsl:template match="//refentry//text()"> + <xsl:call-template name="escape.roff.specials"> + <xsl:with-param name="content"> + <xsl:value-of select="."/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="escape.roff.specials"> + <xsl:param name="content"/> + <xsl:call-template name="convert.nobreak-space"> + <xsl:with-param name="content"> + <xsl:call-template name="escape.apostrophe"> + <xsl:with-param name="content"> + <xsl:call-template name="escape.dash"> + <xsl:with-param name="content"> + <xsl:call-template name="escape.dot"> + <xsl:with-param name="content"> + <xsl:call-template name="escape.backslash"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="escape.backslash"> + <xsl:param name="content"/> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"/> + <xsl:with-param name="target">\</xsl:with-param> + <!-- * we use "\e" instead of "\\" because the groff docs say --> + <!-- * that's the correct thing to do; also because testing --> + <!-- * shows that "\\" doesn't always work as expected; for --> + <!-- * example, "\\" within a table seems to mess things up --> + <xsl:with-param name="replacement">\e</xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="escape.dot"> + <xsl:param name="content"/> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"/> + <xsl:with-param name="target">.</xsl:with-param> + <xsl:with-param name="replacement">\&.</xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="escape.dash"> + <xsl:param name="content"/> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"/> + <xsl:with-param name="target">-</xsl:with-param> + <xsl:with-param name="replacement">\-</xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="escape.apostrophe"> + <xsl:param name="content"/> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"/> + <xsl:with-param name="target">'</xsl:with-param> + <xsl:with-param name="replacement">\*(Aq</xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="convert.nobreak-space"> + <xsl:param name="content"/> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"/> + <xsl:with-param name="target"> </xsl:with-param> + <!-- * A no-break space can be written two ways in roff; the --> + <!-- * difference, according to the "Page Motions" node in the --> + <!-- * groff info page, is: --> + <!-- * --> + <!-- * "\ " = --> + <!-- * An unbreakable and unpaddable (i.e. not expanded --> + <!-- * during filling) space. --> + <!-- * --> + <!-- * "\~" = --> + <!-- * An unbreakable space that stretches like a normal --> + <!-- * inter-word space when a line is adjusted." --> + <!-- * --> + <!-- * Unfortunately, roff seems to do some weird things with --> + <!-- * long lines that only have words separated by "\~" --> + <!-- * spaces, so it's safer just to stick with the "\ " space --> + <!-- * --> + <!-- * We append a "\&" to handle the case of a no-break space that --> + <!-- * appears at the end of a line - because later processing will --> + <!-- * cause that space to get eaten otherwise. --> + <xsl:with-param name="replacement">\ \&</xsl:with-param> + </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * top.comment generates a comment containing metadata for the man --> +<!-- * page; for example, Author, Generator, and Date information --> + + <xsl:template name="top.comment"> + <xsl:param name="info"/> + <xsl:param name="date"/> + <xsl:param name="title"/> + <xsl:param name="manual"/> + <xsl:param name="source"/> + <xsl:param name="refname"/> + <xsl:text>.\" Title: </xsl:text> + <xsl:call-template name="replace.dots.and.dashes"> + <xsl:with-param name="content" select="$title"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:text>.\" Author: </xsl:text> + <xsl:call-template name="replace.dots.and.dashes"> + <xsl:with-param name="content"> + <xsl:call-template name="make.roff.metadata.author"> + <xsl:with-param name="info" select="$info"/> + <xsl:with-param name="refname" select="$refname"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:text>.\" Generator: DocBook </xsl:text> + <xsl:value-of select="$DistroTitle"/> + <xsl:text> v</xsl:text> + <xsl:call-template name="replace.dots.and.dashes"> + <xsl:with-param name="content" select="$VERSION"/> + </xsl:call-template> + <xsl:text> <http://docbook.sf.net/></xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.\" Date: </xsl:text> + <xsl:call-template name="replace.dots.and.dashes"> + <xsl:with-param name="content" select="$date"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:text>.\" Manual: </xsl:text> + <xsl:call-template name="replace.dots.and.dashes"> + <xsl:with-param name="content" select="$manual"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:text>.\" Source: </xsl:text> + <xsl:call-template name="replace.dots.and.dashes"> + <xsl:with-param name="content" select="$source"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:text>.\" Language: </xsl:text> + <xsl:call-template name="l10n.language.name"/> + <xsl:text> </xsl:text> + <xsl:text>.\"</xsl:text> + <xsl:text> </xsl:text> + </xsl:template> + +<!-- ==================================================================== --> + + <xsl:template name="TH.title.line"> + + <!-- * The exact way that .TH contents are displayed is system- --> + <!-- * dependent; it varies somewhat between OSes and roff --> + <!-- * versions. Below is a description of how Linux systems with --> + <!-- * a modern groff seem to render .TH contents. --> + <!-- * --> + <!-- * title(section) extra3 title(section) <- page header --> + <!-- * extra2 extra1 title(section) <- page footer--> + <!-- * --> + <!-- * Or, using the names with which the man(7) man page refers --> + <!-- * to the various fields: --> + <!-- * --> + <!-- * title(section) manual title(section) <- page header --> + <!-- * source date title(section) <- page footer--> + <!-- * --> + <!-- * Note that while extra1, extra2, and extra3 are all (nominally) --> + <!-- * optional, in practice almost all pages include an "extra1" --> + <!-- * field, which is, universally, a date (in some form), and it is --> + <!-- * always rendered in the same place (the middle footer position) --> + <!-- * --> + <!-- * Here are a couple of examples of real-world man pages that --> + <!-- * have somewhat useful page headers/footers: --> + <!-- * --> + <!-- * gtk-options(7) GTK+ User's Manual gtk-options(7) --> + <!-- * GTK+ 1.2 2003-10-20 gtk-options(7) --> + <!-- * --> + <!-- * svgalib(7) Svgalib User Manual svgalib(7) --> + <!-- * Svgalib 1.4.1 16 December 1999 svgalib(7) --> + <!-- * --> + <xsl:param name="title"/> + <xsl:param name="section"/> + <xsl:param name="extra1"/> + <xsl:param name="extra2"/> + <xsl:param name="extra3"/> + + <xsl:call-template name="mark.subheading"/> + <!-- * Note that we generate quotes around _every_ field in the --> + <!-- * .TH title line, including the "title" and "section" --> + <!-- * fields. That is because we use the contents of those "as --> + <!-- * is", unchanged from the DocBook source; and DTD-based --> + <!-- * validation does not provide a way to constrain them to be --> + <!-- * "space free" --> + <xsl:text>.TH "</xsl:text> + <xsl:call-template name="string.upper"> + <xsl:with-param name="string"> + <xsl:choose> + <xsl:when test="$man.th.title.max.length != ''"> + <xsl:value-of + select="normalize-space(substring($title, 1, $man.th.title.max.length))"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="normalize-space($title)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + <xsl:text>" "</xsl:text> + <xsl:value-of select="normalize-space($section)"/> + <xsl:text>" "</xsl:text> + <xsl:if test="$man.th.extra1.suppress = 0"> + <!-- * there is no max.length for the extra1 field; the reason --> + <!-- * is, it is almost always a date, and it is not possible --> + <!-- * to truncate dates without changing their meaning --> + <xsl:value-of select="normalize-space($extra1)"/> + </xsl:if> + <xsl:text>" "</xsl:text> + <xsl:if test="$man.th.extra2.suppress = 0"> + <xsl:choose> + <!-- * if max.length is non-empty, use value to truncate field --> + <xsl:when test="$man.th.extra2.max.length != ''"> + <xsl:value-of + select="normalize-space(substring($extra2, 1, $man.th.extra2.max.length))"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="normalize-space($extra2)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <xsl:text>" "</xsl:text> + <xsl:if test="$man.th.extra3.suppress = 0"> + <xsl:choose> + <!-- * if max.length is non-empty, use value to truncate field --> + <xsl:when test="$man.th.extra3.max.length != ''"> + <xsl:value-of + select="normalize-space(substring($extra3, 1, $man.th.extra3.max.length))"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="normalize-space($extra3)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <xsl:text>" </xsl:text> + <xsl:call-template name="mark.subheading"/> + </xsl:template> + + <!-- ============================================================== --> + + <xsl:template name="set.default.formatting"> + <!-- * Set default hyphenation, justification, indentation and --> + <!-- * line-breaking --> + <!-- * --> + <!-- * If the value of man.hypenate is zero (the default), then --> + <!-- * disable hyphenation (".nh" = "no hyphenation") --> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:text>.\" * set default formatting </xsl:text> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:if test="$man.hyphenate = 0"> + <xsl:text>.\" disable hyphenation </xsl:text> + <xsl:text>.nh </xsl:text> + </xsl:if> + <!-- * If the value of man.justify is zero (the default), then --> + <!-- * disable justification (".ad l" means "adjust to left only") --> + <xsl:if test="$man.justify = 0"> + <xsl:text>.\" disable justification</xsl:text> + <xsl:text> (adjust text to left margin only) </xsl:text> + <xsl:text>.ad l </xsl:text> + </xsl:if> + <xsl:if test="not($man.indent.refsect = 0)"> + <xsl:text>.\" store initial "default indentation value" </xsl:text> + <xsl:text>.nr zq \n(IN </xsl:text> + <xsl:text>.\" adjust default indentation </xsl:text> + <xsl:text>.nr IN </xsl:text> + <xsl:value-of select="$man.indent.width"/> + <xsl:text> </xsl:text> + <xsl:text>.\" adjust indentation of SS headings </xsl:text> + <xsl:text>.nr SN \n(IN </xsl:text> + </xsl:if> + <!-- * Unless the value of man.break.after.slash is zero (the --> + <!-- * default), tell groff that it is OK to break a line --> + <!-- * after a slash when needed. --> + <xsl:if test="$man.break.after.slash != 0"> + <xsl:text>.\" enable line breaks after slashes </xsl:text> + <xsl:text>.cflags 4 / </xsl:text> + </xsl:if> + </xsl:template> + + <!-- ================================================================== --> + + <!-- * The prepare.manpage.contents template is called after all --> + <!-- * other processing has been done, before serializing the --> + <!-- * result of all the other processing. It basically works on --> + <!-- * the result as one big string. --> + <xsl:template name="prepare.manpage.contents"> + <xsl:param name="content" select="''"/> + + <!-- * If user has provided a "local" string-substitution map to --> + <!-- * be applied /before/ the standard string-substitution map, --> + <!-- * apply it. --> + <xsl:variable name="pre.adjusted.content"> + <xsl:choose> + <xsl:when test="$man.string.subst.map.local.pre"> + <!-- * normalized value of man.string.subst.map.local.pre --> + <!-- * is non-empty, so get contents of map and apply them --> + <xsl:call-template name="apply-string-subst-map"> + <xsl:with-param name="content" select="$content"/> + <xsl:with-param name="map.contents" + select="exsl:node-set($man.string.subst.map.local.pre)/*"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <!-- * value of man.string.subst.map.local.pre is empty, --> + <!-- * so just copy original contents --> + <xsl:value-of select="$content"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- * Apply standard string-substitution map. The main purpose --> + <!-- * of this map is to escape certain characters that have --> + <!-- * special meaning in roff, and to replace certain characters --> + <!-- * used within the stylesheet internally to represent roff --> + <!-- * markup characters. --> + <xsl:variable name="adjusted.content"> + <xsl:call-template name="apply-string-subst-map"> + <xsl:with-param name="content" select="$pre.adjusted.content"/> + <xsl:with-param name="map.contents" + select="exsl:node-set($man.string.subst.map)/*"/> + </xsl:call-template> + </xsl:variable> + + <!-- * If user has provided a "local" string-substitution map to --> + <!-- * be applied /after/ the standard string-substitution map, --> + <!-- * apply it. --> + <xsl:variable name="post.adjusted.content"> + <xsl:choose> + <xsl:when test="$man.string.subst.map.local.post"> + <!-- * normalized value of man.string.subst.map.local.post --> + <!-- * is non-empty, so get contents of map and apply them --> + <xsl:call-template name="apply-string-subst-map"> + <xsl:with-param name="content" select="$adjusted.content"/> + <xsl:with-param name="map.contents" + select="exsl:node-set($man.string.subst.map.local.post)/*"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <!-- * value of man.string.subst.map.local.post is empty, --> + <!-- * so just copy original contents --> + <xsl:value-of select="$adjusted.content"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- * Optionally, apply a character map to replace Unicode --> + <!-- * symbols and special characters. --> + <xsl:choose> + <xsl:when test="$man.charmap.enabled != 0"> + <xsl:call-template name="apply-character-map"> + <xsl:with-param name="content" select="$post.adjusted.content"/> + <xsl:with-param name="map.contents" + select="exsl:node-set($man.charmap.contents)/*"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <!-- * if we reach here, value of $man.charmap.enabled is zero, --> + <!-- * so we just pass the adjusted contents through "as is" --> + <xsl:value-of select="$adjusted.content"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- ================================================================== --> + + <xsl:template name="write.man.file"> + <xsl:param name="name"/> + <xsl:param name="section"/> + <xsl:param name="lang"/> + <xsl:param name="content"/> + <xsl:param name="filename"> + <xsl:call-template name="make.adjusted.man.filename"> + <xsl:with-param name="name" select="$name"/> + <xsl:with-param name="section" select="$section"/> + <xsl:with-param name="lang" select="$lang"/> + </xsl:call-template> + </xsl:param> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="suppress-context-node-name" select="1"/> + <xsl:with-param name="quiet" select="$man.output.quietly"/> + <xsl:with-param + name="message-prolog" + >Note: </xsl:with-param> + <xsl:with-param name="encoding" select="$man.output.encoding"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:template> + + <!-- ============================================================== --> + + <!-- * A "stub" is sort of alias for another file, intended to be read --> + <!-- * and expanded by soelim(1); it's simply a file whose complete --> + <!-- * contents are just a single line of the following form: --> + <!-- * --> + <!-- * .so manX/realname.X --> + <!-- * --> + <!-- * "realname" is a name of another man-page file. That .so line is --> + <!-- * basically a roff "include" statement. When the man command finds --> + <!-- * it, it calls soelim(1) and includes and displays the contents of --> + <!-- * the manX/realqname.X file. --> + <!-- * --> + <!-- * If a refentry has multiple refnames, we generate a "stub" page for --> + <!-- * each refname found, except for the first one. --> + <xsl:template name="write.stubs"> + <xsl:param name="first.refname"/> + <xsl:param name="section"/> + <xsl:param name="lang"/> + <xsl:for-each select="refnamediv/refname"> + <xsl:if test=". != $first.refname"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:call-template name="make.adjusted.man.filename"> + <xsl:with-param name="name" select="."/> + <xsl:with-param name="section" select="$section"/> + <xsl:with-param name="lang" select="$lang"/> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="quiet" select="$man.output.quietly"/> + <xsl:with-param name="suppress-context-node-name" select="1"/> + <xsl:with-param name="message-prolog">Note: </xsl:with-param> + <xsl:with-param name="message-epilog"> (soelim stub)</xsl:with-param> + <xsl:with-param name="content"> + <xsl:value-of select="'.so '"/> + <xsl:call-template name="make.adjusted.man.filename"> + <xsl:with-param name="name" select="$first.refname"/> + <xsl:with-param name="section" select="$section"/> + <xsl:with-param name="lang" select="$lang"/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- ============================================================== --> + + <!-- * A manifest file is useful for doing "make clean" during --> + <!-- * builds and for other purposes. When we make the manifest --> + <!-- * file, we need to include in it a filename for each man-page --> + <!-- * generated, including any "stub" pages. --> + <xsl:template name="generate.manifest"> + <xsl:variable name="filelist"> + <xsl:for-each select="//refentry"> + <!-- * all refname instances in a Refentry inherit their section --> + <!-- * numbers from the parent Refentry; so we only need to get --> + <!-- * the section once per Refentry, not once per Refname --> + <xsl:variable name="section"> + <xsl:call-template name="get.refentry.section"> + <xsl:with-param name="quiet" select="1"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:variable> + <xsl:for-each select="refnamediv/refname"> + <xsl:call-template name="make.adjusted.man.filename"> + <xsl:with-param name="name" select="."/> + <xsl:with-param name="section" select="$section"/> + <xsl:with-param name="lang" select="$lang"/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:for-each> + </xsl:for-each> + </xsl:variable> + + <!-- * we write the manifest file once per document, not once per --> + <!-- * Refentry --> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:value-of select="$man.output.manifest.filename"/> + </xsl:with-param> + <xsl:with-param name="quiet" select="1"/> + <xsl:with-param name="message-prolog">Note: </xsl:with-param> + <xsl:with-param name="message-epilog"> (manifest file)</xsl:with-param> + <xsl:with-param name="content"> + <xsl:value-of select="$filelist"/> + </xsl:with-param> + </xsl:call-template> + <xsl:if test="$man.output.quietly = 0"> + <xsl:message><xsl:text> </xsl:text></xsl:message> + </xsl:if> + </xsl:template> + + <!-- ============================================================== --> + + <!-- There is some stuff, that is not portable between groff/troff. --> + <xsl:template name="define.portability.macros"> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:text>.\" * Define some portability stuff </xsl:text> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.\" http://bugs.debian.org/507673 </xsl:text> + <xsl:text>.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.ie \n(.g .ds Aq \(aq</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.el .ds Aq '</xsl:text> + <xsl:text> </xsl:text> + </xsl:template> + + <!-- ============================================================== --> + + <xsl:template name="define.macros"> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:text>.\" * (re)Define some macros </xsl:text> + <xsl:text>.\" ----------------------------------------------------------------- </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.\" toupper - uppercase a string (locale-aware) </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.de toupper </xsl:text> + <xsl:text>.tr</xsl:text> + <xsl:text> </xsl:text> + <xsl:call-template name="make.tr.uppercase.arg"/> + <xsl:text>\\$* </xsl:text> + <xsl:text>.tr</xsl:text> + <xsl:text> </xsl:text> + <xsl:call-template name="make.tr.normalcase.arg"/> + <xsl:text>.. </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.\" SH-xref - format a cross-reference to an SH section </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.de SH-xref +.ie n \{\ +.\} +.toupper \\$* +.el \{\ +\\$* +.\} +.. </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.\" SH - level-one heading that works better for non-TTY output </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.de1 SH </xsl:text> + <xsl:text>.\" put an extra blank line of space above the head in non-TTY output </xsl:text> + <xsl:call-template name="roff-if-start"> + <xsl:with-param name="condition">t</xsl:with-param> + </xsl:call-template> + <xsl:text>.sp 1 </xsl:text> + <xsl:call-template name="roff-if-end"/> + <xsl:text>.sp \\n[PD]u +.nr an-level 1 +.set-an-margin +.nr an-prevailing-indent \\n[IN] +.fi +.in \\n[an-margin]u +.ti 0 +.HTML-TAG ".NH \\n[an-level]" +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +\." make the size of the head bigger +.ps +3 +.ft B +.ne (2v + 1u) +.ie n \{\ +.\" if n (TTY output), use uppercase +.toupper \\$* +.\} +.el \{\ +.nr an-break-flag 0 +.\" if not n (not TTY), use normal case (not uppercase) +\\$1 +.in \\n[an-margin]u +.ti 0 +.\" if not n (not TTY), put a border/line under subheading +.sp -.6 +\l'\n(.lu' +.\} +.. </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.\" SS - level-two heading that works better for non-TTY output </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.de1 SS +.sp \\n[PD]u +.nr an-level 1 +.set-an-margin +.nr an-prevailing-indent \\n[IN] +.fi +.in \\n[IN]u +.ti \\n[SN]u +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.ps \\n[PS-SS]u +\." make the size of the head bigger +.ps +2 +.ft B +.ne (2v + 1u) +.if \\n[.$] \&\\$* +.. </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.\" BB/EB - put background/screen (filled box) around block of text </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.de BB +.if t \{\ +.sp -.5 +.br +.in +2n +.ll -2n +.gcolor red +.di BX +.\} +.. +.de EB +.if t \{\ +.if "\\$2"adjust-for-leading-newline" \{\ +.sp -1 +.\} +.br +.di +.in +.ll +.gcolor +.nr BW \\n(.lu-\\n(.i +.nr BH \\n(dn+.5v +.ne \\n(BHu+.5v +.ie "\\$2"adjust-for-leading-newline" \{\ +\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[] +.\} +.el \{\ +\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[] +.\} +.in 0 +.sp -.5v +.nf +.BX +.in +.sp .5v +.fi +.\} +.. </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.\" BM/EM - put colored marker in margin next to block of text </xsl:text> + <xsl:text>.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ </xsl:text> + <xsl:text>.de BM +.if t \{\ +.br +.ll -2n +.gcolor red +.di BX +.\} +.. +.de EM +.if t \{\ +.br +.di +.ll +.gcolor +.nr BH \\n(dn +.ne \\n(BHu +\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[] +.in 0 +.nf +.BX +.in +.fi +.\} +.. </xsl:text> +</xsl:template> + +<xsl:template name="make.tr.uppercase.arg"> + <xsl:call-template name="string.shuffle"> + <xsl:with-param name="string1"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'lowercase.alpha'"/> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="string2"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'uppercase.alpha'"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template name="make.tr.normalcase.arg"> + <xsl:call-template name="string.shuffle"> + <xsl:with-param name="string1"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'lowercase.alpha'"/> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="string2"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'lowercase.alpha'"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template name="string.shuffle"> + <!-- * given two strings, "shuffle" them together into one --> + <xsl:param name="string1"/> + <xsl:param name="string2"/> + <xsl:value-of select="substring($string1, 1, 1)"/> + <xsl:value-of select="substring($string2, 1, 1)"/> + <xsl:if test="string-length($string1) > 1"> + <xsl:call-template name="string.shuffle"> + <xsl:with-param name="string1"> + <xsl:value-of select="substring($string1, 2)"/> + </xsl:with-param> + <xsl:with-param name="string2"> + <xsl:value-of select="substring($string2, 2)"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml new file mode 100644 index 0000000..706c99d --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml @@ -0,0 +1,3220 @@ +<?xml version="1.0" encoding="ASCII"?> +<book version="5.0"> + <info> + <title>Manpages Parameter Reference</title> + <releaseinfo role="meta"> + $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $ + </releaseinfo> + <author> + <orgname>The DocBook Project</orgname> + </author> + <copyright> + <year>2005-2007</year> + <holder>The DocBook Project</holder> + </copyright> + <abstract> + <para>This is reference documentation for all user-configurable + parameters in the DocBook XSL "manpages" stylesheet (for + generating groff/nroff output). Note that the manpages + stylesheet is a customization layer of the DocBook XSL HTML + stylesheet. Therefore, you can also use a number of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../html/">HTML stylesheet parameters</link> + to control manpages output (in addition to the + manpages-specific parameters listed in this section).</para> + </abstract> + </info> + <reference xml:id="general"> + <title>Hyphenation, justification, and breaking</title> +<refentry version="5.0" xml:id="man.hyphenate"> +<refmeta> +<refentrytitle>man.hyphenate</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.hyphenate</refname> +<refpurpose>Enable hyphenation?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.hyphenate.frag"> +<xsl:param name="man.hyphenate">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If non-zero, hyphenation is enabled.</para> + +<note> +<para>The default value for this parameter is zero because groff is +not particularly smart about how it does hyphenation; it can end up +hyphenating a lot of things that you don't want hyphenated. To +mitigate that, the default behavior of the stylesheets is to suppress +hyphenation of computer inlines, filenames, and URLs. (You can +override the default behavior by setting non-zero values for the +<parameter>man.hyphenate.urls</parameter>, +<parameter>man.hyphenate.filenames</parameter>, and +<parameter>man.hyphenate.computer.inlines</parameter> parameters.) But +the best way is still to just globally disable hyphenation, as the +stylesheets do by default.</para> + +<para>The only good reason to enabled hyphenation is if you have also +enabled justification (which is disabled by default). The reason is +that justified text can look very bad unless you also hyphenate it; to +quote the <quote>Hypenation</quote> node from the groff info page: + +<blockquote> + <para><emphasis>Since the odds are not great for finding a set of + words, for every output line, which fit nicely on a line without + inserting excessive amounts of space between words, 'gtroff' + hyphenates words so that it can justify lines without inserting too + much space between words.</emphasis></para> +</blockquote> + +So, if you set a non-zero value for the +<parameter>man.justify</parameter> parameter (to enable +justification), then you should probably also set a non-zero value for +<parameter>man.hyphenate</parameter> (to enable hyphenation).</para> +</note> + + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.hyphenate.urls"> +<refmeta> +<refentrytitle>man.hyphenate.urls</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.hyphenate.urls</refname> +<refpurpose>Hyphenate URLs?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.hyphenate.urls.frag"> +<xsl:param name="man.hyphenate.urls">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If zero (the default), hyphenation is suppressed for output of +the <tag>ulink</tag> <tag class="attribute">url</tag> attribute.</para> + +<note> + <para>If hyphenation is already turned off globally (that is, if + <parameter>man.hyphenate</parameter> is zero, setting + <parameter>man.hyphenate.urls</parameter> is not necessary.</para> +</note> + +<para>If <parameter>man.hyphenate.urls</parameter> is non-zero, URLs +will not be treated specially and are subject to hyphenation just like +other words.</para> + +<note> + <para>If you are thinking about setting a non-zero value for + <parameter>man.hyphenate.urls</parameter> in order to make long + URLs break across lines, you'd probably be better off + experimenting with setting the + <parameter>man.break.after.slash</parameter> parameter first. That + will cause long URLs to be broken after slashes.</para> +</note> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.hyphenate.filenames"> +<refmeta> +<refentrytitle>man.hyphenate.filenames</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.hyphenate.filenames</refname> +<refpurpose>Hyphenate filenames?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.hyphenate.filenames.frag"> +<xsl:param name="man.hyphenate.filenames">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If zero (the default), hyphenation is suppressed for +<tag>filename</tag> output.</para> + +<note> + <para>If hyphenation is already turned off globally (that is, if + <parameter>man.hyphenate</parameter> is zero, setting + <parameter>man.hyphenate.filenames</parameter> is not + necessary.</para> +</note> + +<para>If <parameter>man.hyphenate.filenames</parameter> is non-zero, +filenames will not be treated specially and are subject to hyphenation +just like other words.</para> + +<note> + <para>If you are thinking about setting a non-zero value for + <parameter>man.hyphenate.filenames</parameter> in order to make long + filenames/pathnames break across lines, you'd probably be better off + experimenting with setting the + <parameter>man.break.after.slash</parameter> parameter first. That + will cause long pathnames to be broken after slashes.</para> +</note> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.hyphenate.computer.inlines"> +<refmeta> +<refentrytitle>man.hyphenate.computer.inlines</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.hyphenate.computer.inlines</refname> +<refpurpose>Hyphenate computer inlines?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.hyphenate.computer.inlines.frag"> +<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If zero (the default), hyphenation is suppressed for +<quote>computer inlines</quote> such as environment variables, +constants, etc. This parameter current affects output of the following +elements: +<simplelist type="inline"> + + <member><tag>classname</tag></member> + <member><tag>constant</tag></member> + <member><tag>envar</tag></member> + <member><tag>errorcode</tag></member> + <member><tag>option</tag></member> + <member><tag>replaceable</tag></member> + <member><tag>userinput</tag></member> + <member><tag>type</tag></member> + <member><tag>varname</tag></member> +</simplelist> +</para> + +<note> + <para>If hyphenation is already turned off globally (that is, if + <parameter>man.hyphenate</parameter> is zero, setting the + <parameter>man.hyphenate.computer.inlines</parameter> is not + necessary.</para> +</note> + +<para>If <parameter>man.hyphenate.computer.inlines</parameter> is +non-zero, computer inlines will not be treated specially and will be +hyphenated like other words when needed.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.justify"> +<refmeta> +<refentrytitle>man.justify</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.justify</refname> +<refpurpose>Justify text to both right and left margins?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.justify.frag"> +<xsl:param name="man.justify">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If non-zero, text is justified to both the right and left +margins (or, in roff terminology, "adjusted and filled" to both the +right and left margins). If zero (the default), text is adjusted to +the left margin only -- producing what is traditionally called +"ragged-right" text.</para> + +<note> +<para>The default value for this parameter is zero because justified +text looks good only when it is also hyphenated. Without hyphenation, +excessive amounts of space often end up getting between words, in +order to "pad" lines out to align on the right margin.</para> + +<para>The problem is that groff is not particularly smart about how it +does hyphenation; it can end up hyphenating a lot of things that you +don't want hyphenated. So, disabling both justification and +hyphenation ensures that hyphens won't get inserted where you don't +want to them, and you don't end up with lines containing excessive +amounts of space between words.</para> + +<para>However, if do you decide to set a non-zero value for the +<parameter>man.justify</parameter> parameter (to enable +justification), then you should probably also set a non-zero value for +<parameter>man.hyphenate</parameter> (to enable hyphenation).</para> + +<para>Yes, these default settings run counter to how most existing man +pages are formatted. But there are some notable exceptions, such as +the <literal>perl</literal> man pages.</para> +</note> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.break.after.slash"> +<refmeta> +<refentrytitle>man.break.after.slash</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.break.after.slash</refname> +<refpurpose>Enable line-breaking after slashes?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.break.after.slash.frag"> +<xsl:param name="man.break.after.slash">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If non-zero, line-breaking after slashes is enabled. This is +mainly useful for causing long URLs or pathnames/filenames to be +broken up or "wrapped" across lines (though it also has the side +effect of sometimes causing relatively short URLs and pathnames to be +broken up across lines too).</para> + +<para>If zero (the default), line-breaking after slashes is +disabled. In that case, strings containing slashes (for example, URLs +or filenames) are not broken across lines, even if they exceed the +maximum column widith.</para> + +<warning> + <para>If you set a non-zero value for this parameter, check your + man-page output carefuly afterwards, in order to make sure that the + setting has not introduced an excessive amount of breaking-up of URLs + or pathnames. If your content contains mostly short URLs or + pathnames, setting a non-zero value for + <parameter>man.break.after.slash</parameter> will probably result in + in a significant number of relatively short URLs and pathnames being + broken across lines, which is probably not what you want.</para> +</warning> + +</refsection> +</refentry> + + </reference> + <reference xml:id="indent"> + <title>Indentation</title> +<refentry version="5.0" xml:id="man.indent.width"> +<refmeta> +<refentrytitle>man.indent.width</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">length</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.indent.width</refname> +<refpurpose>Specifies width used for adjusted indents</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.indent.width.frag"> +<xsl:param name="man.indent.width">4</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> +<para>The <parameter>man.indent.width</parameter> parameter specifies +the width used for adjusted indents. The value of +<parameter>man.indent.width</parameter> is used for indenting of +lists, verbatims, headings, and elsewhere, depending on whether the +values of certain <literal>man.indent.*</literal> boolean parameters +are non-zero.</para> + +<para>The value of <parameter>man.indent.width</parameter> should +include a valid roff measurement unit (for example, +<literal>n</literal> or <literal>u</literal>). The default value of +<literal>4n</literal> specifies a 4-en width; when viewed on a +console, that amounts to the width of four characters. For details +about roff measurment units, see the <literal>Measurements</literal> +node in the groff info page.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.indent.refsect"> +<refmeta> +<refentrytitle>man.indent.refsect</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.indent.refsect</refname> +<refpurpose>Adjust indentation of refsect* and refsection?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.indent.refsect.frag"> +<xsl:param name="man.indent.refsect" select="0"></xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.indent.refsect</parameter> is +non-zero, the width of the left margin for +<tag>refsect1</tag>, <tag>refsect2</tag> and +<tag>refsect3</tag> contents and titles (and first-level, +second-level, and third-level nested +<tag>refsection</tag>instances) is adjusted by the value of +the <parameter>man.indent.width</parameter> parameter. With +<parameter>man.indent.width</parameter> set to its default value of +<literal>3n</literal>, the main results are that: + +<itemizedlist> + <listitem> + <para>contents of <tag>refsect1</tag> are output with a + left margin of three characters instead the roff default of seven + or eight characters</para> + </listitem> + <listitem> + <para>contents of <tag>refsect2</tag> are displayed in + console output with a left margin of six characters instead the of + the roff default of seven characters</para> + </listitem> + <listitem> + <para> the contents of <tag>refsect3</tag> and nested + <tag>refsection</tag> instances are adjusted + accordingly.</para> + </listitem> +</itemizedlist> + +If instead the value of <parameter>man.indent.refsect</parameter> is +zero, no margin adjustment is done for <literal>refsect*</literal> +output.</para> + +<tip> + <para>If your content is primarly comprised of + <tag>refsect1</tag> and <tag>refsect2</tag> content + (or the <tag>refsection</tag> equivalent) – with few or + no <tag>refsect3</tag> or lower nested sections , you may be + able to “conserve” space in your output by setting + <parameter>man.indent.refsect</parameter> to a non-zero value. Doing + so will “squeeze” the left margin in such as way as to provide an + additional four characters of “room” per line in + <tag>refsect1</tag> output. That extra room may be useful + if, for example, you have many verbatim sections with long lines in + them.</para> +</tip> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.indent.blurbs"> +<refmeta> +<refentrytitle>man.indent.blurbs</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.indent.blurbs</refname> +<refpurpose>Adjust indentation of blurbs?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.indent.blurbs.frag"> +<xsl:param name="man.indent.blurbs" select="1"></xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.indent.blurbs</parameter> is +non-zero, the width of the left margin for +<tag>authorblurb</tag>, <tag>personblurb</tag>, and +<tag>contrib</tag> output is set to the value of the +<parameter>man.indent.width</parameter> parameter +(<literal>3n</literal> by default). If instead the value of +<parameter>man.indent.blurbs</parameter> is zero, the built-in roff +default width (<literal>7.2n</literal>) is used.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.indent.lists"> +<refmeta> +<refentrytitle>man.indent.lists</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.indent.lists</refname> +<refpurpose>Adjust indentation of lists?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.indent.lists.frag"> +<xsl:param name="man.indent.lists" select="1"></xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.indent.lists</parameter> is +non-zero, the width of the left margin for list items in +<tag>itemizedlist</tag>, +<tag>orderedlist</tag>, +<tag>variablelist</tag> output (and output of some other +lists) is set to the value of the +<parameter>man.indent.width</parameter> parameter +(<literal>4n</literal> by default). If instead the value of +<parameter>man.indent.lists</parameter> is zero, the built-in roff +default width (<literal>7.2n</literal>) is used.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.indent.verbatims"> +<refmeta> +<refentrytitle>man.indent.verbatims</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.indent.verbatims</refname> +<refpurpose>Adjust indentation of verbatims?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.indent.verbatims.frag"> +<xsl:param name="man.indent.verbatims" select="1"></xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.indent.verbatims</parameter> is +non-zero, the width of the left margin for output of verbatim +environments (<tag>programlisting</tag>, +<tag>screen</tag>, and so on) is set to the value of the +<parameter>man.indent.width</parameter> parameter +(<literal>3n</literal> by default). If instead the value of +<parameter>man.indent.verbatims</parameter> is zero, the built-in roff +default width (<literal>7.2n</literal>) is used.</para> + +</refsection> +</refentry> + + </reference> + <reference xml:id="fonts"> + <title>Fonts</title> +<refentry version="5.0" xml:id="man.font.funcprototype"> +<refmeta> +<refentrytitle>man.font.funcprototype</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.font.funcprototype</refname> +<refpurpose>Specifies font for funcprototype output</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.font.funcprototype.frag"> + <xsl:param name="man.font.funcprototype">BI</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.font.funcprototype</parameter> parameter +specifies the font for <tag>funcprototype</tag> output. It +should be a valid roff font name, such as <literal>BI</literal> or +<literal>B</literal>.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.font.funcsynopsisinfo"> +<refmeta> +<refentrytitle>man.font.funcsynopsisinfo</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.font.funcsynopsisinfo</refname> +<refpurpose>Specifies font for funcsynopsisinfo output</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.font.funcsynopsisinfo.frag"> + <xsl:param name="man.font.funcsynopsisinfo">B</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.font.funcsynopsisinfo</parameter> parameter +specifies the font for <tag>funcsynopsisinfo</tag> output. It +should be a valid roff font name, such as <literal>B</literal> or +<literal>I</literal>.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.font.links"> +<refmeta> +<refentrytitle>man.font.links</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.font.links</refname> +<refpurpose>Specifies font for links</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.font.links.frag"> +<xsl:param name="man.font.links">B</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.font.links</parameter> parameter +specifies the font for output of links (<tag>ulink</tag> instances +and any instances of any element with an <tag class="attribute">xlink:href</tag> attribute).</para> + +<para>The value of <parameter>man.font.links</parameter> must be + either <literal>B</literal> or <literal>I</literal>, or empty. If +the value is empty, no font formatting is applied to links.</para> + +<para>If you set <parameter>man.endnotes.are.numbered</parameter> and/or +<parameter>man.endnotes.list.enabled</parameter> to zero (disabled), then +you should probably also set an empty value for +<parameter>man.font.links</parameter>. But if +<parameter>man.endnotes.are.numbered</parameter> is non-zero (enabled), +you should probably keep +<parameter>man.font.links</parameter> set to +<literal>B</literal> or <literal>I</literal><footnote><para>The + main purpose of applying a font format to links in most output +formats it to indicate that the formatted text is +“clickable”; given that links rendered in man pages are +not “real” hyperlinks that users can click on, it might +seem like there is never a good reason to have font formatting for +link contents in man output.</para> +<para>In fact, if you suppress the +display of inline link references (by setting +<parameter>man.endnotes.are.numbered</parameter> to zero), there is no +good reason to apply font formatting to links. However, if +<parameter>man.endnotes.are.numbered</parameter> is non-zero, having +font formatting for links (arguably) serves a purpose: It provides +“context” information about exactly what part of the text +is being “annotated” by the link. Depending on how you +mark up your content, that context information may or may not +have value.</para></footnote>.</para> +</refsection> + +<refsection><info><title>Related Parameters</title></info> + <para><parameter>man.endnotes.list.enabled</parameter>, + <parameter>man.endnotes.are.numbered</parameter></para> +</refsection> + +</refentry> + +<refentry version="5.0" xml:id="man.font.table.headings"> +<refmeta> +<refentrytitle>man.font.table.headings</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.font.table.headings</refname> +<refpurpose>Specifies font for table headings</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.font.table.headings.frag"> + <xsl:param name="man.font.table.headings">B</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.font.table.headings</parameter> parameter +specifies the font for <tag>table</tag> headings. It should be +a valid roff font, such as <literal>B</literal> or +<literal>I</literal>.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.font.table.title"> +<refmeta> +<refentrytitle>man.font.table.title</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.font.table.title</refname> +<refpurpose>Specifies font for table headings</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.font.table.title.frag"> + <xsl:param name="man.font.table.title">B</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.font.table.title</parameter> parameter +specifies the font for <tag>table</tag> titles. It should be +a valid roff font, such as <literal>B</literal> or +<literal>I</literal>.</para> + +</refsection> +</refentry> + + </reference> + <reference xml:id="synopsis"> + <title>SYNOPSIS section</title> +<refentry version="5.0" xml:id="man.funcsynopsis.style"> +<refmeta> +<refentrytitle>man.funcsynopsis.style</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">list</refmiscinfo> +<refmiscinfo class="other" otherclass="value">ansi</refmiscinfo> +<refmiscinfo class="other" otherclass="value">kr</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.funcsynopsis.style</refname> +<refpurpose>What style of <tag>funcsynopsis</tag> should be generated?</refpurpose> +</refnamediv> +<refsynopsisdiv> +<programlisting xml:id="man.funcsynopsis.style.frag"><xsl:param name="man.funcsynopsis.style">ansi</xsl:param></programlisting> +</refsynopsisdiv> +<refsection><info><title>Description</title></info> +<para>If <parameter>man.funcsynopsis.style</parameter> is +<literal>ansi</literal>, ANSI-style function synopses are +generated for a <tag>funcsynopsis</tag>, otherwise K&R-style +function synopses are generated.</para> +</refsection> +</refentry> + + </reference> + <reference xml:id="authors"> + <title>AUTHORS and COPYRIGHT sections</title> + <refentry version="5.0" xml:id="man.authors.section.enabled"> +<refmeta> +<refentrytitle>man.authors.section.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.authors.section.enabled</refname> +<refpurpose>Display auto-generated AUTHORS section?</refpurpose> +</refnamediv> +<refsynopsisdiv> +<programlisting xml:id="man.authors.section.enabled.frag"> +<xsl:param name="man.authors.section.enabled">1</xsl:param> +</programlisting> +</refsynopsisdiv> +<refsection><info><title>Description</title></info> + +<para>If the value of +<parameter>man.authors.section.enabled</parameter> is non-zero +(the default), then an <literal>AUTHORS</literal> section is +generated near the end of each man page. The output of the +<literal>AUTHORS</literal> section is assembled from any +<tag>author</tag>, <tag>editor</tag>, and <tag>othercredit</tag> +metadata found in the contents of the child <tag>info</tag> or +<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag> +itself, or from any <tag>author</tag>, <tag>editor</tag>, and +<tag>othercredit</tag> metadata that may appear in <tag>info</tag> +contents of any ancestors of the <tag>refentry</tag>.</para> + +<para>If the value of +<parameter>man.authors.section.enabled</parameter> is zero, the +the auto-generated <literal>AUTHORS</literal> section is +suppressed.</para> + +<para>Set the value of + <parameter>man.authors.section.enabled</parameter> to zero if + you want to have a manually created <literal>AUTHORS</literal> + section in your source, and you want it to appear in output + instead of the auto-generated <literal>AUTHORS</literal> + section.</para> +</refsection> +</refentry> + + <refentry version="5.0" xml:id="man.copyright.section.enabled"> +<refmeta> +<refentrytitle>man.copyright.section.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.copyright.section.enabled</refname> +<refpurpose>Display auto-generated COPYRIGHT section?</refpurpose> +</refnamediv> +<refsynopsisdiv> +<programlisting xml:id="man.copyright.section.enabled.frag"> +<xsl:param name="man.copyright.section.enabled">1</xsl:param> +</programlisting> +</refsynopsisdiv> +<refsection><info><title>Description</title></info> + +<para>If the value of +<parameter>man.copyright.section.enabled</parameter> is non-zero +(the default), then a <literal>COPYRIGHT</literal> section is +generated near the end of each man page. The output of the +<literal>COPYRIGHT</literal> section is assembled from any +<tag>copyright</tag> and <tag>legalnotice</tag> metadata found in +the contents of the child <tag>info</tag> or +<tag>refentryinfo</tag> (if any) of the <tag>refentry</tag> +itself, or from any <tag>copyright</tag> and +<tag>legalnotice</tag> metadata that may appear in <tag>info</tag> +contents of any ancestors of the <tag>refentry</tag>.</para> + +<para>If the value of +<parameter>man.copyright.section.enabled</parameter> is zero, the +the auto-generated <literal>COPYRIGHT</literal> section is +suppressed.</para> + +<para>Set the value of + <parameter>man.copyright.section.enabled</parameter> to zero if + you want to have a manually created <literal>COPYRIGHT</literal> + section in your source, and you want it to appear in output + instead of the auto-generated <literal>COPYRIGHT</literal> + section.</para> +</refsection> +</refentry> + + </reference> + <reference xml:id="endnotes"> + <title>Endnotes and link handling</title> +<refentry version="5.0" xml:id="man.endnotes.list.enabled"> +<refmeta> +<refentrytitle>man.endnotes.list.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.endnotes.list.enabled</refname> +<refpurpose>Display endnotes list at end of man page?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.endnotes.list.enabled.frag"> +<xsl:param name="man.endnotes.list.enabled">1</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is +non-zero (the default), then an endnotes list is added to the end of +the output man page.</para> + +<para>If the value of <parameter>man.endnotes.list.enabled</parameter> is +zero, the list is suppressed — unless link numbering is enabled (that +is, if <parameter>man.endnotes.are.numbered</parameter> is non-zero), in +which case, that setting overrides the +<parameter>man.endnotes.list.enabled</parameter> setting, and the +endnotes list is still displayed. The reason is that inline +numbering of notesources associated with endnotes only makes sense +if a (numbered) list of endnotes is also generated.</para> + +<note> + <para>Leaving + <parameter>man.endnotes.list.enabled</parameter> at its default + (non-zero) value ensures that no “out of line” information (such + as the URLs for hyperlinks and images) gets lost in your + man-page output. It just gets “rearranged”.</para> + <para>So if you’re thinking about disabling endnotes listing by + setting the value of + <parameter>man.endnotes.list.enabled</parameter> to zero: + Before you do so, first take some time to carefully consider + the information needs and experiences of your users. The “out + of line” information has value even if the presentation of it + in text output is not as interactive as it may be in other + output formats.</para> + <para>As far as the specific case of URLs: Even though the URLs + displayed in text output may not be “real” (clickable) + hyperlinks, many X terminals have convenience features for + recognizing URLs and can, for example, present users with + an options to open a URL in a browser with the user clicks on + the URL is a terminal window. And short of those, users with X + terminals can always manually cut and paste the URLs into a web + browser.</para> + <para>Also, note that various “man to html” tools, such as the + widely used <command><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>) + application, automatically mark up URLs with <literal>a@href</literal> markup + during conversion — resulting in “real” hyperlinks in HTML + output from those tools.</para> +</note> + +<para>To “turn off” numbering of endnotes in the +endnotes list, set <parameter>man.endnotes.are.numbered</parameter> +to zero. The endnotes list will +still be displayed; it will just be displayed without the +numbers<footnote><para>It can still make sense to have +the list of endnotes displayed even if you have endnotes numbering turned +off. In that case, your endnotes list basically becomes a “list +of references” without any association with specific text in +your document. This is probably the best option if you find the inline +endnotes numbering obtrusive. Your users will still have access to all the “out of line” +such as URLs for hyperlinks.</para></footnote> +</para> + +<para>The default heading for the endnotes list is +<literal>NOTES</literal>. To change that, set a non-empty +value for the <parameter>man.endnotes.list.heading</parameter> +parameter.</para> + +<para>In the case of notesources that are links: Along with the +URL for each link, the endnotes list includes the contents of the +link. The list thus includes only non-empty<footnote> + +<para>A “non-empty” link is one that looks like +this:<literallayout class="monospaced"> <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink></literallayout> +an “empty link” is on that looks like this:<literallayout class="monospaced"> <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/></literallayout> +</para></footnote> links. + +Empty links are never included, and never numbered. They are simply +displayed inline, without any numbering.</para> + +<para>In addition, if there are multiple instances of links in a +<tag>refentry</tag> that have the same URL, the URL is listed only +once. The contents listed for that link in the endnotes list are +the contents of the first link which has that URL.</para> + +<para>If you disable endnotes listing, you should probably also set +<parameter>man.links.are.underlined</parameter> to zero (to disable +link underlining).</para> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.endnotes.list.heading"> +<refmeta> +<refentrytitle>man.endnotes.list.heading</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.endnotes.list.heading</refname> +<refpurpose>Specifies an alternate name for endnotes list</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.endnotes.list.heading.frag"> +<xsl:param name="man.endnotes.list.heading"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of the +<parameter>man.endnotes.are.numbered</parameter> parameter +and/or the <parameter>man.endnotes.list.enabled</parameter> +parameter is non-zero (the defaults for both are non-zero), a +numbered list of endnotes is generated near the end of each man +page. The default heading for the list of endnotes is the +equivalent of the English word <literal>NOTES</literal> in +the current locale. To cause an alternate heading to be displayed, +set a non-empty value for the +<parameter>man.endnotes.list.heading</parameter> parameter — +for example, <literal>REFERENCES</literal>.</para> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.endnotes.are.numbered"> +<refmeta> +<refentrytitle>man.endnotes.are.numbered</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.endnotes.are.numbered</refname> +<refpurpose>Number endnotes?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.endnotes.are.numbered.frag"> +<xsl:param name="man.endnotes.are.numbered">1</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is +non-zero (the default), then for each non-empty<footnote> +<para>A “non-empty” notesource is one that looks like +this:<literallayout class="monospaced"> <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink></literallayout> +an “empty” notesource is on that looks like this:<literallayout class="monospaced"> <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/></literallayout> +</para></footnote> “notesource”: + +<itemizedlist> + <listitem> + <para>a number (in square brackets) is displayed inline after the + rendered inline contents (if any) of the notesource</para> + </listitem> + <listitem> + <para>the contents of the notesource are included in a + numbered list of endnotes that is generated at the end of + each man page; the number for each endnote corresponds to + the inline number for the notesource with which it is + associated</para> + </listitem> +</itemizedlist> +The default heading for the list of endnotes is +<literal>NOTES</literal>. To output a different heading, set a value +for the <parameter>man.endnotes.section.heading</parameter> +parameter.</para> + +<note> + <para>The endnotes list is also displayed (but without + numbers) if the value of + <parameter>man.endnotes.list.enabled</parameter> is + non-zero.</para> +</note> + + +<para>If the value of <parameter>man.endnotes.are.numbered</parameter> is +zero, numbering of endnotess is suppressed; only inline +contents (if any) of the notesource are displayed inline. +<important> + <para>If you are thinking about disabling endnote numbering by setting + the value of <parameter>man.endnotes.are.numbered</parameter> to zero, + before you do so, first take some time to carefully + consider the information needs and experiences of your users. The + square-bracketed numbers displayed inline after notesources may seem + obstrusive and aesthetically unpleasing<footnote><para>As far as notesources that are links, ytou might + think it would be better to just display URLs for non-empty + links inline, after their content, rather than displaying + square-bracketed numbers all over the place. But it's not better. In + fact, it's not even practical, because many (most) URLs for links + are too long to be displayed inline. They end up overflowing the + right margin. You can set a non-zero value for + <parameter>man.break.after.slash</parameter> parameter to deal with + that, but it could be argued that what you end up with is at least + as ugly, and definitely more obstrusive, then having short + square-bracketed numbers displayed inline.</para></footnote>, + + but in a text-only output format, the + numbered-notesources/endnotes-listing mechanism is the only + practical way to handle this kind of content.</para> + + <para>Also, users of “text based” browsers such as + <command>lynx</command> will already be accustomed to seeing inline + numbers for links. And various "man to html" applications, such as + the widely used <command><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://users.actrix.gen.nz/michael/vhman2html.html">man2html</link></command> (<literal>VH-Man2html</literal>) + application, can automatically turn URLs into "real" HTML hyperlinks + in output. So leaving <parameter>man.endnotes.are.numbered</parameter> + at its default (non-zero) value ensures that no information is + lost in your man-page output. It just gets + “rearranged”.</para> +</important> +</para> +<para>The handling of empty links is not affected by this +parameter. Empty links are handled simply by displaying their URLs +inline. Empty links are never auto-numbered.</para> + +<para>If you disable endnotes numbering, you should probably also set +<parameter>man.font.links</parameter> to an empty value (to +disable font formatting for links.</para> +</refsection> + +<refsection><info><title>Related Parameters</title></info> + <para><parameter>man.endnotes.list.enabled</parameter>, + <parameter>man.font.links</parameter></para> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.base.url.for.relative.links"> + <refmeta> + <refentrytitle>man.base.url.for.relative.links</refentrytitle> + <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> + </refmeta> + <refnamediv> + <refname>man.base.url.for.relative.links</refname> + <refpurpose>Specifies a base URL for relative links</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <programlisting xml:id="man.base.url.for.relative.links.frag"><xsl:param name="man.base.url.for.relative.links">[set $man.base.url.for.relative.links]/</xsl:param></programlisting> + </refsynopsisdiv> + + <refsection><info><title>Description</title></info> + + <para>For any “notesource” listed in the auto-generated + “NOTES” section of output man pages (which is generated when + the value of the + <parameter>man.endnotes.list.enabled</parameter> parameter + is non-zero), if the notesource is a link source with a + relative URI, the URI is displayed in output with the value + of the + <parameter>man.base.url.for.relative.links</parameter> + parameter prepended to the value of the link URI.</para> + + <note> + <para>A link source is an notesource that references an + external resource: + <itemizedlist> + <listitem> + <para>a <tag>ulink</tag> element with a <tag class="attribute">url</tag> attribute</para> + </listitem> + <listitem> + <para>any element with an <tag class="attribute">xlink:href</tag> attribute</para> + </listitem> + <listitem> + <para>an <tag>imagedata</tag>, <tag>audiodata</tag>, or + <tag>videodata</tag> element</para> + </listitem> + </itemizedlist> + </para> + </note> + + <para>If you use relative URIs in link sources in your DocBook + <tag>refentry</tag> source, and you leave + <parameter>man.base.url.for.relative.links</parameter> + unset, the relative links will appear “as is” in the “Notes” + section of any man-page output generated from your source. + That’s probably not what you want, because such relative + links are only usable in the context of HTML output. So, to + make the links meaningful and usable in the context of + man-page output, set a value for + <parameter>man.base.url.for.relative.links</parameter> that + points to the online version of HTML output generated from + your DocBook <tag>refentry</tag> source. For + example: + <programlisting><xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param></programlisting> + </para> + + </refsection> + + <refsection><info><title>Related Parameters</title></info> + <para><parameter>man.endnotes.list.enabled</parameter></para> + </refsection> + +</refentry> + + </reference> + <reference xml:id="lists"> + <title>Lists</title> +<refentry version="5.0" xml:id="man.segtitle.suppress"> +<refmeta> +<refentrytitle>man.segtitle.suppress</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.segtitle.suppress</refname> +<refpurpose>Suppress display of segtitle contents?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.segtitle.suppress.frag"> +<xsl:param name="man.segtitle.suppress" select="0"></xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.segtitle.suppress</parameter> is +non-zero, then display of <tag>segtitle</tag> contents is +suppressed in output.</para> + +</refsection> +</refentry> + + </reference> + <reference xml:id="charmap"> + <title>Character/string substitution</title> +<refentry version="5.0" xml:id="man.charmap.enabled"> +<refmeta> +<refentrytitle>man.charmap.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.charmap.enabled</refname> +<refpurpose>Apply character map before final output?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.charmap.enabled.frag"> +<xsl:param name="man.charmap.enabled" select="1"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of the <parameter>man.charmap.enabled</parameter> +parameter is non-zero, a "character map" is used to substitute certain +Unicode symbols and special characters with appropriate roff/groff +equivalents, just before writing each man-page file to the +filesystem. If instead the value of +<parameter>man.charmap.enabled</parameter> is zero, Unicode characters +are passed through "as is".</para> + +<refsection><info><title>Details</title></info> + +<para>For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character +map</link> format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution.</para> + +<para>You can use the <parameter>man.charmap.uri</parameter> +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution.</para> + +<para>You can also use a subset of a character map. For details, +see the <parameter>man.charmap.use.subset</parameter>, +<parameter>man.charmap.subset.profile</parameter>, and +<parameter>man.charmap.subset.profile.english</parameter> +parameters.</para> + +</refsection> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.charmap.uri"> +<refmeta> +<refentrytitle>man.charmap.uri</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.charmap.uri</refname> +<refpurpose>URI for custom roff character map</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.charmap.uri.frag"> +<xsl:param name="man.charmap.uri"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes an <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character +map</link>. That character map can be considered the standard roff +character map for the distribution.</para> + +<para>If the value of the <parameter>man.charmap.uri</parameter> +parameter is non-empty, that value is used as the URI for the location +for an alternate roff character map to use in place of the standard +roff character map provided in the distribution.</para> + +<warning> +<para>Do not set a value for <parameter>man.charmap.uri</parameter> +unless you have a custom roff character map that differs from the +standard one provided in the distribution.</para> +</warning> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.charmap.use.subset"> +<refmeta> +<refentrytitle>man.charmap.use.subset</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.charmap.use.subset</refname> +<refpurpose>Use subset of character map instead of full map?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.charmap.use.subset.frag"> +<xsl:param name="man.charmap.use.subset" select="1"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of the +<parameter>man.charmap.use.subset</parameter> parameter is non-zero, +a subset of the roff character map is used instead of the full roff +character map. The profile of the subset used is determined either +by the value of the +<parameter>man.charmap.subset.profile</parameter> +parameter (if the source is not in English) or the +<parameter>man.charmap.subset.profile.english</parameter> +parameter (if the source is in English).</para> + +<note> + <para>You may want to experiment with setting a non-zero value of + <parameter>man.charmap.use.subset</parameter>, so that the full + character map is used. Depending on which XSLT engine you run, + setting a non-zero value for + <parameter>man.charmap.use.subset</parameter> may significantly + increase the time needed to process your documents. Or it may + not. For example, if you set it and run it with xsltproc, it seems + to dramatically increase processing time; on the other hand, if you + set it and run it with Saxon, it does not seem to increase + processing time nearly as much.</para> + + <para>If processing time is not a important concern and/or you can + tolerate the increase in processing time imposed by using the full + character map, set <parameter>man.charmap.use.subset</parameter> to + zero.</para> +</note> + +<refsection><info><title>Details</title></info> + +<para>For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">roff character map</link> that is compliant with the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org/TR/xslt20/#character-maps">XSLT character +map</link> format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution.</para> + +<note> +<para>You can use the <parameter>man.charmap.uri</parameter> +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution.</para> +</note> + +<para>Because it is not terrifically efficient to use the standard +800-character character map in full -- and for most (or all) users, +never necessary to use it in full -- the DocBook XSL Stylesheets +support a mechanism for using, within any given character map, a +subset of character mappings instead of the full set. You can use the +<parameter>man.charmap.subset.profile</parameter> or +<parameter>man.charmap.subset.profile.english</parameter> +parameter to tune the profile of that subset to use.</para> + +</refsection> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.charmap.subset.profile"> +<refmeta> +<refentrytitle>man.charmap.subset.profile</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.charmap.subset.profile</refname> +<refpurpose>Profile of character map subset</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.charmap.subset.profile.frag"> +<xsl:param name="man.charmap.subset.profile"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + (@*[local-name() = 'class'] = 'symbols' or + @*[local-name() = 'class'] = 'letters') +) or +@*[local-name() = 'block'] = 'Latin Extended-A' +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of the +<parameter>man.charmap.use.subset</parameter> parameter is non-zero, +and your DocBook source is not written in English (that + is, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root element + in your DocBook source or on the first <tag>refentry</tag> + element in your source has a value other than + <literal>en</literal>), then the character-map subset specified + by the <parameter>man.charmap.subset.profile</parameter> + parameter is used instead of the full roff character map.</para> + +<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root + element in your DocBook + source or on the first <tag>refentry</tag> element in your source + has the value <literal>en</literal> or if it has no <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute, then the character-map + subset specified by the + <parameter>man.charmap.subset.profile.english</parameter> + parameter is used instead of + <parameter>man.charmap.subset.profile</parameter>.</para> + +<para>The difference between the two subsets is that + <parameter>man.charmap.subset.profile</parameter> provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set).</para> + +<para>The value of <parameter>man.charmap.subset.profile</parameter> +is a string representing an XPath expression that matches attribute +names and values for <tag namespace="http://docbook.sf.net/xmlns/unichar/1.0">output-character</tag> +elements in the character map.</para> + +<para>The attributes supported in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map included in the distribution</link> are: +<variablelist> + <varlistentry> + <term>character</term> + <listitem> + <simpara>a raw Unicode character or numeric Unicode + character-entity value (either in decimal or hex); all + characters have this attribute</simpara> + </listitem> + </varlistentry> + <varlistentry> + <term>name</term> + <listitem> + <simpara>a standard full/long ISO/Unicode character name (e.g., + "OHM SIGN"); all characters have this attribute</simpara> + </listitem> + </varlistentry> + <varlistentry> + <term>block</term> + <listitem> + <simpara>a standard Unicode "block" name (e.g., "General + Punctuation"); all characters have this attribute. For the full + list of Unicode block names supported in the standard roff + character map, see <xref linkend="BlocksAndClasses"/>.</simpara> + </listitem> + </varlistentry> + <varlistentry> + <term>class</term> + <listitem> + <simpara>a class of characters (e.g., "spaces"). Not all + characters have this attribute; currently, it is used only with + certain characters within the "C1 Controls And Latin-1 + Supplement" and "General Punctuation" blocks. For details, see + <xref linkend="BlocksAndClasses"/>.</simpara> + </listitem> + </varlistentry> + <varlistentry> + <term>entity</term> + <listitem> + <simpara>an ISO entity name (e.g., "ohm"); not all characters + have this attribute, because not all characters have ISO entity + names; for example, of the 800 or so characters in the standard + roff character map included in the distribution, only around 300 + have ISO entity names. + </simpara> + </listitem> + </varlistentry> + <varlistentry> + <term>string</term> + <listitem> + <simpara>a string representing an roff/groff escape-code (with + "@esc@" used in place of the backslash), or a simple ASCII + string; all characters in the roff character map have this + attribute</simpara> + </listitem> + </varlistentry> +</variablelist> +</para> +<para>The value of <parameter>man.charmap.subset.profile</parameter> +is evaluated as an XPath expression at run-time to select a portion of +the roff character map to use. You can tune the subset used by adding +or removing parts. For example, if you need to use a wide range of +mathematical operators in a document, and you want to have them +converted into roff markup properly, you might add the following: + +<literallayout class="monospaced"> @*[local-name() = 'block'] ='MathematicalOperators' </literallayout> + +That will cause a additional set of around 67 additional "math" +characters to be converted into roff markup. </para> + +<note> +<para>Depending on which XSLT engine you use, either the EXSLT +<function>dyn:evaluate</function> extension function (for xsltproc or +Xalan) or <function>saxon:evaluate</function> extension function (for +Saxon) are used to dynamically evaluate the value of +<parameter>man.charmap.subset.profile</parameter> at run-time. If you +don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that +supports <function>dyn:evaluate</function> -- you must either set the +value of the <parameter>man.charmap.use.subset</parameter> parameter +to zero and process your documents using the full character map +instead, or set the value of the +<parameter>man.charmap.enabled</parameter> parameter to zero instead +(so that character-map processing is disabled completely.</para> +</note> + +<para>An alternative to using +<parameter>man.charmap.subset.profile</parameter> is to create your +own custom character map, and set the value of +<parameter>man.charmap.uri</parameter> to the URI/filename for +that. If you use a custom character map, you will probably want to +include in it just the characters you want to use, and so you will +most likely also want to set the value of +<parameter>man.charmap.use.subset</parameter> to zero.</para> +<para>You can create a +custom character map by making a copy of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook.sourceforge.net/snapshot/xsl/manpages/charmap.groff.xsl">standard roff character map</link> provided in the distribution, and +then adding to, changing, and/or deleting from that.</para> + +<caution> +<para>If you author your DocBook XML source in UTF-8 or UTF-16 +encoding and aren't sure what OSes or environments your man-page +output might end up being viewed on, and not sure what version of +nroff/groff those environments might have, you should be careful about +what Unicode symbols and special characters you use in your source and +what parts you add to the value of +<parameter>man.charmap.subset.profile</parameter>.</para> +<para>Many of the escape codes used are specific to groff and using +them may not provide the expected output on an OS or environment that +uses nroff instead of groff.</para> +<para>On the other hand, if you intend for your man-page output to be +viewed only on modern systems (for example, GNU/Linux systems, FreeBSD +systems, or Cygwin environments) that have a good, up-to-date groff, +then you can safely include a wide range of Unicode symbols and +special characters in your UTF-8 or UTF-16 encoded DocBook XML source +and add any of the supported Unicode block names to the value of +<parameter>man.charmap.subset.profile</parameter>.</para> +</caution> + + +<para>For other details, see the documentation for the +<parameter>man.charmap.use.subset</parameter> parameter.</para> + +<refsection xml:id="BlocksAndClasses"><info><title>Supported Unicode block names and "class" values</title></info> + + + <para>Below is the full list of Unicode block names and "class" + values supported in the standard roff stylesheet provided in the + distribution, along with a description of which codepoints from the + Unicode range corresponding to that block name or block/class + combination are supported.</para> + + <itemizedlist> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=C1%20Controls%20and%20Latin-1%20Supplement%20(Latin-1%20Supplement)">C1 Controls And Latin-1 Supplement (Latin-1 Supplement)</link> (x00a0 to x00ff) + <itemizedlist><info><title>class values</title></info> + + <listitem> + <para>symbols</para> + </listitem> + <listitem> + <para>letters</para> + </listitem> + </itemizedlist></para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Latin%20Extended-A">Latin Extended-A</link> (x0100 to x017f, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Spacing%20Modifier%20Letters">Spacing Modifier Letters</link> (x02b0 to x02ee, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Greek%20and%20Coptic">Greek and Coptic</link> (x0370 to x03ff, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=General%20Punctuation">General Punctuation</link> (x2000 to x206f, partial) + <itemizedlist><info><title>class values</title></info> + + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&start=8192&end=8203">spaces</link></para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&start=8208&end=8213">dashes</link></para> + </listitem> + <listitem> + <para>quotes</para> + </listitem> + <listitem> + <para>daggers</para> + </listitem> + <listitem> + <para>bullets</para> + </listitem> + <listitem> + <para>leaders</para> + </listitem> + <listitem> + <para>primes</para> + </listitem> + </itemizedlist> + </para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Superscripts%20and%20Subscripts">Superscripts and Subscripts</link> (x2070 to x209f)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Currency%20Symbols">Currency Symbols</link> (x20a0 to x20b1)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Letterlike%20Symbols">Letterlike Symbols</link> (x2100 to x214b)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Number%20Forms">Number Forms</link> (x2150 to x218f)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Arrows">Arrows</link> (x2190 to x21ff, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Mathematical%20Operators">Mathematical Operators</link> (x2200 to x22ff, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Control%20Pictures">Control Pictures</link> (x2400 to x243f)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Enclosed%20Alphanumerics">Enclosed Alphanumerics</link> (x2460 to x24ff)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Geometric%20Shapes">Geometric Shapes</link> (x25a0 to x25f7, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Miscellaneous%20Symbols">Miscellaneous Symbols</link> (x2600 to x26ff, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Dingbats">Dingbats</link> (x2700 to x27be, partial)</para> + </listitem> + <listitem> + <para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://zvon.org/other/charSearch/PHP/search.php?searchType=103&id=Alphabetic%20Presentation%20Forms">Alphabetic Presentation Forms</link> (xfb00 to xfb04 only)</para> + </listitem> + </itemizedlist> +</refsection> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.charmap.subset.profile.english"> +<refmeta> +<refentrytitle>man.charmap.subset.profile.english</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.charmap.subset.profile.english</refname> +<refpurpose>Profile of character map subset</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.charmap.subset.profile.english.frag"> +<xsl:param name="man.charmap.subset.profile.english"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + @*[local-name() = 'class'] = 'symbols') +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of the + <parameter>man.charmap.use.subset</parameter> parameter is + non-zero, and your DocBook source is written in English (that + is, if its <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute on the root element + in your DocBook source or on the first <tag>refentry</tag> + element in your source has the value <literal>en</literal> or if + it has no <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute), then the + character-map subset specified by the + <parameter>man.charmap.subset.profile.english</parameter> + parameter is used instead of the full roff character map.</para> + +<para>Otherwise, if the <tag class="attribute">lang</tag> or <tag class="attribute">xml:lang</tag> attribute + on the root element in your DocBook source or on the first + <tag>refentry</tag> element in your source has a value other + than <literal>en</literal>, then the character-map subset + specified by the + <parameter>man.charmap.subset.profile</parameter> parameter is + used instead of + <parameter>man.charmap.subset.profile.english</parameter>.</para> + +<para>The difference between the two subsets is that + <parameter>man.charmap.subset.profile</parameter> provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set).</para> + +<para>The value of <parameter>man.charmap.subset.profile.english</parameter> +is a string representing an XPath expression that matches attribute +names and values for <tag namespace="http://docbook.sf.net/xmlns/unichar/1.0">output-character</tag> elements in the character map.</para> + +<para>For other details, see the documentation for the +<parameter>man.charmap.subset.profile.english</parameter> and +<parameter>man.charmap.use.subset</parameter> parameters.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.string.subst.map.local.pre"> +<refmeta> +<refentrytitle>man.string.subst.map.local.pre</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.string.subst.map.local.pre</refname> +<refpurpose>Specifies “local” string substitutions</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.string.subst.map.local.pre.frag"> + <xsl:param name="man.string.subst.map.local.pre"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>Use the <parameter>man.string.subst.map.local.pre</parameter> +parameter to specify any “local” string substitutions to perform over +the entire roff source for each man page <emphasis>before</emphasis> +performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para> + +<para>For details about the format of this parameter, see the +documentation for the <parameter>man.string.subst.map</parameter> +parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.string.subst.map"> +<refmeta> +<refentrytitle>man.string.subst.map</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">rtf</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.string.subst.map</refname> +<refpurpose>Specifies a set of string substitutions</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.string.subst.map.frag"> +<xsl:param name="man.string.subst.map"> + + <!-- * remove no-break marker at beginning of line (stylesheet artifact) --> + <ss:substitution oldstring="▒▀" newstring="▒"></ss:substitution> + <!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space --> + <ss:substitution oldstring="▀" newstring="\ "></ss:substitution> + + <!-- ==================================================================== --> + + <!-- * squeeze multiple newlines before a roff request --> + <ss:substitution oldstring=" + +." newstring=" +."></ss:substitution> + <!-- * remove any .sp instances that directly precede a .PP --> + <ss:substitution oldstring=".sp +.PP" newstring=".PP"></ss:substitution> + <!-- * remove any .sp instances that directly follow a .PP --> + <ss:substitution oldstring=".sp +.sp" newstring=".sp"></ss:substitution> + <!-- * squeeze multiple .sp instances into a single .sp--> + <ss:substitution oldstring=".PP +.sp" newstring=".PP"></ss:substitution> + <!-- * squeeze multiple newlines after start of no-fill (verbatim) env. --> + <ss:substitution oldstring=".nf + +" newstring=".nf +"></ss:substitution> + <!-- * squeeze multiple newlines after REstoring margin --> + <ss:substitution oldstring=".RE + +" newstring=".RE +"></ss:substitution> + <!-- * U+2591 is a marker we add before and after every Parameter in --> + <!-- * Funcprototype output --> + <ss:substitution oldstring="░" newstring=" "></ss:substitution> + <!-- * U+2592 is a marker we add for the newline before output of <sbr>; --> + <ss:substitution oldstring="▒" newstring=" +"></ss:substitution> + <!-- * --> + <!-- * Now deal with some other characters that are added by the --> + <!-- * stylesheets during processing. --> + <!-- * --> + <!-- * bullet --> + <ss:substitution oldstring="•" newstring="\(bu"></ss:substitution> + <!-- * left double quote --> + <ss:substitution oldstring="“" newstring="\(lq"></ss:substitution> + <!-- * right double quote --> + <ss:substitution oldstring="”" newstring="\(rq"></ss:substitution> + <!-- * left single quote --> + <ss:substitution oldstring="‘" newstring="\(oq"></ss:substitution> + <!-- * right single quote --> + <ss:substitution oldstring="’" newstring="\(cq"></ss:substitution> + <!-- * copyright sign --> + <ss:substitution oldstring="©" newstring="\(co"></ss:substitution> + <!-- * registered sign --> + <ss:substitution oldstring="®" newstring="\(rg"></ss:substitution> + <!-- * ...servicemark... --> + <!-- * There is no groff equivalent for it. --> + <ss:substitution oldstring="℠" newstring="(SM)"></ss:substitution> + <!-- * ...trademark... --> + <!-- * We don't do "\(tm" because for console output, --> + <!-- * groff just renders that as "tm"; that is: --> + <!-- * --> + <!-- * Product&#x2122; -> Producttm --> + <!-- * --> + <!-- * So we just make it to "(TM)" instead; thus: --> + <!-- * --> + <!-- * Product&#x2122; -> Product(TM) --> + <ss:substitution oldstring="™" newstring="(TM)"></ss:substitution> + +</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.string.subst.map</parameter> parameter +contains <link linkend="map">a map</link> that specifies a set of +string substitutions to perform over the entire roff source for each +man page, either just before generating final man-page output (that +is, before writing man-page files to disk) or, if the value of the +<parameter>man.charmap.enabled</parameter> parameter is non-zero, +before applying the roff character map.</para> + +<para>You can use <parameter>man.string.subst.map</parameter> as a +“lightweight” character map to perform “essential” substitutions -- +that is, substitutions that are <emphasis>always</emphasis> performed, +even if the value of the <parameter>man.charmap.enabled</parameter> +parameter is zero. For example, you can use it to replace quotation +marks or other special characters that are generated by the DocBook +XSL stylesheets for a particular locale setting (as opposed to those +characters that are actually in source XML documents), or to replace +any special characters that may be automatically generated by a +particular customization of the DocBook XSL stylesheets.</para> + +<warning> + <para>Do you not change value of the + <parameter>man.string.subst.map</parameter> parameter unless you are + sure what you are doing. First consider adding your + string-substitution mappings to either or both of the following + parameters: + <variablelist> + <varlistentry> + <term><parameter>man.string.subst.map.local.pre</parameter></term> + <listitem><para>applied before + <parameter>man.string.subst.map</parameter></para></listitem> + </varlistentry> + <varlistentry> + <term><parameter>man.string.subst.map.local.post</parameter></term> + <listitem><para>applied after + <parameter>man.string.subst.map</parameter></para></listitem> + </varlistentry> + </variablelist> + By default, both of those parameters contain no + string substitutions. They are intended as a means for you to + specify your own local string-substitution mappings.</para> + + <para>If you remove any of default mappings from the value of the + <parameter>man.string.subst.map</parameter> parameter, you are + likely to end up with broken output. And be very careful about adding + anything to it; it’s used for doing string substitution over the + entire roff source of each man page – it causes target strings to be + replaced in roff requests and escapes, not just in the visible + contents of the page.</para> + +</warning> + +<refsection xml:id="map"> + <info> + <title>Contents of the substitution map</title> + </info> + <para>The string-substitution map contains one or more + <tag>ss:substitution</tag> elements, each of which has two + attributes: + <variablelist> + <varlistentry> + <term>oldstring</term> + <listitem> + <simpara>string to replace</simpara> + </listitem> + </varlistentry> + <varlistentry> + <term>newstring</term> + <listitem> + <simpara>string with which to replace <tag class="attribute">oldstring</tag></simpara> + </listitem> + </varlistentry> + </variablelist> + It may also include XML comments (that is, delimited with + "<literal><!--</literal>" and "<literal>--></literal>"). + </para> +</refsection> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.string.subst.map.local.post"> +<refmeta> +<refentrytitle>man.string.subst.map.local.post</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.string.subst.map.local.post</refname> +<refpurpose>Specifies “local” string substitutions</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.string.subst.map.local.post.frag"> +<xsl:param name="man.string.subst.map.local.post"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>Use the <parameter>man.string.subst.map.local.post</parameter> +parameter to specify any “local” string substitutions to perform over +the entire roff source for each man page <emphasis>after</emphasis> +performing the string substitutions specified by the <parameter>man.string.subst.map</parameter> parameter.</para> + +<para>For details about the format of this parameter, see the +documentation for the <parameter>man.string.subst.map</parameter> +parameter.</para> + +</refsection> +</refentry> + + </reference> + <reference xml:id="refmeta"> + <title>Refentry metadata gathering</title> +<refentry version="5.0" xml:id="refentry.meta.get.quietly"> +<refmeta> +<refentrytitle>refentry.meta.get.quietly</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.meta.get.quietly</refname> +<refpurpose>Suppress notes and warnings when gathering refentry metadata?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.meta.get.quietly.frag"> +<xsl:param name="refentry.meta.get.quietly" select="0"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If zero (the default), notes and warnings about “missing” markup +are generated during gathering of refentry metadata. If non-zero, the +metadata is gathered “quietly” -- that is, the notes and warnings are +suppressed.</para> + +<tip> + <para>If you are processing a large amount of <tag>refentry</tag> + content, you may be able to speed up processing significantly by + setting a non-zero value for + <parameter>refentry.meta.get.quietly</parameter>.</para> +</tip> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.date.profile"> +<refmeta> +<refentrytitle>refentry.date.profile</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.date.profile</refname> +<refpurpose>Specifies profile for refentry "date" data</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.date.profile.frag"> +<xsl:param name="refentry.date.profile"> + (($info[//date])[last()]/date)[1]| + (($info[//pubdate])[last()]/pubdate)[1] +</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The value of <parameter>refentry.date.profile</parameter> is a +string representing an XPath expression. It is evaluated at run-time +and used only if <parameter>refentry.date.profile.enabled</parameter> +is non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering +logic "hard coded" into the stylesheets is used.</para> + +<para> The <literal>man(7)</literal> man page describes this content +as "the date of the last revision". In man pages, it is the content +that is usually displayed in the center footer.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.date.profile.enabled"> +<refmeta> +<refentrytitle>refentry.date.profile.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.date.profile.enabled</refname> +<refpurpose>Enable refentry "date" profiling?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.date.profile.enabled.frag"> +<xsl:param name="refentry.date.profile.enabled">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of +<parameter>refentry.date.profile.enabled</parameter> is non-zero, then +during <tag>refentry</tag> metadata gathering, the info profile +specified by the customizable +<parameter>refentry.date.profile</parameter> parameter is used.</para> + +<para>If instead the value of +<parameter>refentry.date.profile.enabled</parameter> is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering <tag>refentry</tag> "date" data.</para> + +<para>If you find that the default <tag>refentry</tag> +metadata-gathering behavior is causing incorrect "date" data to show +up in your output, then consider setting a non-zero value for +<parameter>refentry.date.profile.enabled</parameter> and adjusting the +value of <parameter>refentry.date.profile</parameter> to cause correct +data to be gathered. </para> + +<para>Note that the terms "source" and "date" have special meanings in +this context. For details, see the documentation for the +<parameter>refentry.date.profile</parameter> parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.manual.profile"> +<refmeta> +<refentrytitle>refentry.manual.profile</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.manual.profile</refname> +<refpurpose>Specifies profile for refentry "manual" data</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.manual.profile.frag"> +<xsl:param name="refentry.manual.profile"> + (($info[//title])[last()]/title)[1]| + ../title/node() +</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The value of <parameter>refentry.manual.profile</parameter> is +a string representing an XPath expression. It is evaluated at +run-time and used only if +<parameter>refentry.manual.profile.enabled</parameter> is +non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic +"hard coded" into the stylesheets is used.</para> + +<para>In man pages, this content is usually displayed in the middle of +the header of the page. The <literal>man(7)</literal> man page +describes this as "the title of the manual (e.g., <citetitle>Linux +Programmer's Manual</citetitle>)". Here are some examples from +existing man pages: +<itemizedlist> + <listitem> + <para><citetitle>dpkg utilities</citetitle> + (<command>dpkg-name</command>)</para> + </listitem> + <listitem> + <para><citetitle>User Contributed Perl Documentation</citetitle> + (<command>GET</command>)</para> + </listitem> + <listitem> + <para><citetitle>GNU Development Tools</citetitle> + (<command>ld</command>)</para> + </listitem> + <listitem> + <para><citetitle>Emperor Norton Utilities</citetitle> + (<command>ddate</command>)</para> + </listitem> + <listitem> + <para><citetitle>Debian GNU/Linux manual</citetitle> + (<command>faked</command>)</para> + </listitem> + <listitem> + <para><citetitle>GIMP Manual Pages</citetitle> + (<command>gimp</command>)</para> + </listitem> + <listitem> + <para><citetitle>KDOC Documentation System</citetitle> + (<command>qt2kdoc</command>)</para> + </listitem> +</itemizedlist> +</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.manual.profile.enabled"> +<refmeta> +<refentrytitle>refentry.manual.profile.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.manual.profile.enabled</refname> +<refpurpose>Enable refentry "manual" profiling?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.manual.profile.enabled.frag"> +<xsl:param name="refentry.manual.profile.enabled">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of +<parameter>refentry.manual.profile.enabled</parameter> is +non-zero, then during <tag>refentry</tag> metadata gathering, the info +profile specified by the customizable +<parameter>refentry.manual.profile</parameter> parameter is +used.</para> + +<para>If instead the value of +<parameter>refentry.manual.profile.enabled</parameter> is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering <tag>refentry</tag> "manual" data.</para> + +<para>If you find that the default <tag>refentry</tag> +metadata-gathering behavior is causing incorrect "manual" data to show +up in your output, then consider setting a non-zero value for +<parameter>refentry.manual.profile.enabled</parameter> and adjusting +the value of <parameter>refentry.manual.profile</parameter> to cause +correct data to be gathered. </para> + +<para>Note that the term "manual" has a special meanings in this +context. For details, see the documentation for the +<parameter>refentry.manual.profile</parameter> parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.source.name.suppress"> +<refmeta> +<refentrytitle>refentry.source.name.suppress</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.source.name.suppress</refname> +<refpurpose>Suppress "name" part of refentry "source" contents?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.source.name.suppress.frag"> +<xsl:param name="refentry.source.name.suppress">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of +<parameter>refentry.source.name.suppress</parameter> is non-zero, then +during <tag>refentry</tag> metadata gathering, no "source name" data +is added to the <tag>refentry</tag> "source" contents. Instead (unless +<parameter>refentry.version.suppress</parameter> is also non-zero), +only "version" data is added to the "source" contents.</para> + +<para>If you find that the <tag>refentry</tag> metadata gathering +mechanism is causing unwanted "source name" data to show up in your +output -- for example, in the footer (or possibly header) of a man +page -- then you might consider setting a non-zero value for +<parameter>refentry.source.name.suppress</parameter>.</para> + +<para>Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the <parameter>refentry.source.name.profile</parameter> +parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.source.name.profile"> +<refmeta> +<refentrytitle>refentry.source.name.profile</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.source.name.profile</refname> +<refpurpose>Specifies profile for refentry "source name" data</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.source.name.profile.frag"> +<xsl:param name="refentry.source.name.profile"> + (($info[//productname])[last()]/productname)[1]| + (($info[//corpname])[last()]/corpname)[1]| + (($info[//corpcredit])[last()]/corpcredit)[1]| + (($info[//corpauthor])[last()]/corpauthor)[1]| + (($info[//orgname])[last()]/orgname)[1]| + (($info[//publishername])[last()]/publishername)[1] +</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The value of <parameter>refentry.source.name.profile</parameter> +is a string representing an XPath expression. It is evaluated at +run-time and used only if +<parameter>refentry.source.name.profile.enabled</parameter> is +non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic +"hard coded" into the stylesheets is used.</para> + +<para>A "source name" is one part of a (potentially) two-part +<replaceable>Name</replaceable> <replaceable>Version</replaceable> +"source" field. In man pages, it is usually displayed in the left +footer of the page. It typically indicates the software system or +product that the item documented in the man page belongs to. The +<literal>man(7)</literal> man page describes it as "the source of +the command", and provides the following examples: +<itemizedlist> + <listitem> + <para>For binaries, use something like: GNU, NET-2, SLS + Distribution, MCC Distribution.</para> + </listitem> + <listitem> + <para>For system calls, use the version of the kernel that you + are currently looking at: Linux 0.99.11.</para> + </listitem> + <listitem> + <para>For library calls, use the source of the function: GNU, BSD + 4.3, Linux DLL 4.4.1.</para> + </listitem> +</itemizedlist> +</para> + +<para>In practice, there are many pages that simply have a Version +number in the "source" field. So, it looks like what we have is a +two-part field, +<replaceable>Name</replaceable> <replaceable>Version</replaceable>, +where: +<variablelist> + <varlistentry> + <term>Name</term> + <listitem> + <para>product name (e.g., BSD) or org. name (e.g., GNU)</para> + </listitem> + </varlistentry> + <varlistentry> + <term>Version</term> + <listitem> + <para>version number</para> + </listitem> + </varlistentry> +</variablelist> +Each part is optional. If the <replaceable>Name</replaceable> is a +product name, then the <replaceable>Version</replaceable> is probably +the version of the product. Or there may be no +<replaceable>Name</replaceable>, in which case, if there is a +<replaceable>Version</replaceable>, it is probably the version +of the item itself, not the product it is part of. Or, if the +<replaceable>Name</replaceable> is an organization name, then there +probably will be no <replaceable>Version</replaceable>.</para> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.source.name.profile.enabled"> +<refmeta> +<refentrytitle>refentry.source.name.profile.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.source.name.profile.enabled</refname> +<refpurpose>Enable refentry "source name" profiling?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.source.name.profile.enabled.frag"> +<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of +<parameter>refentry.source.name.profile.enabled</parameter> is +non-zero, then during <tag>refentry</tag> metadata gathering, the info +profile specified by the customizable +<parameter>refentry.source.name.profile</parameter> parameter is +used.</para> + +<para>If instead the value of +<parameter>refentry.source.name.profile.enabled</parameter> is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering <tag>refentry</tag> "source name" data.</para> + +<para>If you find that the default <tag>refentry</tag> +metadata-gathering behavior is causing incorrect "source name" data to +show up in your output, then consider setting a non-zero value for +<parameter>refentry.source.name.profile.enabled</parameter> and +adjusting the value of +<parameter>refentry.source.name.profile</parameter> to cause correct +data to be gathered. </para> + +<para>Note that the terms "source" and "source name" have special +meanings in this context. For details, see the documentation for the +<parameter>refentry.source.name.profile</parameter> parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.version.suppress"> +<refmeta> +<refentrytitle>refentry.version.suppress</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.version.suppress</refname> +<refpurpose>Suppress "version" part of refentry "source" contents?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.version.suppress.frag"> +<xsl:param name="refentry.version.suppress">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>refentry.version.suppress</parameter> +is non-zero, then during <tag>refentry</tag> metadata gathering, no +"version" data is added to the <tag>refentry</tag> "source" +contents. Instead (unless +<parameter>refentry.source.name.suppress</parameter> is also +non-zero), only "source name" data is added to the "source" +contents.</para> + +<para>If you find that the <tag>refentry</tag> metadata gathering +mechanism is causing unwanted "version" data to show up in your output +-- for example, in the footer (or possibly header) of a man page -- +then you might consider setting a non-zero value for +<parameter>refentry.version.suppress</parameter>.</para> + +<para>Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the <parameter>refentry.source.name.profile</parameter> +parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.version.profile"> +<refmeta> +<refentrytitle>refentry.version.profile</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.version.profile</refname> +<refpurpose>Specifies profile for refentry "version" data</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.version.profile.frag"> +<xsl:param name="refentry.version.profile"> + (($info[//productnumber])[last()]/productnumber)[1]| + (($info[//edition])[last()]/edition)[1]| + (($info[//releaseinfo])[last()]/releaseinfo)[1] +</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The value of <parameter>refentry.version.profile</parameter> is +a string representing an XPath expression. It is evaluated at +run-time and used only if +<parameter>refentry.version.profile.enabled</parameter> is +non-zero. Otherwise, the <tag>refentry</tag> metadata-gathering logic +"hard coded" into the stylesheets is used.</para> + +<para>A "source.name" is one part of a (potentially) two-part +<replaceable>Name</replaceable> <replaceable>Version</replaceable> +"source" field. For more details, see the documentation for the +<parameter>refentry.source.name.profile</parameter> parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.version.profile.enabled"> +<refmeta> +<refentrytitle>refentry.version.profile.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.version.profile.enabled</refname> +<refpurpose>Enable refentry "version" profiling?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.version.profile.enabled.frag"> +<xsl:param name="refentry.version.profile.enabled">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of +<parameter>refentry.version.profile.enabled</parameter> is +non-zero, then during <tag>refentry</tag> metadata gathering, the info +profile specified by the customizable +<parameter>refentry.version.profile</parameter> parameter is +used.</para> + +<para>If instead the value of +<parameter>refentry.version.profile.enabled</parameter> is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering <tag>refentry</tag> "version" data.</para> + +<para>If you find that the default <tag>refentry</tag> +metadata-gathering behavior is causing incorrect "version" data to show +up in your output, then consider setting a non-zero value for +<parameter>refentry.version.profile.enabled</parameter> and adjusting +the value of <parameter>refentry.version.profile</parameter> to cause +correct data to be gathered. </para> + +<para>Note that the terms "source" and "version" have special +meanings in this context. For details, see the documentation for the +<parameter>refentry.version.profile</parameter> parameter.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.manual.fallback.profile"> +<refmeta> +<refentrytitle>refentry.manual.fallback.profile</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.manual.fallback.profile</refname> +<refpurpose>Specifies profile of "fallback" for refentry "manual" data</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.manual.fallback.profile.frag"> +<xsl:param name="refentry.manual.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The value of +<parameter>refentry.manual.fallback.profile</parameter> is a string +representing an XPath expression. It is evaluated at run-time and +used only if no "manual" data can be found by other means (that is, +either using the <tag>refentry</tag> metadata-gathering logic "hard +coded" in the stylesheets, or the value of +<parameter>refentry.manual.profile</parameter>, if it is +enabled).</para> + +<important> +<para>Depending on which XSLT engine you run, either the EXSLT +<function>dyn:evaluate</function> extension function (for xsltproc or +Xalan) or <function>saxon:evaluate</function> extension function (for +Saxon) are used to dynamically evaluate the value of +<parameter>refentry.manual.fallback.profile</parameter> at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports <function>dyn:evaluate</function> -- you +must manually disable fallback processing by setting an empty value +for the <parameter>refentry.manual.fallback.profile</parameter> +parameter.</para> +</important> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="refentry.source.fallback.profile"> +<refmeta> +<refentrytitle>refentry.source.fallback.profile</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>refentry.source.fallback.profile</refname> +<refpurpose>Specifies profile of "fallback" for refentry "source" data</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="refentry.source.fallback.profile.frag"> +<xsl:param name="refentry.source.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The value of +<parameter>refentry.source.fallback.profile</parameter> is a string +representing an XPath expression. It is evaluated at run-time and used +only if no "source" data can be found by other means (that is, either +using the <tag>refentry</tag> metadata-gathering logic "hard coded" in +the stylesheets, or the value of the +<parameter>refentry.source.name.profile</parameter> and +<parameter>refentry.version.profile</parameter> parameters, if those +are enabled).</para> + +<important> +<para>Depending on which XSLT engine you run, either the EXSLT +<function>dyn:evaluate</function> extension function (for xsltproc or +Xalan) or <function>saxon:evaluate</function> extension function (for +Saxon) are used to dynamically evaluate the value of +<parameter>refentry.source.fallback.profile</parameter> at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports <function>dyn:evaluate</function> -- you +must manually disable fallback processing by setting an empty value +for the <parameter>refentry.source.fallback.profile</parameter> +parameter.</para> +</important> + +</refsection> +</refentry> + + </reference> + <reference xml:id="th"> + <title>Page header/footer</title> +<refentry version="5.0" xml:id="man.th.extra1.suppress"> +<refmeta> +<refentrytitle>man.th.extra1.suppress</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.th.extra1.suppress</refname> +<refpurpose>Suppress extra1 part of header/footer?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.th.extra1.suppress.frag"> +<xsl:param name="man.th.extra1.suppress">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.th.extra1.suppress</parameter> is +non-zero, then the <literal>extra1</literal> part of the +<literal>.TH</literal> title line header/footer is suppressed.</para> + +<para>The content of the <literal>extra1</literal> field is almost +always displayed in the center footer of the page and is, universally, +a date.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.th.extra2.suppress"> +<refmeta> +<refentrytitle>man.th.extra2.suppress</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.th.extra2.suppress</refname> +<refpurpose>Suppress extra2 part of header/footer?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.th.extra2.suppress.frag"> +<xsl:param name="man.th.extra2.suppress">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.th.extra2.suppress</parameter> is +non-zero, then the <literal>extra2</literal> part of the +<literal>.TH</literal> title line header/footer is suppressed.</para> + +<para>The content of the <literal>extra2</literal> field is usually +displayed in the left footer of the page and is typically "source" +data, often in the form +<replaceable>Name</replaceable> <replaceable>Version</replaceable>; +for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal> +man page).</para> + +<note> + <para>You can use the + <parameter>refentry.source.name.suppress</parameter> and + <parameter>refentry.version.suppress</parameter> parameters to + independently suppress the <replaceable>Name</replaceable> and + <replaceable>Version</replaceable> parts of the + <literal>extra2</literal> field.</para> +</note> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.th.extra3.suppress"> +<refmeta> +<refentrytitle>man.th.extra3.suppress</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.th.extra3.suppress</refname> +<refpurpose>Suppress extra3 part of header/footer?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.th.extra3.suppress.frag"> +<xsl:param name="man.th.extra3.suppress">0</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <parameter>man.th.extra3.suppress</parameter> is +non-zero, then the <literal>extra3</literal> part of the +<literal>.TH</literal> title line header/footer is +suppressed.</para> + +<para>The content of the <literal>extra3</literal> field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +<literal>gtk-options(7)</literal> man page).</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.th.title.max.length"> +<refmeta> +<refentrytitle>man.th.title.max.length</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.th.title.max.length</refname> +<refpurpose>Maximum length of title in header/footer</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.th.title.max.length.frag"> +<xsl:param name="man.th.title.max.length">20</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>Specifies the maximum permitted length of the title part of the +man-page <literal>.TH</literal> title line header/footer. If the title +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length.</para> + +<refsection><info><title>Details</title></info> + + +<para>Every man page generated using the DocBook stylesheets has a +title line, specified using the <literal>TH</literal> roff +macro. Within that title line, there is always, at a minimum, a title, +followed by a section value (representing a man "section" -- usually +just a number).</para> + +<para>The title and section are displayed, together, in the visible +header of each page. Where in the header they are displayed depends on +OS the man page is viewed on, and on what version of nroff/groff/man +is used for viewing the page. But, at a minimum and across all +systems, the title and section are displayed on the right-hand column +of the header. On many systems -- those with a modern groff, including +Linux systems -- they are displayed twice: both in the left and right +columns of the header.</para> + +<para>So if the length of the title exceeds a certain percentage of +the column width in which the page is viewed, the left and right +titles can end up overlapping, making them unreadable, or breaking to +another line, which doesn't look particularly good.</para> + +<para>So the stylesheets provide the +<parameter>man.th.title.max.length</parameter> parameter as a means +for truncating titles that exceed the maximum length that can be +viewing properly in a page header.</para> + +<para>The default value is reasonable but somewhat arbitrary. If you +have pages with long titles, you may want to experiment with changing +the value in order to achieve the correct aesthetic results.</para> +</refsection> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.th.extra2.max.length"> +<refmeta> +<refentrytitle>man.th.extra2.max.length</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.th.extra2.max.length</refname> +<refpurpose>Maximum length of extra2 in header/footer</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.th.extra2.max.length.frag"> +<xsl:param name="man.th.extra2.max.length">30</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>Specifies the maximum permitted length of the +<literal>extra2</literal> part of the man-page part of the +<literal>.TH</literal> title line header/footer. If the +<literal>extra2</literal> content exceeds the maxiumum specified, it +is truncated down to the maximum permitted length.</para> + +<para>The content of the <literal>extra2</literal> field is usually +displayed in the left footer of the page and is typically "source" +data indicating the software system or product that the item +documented in the man page belongs to, often in the form +<replaceable>Name</replaceable> <replaceable>Version</replaceable>; +for example, "GTK+ 1.2" (from the <literal>gtk-options(7)</literal> +man page).</para> + +<para>The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "source" information, +you may want to experiment with changing the value in order to achieve +the correct aesthetic results.</para> +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.th.extra3.max.length"> +<refmeta> +<refentrytitle>man.th.extra3.max.length</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">integer</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.th.extra3.max.length</refname> +<refpurpose>Maximum length of extra3 in header/footer</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.th.extra3.max.length.frag"> +<xsl:param name="man.th.extra3.max.length">30</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>Specifies the maximum permitted length of the +<literal>extra3</literal> part of the man-page <literal>.TH</literal> +title line header/footer. If the <literal>extra3</literal> content +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length.</para> + +<para>The content of the <literal>extra3</literal> field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +<literal>gtk-options(7)</literal> man page).</para> + +<para>The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "manual names" -- or +especially if you are processing pages that have both long "title" +parts (command/function, etc. names) <emphasis>and</emphasis> long +manual names -- you may want to experiment with changing the value in +order to achieve the correct aesthetic results.</para> +</refsection> +</refentry> + + </reference> + <reference xml:id="output"> + <title>Output</title> +<refentry version="5.0" xml:id="man.output.manifest.enabled"> + <refmeta> + <refentrytitle>man.output.manifest.enabled</refentrytitle> + <refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> + </refmeta> + <refnamediv> + <refname>man.output.manifest.enabled</refname> + <refpurpose>Generate a manifest file?</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <programlisting xml:id="man.output.manifest.enabled.frag"><xsl:param name="man.output.manifest.enabled" select="0"></xsl:param></programlisting> + </refsynopsisdiv> + + <refsection><info><title>Description</title></info> + + <para>If non-zero, a list of filenames for man pages generated by + the stylesheet transformation is written to the file named by the + <parameter>man.output.manifest.filename</parameter> parameter.</para> + + </refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.manifest.filename"> + <refmeta> + <refentrytitle>man.output.manifest.filename</refentrytitle> + <refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> + </refmeta> + <refnamediv> + <refname>man.output.manifest.filename</refname> + <refpurpose>Name of manifest file</refpurpose> + </refnamediv> + + <refsynopsisdiv> + <programlisting xml:id="man.output.manifest.filename.frag"><xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param></programlisting> + </refsynopsisdiv> + + <refsection><info><title>Description</title></info> + + <para>The <parameter>man.output.manifest.filename</parameter> parameter + specifies the name of the file to which the manpages manifest file + is written (if the value of the + <parameter>man.output.manifest.enabled</parameter> parameter is + non-zero).</para> + + </refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.in.separate.dir"> +<refmeta> +<refentrytitle>man.output.in.separate.dir</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.output.in.separate.dir</refname> +<refpurpose>Output man-page files in separate output directory?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.output.in.separate.dir.frag"> +<xsl:param name="man.output.in.separate.dir" select="0"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of <literal>man.output.in.separate.dir</literal> +parameter is non-zero, man-page files are output in a separate +directory, specified by the <parameter>man.output.base.dir</parameter> +parameter; otherwise, if the value of +<literal>man.output.in.separate.dir</literal> is zero, man-page files +are not output in a separate directory.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.lang.in.name.enabled"> +<refmeta> +<refentrytitle>man.output.lang.in.name.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.output.lang.in.name.enabled</refname> +<refpurpose>Include $LANG value in man-page filename/pathname?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.output.lang.in.name.enabled.frag"> +<xsl:param name="man.output.lang.in.name.enabled" select="0"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + + <para>The <parameter>man.output.lang.in.name.enabled</parameter> + parameter specifies whether a <literal>$lang</literal> value is + included in man-page filenames and pathnames.</para> + + <para>If the value of + <parameter>man.output.lang.in.name.enabled</parameter> is non-zero, + man-page files are output with the <literal>$lang</literal> value + included in their filenames or pathnames as follows; + + <itemizedlist> + <listitem> + <para>if <parameter>man.output.subdirs.enabled</parameter> is + non-zero, each file is output to, e.g., a + <filename>man/<replaceable>$lang</replaceable>/man8/foo.8</filename> + pathname</para> + </listitem> + <listitem> + <para>if <parameter>man.output.subdirs.enabled</parameter> is + zero, each file is output with a + <literal>foo.<replaceable>$lang</replaceable>.8</literal> + filename</para> + </listitem> + </itemizedlist> + </para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.base.dir"> +<refmeta> +<refentrytitle>man.output.base.dir</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">uri</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.output.base.dir</refname> +<refpurpose>Specifies separate output directory</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.output.base.dir.frag"><xsl:param name="man.output.base.dir">man/</xsl:param></programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.output.base.dir</parameter> parameter +specifies the base directory into which man-page files are output. The +<parameter>man.output.subdirs.enabled</parameter> parameter controls +whether the files are output in subdirectories within the base +directory.</para> + +<note> + <para>The values of the <parameter>man.output.base.dir</parameter> + and <parameter>man.output.subdirs.enabled</parameter> parameters are + used only if the value of + <parameter>man.output.in.separate.dir</parameter> parameter is + non-zero. If the value of the + <parameter>man.output.in.separate.dir</parameter> is zero, man-page + files are not output in a separate directory.</para> +</note> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.subdirs.enabled"> +<refmeta> +<refentrytitle>man.output.subdirs.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.output.subdirs.enabled</refname> +<refpurpose>Output man-page files in subdirectories within base output directory?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.output.subdirs.enabled.frag"> +<xsl:param name="man.output.subdirs.enabled" select="1"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>The <parameter>man.output.subdirs.enabled</parameter> parameter +controls whether man-pages files are output in subdirectories within +the base directory specified by the directory specified by the +<parameter>man.output.base.dir</parameter> parameter.</para> + +<note> + <para>The values of the <parameter>man.output.base.dir</parameter> + and <parameter>man.output.subdirs.enabled</parameter> parameters are + used only if the value of + <parameter>man.output.in.separate.dir</parameter> parameter is + non-zero. If the value of the + <parameter>man.output.in.separate.dir</parameter> is zero, man-page + files are not output in a separate directory.</para> +</note> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.quietly"> +<refmeta> +<refentrytitle>man.output.quietly</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.output.quietly</refname> +<refpurpose>Suppress filename messages emitted when generating output?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.output.quietly.frag"> +<xsl:param name="man.output.quietly" select="0"></xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If zero (the default), for each man-page file created, a message +with the name of the file is emitted. If non-zero, the files are +output "quietly" -- that is, the filename messages are +suppressed.</para> + +<tip> + <para>If you are processing a large amount of <tag>refentry</tag> + content, you may be able to speed up processing significantly by + setting a non-zero value for + <parameter>man.output.quietly</parameter>.</para> +</tip> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.encoding"> +<refmeta> +<refentrytitle>man.output.encoding</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.output.encoding</refname> +<refpurpose>Encoding used for man-page output</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.output.encoding.frag"> +<xsl:param name="man.output.encoding">UTF-8</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>This parameter specifies the encoding to use for files generated +by the manpages stylesheet. Not all processors support specification +of this parameter.</para> + +<important> + <para>If the value of the <parameter>man.charmap.enabled</parameter> + parameter is non-zero (the default), keeping the + <parameter>man.output.encoding</parameter> parameter at its default + value (<literal>UTF-8</literal>) or setting it to + <literal>UTF-16</literal> <emphasis role="bold">does not cause your + man pages to be output in raw UTF-8 or UTF-16</emphasis> -- because + any Unicode characters for which matches are found in the enabled + character map will be replaced with roff escape sequences before the + final man-page files are generated.</para> + + <para>So if you want to generate "real" UTF-8 man pages, without any + character substitution being performed on your content, you need to + set <parameter>man.charmap.enabled</parameter> to zero (which will + completely disable character-map processing). </para> + + <para>You may also need to set + <parameter>man.charmap.enabled</parameter> to zero if you want to + output man pages in an encoding other than <literal>UTF-8</literal> + or <literal>UTF-16</literal>. Character-map processing is based on + Unicode character values and may not work with other output + encodings.</para> +</important> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.output.better.ps.enabled"> +<refmeta> +<refentrytitle>man.output.better.ps.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.output.better.ps.enabled</refname> +<refpurpose>Enable enhanced print/PostScript output?</refpurpose> +</refnamediv> +<refsynopsisdiv> +<programlisting xml:id="man.output.better.ps.enabled.frag"> +<xsl:param name="man.output.better.ps.enabled">0</xsl:param> +</programlisting> +</refsynopsisdiv> +<refsection><info><title>Description</title></info> + +<para>If the value of the +<parameter>man.output.better.ps.enabled</parameter> parameter is +non-zero, certain markup is embedded in each generated man page +such that PostScript output from the <command>man -Tps</command> +command for that page will include a number of enhancements +designed to improve the quality of that output.</para> + +<para>If <parameter>man.output.better.ps.enabled</parameter> is +zero (the default), no such markup is embedded in generated man +pages, and no enhancements are included in the PostScript +output generated from those man pages by the <command>man + -Tps</command> command.</para> + +<warning> + <para>The enhancements provided by this parameter rely on + features that are specific to groff (GNU troff) and that are + not part of “classic” AT&T troff or any of its + derivatives. Therefore, any man pages you generate with this + parameter enabled will be readable only on systems on which + the groff (GNU troff) program is installed, such as GNU/Linux + systems. The pages <emphasis role="bold">will not not be + readable on systems on with the classic troff (AT&T + troff) command is installed</emphasis>.</para> +</warning> + +<para>The value of this parameter only affects PostScript output + generated from the <command>man</command> command. It has no + effect on output generated using the FO backend.</para> + +<tip> + <para>You can generate PostScript output for any man page by + running the following command:</para> + <programlisting> man <replaceable>FOO</replaceable> -Tps > <replaceable>FOO</replaceable>.ps</programlisting> + <para>You can then generate PDF output by running the following + command:</para> + <programlisting> ps2pdf <replaceable>FOO</replaceable>.ps</programlisting> +</tip> + +</refsection> +</refentry> + + </reference> + <reference xml:id="other"> + <title>Other</title> +<refentry version="5.0" xml:id="man.table.footnotes.divider"> +<refmeta> +<refentrytitle>man.table.footnotes.divider</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.table.footnotes.divider</refname> +<refpurpose>Specifies divider string that appears before table footnotes</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.table.footnotes.divider.frag"> +<xsl:param name="man.table.footnotes.divider">----</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>In each table that contains footenotes, the string specified by +the <parameter>man.table.footnotes.divider</parameter> parameter is +output before the list of footnotes for the table.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.subheading.divider.enabled"> +<refmeta> +<refentrytitle>man.subheading.divider.enabled</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">boolean</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.subheading.divider.enabled</refname> +<refpurpose>Add divider comment to roff source before/after subheadings?</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.subheading.divider.enabled.frag"> +<xsl:param name="man.subheading.divider.enabled">0</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of the +<parameter>man.subheading.divider.enabled</parameter> parameter is +non-zero, the contents of the +<parameter>man.subheading.divider</parameter> parameter are used to +add a "divider" before and after subheadings in the roff +output. <emphasis role="bold">The divider is not visisble in the +rendered man page</emphasis>; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source.</para> + +<para>If <parameter>man.subheading.divider.enabled</parameter> is zero +(the default), the subheading divider is suppressed.</para> + +</refsection> +</refentry> + +<refentry version="5.0" xml:id="man.subheading.divider"> +<refmeta> +<refentrytitle>man.subheading.divider</refentrytitle> +<refmiscinfo class="other" otherclass="datatype">string</refmiscinfo> +</refmeta> +<refnamediv> +<refname>man.subheading.divider</refname> +<refpurpose>Specifies string to use as divider comment before/after subheadings</refpurpose> +</refnamediv> + +<refsynopsisdiv> +<programlisting xml:id="man.subheading.divider.frag"> +<xsl:param name="man.subheading.divider">========================================================================</xsl:param> +</programlisting> +</refsynopsisdiv> + +<refsection><info><title>Description</title></info> + +<para>If the value of the +<parameter>man.subheading.divider.enabled</parameter> parameter is +non-zero, the contents of the +<parameter>man.subheading.divider</parameter> parameter are used to +add a "divider" before and after subheadings in the roff +output. <emphasis role="bold">The divider is not visisble in the +rendered man page</emphasis>; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source.</para> + +<para>If <parameter>man.subheading.divider.enabled</parameter> is zero +(the default), the subheading divider is suppressed.</para> + +</refsection> +</refentry> + + </reference> + <appendix xml:id="stylesheet"> + <title>The Stylesheet</title> + + <para>The <filename>param.xsl</filename> stylesheet is just a + wrapper around all of these parameters.</para> + + <programlisting xml:id="top"> +<xsl:stylesheet exclude-result-prefixes="src" version="1.0"> + +<!-- This file is generated from param.xweb --> + +<!-- ******************************************************************** + $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<src:fragref linkend="man.authors.section.enabled.frag"></src:fragref> +<src:fragref linkend="man.break.after.slash.frag"></src:fragref> +<src:fragref linkend="man.base.url.for.relative.links.frag"></src:fragref> +<src:fragref linkend="man.charmap.enabled.frag"></src:fragref> +<src:fragref linkend="man.charmap.subset.profile.frag"></src:fragref> +<src:fragref linkend="man.charmap.subset.profile.english.frag"></src:fragref> +<src:fragref linkend="man.charmap.uri.frag"></src:fragref> +<src:fragref linkend="man.charmap.use.subset.frag"></src:fragref> +<src:fragref linkend="man.copyright.section.enabled.frag"></src:fragref> +<src:fragref linkend="man.endnotes.are.numbered.frag"></src:fragref> +<src:fragref linkend="man.endnotes.list.enabled.frag"></src:fragref> +<src:fragref linkend="man.endnotes.list.heading.frag"></src:fragref> +<src:fragref linkend="man.font.funcprototype.frag"></src:fragref> +<src:fragref linkend="man.font.funcsynopsisinfo.frag"></src:fragref> +<src:fragref linkend="man.font.links.frag"></src:fragref> +<src:fragref linkend="man.font.table.headings.frag"></src:fragref> +<src:fragref linkend="man.font.table.title.frag"></src:fragref> +<src:fragref linkend="man.funcsynopsis.style.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.computer.inlines.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.filenames.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.urls.frag"></src:fragref> +<src:fragref linkend="man.indent.blurbs.frag"></src:fragref> +<src:fragref linkend="man.indent.lists.frag"></src:fragref> +<src:fragref linkend="man.indent.refsect.frag"></src:fragref> +<src:fragref linkend="man.indent.verbatims.frag"></src:fragref> +<src:fragref linkend="man.indent.width.frag"></src:fragref> +<src:fragref linkend="man.justify.frag"></src:fragref> +<src:fragref linkend="man.output.base.dir.frag"></src:fragref> +<src:fragref linkend="man.output.encoding.frag"></src:fragref> +<src:fragref linkend="man.output.in.separate.dir.frag"></src:fragref> +<src:fragref linkend="man.output.lang.in.name.enabled.frag"></src:fragref> +<src:fragref linkend="man.output.manifest.enabled.frag"></src:fragref> +<src:fragref linkend="man.output.manifest.filename.frag"></src:fragref> +<src:fragref linkend="man.output.better.ps.enabled.frag"></src:fragref> +<src:fragref linkend="man.output.quietly.frag"></src:fragref> +<src:fragref linkend="man.output.subdirs.enabled.frag"></src:fragref> +<src:fragref linkend="man.segtitle.suppress.frag"></src:fragref> +<src:fragref linkend="man.string.subst.map.frag"></src:fragref> +<src:fragref linkend="man.string.subst.map.local.post.frag"></src:fragref> +<src:fragref linkend="man.string.subst.map.local.pre.frag"></src:fragref> +<src:fragref linkend="man.subheading.divider.enabled.frag"></src:fragref> +<src:fragref linkend="man.subheading.divider.frag"></src:fragref> +<src:fragref linkend="man.table.footnotes.divider.frag"></src:fragref> +<src:fragref linkend="man.th.extra1.suppress.frag"></src:fragref> +<src:fragref linkend="man.th.extra2.max.length.frag"></src:fragref> +<src:fragref linkend="man.th.extra2.suppress.frag"></src:fragref> +<src:fragref linkend="man.th.extra3.max.length.frag"></src:fragref> +<src:fragref linkend="man.th.extra3.suppress.frag"></src:fragref> +<src:fragref linkend="man.th.title.max.length.frag"></src:fragref> +<src:fragref linkend="refentry.date.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.date.profile.frag"></src:fragref> +<src:fragref linkend="refentry.manual.fallback.profile.frag"></src:fragref> +<src:fragref linkend="refentry.manual.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.manual.profile.frag"></src:fragref> +<src:fragref linkend="refentry.meta.get.quietly.frag"></src:fragref> +<src:fragref linkend="refentry.source.fallback.profile.frag"></src:fragref> +<src:fragref linkend="refentry.source.name.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.source.name.profile.frag"></src:fragref> +<src:fragref linkend="refentry.source.name.suppress.frag"></src:fragref> +<src:fragref linkend="refentry.version.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.version.profile.frag"></src:fragref> +<src:fragref linkend="refentry.version.suppress.frag"></src:fragref> +</xsl:stylesheet> + </programlisting> + + </appendix> +</book> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl new file mode 100644 index 0000000..39d2059 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl @@ -0,0 +1,193 @@ +<?xml version="1.0" encoding="ASCII"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<!-- This file is generated from param.xweb --> + +<!-- ******************************************************************** + $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<xsl:param name="man.authors.section.enabled">1</xsl:param> +<xsl:param name="man.break.after.slash">0</xsl:param> +<xsl:param name="man.base.url.for.relative.links">[set $man.base.url.for.relative.links]/</xsl:param> +<xsl:param name="man.charmap.enabled" select="1"/> +<xsl:param name="man.charmap.subset.profile"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + (@*[local-name() = 'class'] = 'symbols' or + @*[local-name() = 'class'] = 'letters') +) or +@*[local-name() = 'block'] = 'Latin Extended-A' +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> +<xsl:param name="man.charmap.subset.profile.english"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + @*[local-name() = 'class'] = 'symbols') +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> +<xsl:param name="man.charmap.uri"/> +<xsl:param name="man.charmap.use.subset" select="1"/> +<xsl:param name="man.copyright.section.enabled">1</xsl:param> +<xsl:param name="man.endnotes.are.numbered">1</xsl:param> +<xsl:param name="man.endnotes.list.enabled">1</xsl:param> +<xsl:param name="man.endnotes.list.heading"/> + <xsl:param name="man.font.funcprototype">BI</xsl:param> + <xsl:param name="man.font.funcsynopsisinfo">B</xsl:param> +<xsl:param name="man.font.links">B</xsl:param> + <xsl:param name="man.font.table.headings">B</xsl:param> + <xsl:param name="man.font.table.title">B</xsl:param> +<xsl:param name="man.funcsynopsis.style">ansi</xsl:param> +<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param> +<xsl:param name="man.hyphenate.filenames">0</xsl:param> +<xsl:param name="man.hyphenate">0</xsl:param> +<xsl:param name="man.hyphenate.urls">0</xsl:param> +<xsl:param name="man.indent.blurbs" select="1"/> +<xsl:param name="man.indent.lists" select="1"/> +<xsl:param name="man.indent.refsect" select="0"/> +<xsl:param name="man.indent.verbatims" select="1"/> +<xsl:param name="man.indent.width">4</xsl:param> +<xsl:param name="man.justify">0</xsl:param> +<xsl:param name="man.output.base.dir">man/</xsl:param> +<xsl:param name="man.output.encoding">UTF-8</xsl:param> +<xsl:param name="man.output.in.separate.dir" select="0"/> +<xsl:param name="man.output.lang.in.name.enabled" select="0"/> +<xsl:param name="man.output.manifest.enabled" select="0"/> +<xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param> +<xsl:param name="man.output.better.ps.enabled">0</xsl:param> +<xsl:param name="man.output.quietly" select="0"/> +<xsl:param name="man.output.subdirs.enabled" select="1"/> +<xsl:param name="man.segtitle.suppress" select="0"/> +<xsl:param name="man.string.subst.map"> + + <!-- * remove no-break marker at beginning of line (stylesheet artifact) --> + <substitution oldstring="▒▀" newstring="▒"/> + <!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space --> + <substitution oldstring="▀" newstring="\ "/> + + <!-- ==================================================================== --> + + <!-- * squeeze multiple newlines before a roff request --> + <substitution oldstring=" ." newstring=" ."/> + <!-- * remove any .sp instances that directly precede a .PP --> + <substitution oldstring=".sp .PP" newstring=".PP"/> + <!-- * remove any .sp instances that directly follow a .PP --> + <substitution oldstring=".sp .sp" newstring=".sp"/> + <!-- * squeeze multiple .sp instances into a single .sp--> + <substitution oldstring=".PP .sp" newstring=".PP"/> + <!-- * squeeze multiple newlines after start of no-fill (verbatim) env. --> + <substitution oldstring=".nf " newstring=".nf "/> + <!-- * squeeze multiple newlines after REstoring margin --> + <substitution oldstring=".RE " newstring=".RE "/> + <!-- * U+2591 is a marker we add before and after every Parameter in --> + <!-- * Funcprototype output --> + <substitution oldstring="░" newstring=" "/> + <!-- * U+2592 is a marker we add for the newline before output of <sbr>; --> + <substitution oldstring="▒" newstring=" "/> + <!-- * --> + <!-- * Now deal with some other characters that are added by the --> + <!-- * stylesheets during processing. --> + <!-- * --> + <!-- * bullet --> + <substitution oldstring="•" newstring="\(bu"/> + <!-- * left double quote --> + <substitution oldstring="“" newstring="\(lq"/> + <!-- * right double quote --> + <substitution oldstring="”" newstring="\(rq"/> + <!-- * left single quote --> + <substitution oldstring="‘" newstring="\(oq"/> + <!-- * right single quote --> + <substitution oldstring="’" newstring="\(cq"/> + <!-- * copyright sign --> + <substitution oldstring="©" newstring="\(co"/> + <!-- * registered sign --> + <substitution oldstring="®" newstring="\(rg"/> + <!-- * ...servicemark... --> + <!-- * There is no groff equivalent for it. --> + <substitution oldstring="℠" newstring="(SM)"/> + <!-- * ...trademark... --> + <!-- * We don't do "\(tm" because for console output, --> + <!-- * groff just renders that as "tm"; that is: --> + <!-- * --> + <!-- * Product™ -> Producttm --> + <!-- * --> + <!-- * So we just make it to "(TM)" instead; thus: --> + <!-- * --> + <!-- * Product™ -> Product(TM) --> + <substitution oldstring="™" newstring="(TM)"/> + +</xsl:param> +<xsl:param name="man.string.subst.map.local.post"/> + <xsl:param name="man.string.subst.map.local.pre"/> +<xsl:param name="man.subheading.divider.enabled">0</xsl:param> +<xsl:param name="man.subheading.divider">========================================================================</xsl:param> +<xsl:param name="man.table.footnotes.divider">----</xsl:param> +<xsl:param name="man.th.extra1.suppress">0</xsl:param> +<xsl:param name="man.th.extra2.max.length">30</xsl:param> +<xsl:param name="man.th.extra2.suppress">0</xsl:param> +<xsl:param name="man.th.extra3.max.length">30</xsl:param> +<xsl:param name="man.th.extra3.suppress">0</xsl:param> +<xsl:param name="man.th.title.max.length">20</xsl:param> +<xsl:param name="refentry.date.profile.enabled">0</xsl:param> +<xsl:param name="refentry.date.profile"> + (($info[//date])[last()]/date)[1]| + (($info[//pubdate])[last()]/pubdate)[1] +</xsl:param> +<xsl:param name="refentry.manual.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> +<xsl:param name="refentry.manual.profile.enabled">0</xsl:param> +<xsl:param name="refentry.manual.profile"> + (($info[//title])[last()]/title)[1]| + ../title/node() +</xsl:param> +<xsl:param name="refentry.meta.get.quietly" select="0"/> +<xsl:param name="refentry.source.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> +<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param> +<xsl:param name="refentry.source.name.profile"> + (($info[//productname])[last()]/productname)[1]| + (($info[//corpname])[last()]/corpname)[1]| + (($info[//corpcredit])[last()]/corpcredit)[1]| + (($info[//corpauthor])[last()]/corpauthor)[1]| + (($info[//orgname])[last()]/orgname)[1]| + (($info[//publishername])[last()]/publishername)[1] +</xsl:param> +<xsl:param name="refentry.source.name.suppress">0</xsl:param> +<xsl:param name="refentry.version.profile.enabled">0</xsl:param> +<xsl:param name="refentry.version.profile"> + (($info[//productnumber])[last()]/productnumber)[1]| + (($info[//edition])[last()]/edition)[1]| + (($info[//releaseinfo])[last()]/releaseinfo)[1] +</xsl:param> +<xsl:param name="refentry.version.suppress">0</xsl:param> +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml new file mode 100644 index 0000000..8db98d3 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml @@ -0,0 +1,70 @@ +<?xml version="1.0"?> + +<reference><info><title>manpages Processing Instruction Reference</title> + <releaseinfo role="meta"> + $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $ + </releaseinfo> + </info> + <partintro xml:id="partintro"> + <title>Introduction</title> + +<para>This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for manpages output. + <note> + +<para>You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one).</para> + + </note> + </para> + + </partintro> + +<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="dbman_funcsynopsis-style"> +<refnamediv> +<refname>dbman_funcsynopsis-style</refname> +<refpurpose>Specifies presentation style for a funcsynopsis.</refpurpose> +</refnamediv> +<refsynopsisdiv> + + <synopsis><tag class="xmlpi">dbman funcsynopsis-style="kr"|"ansi"</tag></synopsis> + +</refsynopsisdiv> +<refsect1><title>Description</title> + +<para>Use the <tag class="xmlpi">dbman + funcsynopsis-style</tag> PI as a child of a + <tag>funcsynopsis</tag> or anywhere within a funcsynopsis + to control the presentation style for output of all + <tag>funcprototype</tag> instances within that funcsynopsis.</para> + + </refsect1><refsect1><title>Parameters</title> + +<variablelist> + <varlistentry><term>funcsynopsis-style="kr"</term> + <listitem> + +<para>Displays the <tag>funcprototype</tag> in K&R style</para> + + </listitem> + </varlistentry> + <varlistentry><term>funcsynopsis-style="ansi"</term> + <listitem> + +<para>Displays the <tag>funcprototype</tag> in ANSI style</para> + + </listitem> + </varlistentry> + </variablelist> + + </refsect1><refsect1 role="params"><title>Related Global Parameters</title> + +<para><parameter>man.funcsynopsis.style</parameter></para> + + </refsect1></refentry> +</reference> + diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl new file mode 100644 index 0000000..7b0975b --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl @@ -0,0 +1,79 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + xmlns:xlink="http://www.w3.org/1999/xlink" + exclude-result-prefixes="doc" + version='1.0'> + +<!-- ******************************************************************** + $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<doc:reference xmlns=""><info><title>manpages Processing Instruction Reference</title> + <releaseinfo role="meta"> + $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $ + </releaseinfo> + </info> + <partintro xml:id="partintro"> + <title>Introduction</title> + <para>This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for manpages output. + <note> + <para>You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one).</para> + </note> + </para> + </partintro> +</doc:reference> + +<!-- ==================================================================== --> + +<doc:pi name="dbman_funcsynopsis-style" xmlns=""> + <refpurpose>Specifies presentation style for a funcsynopsis.</refpurpose> + <refdescription> + <para>Use the <tag class="xmlpi">dbman + funcsynopsis-style</tag> PI as a child of a + <tag>funcsynopsis</tag> or anywhere within a funcsynopsis + to control the presentation style for output of all + <tag>funcprototype</tag> instances within that funcsynopsis.</para> + </refdescription> + <refsynopsisdiv> + <synopsis><tag class="xmlpi">dbman funcsynopsis-style="kr"|"ansi"</tag></synopsis> + </refsynopsisdiv> + <refparameter> + <variablelist> + <varlistentry><term>funcsynopsis-style="kr"</term> + <listitem> + <para>Displays the <tag>funcprototype</tag> in K&R style</para> + </listitem> + </varlistentry> + <varlistentry><term>funcsynopsis-style="ansi"</term> + <listitem> + <para>Displays the <tag>funcprototype</tag> in ANSI style</para> + </listitem> + </varlistentry> + </variablelist> + </refparameter> + <refsee role="params"> + <para><parameter>man.funcsynopsis.style</parameter></para> + </refsee> +</doc:pi> +<xsl:template name="pi.dbman_funcsynopsis-style"> + <xsl:param name="node" select="."/> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" select="$node/processing-instruction('dbman')"/> + <xsl:with-param name="attribute" select="'funcsynopsis-style'"/> + </xsl:call-template> +</xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl new file mode 100644 index 0000000..41b14c7 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl @@ -0,0 +1,281 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<!--This file was created automatically by xsl2profile--> +<!--from the DocBook XSL stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" exclude-result-prefixes="exsl exslt" version="1.0"> + + <xsl:import href="../html/docbook.xsl"/> + <xsl:import href="../html/manifest.xsl"/> + <!-- * html-synop.xsl file is generated by build --> + <xsl:import href="html-synop.xsl"/> + <xsl:output method="text" encoding="UTF-8" indent="no"/> + <!-- ******************************************************************** + $Id: docbook.xsl 8841 2010-08-14 07:21:25Z mzjn $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + + <!-- ==================================================================== --> + + <xsl:include href="../common/refentry.xsl"/> + <xsl:include href="../common/charmap.xsl"/> + <xsl:include href="param.xsl"/> + <xsl:include href="utility.xsl"/> + <xsl:include href="info.xsl"/> + <xsl:include href="other.xsl"/> + <xsl:include href="refentry.xsl"/> + <xsl:include href="block.xsl"/> + <xsl:include href="inline.xsl"/> + <xsl:include href="synop.xsl"/> + <xsl:include href="lists.xsl"/> + <xsl:include href="endnotes.xsl"/> + <xsl:include href="table.xsl"/> + <xsl:include href="pi.xsl"/> + + <!-- * we rename the following just to avoid using params with "man" --> + <!-- * prefixes in the table.xsl stylesheet (because that stylesheet --> + <!-- * can potentially be reused for more than just man output) --> + <xsl:param name="tbl.font.headings" select="$man.font.table.headings"/> + <xsl:param name="tbl.font.title" select="$man.font.table.title"/> + + <xsl:param name="stylesheet.result.type" select="'manpages'"/> + + <!-- ==================================================================== --> + + <xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/"> + <!-- * Get a title for current doc so that we let the user --> + <!-- * know what document we are processing at this point. --> + <xsl:variable name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:variable> + <xsl:choose> + <!-- * when we find a namespaced document, strip the --> + <!-- * namespace and then continue processing it. --> + <xsl:when test="false()"/> + <xsl:when test="//*[local-name() = 'refentry']"> + <!-- * Check to see if we have any refentry children in this --> + <!-- * document; if so, process them. The reason we use --> + <!-- * local-name()=refentry (instead of just //refentry) to to --> + <!-- * check for refentry children is because this stylsheet is --> + <!-- * also post-processed by the stylesheet build to create the --> + <!-- * manpages/profile-docbook.xsl, and the refentry child check --> + <!-- * in the profile-docbook.xsl stylesheet won't work if we do --> + <!-- * a simple //refentry check. --> + <xsl:apply-templates select="$profiled-nodes//refentry"/> + <!-- * if $man.output.manifest.enabled is non-zero, --> + <!-- * generate a manifest file --> + <xsl:if test="not($man.output.manifest.enabled = 0)"> + <xsl:call-template name="generate.manifest"> + <xsl:with-param name="filename"> + <xsl:choose> + <xsl:when test="not($man.output.manifest.filename = '')"> + <!-- * If a name for the manifest file is specified, --> + <!-- * use that name. --> + <xsl:value-of select="$man.output.manifest.filename"/> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise, if user has unset --> + <!-- * $man.output.manifest.filename, default to --> + <!-- * using "MAN.MANIFEST" as the filename. Because --> + <!-- * $man.output.manifest.enabled is non-zero and --> + <!-- * so we must have a filename in order to --> + <!-- * generate the manifest. --> + <xsl:text>MAN.MANIFEST</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise, the document does not contain any --> + <!-- * refentry elements, so log/emit message and stop. --> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Erro</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text> no refentry</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>No refentry elements found</xsl:text> + <xsl:if test="$doc.title != ''"> + <xsl:text> in "</xsl:text> + <xsl:choose> + <xsl:when test="string-length($doc.title) > 30"> + <xsl:value-of select="substring($doc.title,1,30)"/> + <xsl:text>...</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$doc.title"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>"</xsl:text> + </xsl:if> + <xsl:text>.</xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- ============================================================== --> + + <xsl:template match="refentry"> + <xsl:param name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:param> + <!-- * Just use the first refname found as the "name" of the man --> + <!-- * page (which may different from the "title"...) --> + <xsl:variable name="first.refname" select="refnamediv[1]/refname[1]"/> + + <xsl:call-template name="root.messages"> + <xsl:with-param name="refname" select="$first.refname"/> + </xsl:call-template> + + <!-- * Because there are several times when we need to check *info of --> + <!-- * each refentry and its ancestors, we get those and store the --> + <!-- * data from them as a node-set in memory. --> + + <!-- * Make a node-set with contents of *info --> + <xsl:variable name="get.info" select="ancestor-or-self::*/*[substring(local-name(), string-length(local-name()) - 3) = 'info']"/> + <xsl:variable name="info" select="exsl:node-set($get.info)"/> + + <!-- * The get.refentry.metadata template is in --> + <!-- * ../common/refentry.xsl. It looks for metadata in $info --> + <!-- * and in various other places and then puts it into a form --> + <!-- * that's easier for us to digest. --> + <xsl:variable name="get.refentry.metadata"> + <xsl:call-template name="get.refentry.metadata"> + <xsl:with-param name="refname" select="$first.refname"/> + <xsl:with-param name="info" select="$info"/> + <xsl:with-param name="prefs" select="$refentry.metadata.prefs"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="refentry.metadata" select="exsl:node-set($get.refentry.metadata)"/> + + <!-- * Assemble the various parts into a complete page, then store into --> + <!-- * $manpage.contents so that we can manipluate them further. --> + <xsl:variable name="manpage.contents"> + <!-- * preprocessor invocation (need for legacy AT&T troff use) --> + <!-- * this tells troff to pre-process the page through tbl(1) --> + <!-- * (groff can figure it out automatically, but AT&T troff can't) --> + <xsl:text>'\" t +</xsl:text> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * top.comment = commented-out section at top of roff source --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="top.comment"> + <xsl:with-param name="info" select="$info"/> + <xsl:with-param name="date" select="$refentry.metadata/date"/> + <xsl:with-param name="title" select="$refentry.metadata/title"/> + <xsl:with-param name="manual" select="$refentry.metadata/manual"/> + <xsl:with-param name="source" select="$refentry.metadata/source"/> + <xsl:with-param name="refname" select="$first.refname"/> + </xsl:call-template> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * TH.title.line = title line in header/footer of man page --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="TH.title.line"> + <!-- * .TH TITLE section extra1 extra2 extra3 --> + <!-- * --> + <!-- * According to the man(7) man page: --> + <!-- * --> + <!-- * extra1 = date, "the date of the last revision" --> + <!-- * extra2 = source, "the source of the command" --> + <!-- * extra3 = manual, "the title of the manual --> + <!-- * (e.g., Linux Programmer's Manual)" --> + <!-- * --> + <!-- * So, we end up with: --> + <!-- * --> + <!-- * .TH TITLE section date source manual --> + <!-- * --> + <xsl:with-param name="title" select="$refentry.metadata/title"/> + <xsl:with-param name="section" select="$refentry.metadata/section"/> + <xsl:with-param name="extra1" select="$refentry.metadata/date"/> + <xsl:with-param name="extra2" select="$refentry.metadata/source"/> + <xsl:with-param name="extra3" select="$refentry.metadata/manual"/> + </xsl:call-template> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * (re)define some macros --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="define.portability.macros"/> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:call-template name="define.macros"/> + </xsl:if> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * Set default hyphenation, justification, indentation, and --> + <!-- * line-breaking --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:call-template name="set.default.formatting"/> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * Main body of man page --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:text>.\" ----------------------------------------------------------------- +</xsl:text> + <xsl:text>.\" * MAIN CONTENT STARTS HERE * +</xsl:text> + <xsl:text>.\" ----------------------------------------------------------------- +</xsl:text> + <xsl:apply-templates/> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * AUTHOR section --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:if test="not($man.authors.section.enabled = 0)"> + <xsl:call-template name="author.section"> + <xsl:with-param name="info" select="$info"/> + </xsl:call-template> + </xsl:if> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * COPYRIGHT section --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:if test="not($man.copyright.section.enabled = 0)"> + <xsl:call-template name="copyright.section"> + <xsl:with-param name="info" select="$info"/> + </xsl:call-template> + </xsl:if> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <!-- * NOTES list (only if user wants endnotes numbered and/or listed) --> + <!-- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> + <xsl:if test="$man.endnotes.list.enabled != 0 or $man.endnotes.are.numbered != 0"> + <xsl:call-template name="endnotes.list"/> + </xsl:if> + </xsl:variable> <!-- * end of manpage.contents --> + + <!-- * Prepare the page contents for final output, then store in --> + <!-- * $manpage.contents.prepared so the we can pass it on to the --> + <!-- * write.text.chunk() function --> + <xsl:variable name="manpage.contents.prepared"> + <!-- * "Preparing" the page contents involves, at a minimum, --> + <!-- * doubling any backslashes found (so they aren't interpreted --> + <!-- * as roff escapes). --> + <!-- * --> + <!-- * If $charmap.enabled is true, "preparing" the page contents also --> + <!-- * involves applying a character map to convert Unicode symbols and --> + <!-- * special characters into corresponding roff escape sequences. --> + <xsl:call-template name="prepare.manpage.contents"> + <xsl:with-param name="content" select="$manpage.contents"/> + </xsl:call-template> + </xsl:variable> + + <!-- * Write the prepared page contents to disk to create --> + <!-- * the final man page. --> + <xsl:call-template name="write.man.file"> + <xsl:with-param name="name" select="$first.refname"/> + <xsl:with-param name="section" select="$refentry.metadata/section"/> + <xsl:with-param name="lang" select="$lang"/> + <xsl:with-param name="content" select="$manpage.contents.prepared"/> + </xsl:call-template> + + <!-- * Generate "stub" (alias) pages (if any needed) --> + <xsl:call-template name="write.stubs"> + <xsl:with-param name="first.refname" select="$first.refname"/> + <xsl:with-param name="section" select="$refentry.metadata/section"/> + <xsl:with-param name="lang" select="$lang"/> + </xsl:call-template> + + </xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl new file mode 100644 index 0000000..4f6b5af --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl @@ -0,0 +1,319 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: refentry.xsl 8235 2009-02-09 16:22:14Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + + <xsl:template match="refnamediv"> + <xsl:choose> + <xsl:when test="preceding-sibling::refnamediv"> + <!-- * No title on secondary refnamedivs! --> + <!-- * Just put a single line break instead --> + <xsl:text>.br </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="make.subheading"> + <xsl:with-param name="title"> + <xsl:apply-templates select="." mode="subheading.markup"/> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + <xsl:call-template name="mark.subheading"/> + <!-- * if we have multiple Refname instances, separate the names --> + <!-- * with commas --> + <xsl:for-each select="refname"> + <xsl:if test="position()>1"> + <xsl:text>, </xsl:text> + </xsl:if> + <xsl:call-template name="string.subst"> + <!-- * To create the name(s) for this man page, replace any --> + <!-- * spaces in the refname(s) with underscores. This ensures --> + <!-- * that tools like lexgrog(1) will be able to parse the name --> + <!-- * (lexgrog won’t parse names that contain spaces). --> + <xsl:with-param name="string" select="."/> + <xsl:with-param name="target" select="' '"/> + <xsl:with-param name="replacement" select="'_'"/> + </xsl:call-template> + </xsl:for-each> + <!-- * The man(7) man pages says: --> + <!-- * --> + <!-- * The only required heading is NAME, which should be the --> + <!-- * first section and be followed on the next line by a one --> + <!-- * line description of the program: --> + <!-- * --> + <!-- * .SH NAME chess \- the game of chess --> + <!-- * --> + <!-- * It is extremely important that this format is followed, --> + <!-- * and that there is a backslash before the single dash --> + <!-- * which follows the command name. This syntax is used by --> + <!-- * the makewhatis(8) program to create a database of short --> + <!-- * command descriptions for the whatis(1) and apropos(1) --> + <!-- * commands. --> + <!-- * --> + <xsl:if test="refpurpose/node()"> + <xsl:text> \- </xsl:text> + <xsl:variable name="refpurpose"> + <xsl:apply-templates select="refpurpose/node()"/> + </xsl:variable> + <xsl:value-of select="normalize-space($refpurpose)"/> + </xsl:if> + <xsl:text> </xsl:text> + </xsl:template> + + <xsl:template match="refsynopsisdiv"> + <xsl:call-template name="make.subheading"> + <xsl:with-param name="title"> + <xsl:apply-templates select="." mode="subheading.markup"/> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="refsect1|refentry/refsection"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="subheading.markup"/> + </xsl:variable> + <xsl:call-template name="make.subheading"> + <xsl:with-param name="title"> + <xsl:value-of select="normalize-space($title)"/> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="refsect2|refentry/refsection/refsection"> + <xsl:call-template name="mark.subheading"/> + <xsl:variable name="title"> + <xsl:apply-templates + select="(info/title + |refsectioninfo/title + |refsect1info/title + |title)[1]/node()"/> + </xsl:variable> + <xsl:text>.SS "</xsl:text> + <xsl:value-of select="normalize-space($title)"/> + <xsl:text>" </xsl:text> + <xsl:call-template name="mark.subheading"/> + <xsl:choose> + <!-- * If default-indentation adjustment is on, then indent the --> + <!-- * child content of this Refsect2 --> + <xsl:when test="not($man.indent.refsect = 0)"> + <xsl:text>.RS </xsl:text> + <xsl:apply-templates/> + <xsl:text>.RE </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * If default-indentation adjustment is on, then do not --> + <!-- * indent the child content of this Refsect2, because --> + <!-- * the title is already "sticking out to the left" --> + <!-- * (as the groff_man(7) man page describes it), which --> + <!-- * actually means the title is indented by the value of --> + <!-- * the SN register, which appears by default to be --> + <!-- * about half of the default indentation value --> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="refsect3|refentry/refsection/refsection/refsection"> + <xsl:variable name="title"> + <xsl:value-of select="(info/title + |refsectioninfo/title + |refsect1info/title + |title)[1]"/> + </xsl:variable> + <xsl:choose> + <!-- * If default-indentation adjustment is on, then indent the --> + <!-- * child content of this Refsect3 or Refsection. --> + <xsl:when test="not($man.indent.refsect != 0)"> + <xsl:call-template name="nested-section-title"/> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($man.indent.width = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$man.indent.width"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + <xsl:text>.RE </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * If default-indentation adjustment is on, then do not --> + <!-- * indent the child content of this Refsect2, because --> + <!-- * the title is already "sticking out to the left" --> + <!-- * (as the groff_man(7) man page describes it), which --> + <!-- * actually means the title is indented by the value of --> + <!-- * the SN register, which appears by default to be --> + <!-- * about half of the default indentation value --> + <xsl:text>.ti (\n(SNu * 5u / 3u) </xsl:text> + <xsl:call-template name="nested-section-title"/> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="refsection"> + <!-- * This template is used for a nested Refsection that is --> + <!-- * is a child of a Refsect3-level section (The numberd --> + <!-- * Refsect hierarchy in DocBook ends with Refsect3, so --> + <!-- * there is not actually a Refsect4 element.) --> + <xsl:variable name="title"> + <xsl:value-of select="(info/title + |refsectioninfo/title + |refsect1info/title + |title)[1]"/> + </xsl:variable> + <xsl:variable name="indent-width"> + <xsl:if test="not($man.indent.refsect = 0)"> + <!-- * If default-indentation adjustment is on, then indent the --> + <!-- * child content of this Refsect3 or Refsection. --> + <xsl:text>(\n(SNu) </xsl:text> + </xsl:if> + </xsl:variable> + <xsl:call-template name="nested-section-title"/> + <xsl:text>.RS (\n(SNu) </xsl:text> + <xsl:apply-templates/> + <xsl:text>.RE </xsl:text> + </xsl:template> + + <!-- ==================================================================== --> + + <xsl:template match="refsect1|refentry/refsection" + mode="subheading.markup"> + <xsl:variable name="title" select="(info/title + |refsectioninfo/title + |refsect1info/title + |title)[1]"/> + <xsl:apply-templates select="$title" mode="title.markup"/> + </xsl:template> + + <xsl:template match="refsect1|refentry/refsection" + mode="title.markup"> + <!-- * Note: This template is used just for generating the text for --> + <!-- * cross-references to Refsect1 or top-level Refsection instances. --> + <xsl:variable name="title" select="(info/title + |refsectioninfo/title + |refsect1info/title + |title)[1]"/> + <xsl:call-template name="process.SH.xref"> + <xsl:with-param name="title"> + <xsl:apply-templates select="$title" mode="title.markup"/> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- * Output of Titles from Xref with Endterm needs to be handled --> + <!-- * separately from output for Endterm-less Xref --> + <xsl:template match="refsect1/title + |refentry/refsection/title + |refsynopsisdiv/title" + mode="endterm"> + <xsl:call-template name="process.SH.xref"> + <xsl:with-param name="title"> + <xsl:apply-templates/> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="refsynopsisdiv" mode="subheading.markup"> + <xsl:param name="allow-anchors" select="0"/> + <xsl:variable name="title"> + <xsl:call-template name="get.refsynopsisdiv.title"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="$title"/> + </xsl:template> + + <xsl:template match="refsynopsisdiv" mode="title.markup"> + <!-- * Note: This template is used just for generating the text for --> + <!-- * cross-references to Refsynopsisdiv instances. --> + <xsl:param name="allow-anchors" select="0"/> + <xsl:variable name="title"> + <xsl:call-template name="get.refsynopsisdiv.title"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:call-template> + </xsl:variable> + <xsl:call-template name="process.SH.xref"> + <xsl:with-param name="title" select="$title"/> + </xsl:call-template> + </xsl:template> + + <xsl:template name="get.refsynopsisdiv.title"> + <xsl:param name="allow-anchors"/> + <xsl:choose> + <xsl:when test="info/title + |refsynopsisdivinfo/title + |title"> + <xsl:apply-templates + select="(info/title + |refsynopsisdivinfo/title + |title)[1]" mode="title.markup"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'RefSynopsisDiv'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="refnamediv" mode="subheading.markup"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'RefName'"/> + </xsl:call-template> + </xsl:template> + + <xsl:template match="refnamediv" mode="title.markup"> + <xsl:call-template name="process.SH.xref"> + <xsl:with-param name="title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'RefName'"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="refnamediv" mode="xref-to"> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:template> + + <!-- * suppress any title we don't otherwise process elsewhere --> + <xsl:template match="title"/> + + <!-- ==================================================================== --> + + <xsl:template name="process.SH.xref"> + <xsl:param name="title"/> + <xsl:choose> + <xsl:when test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>\c</xsl:text> + <xsl:text>▒</xsl:text> + <xsl:text>.SH-xref </xsl:text> + <xsl:text>"</xsl:text> + <xsl:value-of select="$title"/> + <xsl:text>\c"</xsl:text> + <xsl:text>▒</xsl:text> + <xsl:text>\&</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="string.upper"> + <xsl:with-param name="string" select="$title"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl new file mode 100644 index 0000000..2e0b14e --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl @@ -0,0 +1,432 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="exsl" + version='1.0'> + +<!-- ******************************************************************** + $Id: synop.xsl 7956 2008-03-27 12:07:43Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<xsl:variable name="arg.or.sep"> |</xsl:variable> + +<!-- * Note: If you're looking for the *Synopsis* element, you won't --> +<!-- * find any code here for handling it. It's a "verbatim" --> +<!-- * environment; see the block.xsl file instead. --> + +<xsl:template match="synopfragmentref"> + <xsl:variable name="target" select="key('id',@linkend)"/> + <xsl:variable name="snum"> + <xsl:apply-templates select="$target" mode="synopfragment.number"/> + </xsl:variable> + <xsl:text>(</xsl:text> + <xsl:value-of select="$snum"/> + <xsl:text>)</xsl:text> + <xsl:text>▀</xsl:text> + <xsl:call-template name="italic"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="synopfragment" mode="synopfragment.number"> + <xsl:number format="1"/> +</xsl:template> + +<xsl:template match="synopfragment"> + <xsl:variable name="snum"> + <xsl:apply-templates select="." mode="synopfragment.number"/> + </xsl:variable> + <xsl:text> </xsl:text> + <!-- * If we have a group of Synopfragments, we only want to output a --> + <!-- * line of space before the first; so when we find a Synopfragment --> + <!-- * which has another Synopfragment as a following sibling, we use--> + <!-- * the pinch-together template to close up the line of space --> + <!-- * that would otherwise be generated by the .HP macro --> + <xsl:if test="following-sibling::*[self::synopfragment]"> + <xsl:call-template name="pinch.together"/> + </xsl:if> + <xsl:text>.HP </xsl:text> + <xsl:text>\w'</xsl:text> + <xsl:text>(</xsl:text> + <xsl:value-of select="$snum"/> + <xsl:text>)</xsl:text> + <xsl:text>\ 'u</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>(</xsl:text> + <xsl:value-of select="$snum"/> + <xsl:text>)</xsl:text> + <xsl:text>\ </xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="group|arg" name="group-or-arg"> + <xsl:variable name="choice" select="@choice"/> + <xsl:variable name="rep" select="@rep"/> + <xsl:variable name="sepchar"> + <xsl:choose> + <xsl:when test="ancestor-or-self::*/@sepchar"> + <xsl:value-of select="ancestor-or-self::*/@sepchar"/> + </xsl:when> + <xsl:otherwise> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="position()>1 and + not(preceding-sibling::*[1][self::sbr])" + ><xsl:value-of select="$sepchar"/></xsl:if> + <xsl:choose> + <xsl:when test="$choice='plain'"> + <!-- * do nothing --> + </xsl:when> + <xsl:when test="$choice='req'"> + <xsl:value-of select="$arg.choice.req.open.str"/> + </xsl:when> + <xsl:when test="$choice='opt'"> + <xsl:value-of select="$arg.choice.opt.open.str"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$arg.choice.def.open.str"/> + </xsl:otherwise> + </xsl:choose> + <xsl:variable name="arg"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:choose> + <xsl:when test="local-name(.) = 'arg' and not(ancestor::arg)"> + <!-- * Prevent arg contents from getting wrapped and broken up --> + <xsl:variable name="arg.wrapper"> + <Arg><xsl:value-of select="normalize-space($arg)"/></Arg> + </xsl:variable> + <xsl:apply-templates mode="prevent.line.breaking" + select="exsl:node-set($arg.wrapper)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$arg"/> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="$rep='repeat'"> + <xsl:value-of select="$arg.rep.repeat.str"/> + </xsl:when> + <xsl:when test="$rep='norepeat'"> + <xsl:value-of select="$arg.rep.norepeat.str"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$arg.rep.def.str"/> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="$choice='plain'"> + <xsl:if test='arg'> + <xsl:value-of select="$arg.choice.plain.close.str"/> + </xsl:if> + </xsl:when> + <xsl:when test="$choice='req'"> + <xsl:value-of select="$arg.choice.req.close.str"/> + </xsl:when> + <xsl:when test="$choice='opt'"> + <xsl:value-of select="$arg.choice.opt.close.str"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$arg.choice.def.close.str"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="group/arg"> + <xsl:variable name="choice" select="@choice"/> + <xsl:variable name="rep" select="@rep"/> + <xsl:if test="position()>1"><xsl:value-of select="$arg.or.sep"/></xsl:if> + <xsl:call-template name="group-or-arg"/> +</xsl:template> + +<xsl:template match="sbr"> + <xsl:text>▒</xsl:text> + <xsl:text>.br▒</xsl:text> +</xsl:template> + +<xsl:template match="cmdsynopsis"> + <!-- * if justification is enabled by default, turn it off temporarily --> + <xsl:if test="$man.justify != 0"> + <xsl:text>.ad l </xsl:text> + </xsl:if> + <!-- * if hyphenation is enabled by default, turn it off temporarily --> + <xsl:if test="$man.hyphenate != 0"> + <xsl:text>.hy 0 </xsl:text> + </xsl:if> + <xsl:call-template name="synopsis-block-start"/> + <xsl:text>.HP </xsl:text> + <xsl:text>\w'</xsl:text> + <xsl:variable name="command"> + <xsl:apply-templates select="command"/> + </xsl:variable> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="normalize-space($command)"/> + <xsl:with-param name="target" select="' '"/> + <xsl:with-param name="replacement" select="'\ '"/> + </xsl:call-template> + <xsl:text>\ 'u</xsl:text> + <xsl:text> </xsl:text> + <xsl:apply-templates/> + <xsl:text> </xsl:text> + <xsl:call-template name="synopsis-block-end"/> + <!-- * if justification is enabled by default, turn it back on --> + <xsl:if test="$man.justify != 0"> + <xsl:text>.ad </xsl:text> + </xsl:if> + <!-- * if hyphenation is enabled by default, turn it back on --> + <xsl:if test="$man.hyphenate != 0"> + <xsl:text>.hy </xsl:text> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> +<!-- * Funcsynopis hierarchy starts here --> +<!-- ==================================================================== --> + +<!-- * Note: If you're looking for the *Funcsynopsisinfo* element, --> +<!-- * you won't find any code here for handling it. It's a "verbatim" --> +<!-- * environment; see the block.xsl file instead. --> + +<!-- * Within funcsynopis output, disable hyphenation, and use --> +<!-- * left-aligned filling for the duration of the synopsis, so that --> +<!-- * line breaks only occur between separate paramdefs. --> +<xsl:template match="funcsynopsis"> + <!-- * if justification is enabled by default, turn it off temporarily --> + <xsl:if test="$man.justify != 0"> + <xsl:text>.ad l </xsl:text> + </xsl:if> + <!-- * if hyphenation is enabled by default, turn it off temporarily --> + <xsl:if test="$man.hyphenate != 0"> + <xsl:text>.hy 0 </xsl:text> + </xsl:if> + <xsl:apply-templates/> + <!-- * if justification is enabled by default, turn it back on --> + <xsl:if test="$man.justify != 0"> + <xsl:text>.ad </xsl:text> + </xsl:if> + <!-- * if hyphenation is enabled by default, turn it back on --> + <xsl:if test="$man.hyphenate != 0"> + <xsl:text>.hy </xsl:text> + </xsl:if> +</xsl:template> + +<!-- * In HTML output, placing a dbfunclist PI as a child of a particular --> +<!-- * element creates a hyperlinked list of all funcsynopsis instances --> +<!-- * that are descendants of that element. But we can’t really do this --> +<!-- * kind of hyperlinked list in manpages output, so we just need to --> +<!-- * suppress it instead. --> +<xsl:template match="processing-instruction('dbfunclist')"/> + +<!-- * ***************************************************************** --> +<!-- * Note about boldface in funcprototype output --> +<!-- * ***************************************************************** --> +<!-- * All funcprototype content is by default rendered in bold, --> +<!-- * because the old man(7) man page, now man-pages(7) says this: --> +<!-- * --> +<!-- * For functions, the arguments are always specified using --> +<!-- * italics, even in the SYNOPSIS section, where the rest of --> +<!-- * the function is specified in bold --> +<!-- * --> +<!-- * Look through the contents of the man/man2 and man3 directories --> +<!-- * on your system, and you'll see that most existing pages do follow --> +<!-- * this "bold everything in function synopsis" rule. --> +<!-- * --> +<!-- * Users who don't want the bold output can choose to adjust the --> +<!-- * man.font.funcprototype parameter on their own. So even if you --> +<!-- * don't personally like the way it looks, please don't change the --> +<!-- * default to be non-bold - because it's a convention that's --> +<!-- * followed is the vast majority of existing man pages that document --> +<!-- * functions, and we need to follow it by default, like it or no. --> +<!-- * ***************************************************************** --> + +<xsl:template match="funcprototype"> + <xsl:variable name="man-funcprototype-style"> + <xsl:call-template name="pi.dbman_funcsynopsis-style"> + <xsl:with-param name="node" select="ancestor::funcsynopsis/descendant-or-self::*"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="style"> + <xsl:choose> + <xsl:when test="not($man-funcprototype-style = '')"> + <xsl:value-of select="$man-funcprototype-style"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$man.funcsynopsis.style"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="funcprototype.string.value"> + <xsl:value-of select="funcdef"/> + </xsl:variable> + <xsl:variable name="funcprototype"> + <xsl:apply-templates select="funcdef"/> + </xsl:variable> + <xsl:call-template name="synopsis-block-start"/> + <xsl:text>.HP </xsl:text> + <xsl:text>\w'</xsl:text> + <xsl:variable name="funcdef"> + <xsl:apply-templates select="funcdef"/> + </xsl:variable> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="normalize-space($funcdef)"/> + <xsl:with-param name="target" select="' '"/> + <xsl:with-param name="replacement" select="'\ '"/> + </xsl:call-template> + <xsl:text>('u</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>.</xsl:text> + <xsl:value-of select="$man.font.funcprototype"/> + <xsl:text> </xsl:text> + <!-- * The following quotation mark (and the one further below) are --> + <!-- * needed to properly delimit the parts of the Funcprototype that --> + <!-- * should be rendered in the prevailing font (either Bold or Roman) --> + <!-- * from Parameter output that needs to be alternately rendered in --> + <!-- * italic. --> + <xsl:text>"</xsl:text> + <xsl:value-of select="normalize-space($funcprototype)"/> + <xsl:text>(</xsl:text> + <xsl:choose> + <xsl:when test="not($style = 'ansi')"> + <xsl:apply-templates select="*[local-name() != 'funcdef']" mode="kr"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*[local-name() != 'funcdef']" mode="ansi"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>"</xsl:text> + <xsl:text> </xsl:text> + <xsl:if test="paramdef and not($style = 'ansi')"> + <!-- * if we have any paramdef instances in this funcprototype and --> + <!-- * the user has chosen K&R style output (by specifying some style --> + <!-- * value other than the default 'ansi'), then we need to generate --> + <!-- * the separate list of param definitions for this funcprototype --> + <!-- * --> + <!-- * we put a blank line after the prototype and before the list, --> + <!-- * and we indent the list by whatever width $list-indent is set --> + <!-- * to (4 spaces by default) --> + <xsl:text>.sp </xsl:text> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + <xsl:apply-templates select="paramdef" mode="kr-paramdef-list"/> + <xsl:text>.RE </xsl:text> + </xsl:if> + <xsl:call-template name="synopsis-block-end"/> +</xsl:template> + +<xsl:template match="funcdef"> + <xsl:apply-templates mode="prevent.line.breaking"/> +</xsl:template> + +<xsl:template match="funcdef/function"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="void" mode="kr"> + <xsl:text>);</xsl:text> +</xsl:template> + +<xsl:template match="varargs" mode="kr"> + <xsl:text>...);</xsl:text> +</xsl:template> + +<xsl:template match="void" mode="ansi"> + <xsl:text>void);</xsl:text> +</xsl:template> + +<xsl:template match="varargs" mode="ansi"> + <xsl:text>...);</xsl:text> +</xsl:template> + +<xsl:template match="paramdef" mode="kr"> + <!-- * in K&R-style output, the prototype just contains the parameter --> + <!-- * names - because the parameter definitions for each parameter --> + <!-- * (including the type information) are displayed in a separate --> + <!-- * list following the prototype; so in this mode (which is for the --> + <!-- * prototype, not the separate list), we first just want to grab --> + <!-- * the parameter for each paramdef --> + <xsl:variable name="contents"> + <xsl:apply-templates select="parameter"/> + </xsl:variable> + <xsl:apply-templates mode="prevent.line.breaking" select="exsl:node-set($contents)"/> + <xsl:choose> + <xsl:when test="following-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>);</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef" mode="ansi"> + <!-- * in ANSI-style output, the prototype contains the complete --> + <!-- * parameter definitions for each parameter (there is no separate --> + <!-- * list of parameter definitions like the one for K&R style --> + <xsl:apply-templates mode="prevent.line.breaking" select="."/> + <xsl:choose> + <xsl:when test="following-sibling::*"> + <xsl:text>, </xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>);</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="paramdef" mode="kr-paramdef-list"> + <!-- * this mode is for generating the separate list of parameter --> + <!-- * definitions in K&R-style output --> + <xsl:text>.br </xsl:text> + <xsl:text>.</xsl:text> + <xsl:value-of select="$man.font.funcprototype"/> + <xsl:text> </xsl:text> + <!-- * The following quotation mark (and the one further below) are --> + <!-- * needed to properly delimit the parts of the Funcprototype that --> + <!-- * should be rendered in the prevailing font (either Bold or Roman) --> + <!-- * from Parameter output that needs to be alternately rendered in --> + <!-- * italic. --> + <xsl:text>"</xsl:text> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:value-of select="normalize-space($contents)"/> + <xsl:text>;</xsl:text> + <xsl:text>"</xsl:text> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="paramdef/parameter"> + <!-- * We use U+2591 here in place of a normal space, because if we --> + <!-- * were to just use a normal space, it would get replaced with a --> + <!-- * non-breaking space when we run the whole Paramdef through the --> + <!-- * prevent.line.breaking template. And as far as why we're --> + <!-- * inserting the space and quotation marks around each Parameter --> + <!-- * to begin with, the reason is that we need to because we are --> + <!-- * outputting Funcsynopsis in either the "BI" or "RI" font, and --> + <!-- * the space and quotation marks delimit the text as the --> + <!-- * "alternate" or "I" text that needs to be rendered in italic. --> + <xsl:text>"░"</xsl:text> + <xsl:apply-templates/> + <xsl:text>"░"</xsl:text> +</xsl:template> + +<xsl:template match="funcparams"> + <xsl:text>(</xsl:text> + <xsl:apply-templates/> + <xsl:text>)</xsl:text> +</xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl new file mode 100644 index 0000000..3d95051 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl @@ -0,0 +1,633 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="exsl" + version='1.0'> + + <!-- ******************************************************************** + $Id: table.xsl 8400 2009-04-08 07:44:54Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + <!-- + <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl"/> + <xsl:param name="tbl.font.title">B</xsl:param> + <xsl:param name="tbl.font.headings">B</xsl:param> + --> + <xsl:param name="tbl.running.header.from.thead" select="0"/> + <xsl:param name="tbl.column.separator.char">:</xsl:param> + + <!-- ==================================================================== --> + + <!-- * This stylesheet transforms DocBook and HTML table source into --> + <!-- * tbl(1) markup. --> + <!-- * --> + <!-- * For details on tbl(1) and its markup syntaxt, see M. E. Lesk,--> + <!-- * "Tbl - A Program to Format Tables": --> + <!-- * --> + <!-- * http://cm.bell-labs.com/7thEdMan/vol2/tbl --> + <!-- * http://cm.bell-labs.com/cm/cs/doc/76/tbl.ps.gz --> + <!-- * http://www.snake.net/software/troffcvt/tbl.html --> + + <xsl:template match="table|informaltable" mode="to.tbl"> + <!--* the "source" param is an optional param; it can be any --> + <!--* string you want to use that gives some indication of the --> + <!--* source context for a table; it gets passed down to the named --> + <!--* templates that do the actual table processing; this --> + <!--* stylesheet currently uses the "source" information for --> + <!--* logging purposes --> + <xsl:param name="source"/> + <xsl:param name="title"> + <xsl:if test="local-name(.) = 'table'"> + <xsl:apply-templates select="." mode="object.title.markup.textonly"/> + </xsl:if> + </xsl:param> + <!-- * ============================================================== --> + <!-- * Set global table parameters --> + <!-- * ============================================================== --> + <!-- * First, set a few parameters based on attributes specified in --> + <!-- * the table source. --> + <xsl:param name="allbox"> + <xsl:if test="not(@frame = 'none') and not(@border = '0')"> + <!-- * By default, put a box around table and between all cells, --> + <!-- * unless frame="none" or border="0" --> + <xsl:text>allbox </xsl:text> + </xsl:if> + </xsl:param> + <xsl:param name="center"> + <!-- * If align="center", center the table. Otherwise, tbl(1) --> + <!-- * left-aligns it by default; note that there is no support --> + <!-- * in tbl(1) for specifying right alignment. --> + <xsl:if test="@align = 'center' or tgroup/@align = 'center'"> + <xsl:text>center </xsl:text> + </xsl:if> + </xsl:param> + <xsl:param name="expand"> + <!-- * If pgwide="1" or width="100%", then "expand" the table by --> + <!-- * making it "as wide as the current line length" (to quote --> + <!-- * the tbl(1) guide). --> + <xsl:if test="@pgwide = '1' or @width = '100%'"> + <xsl:text>expand </xsl:text> + </xsl:if> + </xsl:param> + + <!-- * ============================================================== --> + <!-- * Convert table to HTML --> + <!-- * ============================================================== --> + <!-- * Process the table by applying the HTML templates from the --> + <!-- * DocBook XSL stylesheets to the whole thing; because we don't --> + <!-- * override any of the <row>, <entry>, <tr>, <td>, etc. templates, --> + <!-- * the templates in the HTML stylesheets (which we import) are --> + <!-- * used to process those. --> + <xsl:param name="html-table-output"> + <xsl:choose> + <xsl:when test=".//tr"> + <!-- * If this table has a TR child, it means that it's an --> + <!-- * HTML table in the DocBook source, instead of a CALS --> + <!-- * table. So we just copy it as-is, while wrapping it --> + <!-- * in an element with same name as its original parent. --> + <xsl:for-each select="descendant-or-self::table|descendant-or-self::informaltable"> + <xsl:element name="{local-name(..)}"> + <table> + <xsl:copy-of select="*"/> + </table> + </xsl:element> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise, this is a CALS table in the DocBook source, --> + <!-- * so we need to apply the templates in the HTML --> + <!-- * stylesheets to transform it into HTML before we do --> + <!-- * any further processing of it. --> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="contents" select="exsl:node-set($html-table-output)"/> + + <!-- ==================================================================== --> + <!-- * Output the table --> + <!-- ==================================================================== --> + <!-- * --> + <!-- * This is the "driver" part of the code; it calls a series of named + * templates (further below) to generate the actual tbl(1) markup, --> + <!-- * including the optional "options line", required "format section", --> + <!-- * and then the actual contents of the table. --> + <!-- * --> + <!-- ==================================================================== --> + + <xsl:for-each select="$contents//table"> + <!-- * ============================================================== --> + <!-- * Output table title --> + <!-- * ============================================================== --> + <xsl:if test="$title != '' or parent::td"> + <xsl:text>.sp </xsl:text> + <xsl:call-template name="pinch.together"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="$tbl.font.title"/> + <xsl:text> </xsl:text> + <xsl:if test="parent::td"> + <xsl:text>*[nested▀table]</xsl:text> + </xsl:if> + <xsl:value-of select="normalize-space($title)"/> + <xsl:text> </xsl:text> + </xsl:if> + + <!-- * mark the start of the table --> + <!-- * "TS" = "table start" --> + <xsl:text>.TS</xsl:text> + <xsl:if test="thead and $tbl.running.header.from.thead"> + <!-- * H = "has header" --> + <xsl:text> H</xsl:text> + </xsl:if> + <xsl:text> </xsl:text> + + <!-- * ============================================================== --> + <!-- * Output "options line" --> + <!-- * ============================================================== --> + <xsl:variable name="options-line"> + <xsl:value-of select="$allbox"/> + <xsl:value-of select="$center"/> + <xsl:value-of select="$expand"/> + <xsl:text>tab(</xsl:text> + <xsl:value-of select="$tbl.column.separator.char"/> + <xsl:text>)</xsl:text> + </xsl:variable> + <xsl:if test="normalize-space($options-line) != ''"> + <xsl:value-of select="normalize-space($options-line)"/> + <xsl:text>; </xsl:text> + </xsl:if> + + <!-- * ============================================================== --> + <!-- * Output table header rows --> + <!-- * ============================================================== --> + <xsl:if test="thead"> + <xsl:call-template name="output.rows"> + <xsl:with-param name="rows" select="thead/tr"/> + </xsl:call-template> + <xsl:text> </xsl:text> + + <!-- * mark the end of table-header rows --> + <xsl:choose> + <xsl:when test="$tbl.running.header.from.thead"> + <!-- * "TH" = "table header end" --> + <xsl:text>.TH </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * "T&" = "table continuation" and is meant just as a kind --> + <!-- * of convenience macro and is sorta equivalent to a "TE" --> + <!-- * (table end) followed immediately by a "TS" (table start); --> + <!-- * in this case, it marks the end of a table "subsection" --> + <!-- * with header rows, and the start of a subsection with body --> + <!-- * rows. It's necessary to output it here because the "TH" --> + <!-- * macro is not being output, so there's otherwise no way --> + <!-- * for tbl(1) to know we have the table "sectioned". --> + <xsl:text>.T& </xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <!-- * ============================================================== --> + <!-- * Output table body rows --> + <!-- * ============================================================== --> + <!-- * First create node set with all non-thead rows (tbody+tfoot), --> + <!-- * but reordered with the tfoot rows at the end of the node set --> + <xsl:variable name="rows-set"> + <xsl:copy-of select="tbody/tr|tr"/> + <xsl:copy-of select="tfoot/tr"/> + </xsl:variable> + <xsl:call-template name="output.rows"> + <xsl:with-param name="source" select="$source"/> + <xsl:with-param name="rows" select="exsl:node-set($rows-set)"/> + </xsl:call-template> + + <!-- * mark the end of the table --> + <xsl:text> </xsl:text> + <!-- * .TE = "Table End" --> + <xsl:text>.TE </xsl:text> + <!-- * put a blank line of space below the table --> + <xsl:text>.sp 1 </xsl:text> + </xsl:for-each> + </xsl:template> + + <!-- ==================================================================== --> + <!-- * named templates --> + <!-- ==================================================================== --> + <!-- * --> + <!-- * All of the following are named templates that get called directly --> + <!-- * or indirectly by the main "driver" part of the code (above) --> + <!-- * --> + <!-- ==================================================================== --> + + <xsl:template name="output.rows"> + <xsl:param name="source"/> + <xsl:param name="rows"/> + <!-- * ============================================================== --> + <!-- * Flatten row set into simple list of cells --> + <!-- * ============================================================== --> + <!-- * Now we flatten the structure further into just a set of --> + <!-- * cells without the row parents. This basically creates a --> + <!-- * copy of the entire contents of the original table, but --> + <!-- * restructured in such a way that we can more easily generate --> + <!-- * the corresponding tbl(1) markup we need to output. --> + <xsl:variable name="cells-list"> + <xsl:call-template name="build.cell.list"> + <xsl:with-param name="source" select="$source"/> + <xsl:with-param name="rows" select="$rows"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="cells" select="exsl:node-set($cells-list)"/> + + <!-- * Output the table "format section", which tells tbl(1) how to --> + <!-- * format each row and column --> + <xsl:call-template name="create.table.format"> + <xsl:with-param name="cells" select="$cells"/> + </xsl:call-template> + + <!--* Output the formatted contents of each cell. --> + <xsl:for-each select="$cells/cell"> + <xsl:call-template name="output.cell"/> + </xsl:for-each> + </xsl:template> + + <!-- * ============================================================== --> + <!-- * Output the tbl(1)-formatted contents of each cell. --> + <!-- * ============================================================== --> + <xsl:template name="output.cell"> + <xsl:choose> + <xsl:when test="preceding-sibling::cell[1]/@row != @row or + not(preceding-sibling::cell)"> + <!-- * If the value of the "row" attribute on this cell is --> + <!-- * different from the value of that on the previous cell, it --> + <!-- * means we have a new row. So output a line break (as long --> + <!-- * as this isn't the first cell in the table) --> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise we are not at the start of a new row, so we --> + <!-- * output a tab character to delimit the contents of this --> + <!-- * cell from the contents of the next one. --> + <xsl:value-of select="$tbl.column.separator.char"/> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="@type = '^'"> + <!-- * If this is a dummy cell resulting from the presence of --> + <!-- * rowpan attribute in the source, it has no contents, so --> + <!-- * we need to handle it differently. --> + <xsl:if test="@colspan and @colspan > 1"> + <!-- * If there is a colspan attribute on this dummy row, then --> + <!-- * we need to output a tab character for each column that --> + <!-- * it spans. --> + <xsl:call-template name="copy-string"> + <xsl:with-param name="string" select="$tbl.column.separator.char"/> + <xsl:with-param name="count"> + <xsl:value-of select="@colspan - 1"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <!-- * Otherwise, we have a "real" cell (not a dummy one) with --> + <!-- * contents that we need to output, --> + <!-- * --> + <!-- * The "T{" and "T}" stuff are delimiters to tell tbl(1) that --> + <!-- * the delimited contents are "text blocks" that roff --> + <!-- * needs to process --> + <xsl:text>T{ </xsl:text> + <xsl:copy-of select="."/> + <xsl:text> T}</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- * ============================================================== --> + <!-- * Build a restructured "cell list" copy of the entire table --> + <!-- * ============================================================== --> + <xsl:template name="build.cell.list"> + <xsl:param name="source"/> + <xsl:param name="rows"/> + <xsl:param name="cell-data-unsorted"> + <!-- * This param collects all the "real" cells from the table, --> + <!-- * along with "dummy" rows that we generate for keeping --> + <!-- * track of Rowspan instances. --> + <xsl:apply-templates select="$rows" mode="cell.list"> + <xsl:with-param name="source" select="$source"/> + </xsl:apply-templates> + </xsl:param> + <xsl:param name="cell-data-sorted"> + <!-- * Sort the cells so that the dummy cells get put where we --> + <!-- * need them in the structure. Note that we need to specify --> + <!-- * data-type="number" here because the default sorting method --> + <!-- * for xsl:sort is "text" (alphabetical). --> + <xsl:for-each select="exsl:node-set($cell-data-unsorted)/cell"> + <xsl:sort select="@row" data-type="number"/> + <xsl:sort select="@slot" data-type="number"/> + <xsl:copy-of select="."/> + </xsl:for-each> + </xsl:param> + <!-- * Return the sorted cell list --> + <xsl:copy-of select="$cell-data-sorted"/> + </xsl:template> + + <xsl:template match="tr" mode="cell.list"> + <xsl:param name="source"/> + <xsl:variable name="row"> + <xsl:value-of select="count(preceding-sibling::tr) + 1"/> + </xsl:variable> + <xsl:for-each select="td|th"> + <xsl:call-template name="cell"> + <xsl:with-param name="source" select="$source"/> + <xsl:with-param name="row" select="$row"/> + <!-- * pass on the element name so we can select the appropriate --> + <!-- * roff font for styling the cell contents --> + <xsl:with-param name="class" select="name(.)"/> + </xsl:call-template> + </xsl:for-each> + </xsl:template> + + <xsl:template name="cell"> + <xsl:param name="source"/> + <xsl:param name="row"/> + <xsl:param name="class"/> + <xsl:param name="slot"> + <!-- * The "slot" is the horizontal position of this cell (usually --> + <!-- * just the same as its column, but not so when it is preceded --> + <!-- * by cells that have colspans or cells in preceding rows that --> + <!-- * that have rowspans). --> + <xsl:value-of select="position()"/> + </xsl:param> + <!-- * For each real TD cell, create a Cell instance; contents will --> + <!-- * be the roff-formatted contents of its original table cell. --> + <cell type="" + row="{$row}" + slot="{$slot}" + class="{$class}" + colspan="{@colspan}" + align="{@align}" + valign="{@valign}" + > + <xsl:choose> + <xsl:when test=".//tr"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Warn</xsl:with-param> + <xsl:with-param name="source" select="$source"/> + <xsl:with-param name="context-desc">tbl convert</xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>Extracted a nested table</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:text>[\fInested▀table\fR]* </xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * Apply templates to the child contents of this cell, to --> + <!-- * transform them into marked-up roff. --> + <xsl:variable name="contents"> + <xsl:apply-templates/> + </xsl:variable> + <!-- * We now have the contents in roff (plain-text) form, --> + <!-- * but we may also still have unnecessary whitespace at --> + <!-- * the beginning and/or end of it, so trim it off. --> + <xsl:call-template name="trim.text"> + <xsl:with-param name="contents" select="$contents"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </cell> + + <!-- * For each instance of a rowspan attribute found, we create N --> + <!-- * dummy cells, where N is equal to the value of the rowspan. --> + <xsl:if test="@rowspan and @rowspan > 0"> + <!-- * If this cell is preceded in the same row by cells that --> + <!-- * have colspan attributes, then we need to calculate the --> + <!-- * "offset" caused by those colspan instances; the formula --> + <!-- * is to (1) check for all the preceding cells that have --> + <!-- * colspan attributes that are not empty and which have a --> + <!-- * value greater than 1, then (2) take the sum of the values --> + <!-- * of all those colspan attributes, and subtract from that --> + <!-- * the number of such colspan instances found. --> + <xsl:variable name="colspan-offset"> + <xsl:value-of + select="sum(preceding-sibling::td[@colspan != '' + and @colspan > 1]/@colspan) - + count(preceding-sibling::td[@colspan != '' + and @colspan > 1]/@colspan)"/> + </xsl:variable> + <xsl:call-template name="create.dummy.cells"> + <xsl:with-param name="row" select="$row + 1"/> + <!-- * The slot value on each dummy cell must be offset by the --> + <!-- * value of $colspan-offset to adjust for preceding colpans --> + <xsl:with-param name="slot" select="$slot + $colspan-offset"/> + <xsl:with-param name="colspan" select="@colspan"/> + <xsl:with-param name="rowspan" select="@rowspan"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="create.dummy.cells"> + <xsl:param name="row"/> + <xsl:param name="slot"/> + <xsl:param name="colspan"/> + <xsl:param name="rowspan"/> + <xsl:choose> + <xsl:when test="$rowspan > 1"> + <!-- * Tail recurse until we have no more rowspans, creating --> + <!-- * an empty dummy cell each time. The type value, '^' --> + <!-- * is the marker that tbl(1) uses to indicate a --> + <!-- * "vertically spanned heading". --> + <cell row="{$row}" slot="{$slot}" type="^" colspan="{@colspan}"/> + <xsl:call-template name="create.dummy.cells"> + <xsl:with-param name="row" select="$row + 1"/> + <xsl:with-param name="slot" select="$slot"/> + <xsl:with-param name="colspan" select="$colspan"/> + <xsl:with-param name="rowspan" select="$rowspan - 1"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- * ============================================================== --> + <!-- * Build the "format section" for the table --> + <!-- * ============================================================== --> + <!-- * Description from the tbl(1) guide: --> + <!-- * --> + <!-- * "The format section of the table specifies the layout of the --> + <!-- * columns. Each line in this section corresponds to one line of --> + <!-- * the table... and each line contains a key-letter for each --> + <!-- * column of the table." --> + <xsl:template name="create.table.format"> + <xsl:param name="cells"/> + <xsl:apply-templates mode="table.format" select="$cells"/> + <!-- * last line of table format section must end with a dot --> + <xsl:text>.</xsl:text> + </xsl:template> + + <xsl:template match="cell" mode="table.format"> + <xsl:choose> + <xsl:when test="preceding-sibling::cell[1]/@row != @row"> + <!-- * If the value of the row attribute on this cell is --> + <!-- * different from the value of that on the previous cell, it --> + <!-- * means we have a new row. So output a line break. --> + <xsl:text>
</xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * If this isn't the first cell, output a space before it to --> + <!-- * separate it from the preceding key letter. --> + <xsl:if test="position() != 1"> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + <!-- * Select an appropriate "alignment" key letter based on this --> + <!-- * cell's attributes. --> + <xsl:choose> + <xsl:when test="@type = '^'"> + <xsl:text>^</xsl:text> + </xsl:when> + <xsl:when test="@align = 'center'"> + <xsl:text>c</xsl:text> + </xsl:when> + <xsl:when test="@align = 'right'"> + <xsl:text>r</xsl:text> + </xsl:when> + <xsl:when test="@align = 'char'"> + <xsl:text>n</xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * Default to left alignment. --> + <xsl:text>l</xsl:text> + </xsl:otherwise> + </xsl:choose> + <!-- * By default, tbl(1) vertically centers cell contents within --> + <!-- * their cells; the "t" key latter tells it to top-align the --> + <!-- * contents instead. Note that tbl(1) has no options for --> + <!-- * bottom or baseline alignment. --> + <xsl:if test="@valign = 'top'"> + <xsl:text>t</xsl:text> + </xsl:if> + <xsl:if test="@class = 'th'"> + <!-- * If this is a heading row, generate a font indicator (B or I), --> + <!-- * or if the value of $tbl.font.headings is empty, nothing. --> + <xsl:value-of select="$tbl.font.headings"/> + </xsl:if> + <!-- * We only need to deal with colspans whose value is greater --> + <!-- * than one (a colspan="1" is the same as having no colspan --> + <!-- * attribute at all). --> + <xsl:if test="@colspan > 1"> + <xsl:call-template name="process.colspan"> + <xsl:with-param name="colspan" select="@colspan - 1"/> + <xsl:with-param name="type" select="@type"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="process.colspan"> + <xsl:param name="colspan"/> + <xsl:param name="type"/> + <!-- * Output a space to separate this key letter from preceding one. --> + <xsl:text> </xsl:text> + <xsl:choose> + <xsl:when test="$type = '^'"> + <!-- * A '^' ("vertically spanned heading" marker) indicates --> + <!-- * that the "parent" of this spanned cell is a dummy cell; --> + <!-- * in this case, we need to generate a '^' instead of the --> + <!-- * normal 's'. --> + <xsl:text>^</xsl:text> + </xsl:when> + <xsl:otherwise> + <!-- * s = 'spanned heading' --> + <xsl:text>s</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$colspan > 1"> + <!-- * Tail recurse until we have no more colspans, outputting --> + <!-- * another marker each time. --> + <xsl:call-template name="process.colspan"> + <xsl:with-param name="colspan" select="$colspan - 1"/> + <xsl:with-param name="type" select="$type"/> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- * ============================================================== --> + <!-- * colgroup and col --> + <!-- * ============================================================== --> + <!-- * We currently don't do anything with colgroup. Not sure if it --> + <!-- * is widely used enough to bother adding support for it --> + <xsl:template match="colgroup"/> + <xsl:template match="col"/> + + <!-- * ============================================================== --> + <!-- * table footnotes --> + <!-- * ============================================================== --> + <xsl:template match="footnote" mode="table.footnote.mode"> + <xsl:variable name="footnotes" select=".//footnote"/> + <xsl:variable name="table.footnotes" + select=".//tgroup//footnote"/> + <xsl:value-of select="$man.table.footnotes.divider"/> + <xsl:text> </xsl:text> + <xsl:text>.br </xsl:text> + <xsl:apply-templates select="*[1]" mode="footnote.body.number"/> + <xsl:apply-templates select="*[position() > 1]"/> + </xsl:template> + + <!-- * The following template for footnote.body.number mode was just --> + <!-- * lifted from the HTML stylesheets with some minor adjustments --> + <xsl:template match="*" mode="footnote.body.number"> + <xsl:variable name="name"> + <xsl:text>ftn.</xsl:text> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="ancestor::footnote"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="href"> + <xsl:text>#</xsl:text> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="ancestor::footnote"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="footnote.mark"> + <xsl:text>[</xsl:text> + <xsl:apply-templates select="ancestor::footnote" + mode="footnote.number"/> + <xsl:text>] </xsl:text> + </xsl:variable> + <xsl:variable name="html"> + <xsl:apply-templates select="."/> + </xsl:variable> + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0"> + <xsl:variable name="html-nodes" select="exsl:node-set($html)"/> + <xsl:choose> + <xsl:when test="$html-nodes//p"> + <xsl:apply-templates select="$html-nodes" mode="insert.html.p"> + <xsl:with-param name="mark" select="$footnote.mark"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$html-nodes" mode="insert.html.text"> + <xsl:with-param name="mark" select="$footnote.mark"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$html"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- * The HTML stylesheets output <sup><a>...</a></sup> around --> + <!-- * footnote markers in tables --> + <xsl:template match="th/sup"> + <xsl:apply-templates/> + </xsl:template> + <xsl:template match="a"> + <xsl:apply-templates/> + </xsl:template> + +</xsl:stylesheet> diff --git a/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl new file mode 100644 index 0000000..26a7513 --- /dev/null +++ b/src/engine/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl @@ -0,0 +1,555 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:dyn="http://exslt.org/dynamic" + xmlns:saxon="http://icl.com/saxon" + exclude-result-prefixes="exsl dyn saxon" + version='1.0'> + +<!-- ******************************************************************** + $Id: utility.xsl 8236 2009-02-09 17:44:52Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- * This file contains "utility" templates that are called multiple --> +<!-- * times per each Refentry. --> + +<!-- ==================================================================== --> + + <!-- * NOTE TO DEVELOPERS: For ease of maintenance, the current --> + <!-- * manpages stylesheets use the "bold" and "italic" named --> + <!-- * templates for anything and everything that needs to get --> + <!-- * boldfaced or italicized. --> + <!-- * --> + <!-- * So if you add anything that needs bold or italic character --> + <!-- * formatting, try to apply these templates to it rather than --> + <!-- * writing separate code to format it. This can be a little odd if --> + <!-- * the content you want to format is not element content; in those --> + <!-- * cases, you need to turn it into element content before applying --> + <!-- * the template; see examples of this in the existing code. --> + + <xsl:template name="bold"> + <xsl:param name="node"/> + <xsl:param name="context"/> + <xsl:choose> + <xsl:when test="not($context[ancestor::title])"> + <xsl:for-each select="$node/node()"> + <xsl:text>\fB</xsl:text> + <xsl:apply-templates select="."/> + <xsl:text>\fR</xsl:text> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$node/node()"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="italic"> + <xsl:param name="node"/> + <xsl:param name="context"/> + <xsl:for-each select="$node/node()"> + <xsl:text>\fI</xsl:text> + <xsl:apply-templates select="."/> + <xsl:text>\fR</xsl:text> + </xsl:for-each> + </xsl:template> + + <xsl:template name="inline.monoseq"> + <xsl:call-template name="code-inline-start"/> + <xsl:apply-templates/> + <xsl:call-template name="code-inline-end"/> + </xsl:template> + + <xsl:template name="code-inline-start"> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>\FC</xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template name="code-inline-end"> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>\F[]</xsl:text> + </xsl:if> + </xsl:template> + + <!-- ================================================================== --> + + <xsl:template name="verbatim-block-start"> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>.fam C </xsl:text> + <xsl:text>.ps -1 </xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template name="verbatim-block-end"> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>.fam </xsl:text> + <xsl:text>.ps +1 </xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template name="synopsis-block-start"> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>.fam C </xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template name="synopsis-block-end"> + <xsl:if test="not($man.output.better.ps.enabled = 0)"> + <xsl:text>.fam </xsl:text> + </xsl:if> + </xsl:template> + + <!-- ================================================================== --> + + <!-- * NOTE TO DEVELOPERS: For ease of maintenance, the current --> + <!-- * manpages stylesheets use the mode="prevent.line.breaking" --> + <!-- * templates for anything and everything that needs to have --> + <!-- * embedded spaces turned into no-break spaces in output - in --> + <!-- * order to prevent that output from getting broken across lines --> + <!-- * --> + <!-- * So if you add anything that whose output, try to apply this --> + <!-- * template to it rather than writing separate code to format --> + <!-- * it. This can be a little odd if the content you want to --> + <!-- * format is not element content; in those cases, you need to --> + <!-- * turn it into element content before applying the template; --> + <!-- * see examples of this in the existing code. --> + <!-- * --> + <!-- * This template is currently called by the funcdef and paramdef --> + <!-- * and group/arg templates. --> + <xsl:template mode="prevent.line.breaking" match="*"> + <xsl:variable name="rcontent"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:variable name="content"> + <xsl:value-of select="normalize-space($rcontent)"/> + </xsl:variable> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"/> + <xsl:with-param name="target" select="' '"/> + <!-- * U+2580 is a "UPPER HALF BLOCK"; we use it here because --> + <!-- * if we were to just use a normal space, it would get --> + <!-- * replaced when normalization is done. We replace it --> + <!-- * later with the groff markup for non-breaking space. --> + <xsl:with-param name="replacement" select="'▀'"/> + </xsl:call-template> + </xsl:template> + + <!-- ================================================================== --> + + <xsl:template name="suppress.hyphenation"> + <!-- * we need to suppress hyphenation inline only if hyphenation is --> + <!-- * actually on, and even then only outside of Cmdsynopsis and --> + <!-- * Funcsynopsis, where it is already always turned off --> + <xsl:if test="$man.hyphenate != 0 and + not(ancestor::cmdsynopsis) and + not(ancestor::funcsynopsis)"> + <xsl:text>\%</xsl:text> + </xsl:if> + </xsl:template> + + <!-- ================================================================== --> + + <!-- * The replace.dots.and.dashes template is used to cause real --> + <!-- * dots and dashes to be output in the top comment (instead of --> + <!-- * escaped ones as in the source for the text displayed in the --> + <!-- * body of the page) --> + <xsl:template name="replace.dots.and.dashes"> + <xsl:param name="content"> + <xsl:apply-templates/> + </xsl:param> + <xsl:variable name="dot-content"> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"/> + <xsl:with-param name="target" select="'\&.'"/> + <xsl:with-param name="replacement" select="'.'"/> + </xsl:call-template> + </xsl:variable> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$dot-content"/> + <xsl:with-param name="target" select="'\-'"/> + <xsl:with-param name="replacement" select="'-'"/> + </xsl:call-template> + </xsl:template> + + <!-- ================================================================== --> + + <!-- * The nested-section-title template is called for refsect3, and any --> + <!-- * refsection nested more than 2 levels deep. --> + <xsl:template name="nested-section-title"> + <xsl:text>.sp </xsl:text> + <xsl:call-template name="pinch.together"/> + <xsl:text>.ps +1 </xsl:text> + <xsl:call-template name="make.bold.title"/> + </xsl:template> + + <xsl:template name="pinch.together"> + <!-- * arcane roff code to suppress line spacing after headings --> + <xsl:text>.it 1 an-trap </xsl:text> + <xsl:text>.nr an-no-space-flag 1 </xsl:text> + <xsl:text>.nr an-break-flag 1 </xsl:text> + <xsl:text>.br </xsl:text> + </xsl:template> + + <xsl:template name="make.bold.title"> + <!-- * make title wrapper so that we can use "bold" template to apply --> + <!-- * character formatting to it --> + <xsl:variable name="title.wrapper"> + <xsl:choose> + <xsl:when test="title"> + <xsl:value-of select="normalize-space(title[1])"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="object.title.markup.textonly"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:call-template name="mark.subheading"/> + <xsl:call-template name="bold"> + <xsl:with-param name="node" select="exsl:node-set($title.wrapper)"/> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:call-template name="mark.subheading"/> + </xsl:template> + + <!-- ================================================================== --> + + <!-- * The mixed-block template jumps through a few hoops to deal with --> + <!-- * mixed-content blocks, so that we don't end up munging verbatim --> + <!-- * environments or lists and so that we don't gobble up whitespace --> + <!-- * when we shouldn't --> + <xsl:template name="mixed-block"> + <xsl:for-each select="node()"> + <xsl:choose> + <!-- * Check to see if this node is a verbatim environment. --> + <!-- * If so, put a line of space before it. --> + <!-- * --> + <!-- * Yes, address and synopsis are vertabim environments. --> + <!-- * --> + <!-- * The code here previously also treated informaltable as a --> + <!-- * verbatim, presumably to support some kludge; I removed it --> + <xsl:when test="self::address|self::literallayout|self::programlisting| + self::screen|self::synopsis"> + <xsl:text> </xsl:text> + <xsl:text>.sp </xsl:text> + <xsl:call-template name="mark.up.block.start"/> + <xsl:apply-templates select="."/> + </xsl:when> + <!-- * Check to see if this node is a list; if it is, we don't --> + <!-- * want to normalize-space(), so we just apply-templates. --> + <!-- * Do same for all admonitions --> + <xsl:when test="(self::itemizedlist|self::orderedlist| + self::variablelist|self::glosslist| + self::simplelist[@type !='inline']| + self::segmentedlist| + self::caution|self::important| + self::note|self::tip|self::warning| + self::table|self::informaltable)"> + <xsl:call-template name="mark.up.block.start"/> + <xsl:apply-templates select="."/> + </xsl:when> + <xsl:when test="self::text()"> + <!-- * Check to see if this is a text node. --> + <!-- * --> + <!-- * If so, replace all whitespace at the beginning or end of it --> + <!-- * with a single linebreak. --> + <!-- * --> + <xsl:variable name="content"> + <xsl:apply-templates select="."/> + </xsl:variable> + <xsl:if + test="starts-with(translate(.,'	 ',' '), ' ') + and preceding-sibling::node()[1][name(.)!=''] + and normalize-space($content) != '' + and not( + preceding-sibling::*[1][ + self::caution or + self::important or + self::note or + self::tip or + self::warning or + self::variablelist or + self::glosslist or + self::itemizedlist or + self::orderedlist or + self::segmentedlist or + self::procedure or + self::address or + self::literallayout or + self::programlisting or + self::screen or + self::table or + self::informaltable + ] + ) + "> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:value-of select="normalize-space($content)"/> + <xsl:if + test="(translate(substring(., string-length(.), 1),'	 ',' ') = ' ' + and following-sibling::node()[1][name(.)!='']) + or following-sibling::node()[1][self::comment()] + or following-sibling::node()[1][self::processing-instruction()] + "> + <xsl:if test="normalize-space($content) != '' + or concat(normalize-space($content), ' ') = ' '"> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <!-- * At this point, we know that this node is not a verbatim --> + <!-- * environment, list, admonition, or text node; so we can --> + <!-- * safely normalize-space() it. --> + <xsl:variable name="content"> + <xsl:apply-templates select="."/> + </xsl:variable> + <xsl:value-of select="normalize-space($content)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:call-template name="mark.up.block.end"/> + </xsl:template> + + <!-- ================================================================== --> + + <!-- * Footnote and annotation contents are displayed using a hanging --> + <!-- * indent out to $man.indent.width If a paragraph-level block --> + <!-- * element (verbatim, list, or admonition) is the first block --> + <!-- * element nested at its same level within the same footnote or --> + <!-- * annotation, then we push it over by the same indent width. --> + <!-- * --> + <!-- * We don't reset the indent for each following sibling, but --> + <!-- * instead do it after for-eaching over all block siblings at --> + <!-- * the same level. So the effect is that if there are any --> + <!-- * following-sibling blocks after the block that starts this --> + <!-- * indent, then they just retain the indent that was already set --> + + <xsl:template name="mark.up.block.start"> + <xsl:choose> + <xsl:when test="(ancestor::footnote + or ancestor::annotation)"> + <xsl:if test="not(preceding-sibling::address| + preceding-sibling::literallayout| + preceding-sibling::programlisting| + preceding-sibling::screen| + preceding-sibling::synopsis| + preceding-sibling::itemizedlist| + preceding-sibling::orderedlist| + preceding-sibling::variablelist| + preceding-sibling::glosslist| + preceding-sibling::simplelist[@type !='inline']| + preceding-sibling::segmentedlist| + preceding-sibling::caution| + preceding-sibling::important| + preceding-sibling::note| + preceding-sibling::tip| + preceding-sibling::warning| + preceding-sibling::table| + preceding-sibling::informaltable + )"> + <xsl:text>.RS</xsl:text> + <xsl:if test="not($list-indent = '')"> + <xsl:text> </xsl:text> + <xsl:value-of select="$list-indent"/> + </xsl:if> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- * Check to see if we were called from a block within a footnote or --> + <!-- * annotation; if so, and the block contains any nested block --> + <!-- * content, then we know the mark.up.block.end template was already --> + <!-- * called to generate a .RS macro to indent that nested block --> + <!-- * content; so we need to generate a .RE to set the margin back to --> + <!-- * where it was prior to the .RS call. --> + <xsl:template name="mark.up.block.end"> + <xsl:if test="(ancestor::footnote + or ancestor::annotation)"> + <xsl:if test="address| + literallayout| + programlisting| + screen| + synopsis| + itemizedlist| + orderedlist| + variablelist| + glosslist| + simplelist[@type !='inline']| + segmentedlist| + caution| + important| + note| + tip| + warning| + table| + informaltable"> + <xsl:text> </xsl:text> + <xsl:text>.RE</xsl:text> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:if> + </xsl:template> + + <!-- ================================================================== --> + + <!-- * The person.name template in the HTML stylesheets outputs extra --> + <!-- * spaces that we need to strip out for manpages output. This --> + <!-- * template calls person.name, then tries to do some smart --> + <!-- * normalization of the result tree fragment from that. --> + <xsl:template name="person.name.normalized"> + <xsl:variable name="contents"> + <xsl:call-template name="person.name"/> + </xsl:variable> + <!-- * We put the output of person.name into a node-set and then we --> + <!-- * check it node-by-node and strip out space only where needed. --> + <xsl:variable name="contents.tree" select="exsl:node-set($contents)"/> + <xsl:for-each select="$contents.tree/node()"> + <xsl:choose> + <!-- * We don't want to monkey with single spaces or commas/periods --> + <!-- * followed by spaces, because those are bits of text that are --> + <!-- * actually generated by the person.name template itself (that --> + <!-- * is, they're not in the source). So, we preserve them. --> + <xsl:when test=". = ' ' or . = ', ' or . = '. '"> + <xsl:value-of select="."/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="normalize-space(.)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:template> + + <!-- ================================================================== --> + + <xsl:template name="make.adjusted.man.filename"> + <xsl:param name="name"/> + <xsl:param name="lang"/> + <xsl:param name="name.with.lang"> + <xsl:choose> + <xsl:when test="$lang != 'en' + and not($man.output.lang.in.name.enabled = 0) + and ($man.output.subdirs.enabled = 0 or + $man.output.in.separate.dir = 0)"> + <!-- * $lang is not en (English) --> + <!-- * AND user has specified man.output.lang.in.name.enabled --> + <!-- * AND doesn't want output going into separate dirs, --> + <!-- * SO... we include the $lang value in the filename; e.g., --> + <!-- * foo.ja.1 --> + <xsl:value-of select="concat($name, '.', $lang)"/> + </xsl:when> + <xsl:otherwise> + <!-- * user either has man.output.lang.in.name.enabled unset --> + <!-- * or has set it but also has man.output.subdirs.enabled --> + <!-- * set (in which case the $lang value is used to add a --> + <!-- * $lang subdir in the pathname); in either case, we don't --> + <!-- * want to include the $lang in the filename --> + <xsl:value-of select="$name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="section"/> + <xsl:param name="dirname"> + <xsl:if test="not($man.output.in.separate.dir = 0)"> + <xsl:choose> + <xsl:when test="not($man.output.subdirs.enabled = 0)"> + <xsl:variable name="lang.subdir"> + <xsl:if test="not($man.output.lang.in.name.enabled = 0)"> + <!-- * user has man.output.lang.in.name.enabled set, so --> + <!-- * we need to add a $lang subdir --> + <xsl:value-of select="concat($lang, '/')"/> + </xsl:if> + </xsl:variable> + <xsl:value-of + select="concat($man.output.base.dir, $lang.subdir, + 'man', normalize-space($section), '/')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$man.output.base.dir"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:param> + <xsl:call-template name="string.subst"> + <!-- * To create the man filename, replace any spaces in filename with --> + <!-- * underscores and then append a dot plus a section number. --> + <xsl:with-param name="string" + select="concat($dirname, + normalize-space($name.with.lang), + '.', normalize-space($section))"/> + <xsl:with-param name="target" select="' '"/> + <xsl:with-param name="replacement" select="'_'"/> + </xsl:call-template> + </xsl:template> + + <!-- ================================================================== --> + + <xsl:template name="make.subheading"> + <xsl:param name="title"/> + <xsl:call-template name="mark.subheading"/> + <xsl:text>.SH</xsl:text> + <xsl:text> </xsl:text> + <xsl:text>"</xsl:text> + <xsl:choose> + <xsl:when test="not($man.output.better.ps.enabled = 0)"> + <xsl:value-of select="$title"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="string.upper"> + <xsl:with-param name="string" select="$title"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + <xsl:text>"</xsl:text> + <xsl:text> </xsl:text> + <xsl:call-template name="mark.subheading"/> + </xsl:template> + + <!-- * Put a horizontal rule or other divider around section titles --> + <!-- * in roff source (just to make things easier to read). --> + <xsl:template name="mark.subheading"> + <xsl:if test="$man.subheading.divider.enabled != 0"> + <xsl:text>.\" </xsl:text> + <xsl:value-of select="$man.subheading.divider"/> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:template> + + <!-- ================================================================== --> + + <xsl:template name="roff-if-else-start"> + <xsl:param name="condition">n</xsl:param> + <xsl:text>.ie </xsl:text> + <xsl:value-of select="$condition"/> + <xsl:text> \{\ </xsl:text> + </xsl:template> + + <xsl:template name="roff-if-start"> + <xsl:param name="condition">n</xsl:param> + <xsl:text>.if </xsl:text> + <xsl:value-of select="$condition"/> + <xsl:text> \{\ </xsl:text> + </xsl:template> + + <xsl:template name="roff-else"> + <xsl:text>.\} </xsl:text> + <xsl:text>.el \{\ </xsl:text> + </xsl:template> + + <xsl:template name="roff-if-end"> + <xsl:text>.\} </xsl:text> + </xsl:template> + +</xsl:stylesheet> |