Mnemonic Parser module for MathML and TeX maths
General Info

Introduction
Screenshots
Mailing Lists and IRC
Alternative Browsers
Special Thanks

FAQ
Understanding Mnemonic
TODO list and ideas
Bug Reports


User Info

Download binaries
Platforms
Compiling Mnemonic
Other useful software


Developer Info

Core
Message modules
Library modules
Object modules
Coding Guidelines
Browse Source
Using CVS


View with any browser

Website questions to:
webmaster@mnemonic.org

Mnemonic questions to:
disc@mnemonic.org

 

Overview

(The text below is for images but the same thing is true for other weird tags like maths. It's just here so I don't forget about it).

The image parse OIL listens to the network/content and network/data messages. It turns these into internal structures representing the image. There has to be only one parser oil for each image type, but we could also put all the converter logic in a base library and have one big parser oil that just handles the messaging stuff.

Image render oils are gui dependent. They can call msg_fetch_url for images, and then listen to the announcement of the internal data structure with the actual data. After that, they can announce the possibility of creating a gui widget and fill that with the data.

The render oils can be made to listen both to base image structures they requested themselves and to all other ones that are announced. In the first case, the render oil makes a widget that does not have scrollbars, in the second case it makes a widget that does (for pure image viewing). Render oils will also have to listen to dom_create_events (or a modified version thereof which can announce that a subtree was passed on from another handler) and initiate loads, of course.

Internal conversion from MathML to layout boxes

  • There is no obvious reason why anyone would want to mark up numbers and symbols and operators separately upon every use, instead of attaching a catcode to them for the entire document. Is a thing like
    <mi>(</mi> ... <mo>(</mo>
    ever going to happen? Wouldn't it be much more natural to have `(' always act as an operator and drop this verbose markup altogether?
  • Granted, for some characters there is a need to mark them as operators, in particular `sin' and related.
  • The operator dictionary looks like a bad replacement for the information TeX stores in .tfm files. In addition, it tries (at the same time) to be a replacement for TeX's notion of `mathchardef' (see page 434 and onwards of the TeXbook). But whereas TeX has several symbolic names for spacing behaviour (Op, Ord, Bin etc) and uses the spacing info in the .tfm files to map that symbolic information to actual numbers, the MathML dictionary contains explicit spacing info directly. This is obviously wrong.