The variablelist
element is used to present a sequence of terms and their descriptions. Generally, the terms appear on the left, and the descriptions are indented relative to the terms. The amount of indent is the key feature when formatting these lists. The methods for print and HTML are described in the next sections.
Variable lists present a challenge for formatting because the term
hanging out to the left can be of any width. There are several methods for setting the term width, which is effectively the indent width of the listitem
paragraphs. Here is the list of methods, with highest priority first.
variablelist.as.blocks
stylesheet parameter set to nonzero.
dbfo list-presentation="blocks"
processing instruction in the list.
dbfo term-width
processing instruction in the list.
termlength
attribute in the variablelist
element.
The widths of the term
elements themselves.
The first two methods put each varlistentry
into a pair of fo:block
s with the term block preceding the list item block. This has the effect of stacking the term above the paragraph, permitting the term to be of any length. The paragraph is indented a small fixed amount. The use of the variablelist.as.blocks
parameter turns this behavior on globally for all
variablelist
s. The processing instruction turns it
on for one list. The following is an example.
<variablelist>
<?dbfo list-presentation="blocks"?>
<varlistentry>
<term>Left button</term>
<listitem><para>Blah blah</para></listitem>
</varlistentry>
...
</variablelist>
Although the variablelist.as.blocks
parameter is a global setting, you can override it for
individual lists with a <?dbfo
list-presentation="list"?>
processing instruction. Then
you can also specify a term width.
If the list is not formatted as blocks, then the list is formatted using a fo:list-block
, which puts the list item text side-by-side with the term. Then the term width can be set by either a processing instruction or an attribute value. Following is an example of that processing instruction.
<variablelist>
<?dbfo term-width=".75in"?>
<varlistentry>
<term>Left button</term>
<listitem><para>Blah blah</para></listitem>
</varlistentry>
...
</variablelist>
The term-width
value can be a plain number also, in which case it is assumed to be in em
units. The termlength
attribute of variablelist
can be set in a similar manner if the processing instruction is not used.
If you don't set a term width with any of the above methods, then the XSL-FO stylesheet counts the characters in all the term
elements and uses the largest, up to some maximum value. Starting with version 1.62 of the stylesheets, the maximum indent width is controlled by the variablelist.max.termlength
stylesheet parameter. The default value is 24
, roughly 24 character widths. Enter a different integer to
change the maximum indent. Any terms that are longer will line wrap.
If this default behavior does not produce satisfactory results in a
given list, then adjust the indent with one of the methods described
above.
Variable lists present a challenge for formatting in HTML because the standard DL
list in HTML doesn't let set the indent width. The DocBook XSL stylesheets support a set of processing instructions (PIs) to enable you to control how a given variablelist
is formatted in HTML. For HTML output, the list can be put into a two-column HTML TABLE
element to control formatting. Following is an annotated example:
<variablelist> <?dbhtml list-presentation="table"?> <?dbhtml term-width="15%" list-width="85%" ?> <?dbhtml term-presentation="bold" ?> <?dbhtml term-separator=":" ?> <?dbhtml table-summary="mouse buttons described" ?> <varlistentry> <term>Left button</term> <listitem><para>Blah blah</para></listitem> </varlistentry> ... </variablelist>
DocBook XSL: The Complete Guide - 3rd Edition | PDF version available | Copyright © 2002-2005 Sagehill Enterprises |