<< Chapter < Page Chapter >> Page >

We are at liberty to specify these attributes. It is, however, recommended that we leave the arrangement to the system, which is rendering the mathematical content. It shall ensure consistency in the display, which follows the convention of mathematics as implemented by a particular renderer. The example below demonstrates how we can change the spacing different to default and against the form values as inferred from the context :

Determining "form" of an operator

<m:math display="block"> <m:mrow> <m:mo form="infix" rspace="10pt"> + </m:mo> <m:mi> a </m:mi> <m:mo form="prefix"> + </m:mo> <m:mi> b </m:mi> </m:mrow> </m:math>

Save the file after editing as “test.xml”. The display lokks like :

+ a + b

Stretching of operators

Four attributes of “mo” element control stretching of operators. These attributes may assume following values :

    Attribute value types

  • stretchy : true | false
  • symmetric : true | false
  • maxsize : number [ v-unit | h-unit | namedspace | infinity
  • minsize : number [ v-unit | h-unit | namedspace

Among the operators, the requirement for stretching of fences, arrows, accents (angular cap on identifier) and separators are most profound and visible in mathematical expressions. For this reason, “strechy” attribute of fence and accent operators are set “true” in operator dictionary. Stretching of operators in an expression is restricted by “minsize” and “maxsize” attributes.

The stretchable operators are characterized as predominantly either vertically or horizontally stretchable. The fences, various kinds of vertical arrows (single or double), operators like ∏, ∑, ∫, “/” etc. are set to stretch vertically by default in operator directory.

When stretchable operator and non-stretchable terms are bounded by explicit or inferred “mrow” element, then the stretchable operator grows vertically to cover the non-stretchy term. Consider the example given here :

Vertical stretching

<m:math display="block"> <m:mrow> <m:mi> x </m:mi> <m:mo> = </m:mo> <m:mo> ( </m:mo> <m:mfrac> <m:mi>a</m:mi> <m:mi>b</m:mi> </m:mfrac> <m:mo> ) </m:mo> </m:mrow> </m:math>

Save the file after editing as “test.xml”. The display looks like :

x = ( a b )

We can, however, control the growth of parenthese by setting “maxsize” attribute to 1 i.e. equal to its normal size.

Vertical stretching

<m:math display="block"> <m:mrow> <m:mi> x </m:mi> <m:mo> = </m:mo> <m:mo maxsize="1"> ( </m:mo> <m:mfrac> <m:mi>a</m:mi> <m:mi>b</m:mi> </m:mfrac> <m:mo maxsize="1"> ) </m:mo> </m:mrow> </m:math>

Save the file after editing as “test.xml”. The display looks like :

x = ( a b )

Thus, setting "maxsize" attribute overrides the default behavior, which allows the parentheses to strech and cover the non-stretchy expression. Let us, now experiment with other than fence character like ∑ and observe their behavior with other terms :

Vertical stretching

<m:math display="block"> <m:mrow> <m:mo> &sum; </m:mo> <m:mo> ( </m:mo> <m:mfrac> <m:mi>A</m:mi> <m:mi>B</m:mi> </m:mfrac> <m:mo> ) </m:mo> </m:mrow> </m:math>

Save the file after editing as “test.xml”. The display looks like :

( A B )

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, A primer in mathml. OpenStax CNX. Apr 19, 2006 Download for free at http://cnx.org/content/col10345/1.16
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'A primer in mathml' conversation and receive update notifications?

Ask