Manpages Parameter Reference
$Id: param.xweb 9130 2011-10-11 08:05:37Z dpawson $
The DocBook Project
2005-2011
The DocBook Project
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 HTML stylesheet parameters
to control manpages output (in addition to the
manpages-specific parameters listed in this section).
Hyphenation, justification, and breaking
man.hyphenate
boolean
man.hyphenate
Enable hyphenation?
<xsl:param name="man.hyphenate">0</xsl:param>
Description
If non-zero, hyphenation is enabled.
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
man.hyphenate.urls ,
man.hyphenate.filenames , and
man.hyphenate.computer.inlines parameters.) But
the best way is still to just globally disable hyphenation, as the
stylesheets do by default.
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 Hypenation
node from the groff info page:
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.
So, if you set a non-zero value for the
man.justify parameter (to enable
justification), then you should probably also set a non-zero value for
man.hyphenate (to enable hyphenation).
man.hyphenate.urls
boolean
man.hyphenate.urls
Hyphenate URLs?
<xsl:param name="man.hyphenate.urls">0</xsl:param>
Description
If zero (the default), hyphenation is suppressed for output of
the ulink url attribute.
If hyphenation is already turned off globally (that is, if
man.hyphenate is zero, setting
man.hyphenate.urls is not necessary.
If man.hyphenate.urls is non-zero, URLs
will not be treated specially and are subject to hyphenation just like
other words.
If you are thinking about setting a non-zero value for
man.hyphenate.urls in order to make long
URLs break across lines, you'd probably be better off
experimenting with setting the
man.break.after.slash parameter first. That
will cause long URLs to be broken after slashes.
man.hyphenate.filenames
boolean
man.hyphenate.filenames
Hyphenate filenames?
<xsl:param name="man.hyphenate.filenames">0</xsl:param>
Description
If zero (the default), hyphenation is suppressed for
filename output.
If hyphenation is already turned off globally (that is, if
man.hyphenate is zero, setting
man.hyphenate.filenames is not
necessary.
If man.hyphenate.filenames is non-zero,
filenames will not be treated specially and are subject to hyphenation
just like other words.
If you are thinking about setting a non-zero value for
man.hyphenate.filenames in order to make long
filenames/pathnames break across lines, you'd probably be better off
experimenting with setting the
man.break.after.slash parameter first. That
will cause long pathnames to be broken after slashes.
man.hyphenate.computer.inlines
boolean
man.hyphenate.computer.inlines
Hyphenate computer inlines?
<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param>
Description
If zero (the default), hyphenation is suppressed for
computer inlines
such as environment variables,
constants, etc. This parameter current affects output of the following
elements:
classname
constant
envar
errorcode
option
replaceable
userinput
type
varname
If hyphenation is already turned off globally (that is, if
man.hyphenate is zero, setting the
man.hyphenate.computer.inlines is not
necessary.
If man.hyphenate.computer.inlines is
non-zero, computer inlines will not be treated specially and will be
hyphenated like other words when needed.
man.justify
boolean
man.justify
Justify text to both right and left margins?
<xsl:param name="man.justify">0</xsl:param>
Description
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.
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.
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.
However, if do you decide to set a non-zero value for the
man.justify parameter (to enable
justification), then you should probably also set a non-zero value for
man.hyphenate (to enable hyphenation).
Yes, these default settings run counter to how most existing man
pages are formatted. But there are some notable exceptions, such as
the perl man pages.
man.break.after.slash
boolean
man.break.after.slash
Enable line-breaking after slashes?
<xsl:param name="man.break.after.slash">0</xsl:param>
Description
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).
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.
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
man.break.after.slash 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.
Indentation
man.indent.width
length
man.indent.width
Specifies width used for adjusted indents
<xsl:param name="man.indent.width">4</xsl:param>
Description
The man.indent.width parameter specifies
the width used for adjusted indents. The value of
man.indent.width is used for indenting of
lists, verbatims, headings, and elsewhere, depending on whether the
values of certain man.indent.* boolean parameters
are non-zero.
The value of man.indent.width should
include a valid roff measurement unit (for example,
n or u ). The default value of
4n 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 Measurements
node in the groff info page.
man.indent.refsect
boolean
man.indent.refsect
Adjust indentation of refsect* and refsection?
<xsl:param name="man.indent.refsect" select="0"></xsl:param>
Description
If the value of man.indent.refsect is
non-zero, the width of the left margin for
refsect1 , refsect2 and
refsect3 contents and titles (and first-level,
second-level, and third-level nested
refsection instances) is adjusted by the value of
the man.indent.width parameter. With
man.indent.width set to its default value of
3n , the main results are that:
contents of refsect1 are output with a
left margin of three characters instead the roff default of seven
or eight characters
contents of refsect2 are displayed in
console output with a left margin of six characters instead the of
the roff default of seven characters
the contents of refsect3 and nested
refsection instances are adjusted
accordingly.
If instead the value of man.indent.refsect is
zero, no margin adjustment is done for refsect*
output.
If your content is primarly comprised of
refsect1 and refsect2 content
(or the refsection equivalent) – with few or
no refsect3 or lower nested sections , you may be
able to “conserve” space in your output by setting
man.indent.refsect 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
refsect1 output. That extra room may be useful
if, for example, you have many verbatim sections with long lines in
them.
man.indent.blurbs
boolean
man.indent.blurbs
Adjust indentation of blurbs?
<xsl:param name="man.indent.blurbs" select="1"></xsl:param>
Description
If the value of man.indent.blurbs is
non-zero, the width of the left margin for
authorblurb , personblurb , and
contrib output is set to the value of the
man.indent.width parameter
(3n by default). If instead the value of
man.indent.blurbs is zero, the built-in roff
default width (7.2n ) is used.
man.indent.lists
boolean
man.indent.lists
Adjust indentation of lists?
<xsl:param name="man.indent.lists" select="1"></xsl:param>
Description
If the value of man.indent.lists is
non-zero, the width of the left margin for list items in
itemizedlist ,
orderedlist ,
variablelist output (and output of some other
lists) is set to the value of the
man.indent.width parameter
(4n by default). If instead the value of
man.indent.lists is zero, the built-in roff
default width (7.2n ) is used.
man.indent.verbatims
boolean
man.indent.verbatims
Adjust indentation of verbatims?
<xsl:param name="man.indent.verbatims" select="1"></xsl:param>
Description
If the value of man.indent.verbatims is
non-zero, the width of the left margin for output of verbatim
environments (programlisting ,
screen , and so on) is set to the value of the
man.indent.width parameter
(3n by default). If instead the value of
man.indent.verbatims is zero, the built-in roff
default width (7.2n ) is used.
Fonts
man.font.funcprototype
string
man.font.funcprototype
Specifies font for funcprototype output
<xsl:param name="man.font.funcprototype">BI</xsl:param>
Description
The man.font.funcprototype parameter
specifies the font for funcprototype output. It
should be a valid roff font name, such as BI or
B .
man.font.funcsynopsisinfo
string
man.font.funcsynopsisinfo
Specifies font for funcsynopsisinfo output
<xsl:param name="man.font.funcsynopsisinfo">B</xsl:param>
Description
The man.font.funcsynopsisinfo parameter
specifies the font for funcsynopsisinfo output. It
should be a valid roff font name, such as B or
I .
man.font.links
string
man.font.links
Specifies font for links
<xsl:param name="man.font.links">B</xsl:param>
Description
The man.font.links parameter
specifies the font for output of links (ulink instances
and any instances of any element with an xlink:href attribute).
The value of man.font.links must be
either B or I , or empty. If
the value is empty, no font formatting is applied to links.
If you set man.endnotes.are.numbered and/or
man.endnotes.list.enabled to zero (disabled), then
you should probably also set an empty value for
man.font.links . But if
man.endnotes.are.numbered is non-zero (enabled),
you should probably keep
man.font.links set to
B or I 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.
In fact, if you suppress the
display of inline link references (by setting
man.endnotes.are.numbered to zero), there is no
good reason to apply font formatting to links. However, if
man.endnotes.are.numbered 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. .
Related Parameters
man.endnotes.list.enabled ,
man.endnotes.are.numbered
man.font.table.headings
string
man.font.table.headings
Specifies font for table headings
<xsl:param name="man.font.table.headings">B</xsl:param>
Description
The man.font.table.headings parameter
specifies the font for table headings. It should be
a valid roff font, such as B or
I .
man.font.table.title
string
man.font.table.title
Specifies font for table headings
<xsl:param name="man.font.table.title">B</xsl:param>
Description
The man.font.table.title parameter
specifies the font for table titles. It should be
a valid roff font, such as B or
I .
SYNOPSIS section
man.funcsynopsis.style
list
ansi
kr
man.funcsynopsis.style
What style of funcsynopsis should be generated?
<xsl:param name="man.funcsynopsis.style">ansi</xsl:param>
Description
If man.funcsynopsis.style is
ansi , ANSI-style function synopses are
generated for a funcsynopsis , otherwise K&R-style
function synopses are generated.
AUTHORS and COPYRIGHT sections
man.authors.section.enabled
boolean
man.authors.section.enabled
Display auto-generated AUTHORS section?
<xsl:param name="man.authors.section.enabled">1</xsl:param>
Description
If the value of
man.authors.section.enabled is non-zero
(the default), then an AUTHORS section is
generated near the end of each man page. The output of the
AUTHORS section is assembled from any
author , editor , and othercredit
metadata found in the contents of the child info or
refentryinfo (if any) of the refentry
itself, or from any author , editor , and
othercredit metadata that may appear in info
contents of any ancestors of the refentry .
If the value of
man.authors.section.enabled is zero, the
the auto-generated AUTHORS section is
suppressed.
Set the value of
man.authors.section.enabled to zero if
you want to have a manually created AUTHORS
section in your source, and you want it to appear in output
instead of the auto-generated AUTHORS
section.
man.copyright.section.enabled
boolean
man.copyright.section.enabled
Display auto-generated COPYRIGHT section?
<xsl:param name="man.copyright.section.enabled">1</xsl:param>
Description
If the value of
man.copyright.section.enabled is non-zero
(the default), then a COPYRIGHT section is
generated near the end of each man page. The output of the
COPYRIGHT section is assembled from any
copyright and legalnotice metadata found in
the contents of the child info or
refentryinfo (if any) of the refentry
itself, or from any copyright and
legalnotice metadata that may appear in info
contents of any ancestors of the refentry .
If the value of
man.copyright.section.enabled is zero, the
the auto-generated COPYRIGHT section is
suppressed.
Set the value of
man.copyright.section.enabled to zero if
you want to have a manually created COPYRIGHT
section in your source, and you want it to appear in output
instead of the auto-generated COPYRIGHT
section.
Endnotes and link handling
man.endnotes.list.enabled
boolean
man.endnotes.list.enabled
Display endnotes list at end of man page?
<xsl:param name="man.endnotes.list.enabled">1</xsl:param>
Description
If the value of man.endnotes.list.enabled is
non-zero (the default), then an endnotes list is added to the end of
the output man page.
If the value of man.endnotes.list.enabled is
zero, the list is suppressed — unless link numbering is enabled (that
is, if man.endnotes.are.numbered is non-zero), in
which case, that setting overrides the
man.endnotes.list.enabled 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.
Leaving
man.endnotes.list.enabled 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”.
So if you’re thinking about disabling endnotes listing by
setting the value of
man.endnotes.list.enabled 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.
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.
Also, note that various “man to html” tools, such as the
widely used man2html (VH-Man2html )
application, automatically mark up URLs with a@href markup
during conversion — resulting in “real” hyperlinks in HTML
output from those tools.
To “turn off” numbering of endnotes in the
endnotes list, set man.endnotes.are.numbered
to zero. The endnotes list will
still be displayed; it will just be displayed without the
numbersIt 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.
The default heading for the endnotes list is
NOTES . To change that, set a non-empty
value for the man.endnotes.list.heading
parameter.
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
A “non-empty” link is one that looks like
this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink>
an “empty link” is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/>
links.
Empty links are never included, and never numbered. They are simply
displayed inline, without any numbering.
In addition, if there are multiple instances of links in a
refentry 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.
If you disable endnotes listing, you should probably also set
man.links.are.underlined to zero (to disable
link underlining).
man.endnotes.list.heading
string
man.endnotes.list.heading
Specifies an alternate name for endnotes list
<xsl:param name="man.endnotes.list.heading"></xsl:param>
Description
If the value of the
man.endnotes.are.numbered parameter
and/or the man.endnotes.list.enabled
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 NOTES in
the current locale. To cause an alternate heading to be displayed,
set a non-empty value for the
man.endnotes.list.heading parameter —
for example, REFERENCES .
man.endnotes.are.numbered
boolean
man.endnotes.are.numbered
Number endnotes?
<xsl:param name="man.endnotes.are.numbered">1</xsl:param>
Description
If the value of man.endnotes.are.numbered is
non-zero (the default), then for each non-empty
A “non-empty” notesource is one that looks like
this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink>
an “empty” notesource is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/>
“notesource”:
a number (in square brackets) is displayed inline after the
rendered inline contents (if any) of the notesource
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
The default heading for the list of endnotes is
NOTES . To output a different heading, set a value
for the man.endnotes.section.heading
parameter.
The endnotes list is also displayed (but without
numbers) if the value of
man.endnotes.list.enabled is
non-zero.
If the value of man.endnotes.are.numbered is
zero, numbering of endnotess is suppressed; only inline
contents (if any) of the notesource are displayed inline.
If you are thinking about disabling endnote numbering by setting
the value of man.endnotes.are.numbered 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 unpleasingAs 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
man.break.after.slash 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. ,
but in a text-only output format, the
numbered-notesources/endnotes-listing mechanism is the only
practical way to handle this kind of content.
Also, users of “text based” browsers such as
lynx will already be accustomed to seeing inline
numbers for links. And various "man to html" applications, such as
the widely used man2html (VH-Man2html )
application, can automatically turn URLs into "real" HTML hyperlinks
in output. So leaving man.endnotes.are.numbered
at its default (non-zero) value ensures that no information is
lost in your man-page output. It just gets
“rearranged”.
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.
If you disable endnotes numbering, you should probably also set
man.font.links to an empty value (to
disable font formatting for links.
Related Parameters
man.endnotes.list.enabled ,
man.font.links
man.base.url.for.relative.links
string
man.base.url.for.relative.links
Specifies a base URL for relative links
<xsl:param name="man.base.url.for.relative.links">[set $man.base.url.for.relative.links]/</xsl:param>
Description
For any “notesource” listed in the auto-generated
“NOTES” section of output man pages (which is generated when
the value of the
man.endnotes.list.enabled 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
man.base.url.for.relative.links
parameter prepended to the value of the link URI.
A link source is an notesource that references an
external resource:
a ulink element with a url attribute
any element with an xlink:href attribute
an imagedata , audiodata , or
videodata element
If you use relative URIs in link sources in your DocBook
refentry source, and you leave
man.base.url.for.relative.links
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
man.base.url.for.relative.links that
points to the online version of HTML output generated from
your DocBook refentry source. For
example:
<xsl:param name="man.base.url.for.relative.links"
>http://www.kernel.org/pub/software/scm/git/docs/</xsl:param>
Related Parameters
man.endnotes.list.enabled
Lists
man.segtitle.suppress
boolean
man.segtitle.suppress
Suppress display of segtitle contents?
<xsl:param name="man.segtitle.suppress" select="0"></xsl:param>
Description
If the value of man.segtitle.suppress is
non-zero, then display of segtitle contents is
suppressed in output.
Character/string substitution
man.charmap.enabled
boolean
man.charmap.enabled
Apply character map before final output?
<xsl:param name="man.charmap.enabled" select="1"></xsl:param>
Description
If the value of the man.charmap.enabled
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
man.charmap.enabled is zero, Unicode characters
are passed through "as is".
Details
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 roff character map that is compliant with the XSLT character
map 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.
You can use the man.charmap.uri
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.
You can also use a subset of a character map. For details,
see the man.charmap.use.subset ,
man.charmap.subset.profile , and
man.charmap.subset.profile.english
parameters.
man.charmap.uri
uri
man.charmap.uri
URI for custom roff character map
<xsl:param name="man.charmap.uri"></xsl:param>
Description
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 XSLT character
map. That character map can be considered the standard roff
character map for the distribution.
If the value of the man.charmap.uri
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.
Do not set a value for man.charmap.uri
unless you have a custom roff character map that differs from the
standard one provided in the distribution.
man.charmap.use.subset
boolean
man.charmap.use.subset
Use subset of character map instead of full map?
<xsl:param name="man.charmap.use.subset" select="1"></xsl:param>
Description
If the value of the
man.charmap.use.subset 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
man.charmap.subset.profile
parameter (if the source is not in English) or the
man.charmap.subset.profile.english
parameter (if the source is in English).
You may want to experiment with setting a non-zero value of
man.charmap.use.subset , so that the full
character map is used. Depending on which XSLT engine you run,
setting a non-zero value for
man.charmap.use.subset 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.
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 man.charmap.use.subset to
zero.
Details
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 roff character map that is compliant with the XSLT character
map 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.
You can use the man.charmap.uri
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.
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
man.charmap.subset.profile or
man.charmap.subset.profile.english
parameter to tune the profile of that subset to use.
man.charmap.subset.profile
string
man.charmap.subset.profile
Profile of character map subset
<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>
Description
If the value of the
man.charmap.use.subset parameter is non-zero,
and your DocBook source is not written in English (that
is, if the lang or xml:lang attribute on the root element
in your DocBook source or on the first refentry
element in your source has a value other than
en ), then the character-map subset specified
by the man.charmap.subset.profile
parameter is used instead of the full roff character map.
Otherwise, if the lang or xml:lang attribute on the root
element in your DocBook
source or on the first refentry element in your source
has the value en or if it has no lang or xml:lang attribute, then the character-map
subset specified by the
man.charmap.subset.profile.english
parameter is used instead of
man.charmap.subset.profile .
The difference between the two subsets is that
man.charmap.subset.profile provides
mappings for characters in Western European languages that are
not part of the Roman (English) alphabet (ASCII character set).
The value of man.charmap.subset.profile
is a string representing an XPath expression that matches attribute
names and values for output-character
elements in the character map.
The attributes supported in the standard roff character map included in the distribution are:
character
a raw Unicode character or numeric Unicode
character-entity value (either in decimal or hex); all
characters have this attribute
name
a standard full/long ISO/Unicode character name (e.g.,
"OHM SIGN"); all characters have this attribute
block
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 .
class
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
.
entity
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.
string
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
The value of man.charmap.subset.profile
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:
@*[local-name() = 'block'] ='MathematicalOperators'
That will cause a additional set of around 67 additional "math"
characters to be converted into roff markup.
Depending on which XSLT engine you use, either the EXSLT
dyn:evaluate extension function (for xsltproc or
Xalan) or saxon:evaluate extension function (for
Saxon) are used to dynamically evaluate the value of
man.charmap.subset.profile at run-time. If you
don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that
supports dyn:evaluate -- you must either set the
value of the man.charmap.use.subset parameter
to zero and process your documents using the full character map
instead, or set the value of the
man.charmap.enabled parameter to zero instead
(so that character-map processing is disabled completely.
An alternative to using
man.charmap.subset.profile is to create your
own custom character map, and set the value of
man.charmap.uri 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
man.charmap.use.subset to zero.
You can create a
custom character map by making a copy of the standard roff character map provided in the distribution, and
then adding to, changing, and/or deleting from that.
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
man.charmap.subset.profile .
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.
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
man.charmap.subset.profile .
For other details, see the documentation for the
man.charmap.use.subset parameter.
Supported Unicode block names and "class" values
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.
C1 Controls And Latin-1 Supplement (Latin-1 Supplement) (x00a0 to x00ff)
class values
symbols
letters
Latin Extended-A (x0100 to x017f, partial)
Spacing Modifier Letters (x02b0 to x02ee, partial)
Greek and Coptic (x0370 to x03ff, partial)
General Punctuation (x2000 to x206f, partial)
class values
spaces
dashes
quotes
daggers
bullets
leaders
primes
Superscripts and Subscripts (x2070 to x209f)
Currency Symbols (x20a0 to x20b1)
Letterlike Symbols (x2100 to x214b)
Number Forms (x2150 to x218f)
Arrows (x2190 to x21ff, partial)
Mathematical Operators (x2200 to x22ff, partial)
Control Pictures (x2400 to x243f)
Enclosed Alphanumerics (x2460 to x24ff)
Geometric Shapes (x25a0 to x25f7, partial)
Miscellaneous Symbols (x2600 to x26ff, partial)
Dingbats (x2700 to x27be, partial)
Alphabetic Presentation Forms (xfb00 to xfb04 only)
man.charmap.subset.profile.english
string
man.charmap.subset.profile.english
Profile of character map subset
<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>
Description
If the value of the
man.charmap.use.subset parameter is
non-zero, and your DocBook source is written in English (that
is, if its lang or xml:lang attribute on the root element
in your DocBook source or on the first refentry
element in your source has the value en or if
it has no lang or xml:lang attribute), then the
character-map subset specified by the
man.charmap.subset.profile.english
parameter is used instead of the full roff character map.
Otherwise, if the lang or xml:lang attribute
on the root element in your DocBook source or on the first
refentry element in your source has a value other
than en , then the character-map subset
specified by the
man.charmap.subset.profile parameter is
used instead of
man.charmap.subset.profile.english .
The difference between the two subsets is that
man.charmap.subset.profile provides
mappings for characters in Western European languages that are
not part of the Roman (English) alphabet (ASCII character set).
The value of man.charmap.subset.profile.english
is a string representing an XPath expression that matches attribute
names and values for output-character elements in the character map.
For other details, see the documentation for the
man.charmap.subset.profile.english and
man.charmap.use.subset parameters.
man.string.subst.map.local.pre
string
man.string.subst.map.local.pre
Specifies “local” string substitutions
<xsl:param name="man.string.subst.map.local.pre"></xsl:param>
Description
Use the man.string.subst.map.local.pre
parameter to specify any “local” string substitutions to perform over
the entire roff source for each man page before
performing the string substitutions specified by the man.string.subst.map parameter.
For details about the format of this parameter, see the
documentation for the man.string.subst.map
parameter.
man.string.subst.map
rtf
man.string.subst.map
Specifies a set of string substitutions
<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™ -> Producttm -->
<!-- * -->
<!-- * So we just make it to "(TM)" instead; thus: -->
<!-- * -->
<!-- * Product™ -> Product(TM) -->
<ss:substitution oldstring="™" newstring="(TM)"></ss:substitution>
</xsl:param>
Description
The man.string.subst.map parameter
contains a map 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
man.charmap.enabled parameter is non-zero,
before applying the roff character map.
You can use man.string.subst.map as a
“lightweight” character map to perform “essential” substitutions --
that is, substitutions that are always performed,
even if the value of the man.charmap.enabled
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.
Do you not change value of the
man.string.subst.map parameter unless you are
sure what you are doing. First consider adding your
string-substitution mappings to either or both of the following
parameters:
man.string.subst.map.local.pre
applied before
man.string.subst.map
man.string.subst.map.local.post
applied after
man.string.subst.map
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.
If you remove any of default mappings from the value of the
man.string.subst.map 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.
Contents of the substitution map
The string-substitution map contains one or more
ss:substitution elements, each of which has two
attributes:
oldstring
string to replace
newstring
string with which to replace oldstring
It may also include XML comments (that is, delimited with
"<!-- " and "--> ").
man.string.subst.map.local.post
string
man.string.subst.map.local.post
Specifies “local” string substitutions
<xsl:param name="man.string.subst.map.local.post"></xsl:param>
Description
Use the man.string.subst.map.local.post
parameter to specify any “local” string substitutions to perform over
the entire roff source for each man page after
performing the string substitutions specified by the man.string.subst.map parameter.
For details about the format of this parameter, see the
documentation for the man.string.subst.map
parameter.
Refentry metadata gathering
refentry.meta.get.quietly
boolean
refentry.meta.get.quietly
Suppress notes and warnings when gathering refentry metadata?
<xsl:param name="refentry.meta.get.quietly" select="0"></xsl:param>
Description
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.
If you are processing a large amount of refentry
content, you may be able to speed up processing significantly by
setting a non-zero value for
refentry.meta.get.quietly .
refentry.date.profile
string
refentry.date.profile
Specifies profile for refentry "date" data
<xsl:param name="refentry.date.profile">
(($info[//date])[last()]/date)[1]|
(($info[//pubdate])[last()]/pubdate)[1]
</xsl:param>
Description
The value of refentry.date.profile is a
string representing an XPath expression. It is evaluated at run-time
and used only if refentry.date.profile.enabled
is non-zero. Otherwise, the refentry metadata-gathering
logic "hard coded" into the stylesheets is used.
The man(7) 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.
refentry.date.profile.enabled
boolean
refentry.date.profile.enabled
Enable refentry "date" profiling?
<xsl:param name="refentry.date.profile.enabled">0</xsl:param>
Description
If the value of
refentry.date.profile.enabled is non-zero, then
during refentry metadata gathering, the info profile
specified by the customizable
refentry.date.profile parameter is used.
If instead the value of
refentry.date.profile.enabled is zero (the
default), then "hard coded" logic within the DocBook XSL stylesheets
is used for gathering refentry "date" data.
If you find that the default refentry
metadata-gathering behavior is causing incorrect "date" data to show
up in your output, then consider setting a non-zero value for
refentry.date.profile.enabled and adjusting the
value of refentry.date.profile to cause correct
data to be gathered.
Note that the terms "source" and "date" have special meanings in
this context. For details, see the documentation for the
refentry.date.profile parameter.
refentry.manual.profile
string
refentry.manual.profile
Specifies profile for refentry "manual" data
<xsl:param name="refentry.manual.profile">
(($info[//title])[last()]/title)[1]|
../title/node()
</xsl:param>
Description
The value of refentry.manual.profile is
a string representing an XPath expression. It is evaluated at
run-time and used only if
refentry.manual.profile.enabled is
non-zero. Otherwise, the refentry metadata-gathering logic
"hard coded" into the stylesheets is used.
In man pages, this content is usually displayed in the middle of
the header of the page. The man(7) man page
describes this as "the title of the manual (e.g., Linux
Programmer's Manual )". Here are some examples from
existing man pages:
dpkg utilities
(dpkg-name )
User Contributed Perl Documentation
(GET )
GNU Development Tools
(ld )
Emperor Norton Utilities
(ddate )
Debian GNU/Linux manual
(faked )
GIMP Manual Pages
(gimp )
KDOC Documentation System
(qt2kdoc )
refentry.manual.profile.enabled
boolean
refentry.manual.profile.enabled
Enable refentry "manual" profiling?
<xsl:param name="refentry.manual.profile.enabled">0</xsl:param>
Description
If the value of
refentry.manual.profile.enabled is
non-zero, then during refentry metadata gathering, the info
profile specified by the customizable
refentry.manual.profile parameter is
used.
If instead the value of
refentry.manual.profile.enabled is zero (the
default), then "hard coded" logic within the DocBook XSL stylesheets
is used for gathering refentry "manual" data.
If you find that the default refentry
metadata-gathering behavior is causing incorrect "manual" data to show
up in your output, then consider setting a non-zero value for
refentry.manual.profile.enabled and adjusting
the value of refentry.manual.profile to cause
correct data to be gathered.
Note that the term "manual" has a special meanings in this
context. For details, see the documentation for the
refentry.manual.profile parameter.
refentry.source.name.suppress
boolean
refentry.source.name.suppress
Suppress "name" part of refentry "source" contents?
<xsl:param name="refentry.source.name.suppress">0</xsl:param>
Description
If the value of
refentry.source.name.suppress is non-zero, then
during refentry metadata gathering, no "source name" data
is added to the refentry "source" contents. Instead (unless
refentry.version.suppress is also non-zero),
only "version" data is added to the "source" contents.
If you find that the refentry 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
refentry.source.name.suppress .
Note that the terms "source", "source name", and "version" have
special meanings in this context. For details, see the documentation
for the refentry.source.name.profile
parameter.
refentry.source.name.profile
string
refentry.source.name.profile
Specifies profile for refentry "source name" data
<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>
Description
The value of refentry.source.name.profile
is a string representing an XPath expression. It is evaluated at
run-time and used only if
refentry.source.name.profile.enabled is
non-zero. Otherwise, the refentry metadata-gathering logic
"hard coded" into the stylesheets is used.
A "source name" is one part of a (potentially) two-part
Name Version
"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
man(7) man page describes it as "the source of
the command", and provides the following examples:
For binaries, use something like: GNU, NET-2, SLS
Distribution, MCC Distribution.
For system calls, use the version of the kernel that you
are currently looking at: Linux 0.99.11.
For library calls, use the source of the function: GNU, BSD
4.3, Linux DLL 4.4.1.
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,
Name Version ,
where:
Name
product name (e.g., BSD) or org. name (e.g., GNU)
Version
version number
Each part is optional. If the Name is a
product name, then the Version is probably
the version of the product. Or there may be no
Name , in which case, if there is a
Version , it is probably the version
of the item itself, not the product it is part of. Or, if the
Name is an organization name, then there
probably will be no Version .
refentry.source.name.profile.enabled
boolean
refentry.source.name.profile.enabled
Enable refentry "source name" profiling?
<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param>
Description
If the value of
refentry.source.name.profile.enabled is
non-zero, then during refentry metadata gathering, the info
profile specified by the customizable
refentry.source.name.profile parameter is
used.
If instead the value of
refentry.source.name.profile.enabled is zero (the
default), then "hard coded" logic within the DocBook XSL stylesheets
is used for gathering refentry "source name" data.
If you find that the default refentry
metadata-gathering behavior is causing incorrect "source name" data to
show up in your output, then consider setting a non-zero value for
refentry.source.name.profile.enabled and
adjusting the value of
refentry.source.name.profile to cause correct
data to be gathered.
Note that the terms "source" and "source name" have special
meanings in this context. For details, see the documentation for the
refentry.source.name.profile parameter.
refentry.version.suppress
boolean
refentry.version.suppress
Suppress "version" part of refentry "source" contents?
<xsl:param name="refentry.version.suppress">0</xsl:param>
Description
If the value of refentry.version.suppress
is non-zero, then during refentry metadata gathering, no
"version" data is added to the refentry "source"
contents. Instead (unless
refentry.source.name.suppress is also
non-zero), only "source name" data is added to the "source"
contents.
If you find that the refentry 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
refentry.version.suppress .
Note that the terms "source", "source name", and "version" have
special meanings in this context. For details, see the documentation
for the refentry.source.name.profile
parameter.
refentry.version.profile
string
refentry.version.profile
Specifies profile for refentry "version" data
<xsl:param name="refentry.version.profile">
(($info[//productnumber])[last()]/productnumber)[1]|
(($info[//edition])[last()]/edition)[1]|
(($info[//releaseinfo])[last()]/releaseinfo)[1]
</xsl:param>
Description
The value of refentry.version.profile is
a string representing an XPath expression. It is evaluated at
run-time and used only if
refentry.version.profile.enabled is
non-zero. Otherwise, the refentry metadata-gathering logic
"hard coded" into the stylesheets is used.
A "source.name" is one part of a (potentially) two-part
Name Version
"source" field. For more details, see the documentation for the
refentry.source.name.profile parameter.
refentry.version.profile.enabled
boolean
refentry.version.profile.enabled
Enable refentry "version" profiling?
<xsl:param name="refentry.version.profile.enabled">0</xsl:param>
Description
If the value of
refentry.version.profile.enabled is
non-zero, then during refentry metadata gathering, the info
profile specified by the customizable
refentry.version.profile parameter is
used.
If instead the value of
refentry.version.profile.enabled is zero (the
default), then "hard coded" logic within the DocBook XSL stylesheets
is used for gathering refentry "version" data.
If you find that the default refentry
metadata-gathering behavior is causing incorrect "version" data to show
up in your output, then consider setting a non-zero value for
refentry.version.profile.enabled and adjusting
the value of refentry.version.profile to cause
correct data to be gathered.
Note that the terms "source" and "version" have special
meanings in this context. For details, see the documentation for the
refentry.version.profile parameter.
refentry.manual.fallback.profile
string
refentry.manual.fallback.profile
Specifies profile of "fallback" for refentry "manual" data
<xsl:param name="refentry.manual.fallback.profile">
refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param>
Description
The value of
refentry.manual.fallback.profile 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 refentry metadata-gathering logic "hard
coded" in the stylesheets, or the value of
refentry.manual.profile , if it is
enabled).
Depending on which XSLT engine you run, either the EXSLT
dyn:evaluate extension function (for xsltproc or
Xalan) or saxon:evaluate extension function (for
Saxon) are used to dynamically evaluate the value of
refentry.manual.fallback.profile at
run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
XSLT engine that supports dyn:evaluate -- you
must manually disable fallback processing by setting an empty value
for the refentry.manual.fallback.profile
parameter.
refentry.source.fallback.profile
string
refentry.source.fallback.profile
Specifies profile of "fallback" for refentry "source" data
<xsl:param name="refentry.source.fallback.profile">
refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param>
Description
The value of
refentry.source.fallback.profile 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 refentry metadata-gathering logic "hard coded" in
the stylesheets, or the value of the
refentry.source.name.profile and
refentry.version.profile parameters, if those
are enabled).
Depending on which XSLT engine you run, either the EXSLT
dyn:evaluate extension function (for xsltproc or
Xalan) or saxon:evaluate extension function (for
Saxon) are used to dynamically evaluate the value of
refentry.source.fallback.profile at
run-time. If you don't use xsltproc, Saxon, Xalan -- or some other
XSLT engine that supports dyn:evaluate -- you
must manually disable fallback processing by setting an empty value
for the refentry.source.fallback.profile
parameter.
Page header/footer
man.th.extra1.suppress
boolean
man.th.extra1.suppress
Suppress extra1 part of header/footer?
<xsl:param name="man.th.extra1.suppress">0</xsl:param>
Description
If the value of man.th.extra1.suppress is
non-zero, then the extra1 part of the
.TH title line header/footer is suppressed.
The content of the extra1 field is almost
always displayed in the center footer of the page and is, universally,
a date.
man.th.extra2.suppress
boolean
man.th.extra2.suppress
Suppress extra2 part of header/footer?
<xsl:param name="man.th.extra2.suppress">0</xsl:param>
Description
If the value of man.th.extra2.suppress is
non-zero, then the extra2 part of the
.TH title line header/footer is suppressed.
The content of the extra2 field is usually
displayed in the left footer of the page and is typically "source"
data, often in the form
Name Version ;
for example, "GTK+ 1.2" (from the gtk-options(7)
man page).
You can use the
refentry.source.name.suppress and
refentry.version.suppress parameters to
independently suppress the Name and
Version parts of the
extra2 field.
man.th.extra3.suppress
boolean
man.th.extra3.suppress
Suppress extra3 part of header/footer?
<xsl:param name="man.th.extra3.suppress">0</xsl:param>
Description
If the value of man.th.extra3.suppress is
non-zero, then the extra3 part of the
.TH title line header/footer is
suppressed.
The content of the extra3 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
gtk-options(7) man page).
man.th.title.max.length
integer
man.th.title.max.length
Maximum length of title in header/footer
<xsl:param name="man.th.title.max.length">20</xsl:param>
Description
Specifies the maximum permitted length of the title part of the
man-page .TH title line header/footer. If the title
exceeds the maxiumum specified, it is truncated down to the maximum
permitted length.
Details
Every man page generated using the DocBook stylesheets has a
title line, specified using the TH 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).
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.
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.
So the stylesheets provide the
man.th.title.max.length parameter as a means
for truncating titles that exceed the maximum length that can be
viewing properly in a page header.
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.
man.th.extra2.max.length
integer
man.th.extra2.max.length
Maximum length of extra2 in header/footer
<xsl:param name="man.th.extra2.max.length">30</xsl:param>
Description
Specifies the maximum permitted length of the
extra2 part of the man-page part of the
.TH title line header/footer. If the
extra2 content exceeds the maxiumum specified, it
is truncated down to the maximum permitted length.
The content of the extra2 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
Name Version ;
for example, "GTK+ 1.2" (from the gtk-options(7)
man page).
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.
man.th.extra3.max.length
integer
man.th.extra3.max.length
Maximum length of extra3 in header/footer
<xsl:param name="man.th.extra3.max.length">30</xsl:param>
Description
Specifies the maximum permitted length of the
extra3 part of the man-page .TH
title line header/footer. If the extra3 content
exceeds the maxiumum specified, it is truncated down to the maximum
permitted length.
The content of the extra3 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
gtk-options(7) man page).
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) and long
manual names -- you may want to experiment with changing the value in
order to achieve the correct aesthetic results.
Output
man.output.manifest.enabled
boolean
man.output.manifest.enabled
Generate a manifest file?
<xsl:param name="man.output.manifest.enabled" select="0"></xsl:param>
Description
If non-zero, a list of filenames for man pages generated by
the stylesheet transformation is written to the file named by the
man.output.manifest.filename parameter.
man.output.manifest.filename
string
man.output.manifest.filename
Name of manifest file
<xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param>
Description
The man.output.manifest.filename parameter
specifies the name of the file to which the manpages manifest file
is written (if the value of the
man.output.manifest.enabled parameter is
non-zero).
man.output.in.separate.dir
boolean
man.output.in.separate.dir
Output man-page files in separate output directory?
<xsl:param name="man.output.in.separate.dir" select="0"></xsl:param>
Description
If the value of man.output.in.separate.dir
parameter is non-zero, man-page files are output in a separate
directory, specified by the man.output.base.dir
parameter; otherwise, if the value of
man.output.in.separate.dir is zero, man-page files
are not output in a separate directory.
man.output.lang.in.name.enabled
boolean
man.output.lang.in.name.enabled
Include $LANG value in man-page filename/pathname?
<xsl:param name="man.output.lang.in.name.enabled" select="0"></xsl:param>
Description
The man.output.lang.in.name.enabled
parameter specifies whether a $lang value is
included in man-page filenames and pathnames.
If the value of
man.output.lang.in.name.enabled is non-zero,
man-page files are output with the $lang value
included in their filenames or pathnames as follows;
if man.output.subdirs.enabled is
non-zero, each file is output to, e.g., a
man/$lang /man8/foo.8
pathname
if man.output.subdirs.enabled is
zero, each file is output with a
foo.$lang .8
filename
man.output.base.dir
uri
man.output.base.dir
Specifies separate output directory
<xsl:param name="man.output.base.dir">man/</xsl:param>
Description
The man.output.base.dir parameter
specifies the base directory into which man-page files are output. The
man.output.subdirs.enabled parameter controls
whether the files are output in subdirectories within the base
directory.
The values of the man.output.base.dir
and man.output.subdirs.enabled parameters are
used only if the value of
man.output.in.separate.dir parameter is
non-zero. If the value of the
man.output.in.separate.dir is zero, man-page
files are not output in a separate directory.
man.output.subdirs.enabled
boolean
man.output.subdirs.enabled
Output man-page files in subdirectories within base output directory?
<xsl:param name="man.output.subdirs.enabled" select="1"></xsl:param>
Description
The man.output.subdirs.enabled parameter
controls whether man-pages files are output in subdirectories within
the base directory specified by the directory specified by the
man.output.base.dir parameter.
The values of the man.output.base.dir
and man.output.subdirs.enabled parameters are
used only if the value of
man.output.in.separate.dir parameter is
non-zero. If the value of the
man.output.in.separate.dir is zero, man-page
files are not output in a separate directory.
man.output.quietly
boolean
man.output.quietly
Suppress filename messages emitted when generating output?
<xsl:param name="man.output.quietly" select="0"></xsl:param>
Description
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.
If you are processing a large amount of refentry
content, you may be able to speed up processing significantly by
setting a non-zero value for
man.output.quietly .
man.output.encoding
string
man.output.encoding
Encoding used for man-page output
<xsl:param name="man.output.encoding">UTF-8</xsl:param>
Description
This parameter specifies the encoding to use for files generated
by the manpages stylesheet. Not all processors support specification
of this parameter.
If the value of the man.charmap.enabled
parameter is non-zero (the default), keeping the
man.output.encoding parameter at its default
value (UTF-8 ) or setting it to
UTF-16 does not cause your
man pages to be output in raw UTF-8 or UTF-16 -- 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.
So if you want to generate "real" UTF-8 man pages, without any
character substitution being performed on your content, you need to
set man.charmap.enabled to zero (which will
completely disable character-map processing).
You may also need to set
man.charmap.enabled to zero if you want to
output man pages in an encoding other than UTF-8
or UTF-16 . Character-map processing is based on
Unicode character values and may not work with other output
encodings.
man.output.better.ps.enabled
boolean
man.output.better.ps.enabled
Enable enhanced print/PostScript output?
<xsl:param name="man.output.better.ps.enabled">0</xsl:param>
Description
If the value of the
man.output.better.ps.enabled parameter is
non-zero, certain markup is embedded in each generated man page
such that PostScript output from the man -Tps
command for that page will include a number of enhancements
designed to improve the quality of that output.
If man.output.better.ps.enabled 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 man
-Tps command.
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 will not not be
readable on systems on with the classic troff (AT&T
troff) command is installed .
The value of this parameter only affects PostScript output
generated from the man command. It has no
effect on output generated using the FO backend.
You can generate PostScript output for any man page by
running the following command:
man FOO -Tps > FOO .ps
You can then generate PDF output by running the following
command:
ps2pdf FOO .ps
Other
man.table.footnotes.divider
string
man.table.footnotes.divider
Specifies divider string that appears before table footnotes
<xsl:param name="man.table.footnotes.divider">----</xsl:param>
Description
In each table that contains footenotes, the string specified by
the man.table.footnotes.divider parameter is
output before the list of footnotes for the table.
man.subheading.divider.enabled
boolean
man.subheading.divider.enabled
Add divider comment to roff source before/after subheadings?
<xsl:param name="man.subheading.divider.enabled">0</xsl:param>
Description
If the value of the
man.subheading.divider.enabled parameter is
non-zero, the contents of the
man.subheading.divider parameter are used to
add a "divider" before and after subheadings in the roff
output. The divider is not visisble in the
rendered man page ; it is added as a comment, in the source,
simply for the purpose of increasing reability of the source.
If man.subheading.divider.enabled is zero
(the default), the subheading divider is suppressed.
man.subheading.divider
string
man.subheading.divider
Specifies string to use as divider comment before/after subheadings
<xsl:param name="man.subheading.divider">========================================================================</xsl:param>
Description
If the value of the
man.subheading.divider.enabled parameter is
non-zero, the contents of the
man.subheading.divider parameter are used to
add a "divider" before and after subheadings in the roff
output. The divider is not visisble in the
rendered man page ; it is added as a comment, in the source,
simply for the purpose of increasing reability of the source.
If man.subheading.divider.enabled is zero
(the default), the subheading divider is suppressed.
The Stylesheet
The param.xsl stylesheet is just a
wrapper around all of these parameters.
<xsl:stylesheet exclude-result-prefixes="src" version="1.0">
<!-- This file is generated from param.xweb -->
<!-- ********************************************************************
$Id: param.xweb 9130 2011-10-11 08:05:37Z dpawson $
********************************************************************
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>