MathSpad : 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.
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.
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.
You might also want to take a look at the future features page.
Roland Backhouse.