Skip to main content

MathFlow Structure Editor

Contents of this section:

Overview, MathFlow Structure Editor

The editor is based on the idea of an equation template. There are templates for fractions, subscripts, superscripts, matrices, etc. To build an equation, you insert templates and fill in the blanks.


To fill in the blanks, enter letters and numbers from the keyboard, select symbols from a palette, or replace a blank with another template. If you select something before inserting a template from the toolbar, the symbol or expression you've selected will automatically be inserted into the first blank in the template. Some people describe this as "wrapping" a template around a selection.

By nesting equation templates inside one another, you can build up almost any equation. Navigate around an equation using the mouse and arrow keys. You can also copy and paste sub-expressions to build up more complex expressions.


The editor templates and symbols are directly based on MathML. It's not necessary to know much, about MathML in order to use the MathFlow editor effectively, but it does help to understand how equations are structured.

Example: MathML source code for a very simple expression x + 4.


The MathFlow Editor allows you to customize many typesetting and style properties to fine-tune visual appearances. You edit properties by selecting an expression and opening a property dialog box from the editor menu bar. Typesetting and style properties mostly correspond directly to MathML concepts. That is, changing properties corresponds to setting MathML attributes. In most cases, MathFlow can process the full range of valid MathML attribute values.

MathML Ancestry

The MathML Ancestry is the status area displayed just below the Tabbed Toolbar, adjacent to the Mini Toolbar. The Ancestry is there to show you at a glance the nesting of the MathML structure at the cursor location, and to give you an easy way to select parts of the equation containing the cursor.

MathML Ancestry … <mrow> : <mrow> : <mfrac> : <mrow> : <mi>

Since all MathML equations consist of templates nested inside a ‹math› element, the Ancestry always shows the ‹math› element on the left. Intermediate MathML templates are listed in order of nesting, with the innermost MathML template at the cursor location indicated on the far right.

When there are too many levels of nesting to display all at once, the Ancestry shows dots on the right and/or left edge of the display. Clicking the dots scrolls the display in the corresponding direction.

As you move the mouse, the Ancestry automatically updates to reflect the nesting at the current cursor position. Also, when you select part of an equation in the editing area, the corresponding template label in the Ancestry will be highlighted.

Ancestry selections

When you mouse over one of the MathML templates labels in the Ancestry, it will become highlighted in red. Clicking a label in the Ancestry selects the corresponding part of the equation in the editor window.


By double-clicking an Ancestry label, you can highlight the corresponding area of the current equation and simultaneously open the default Properties panel for that selection. Each kind of MathML template has a default Properties panel, depending on what MathML properties it supports. Changes to a Properties panel only affect the current selection. Sometimes a selection applies to several Properties. When this occurs, only the default panel is opened by double-clicking.

Source editing

The editor interface includes two input/display modes: Design view and Source view. Design view is the standard mode for creating and editing your equations discussed in other sections of this documentation. In this view the input is displayed as it will be seen in your document. Source view is an alternate mode which displays the exact MathML syntax and structure, and operates just like a text editor, allowing you to directly edit equation content within the MathML source itself. Source view also includes commands for checking the syntax of the MathML and formatting the text itself. The Editor will always open into the view used in the last editing session.

Click on the 'Source view' tab just below the editor window to edit the MathML source. Changes made to equation content in Source view are immediately reflected in Design view.


Editing the MathML in Source view is just like working in any text editor. All standard text, space, and line break characters are recognized. In addition, pressing Shift+Tab will tab blocks of text. This can be useful for isolating or formatting sections of the MathML to aid with editing.

The Source view toolbar is fixed (non-configurable) and includes commands for Cut, Copy, Paste, Undo, Redo, Format Source, Validate, and Help.

Edit menu, Source view

This menu contains the actions for exporting to and importing data from the system clipboard, as well as undoing actions, selecting content, and performing a find & replace.


The Source view editor acts as a standard text editor, therefore selection, cut/copy, and paste operations only utilize text data and add no special formatting.

The clipboard can be used in two ways. First, the clipboard is useful for cutting and pasting within the Editor. Second, the clipboard is useful for pasting data into other applications. Equation data targeted for other applications in general requires additional formatting. For example, some XML applications may require a namespace prefix for MathML markup.

There are several commands in the Edit menu. Details follow, including shortcut keys:

Undo ( Ctrl+Z )

This command reverses the last cut, paste, or text editing operation. You can undo the last 100 operations.

Redo ( Ctrl+Y )

This command reapplies the last cut, paste, or text editing operation that was undone. You can redo operations up to the point of the first undo.

Cut ( Ctrl+X )

This deletes the selected MathML or text from the editor, and places it in the system clipboard (so it can be pasted into other applications).

Copy ( Ctrl+C )

This copies the selected MathML or text from the editor, and places it in the system clipboard (so it can be pasted into other applications) without removing the selection from the current equation.

Paste ( Ctrl+V )

This command pastes the contents of the system clipboard into the editor window at the current cursor location. Only text content will be accepted.

If the MathML on the clipboard was placed there by the MathFlow Editor, it can always be pasted back into the Editor regardless of how it is formatted. Although Source view will allow any text to be placed into the editor, the data/equation must be in valid MathML format, and it MUST be enclosed by ‹math› tags. It will not paste clipboard data as MathML unless it begins and ends with ‹math› tags. It is recommended to use the Validate command after a paste to check for any MathML errors (see the next section, Source menu, for details). Also, the editor will ignore any data on the clipboard before the opening math tag, and after the ending math tag.

Select All ( Ctrl+A )

This selects the entire MathML source currently in the editor.

Find/Replace ( Ctrl+F )

This option operates just like most any text editor Find & Replace feature. The command will find instances of the specified text in the selection or entire document and if needed, replace any or all instances with specified text.

Source menu

This menu contains the actions for formatting and validating the MathML source; it is only available in Source view.

There are two commands in the Source menu:


This command will format the MathML, nicely positioning the syntax into an easily readable form. Format affects the entire document (equation), whether any or all MathML text is selected or not. Format can also be accessed via a right-click in the editing window itself or by clicking the Format Source toolbar button (document icon).



This command (also known as the syntax checker) will check the MathML for proper syntax and structure. If the MathML passes validation, 'Validation completed successfully' will appear. If there are problems, the first error found will display in the status bar and the offending syntax will display as red text; a warning that reads 'The MathML is invalid, please see the status line for details' will also appear. As long as there are errors, the editor will be prevented from closing or switching to Design view. Validate can also be accessed by clicking the Validate toolbar button (checkmark icon).


Context highlighting

Source view is designed with some clear visual cues to assist in viewing and editing the structure. To this end, the Editor uses four colors to differentiate the major components:

  • MathML data and regular text is displayed black, such as the number 355, the entity &beta; or the function sin.

  • MathML tags and edited data before re-formatting are displayed blue, such as





  • MathML attribute values display in purple, such as the 2 mathcolor and linebreak attribute values




    , and


    , respectively.

  • MathML syntax errors reported after running the Validate command display in red, such as




    is expected