+++ /dev/null
-
-identifier #
-
- insert(<mi>#</mi>)
-
-number #
-
- insert(<mi>#</mi>)
-
-\sqrt
-
- replace($, <msqrt>$</msqrt>)
-
-\root
-
- replace($, <mroot><mrow/><mrow>$</mrow></mroot>)
-
-\of
-
- when (isa($.parent, "mrow") && isa($.parent.parent, "mroot"))
- let mroot = $.parent.parent
- if ($.prev and !$.prev.prev and !$.next) replace($.parent, $.prev)
- replace(mroot.child[0], $)
-
-\underline
-
- insert(<munder>[$, <mo>_</mo>]</munder>)
-
-\overline
-
- insert(<mover>[$, <mo>‾</mo>]</mover>)
-
-\cases
-
- replace($, <mrow><mo>{</mo><mtable>$</mtable></mrow>)
-
-\matrix
-
- replace($, <mtable>$</mtable>)
-
-\over
-
- if isa($.parent, "mrow")
- replace($.parent, <mfrac>[$.parent, $]</mfrac>)
-
-
-_ if isa($.parent, "mrow")
- if eq($.prev, null)
- replace($, new(mmultiscripts, [ new mrow, $, new none ]))
- elseif (isa($.prev, msub))
- let base = $.prev.children[0]
- let script = $.prev.children[1]
- replace($.rev, new(mmultiscripts, [ base, script, new none, $, new none ]))
- elseif (isa($.prev, msup))
- let base = $.prev.children[0]
- let script = $.prev.children[1]
- replace($.prev, new(msubsup, [ base, $, script ]))
- elseif (isa($.prev, msubsup))
- let base = $.prev.children[0]
- let subscript = $.prev.children[1]
- let superscript = $.prev.children[2]
- replace($.prev, new(mmultiscripts, [ base, subscript, superscript, $, new none ]))
- elseif isa($.prev, mmultiscripts)
- if ($.prev.children[$.prev.children.size - 2] = null)
- replace($.prev.children[$.prev.children.size - 2], $)
- else
- $.prev.children.append([$, new none])
- else
- replace($.prev, new(msub, [ $.prev, $ ]))
- else if isa($.parent, msub) and $.parent.children[1] = $
- let base = $.parent.children[0]
- replace($.parent, new(munder, [ base, $ ]))
-
-
-_, \sb (subscript)
-
- if parent.isa(mrow)
- if cursor is first child then
- sub = new mmultiscripts
- parent.replace(cursor, sub);
- sub.set_base(new mrow);
- sub.set_subscript(cursor);
- else
- elem = element prior to cursor in parent
- if elem.isa(msub) || elem.isa(msup) || elem.isa(mmultiscripts) then
- append script to multiscript and/or replace single script with
- multiscript
- else if elem.isa(munder) || elem.isa(mover) || elem.isa(munderover) then
- creates another munder
- else
- parent.replace(elem, sub);
- sub.set_base(elem);
- sub.set_subscript(cursor);
- else if (parent.isa(msub) and cursor is subscript) or
- change msub into a munder
- cursor in same position
- else
- replace cursor with msub with empty base
-
-^, \sp (superscript)
-
- symmetric to subscript
-
-', \prime (prime)
-
- similar to superscript, but multiple prime superscripts should go
- together in the same operator
-
-{ (group open)
-
- replace cursor with mrow, put cursor inside mrow
- if cursor is inside a table, create a new table row and a new table cell
- and put the cursor inside the cell
-
-} (group close)
-
- remove cursor from mrow
- mrow.parent.advance(cursor, mrow)
- if cursor inside a table cell then close table
-
-\over,\atop,\above (fraction)
-
- if cursor.parent.isa(mrow) then
- frac = new mfrac
- cursor.parent.parent.replace(mrow, frac)
- numerator is current content of cursor.parent except for the cursor
- itself.
- set denominator to cursor
- else
-
-\choose
-
- similar to fractions, but with stretchable parentheses around
-
-\sqrt
-
- parent.replace(cursor, new msqrt)
- set new msqrt.base to cursor
-
-\root
-
- parent.replace(cursor, new mroot)
- set empty base element
- set root index to cursor
-
-\of
-
- check if cursor.parent is mroot (or mrow inside mroot index)
- or and cursor is in index position. move the cursor to the base element
-
-\underline
-
- create munder element with stretchable horizontal line as underscript
- substitute cursor with munder
- move the cursor in the base element
-
-\overline
-
- symmetric
-
-accents (\hat)
-
- create an mover with accent=true and the operator has stretchy=false
-
-wide accents (\widehat)
-
- as accents, but mover has accent=false and the operator has stretchy=true
-
-\scriptstyle, ...
-
- create an appropriate mstyle, the cursor moves in. However, when the
- subformula ends one has to skip the mstyle
-
-\cases
-
- create mrow with stretchable brace and emtpy table, put cursor inside
- table
-
-\matrix
-
- create empty table, cursor inside table
-
-&
-
- check that cursor is inside a table cell
- create a new cell next to it
-
-\cr
-
- check that cursor is inside a table cell inside a table row
- create a new row
-
-\phantom
-
- create a mphantom element, cursor inside
-