TekMath is a java/swing-based viewer for the Math Markup Language (MathML). It is designed to be embedded in custom java applications rather than be a web-browser plug-in. TekMath supports the MathML version 2.0 specification for both the content markup language and the presentation language. It works in two passes by first translating content markup to presentation before rendering.
Why a MathML renderer?
The main reason for building a MathML renderer is to provide a canonical representation for design equations and physical laws. Equations are the most abstract representations there are, and ought to serve as a convenient indexing mechanism between concepts, as grist for analogies, and possibly as operational components in simulation and design tools. For example, one might want to search for common strategies for dealing with nonlinear scaling problems. By representing quantitative laws, we may be able to retrieve technologies whose operating principles are nonlinear, regardless of the exact quantities they manipulate.
About the implementation
TekMath implements the W3C MathML 2.0 DOM interface
specification. It primarily
consists of implementation classes of the MathML DOM. It parses xml markup directly into
the custom DOM implementation by relying on the Apache Xerxes parser that is
bundled with jre1.5, and subclassing key classes such as the Xerces
class. It uses the Xerces-specific property "http://apache.org/xml/properties/dom/document-class-name"
to specify the DocumentImplementation class and populate the custom DOM classes.
As this approach exposes some implementation classes from the parser, different applications may modify this code to support different parsers, for example. Ideas for a cleaner parsing implementation are certainly welcome. Please send suggestions to Tom Hinrichs.
TekMath implements the full Operator Dictionary from the specification. Rendering of the content language is handled by automatic conversion routines that translate to the presentation language before rendering.
TekMath requires Java jre1.5 or higher. Though not a strict requirement, some features will render more accurately with special mathematics fonts installed. These are available from the jsMath Home Page. To install the fonts, follow the instructions here
TekMath is intended to be a component embedded in a java application. The ui directory has a sample graphical application for loading and viewing MathML files and dynamically changing the font size. This is meant to be suggestive only and is most useful as a development tool.
This is what's missing or still broken in the current version (v0.9):
- Support for the
- Labeled tablerow (
mlabeledtr) is not yet implemented
- Some funkiness in tiled stretchy fences due to roundoff error
mmultiscriptsis not yet implemented
merroris not yet implemented.
- Deprecated content elements such as
relnare not implemented
Download the latest version of TekMath from SourceForge