: The Features

This list describes some of the features offered by MathSpad.

Partially WYSIWYG

MathSpad uses templates to add structure to a document. The templates are organised
in files called ``stencils''. A template defines how a structure should be displayed
on-screen, which can be any combination of font changes, size changes, a tabbing
environment, simple boxes, small stacks and special symbols, and the corresponding
description of the structure in the chosen mark-up language. By simulating the layout
that would be produced in the output, you can get a nearly WYSIWYG view on your
screen. If the layout can not be simulated for some reason, it is still possible to choose a
screen representation that contains the necessary information and omits the details
required by the mark-up language. If you have an item which is used only once or you
don't want to define or use a template for it, you can just type in the raw mark-up
commands to get that item in the final output. In this way, one overcomes the pitfall of
WYSIWYG systems that what-you-see-is-ALL-you-get.

Large collection of symbols.

Every mathematical document contains symbols which are not available in the ascii
character set. In a mark-up language you have to use a special sequence to insert such
a symbol in your document and you don't see the actual symbol. MathSpad has a
number of symbol pages which contain a collection of special symbols. You can insert
symbols in your document by clicking on them or by using their keyboard short-cut, if
one is available. If you want to use your own symbols, you can add the font that provides
them to the symbol pages and create keyboard short-cuts for them.

Help facility

Since MathSpad is a structure editor, it is sometimes difficult to use if you are not
familiar with it. To solve this problem, a tutorial is available which explains how you use
the system. There is also a (context sensitive) help facility which explains every part of
the system. Furthermore, you can write your own online help for the templates that
you create. Detailed online help is available for the LaTeX2e, HTML and Z stencils
distributed with the system.

Spelling checker

MathSpad provides a simple interface with a spelling checker (ispell). Since MathSpad
uses templates and structures, the spelling checker only has to check the parts that you
typed in, which reduces the number of incorrect errors. This interface is still under
development but already very useful. At the moment, MathSpad only supports one
language: the one that ispell checks by default.

Less errors in the markup language

One of the major problems with mark-up languages is the fact that you make errors. It
is very easy to forget a closing bracket, to misspell a command or use the wrong options.
In MathSpad, you put the macros in the definition of a template and once that template
is correct, all the places where you use the template are correct.

Extra editing operations

MathSpad uses the same key bindings as Emacs, although it only provides the most
common operations. There are additional operations to manipulate the structures that
MathSpad uses, which can be used on both mathematical expressions and normal text.

Templates

MathSpad is a structure editor, where the structure is based on the templates that are
available. A template in MathSpad is an item which defines how something, usually a
notation or construction, should be displayed on the screen and how the same thing is
represented in a mark-up language. You could compare them with LaTeX macros or
preprocessor defines. There are no built-in templates in MathSpad because not
everybody uses the same notations and constructions. Instead, MathSpad provides a
template definition tool and a collection of example templates which can be used to get
started. Templates are organised in stencils, LaTeX2e, HTML and Z stencils being
provided in the standard distribution.

Find and Replace

An incremental search and a query replace are provided with the same functionality as
those provided by Emacs. Furthermore, since MathSpad uses structures and templates,
a special find and replace is available to search for them. In this way, algebraic laws can
be applied to arbitrary expressions.

Flexible

In MathSpad, you can change the keyboard definitions, add your own symbols, use your
own fonts, adjust the encoding or change the mark-up output that should be produced.
We use MathSpad to produce LaTeX output, but it can also produce most mark-up
languages (HTML, SGML, RTF, troff) and programming languages (C, Pascal, sh, csh)
without any problems. Technically, it is possible to create one document and generate
several different output formats, although it is a little tricky at the moment.

Maple interface (experimental)

Since MathSpad generates normal ASCII, it is possible to convert expressions to valid
input for a mathematical program. An experimental interface to Maple is available,
although the output from Maple is not converted to MathSpad expressions yet.