project page


About gNumerator
General Info
Plans and Progress
About MathML
SourceForge Project Page for gNumerator
Updates / News / Blog
Blog, Updated January 26, 2005
Downloads, release 0.34,
Feburary 13, 2005
Release Notes for version 0.34
MathML Control, MathML DOM, Test App, and Documentation
Source Code
gNumerator Mailing List
Need an experienced computer scientist?
My Resume / CV
Anonymous Feedback
Anonymous Feature Requests
Anonymous Bug Reports
Extending the DOM
Fast parsing of XML entities
Calling C methods from C#
The visitor pattern
MathML Rendering Control
First Rendering of MathML
A slightly more complex example
Same example, with almost correct use of stretchy characters
Stretchy operators are finally working correctly
SubScripts and SuperScripts are now working, also a comparison with Mozilla
Radicals are now working, and a comparison with Microsoft Word
Radical Indices, and sub and super scirpt elements
Under and Over Elements, and Horisontal Stretchy Operators
Complex Tables
Browse Source Repository
MathML Document Object Model
MathML Rendering Control

Under and Over Elements, and Horizontal Stretchy Operators

Under and Over (<munder>, <mover>, <munderover>) elements are now implemented. To get these working actually required more work on the DOM side of things as opposed to the rendering side. Rendering (with the exception of stretching the horizontal operators) is actually fairly straightforward. Essentially, each under or over element is simply a vertical array, with the under or over element optionally shrunk down to a script size. The trick however is actually figuring out when and if to shrink the under and over elements.

Here is a good example of rendering a mathml document with some <munder> elements.

source mathml for this screenshot

Here is a screenshot of GtkMathView rendering the same mathml. Notice the almost identical layout, even thought the gNumerator rendering control is written in c#, and running on windows, and GtkMathView is written in c++ and running on linux.

source mathml for this screenshot

Here is another shot, with the previous mathml document slightly modified with a very long base element in the <munder> element. This causes the right arrow stretchy operator in the underscript element to stretch to fill the the horizontal extent of the base element. If the underscript was wider than the base, and the base had operators that could stretch horizontally, the base would have stretched to fill the needed extent.

source mathml for this screenshot