Index of /graphics/finomaton
      Name                    Last modified       Size  Description

[DIR] Parent Directory 23-Mar-2017 17:48 - [   ] COPYING 12-Jul-2006 02:09 18k [   ] ChangeLog 21-Jun-2007 22:59 1k [   ] TODO 17-Jun-2007 21:00 1k [DIR] examples/ 21-Jun-2007 23:53 - [TXT] finomaton.tcl 21-Jun-2007 22:05 50k

                Finomaton - Draw Finite State Machines

This is free software, and you are welcome to redistribute it under certain
conditions; see "COPYING" for more information.



You need Tcl/Tk and MetaPost.

     Using Finomaton

Start Finomaton:

         wish finomaton.tcl   +  RETURN

To add states, click "New state" and then on the canvas. Click "Select" and
then on the states to select and move them. Analogous for lines and text
items. Add a line, and you see three circles: two end-points, and one control

When you click on a state or somewhere on the canvas, control points become
invisible. When you select a line, its control points become visible and can be
moved. Add a second control point to a line by clicking "Control point" and
then on a line. Any item can be removed by clicking "Remove" and then on the
item you want to remove, or by selecting an item and then pressing "DEL". To
obtain a straight line, remove its control points.

Select multiple items and toggle selections by holding CONTROL while clicking
on an item. Click "|" to assign all selected items the X-coordinate of the
first selected item (analogous for "--" and Y-coordinate). Press "h" to spread
(i.e., make equidistant between leftmost and rightmost) selected items
horizontally, "v" to spread vertically.

Double-click on a state, text item or line for attributes. States have a label
for display on the canvas, and a "TeX" attribute that can contain any valid
TeX-string. If specified, it is used instead of the canvas label when
exporting. Include the TeX-command "\strut" if states turn out too small.

Lines can have labels. The label will be typeset nearby the line (depending on
the anchor position you choose), and you can choose a percentage to select how
far along the line the label will be placed.  The label will NOT be displayed
on the canvas, and a setting of 50% does NOT necessarily mean the optical
mid-point of the line.

States act like magnets for control points. When you move a state, all its
attached control points move with it. If you move a control point by using the
arrow keys, it is not affected by magnetic states.

Via "File => Settings...", you adjust parameters that affect the MetaPost
output. These settings are saved on a per-file basis.

     Typesetting the Generated Graph

Having exported a graph to MetaPost-format, say "", you:

a) Invoke MetaPost:

         mpost   ("mp" on some systems)

   This creates a new (PostScript) file, "graph.1".

b) Include "graph.1" in TeX and LaTeX-documents:

   *) pdftex (requires ConTeXt):

         \input supp-pdf.tex

         Syntax is \convertMPtoPDF {filename} {x scale} {y scale}.

   *) pdflatex (requires ConTeXt):


   *) tex:


   *) latex:


You can also try dvips, dvipdf, gs and ps2pdf on generated graphs and

     Key bindings

     Ctrl + m    Export MetaPost...
     Ctrl + o    Open...
     Ctrl + s    Save
     Alt  + x    Exit

     DEL         Remove selected items
     c           Control point
     e           Select
     h           Spread selected items horizontally
     l           New line
     r           Remove
     s           New state
     t           New text
     v           Spread selected items vertically
     x           Same X coordinate for all selected items
     y           Same Y coordinate for all selected items

When you use Ctrl + m, you are prompted for a file name only on the first
export. The same path is used when you use the binding again.

For batch-conversions, use

     ./finomaton.tcl -exportmp file1.fin file2.fin ...

to create,, ... . If a file's suffix is not "fin",
then ".mp" is appended to the filename.

     Latest Version and Contact

The latest version of Finomaton is available from

Good luck,
Markus Triska (
October 9th, 2003