# MathFlow Structure Editor

**Contents of this section:**

Editor basics (this page)

Inserting characters

Text tokens vs. identifiers

Invisible operators

Cursor movement shortcuts

Program shortcuts

Template shortcuts

Source editor shortcuts

Keyboard mnemonics for menus

Font properties

Operator properties

Layout properties

Table properties

MSpace properties

Action properties

Common attributes

Linebreak Attributes dialog

Size and color values

## 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.

<math><mi>x</mi><mo>+</mo><mn>4</mn></math>

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.

### 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**β**or the function**sin**.MathML tags and edited data before re-formatting are displayed blue, such as

<span><tt></mo></tt></span>or

<span><tt><mfrac></tt></span>.

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

<span><tt>red</tt></span>,

<span><tt>yellow</tt></span>, and

<span><tt>badbreak</tt></span>, respectively.

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

<span><tt></row></tt></span>when

<span><tt></mrow></tt></span>is expected