DocBook does not have elements to describe mathematics. DocBook does provide two container elements for mathematics:
equation to format the math as a block (with or without a title), and
inlinequation to include math within a paragraph or other inline context. You have several alternatives for what you put in the container element:
Plain text for simple math.
Capture a representation of the mathematics as a bitmap image.
Model the mathematics with Scalable Vector Graphics (SVG). This solution is only for output formats that can handle SVG.
Model the mathematics in TeX if a downstream process can handle TeX.
Model the mathematics in MathML if a downstream processor can handle MathML.
Some mathematics can be expressed as straight text, using characters from the keyboard and special characters entered as entities. You might think you could put the text in an
inlineequation element, but its content model does not permit bare text.
Starting with version 4.5 of the DocBook XML DTD, you can use a
mathphrase element inside an
inlineequation element for plain text math. A
mathphrase can contain text,
emphasis, which is sufficient for simple math expressions. For example:
<inlineequation> <mathphrase>E = mc<superscript>2</superscript></mathphrase> </inlineequation>
In HTML output, this is output inside a
span class="mathphrase" container, to which you can assign a CSS style to format it in italics, for example.
In print output, the default behavior does not add any styling to
mathphrase. If you want it in italics, for example, you could add a customization like the following:
<xsl:template match="mathphrase"> <xsl:call-template name="inline.italicseq"/> </xsl:template>
If you are using DocBook 4.4 or earlier, the only solution seems to be to use
phrase with a
role="math" attribute for inline instances. The stylesheets do not apply any special formatting to
phrase by default, so you would have to create a stylesheet customization if you want special formatting. The following example makes the math italic:
<xsl:template match="phrase[@role = 'math']"> <xsl:call-template name="inline.italicseq"/> </xsl:template>
The math you can display this way is limited to a linear sequence of text and symbols, with
subscript as the only modifiers.
|DocBook XSL: The Complete Guide - 4th Edition||PDF version available|
Copyright © 2002-2007 Sagehill Enterprises