#

## JEuclid Extensions to MathML

JEuclid Provides some extensions to MathML. These extensions allow you to control the rendering in more detail than allowed by the MathML specification.

The extensions use a special JEuclid namespace, and should therefore just be ignored by other MathML renderers.

### Specifying rendering parameters (3.1.2+)

You can add additional attributes to the `<math>` element to specify JEuclid layout parameters. The attribute names are the same as given in the command line tool, prefixed with the `http://jeuclid.sf.net/ns/ext` namespace. Example:

Command line argument `fontSize` becomes:

    <math xmlns="http://www.w3.org/1998/Math/MathML"
          xmlns:jeuclid="http://jeuclid.sf.net/ns/ext"
          jeuclid:fontSize="24">

Check the command line tool for a list of possible parameters and their values.

Note: Rendering attributes given for the `math` attribute can not be overwritten by the external context. This means that if one of these attributes is set, it will always overwrite the settings in the MathViewer.

Note: Please note: In JEuclid versions 3.1.2 - 3.1.7 the namespace was called `http://jeuclid.sf.net/ns/context` instead of `http://jeuclid.sf.net/ns/ext`. The old namespace is still supported, but should not be used, as it will be removed in a future version.

Note: Please note: In JEuclid versions 3.1.2 - 3.1.5 the attributes where named by the internal name, e.g. `MATHSIZE` instead of `fontSize`. The older attribute names are still supported (on the old namespace), but should not be used, as they will be removed in a future version.

### Stretchy attribute (3.1.8+)

The `stretchy` attribute of the `mo` element is extended to support two new values:

true

  will stretch the operator in both directions

false

  will not stretch the operator

horizontal

  will stretch the operator horizontaly only

vertical

  will stretch the operator vertically only

To use the new stretchy attribute value, you must put the stretchy attribute in the JEuclid extension namespace (see above). Otherwise you will produce incorrect MathML which will not work with other renderers. If both the JEuclid and the default stretchy attribute are set, the JEuclid stretchy attribute takes precedence.

Example (assuming `jeuclid` defined as the extension namespace as above):

    <mo stretchy="true" jeuclid:stretchy="horizontal">...</mo>

Will stretch the operator on other MathML renderers (depending on their behavior) and horizontally in JEuclid,

Example 2:

    <mo jeuclid:stretchy="vertical">...</mo>

Will not stretch the operator on other MathML renderers (unless defined by the operator dictionary) and vertically in JEuclid,