<\body> In this chapter we describe how to interface with an extern application. Such interfaces should be distributed in the form of . The plug-in may either contain the extern application, or provide the ``glue'' between and the application. Usually, interfaces are used interactively in shell sessions (see ). But they may also be designed for background tasks, such as spell checking or typesetting. The communication between and the application takes place using a customizable input format and the special meta-format> for output from the plug-in. The meta-format enables you to send structured output to , using any common format like , , , or itself. This is useful when adding a interface to an existing system, since or output routines are often already implemented. It will then suffice to put the appropriate markers in order to make a first interface with . As soon as basic communication between your application and is working, you may improve the interface in many ways. Inside shell sessions, there is support for prompts, default inputs, tab-completion, mathematical and multi-line input, In general, your application may take control of and modify the user interface (menus, keyboard, ) or add new routines to . Your application may even extend the typesetter. In the directory , you can find many examples of simple plug-ins. In the next sections, we will give a more detailed explanation of the interfacing features of on the hand of these examples. In order to try one of these examples, we recall that you just have to copy it to either one of the directories <\verbatim> \ \ \ \ $TEXMACS_PATH/plugins \ \ \ \ $TEXMACS_HOME_PATH/plugins and run the (if there is one). <\initial> <\collection>